Selecting driver boards for 6-axis PUMA arm
- dsz123
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 11
 - Thank you received: 0
 
			
	
						27 Feb 2023 23:04				#265524
		by dsz123
	
	
		
			
	
			
			 		
													
	
				Selecting driver boards for 6-axis PUMA arm was created by dsz123			
			
				Howdy folks -
I've got an existing PUMA arm that I had working via custom software running on an old laptop and some basic RS232-controlled motor boards (with PID loops running on those motor control boards). Even when it was in working condition, there was a speed limitation for the control loop because the motor driver boards I used had fairly low baud rates. The system has been in storage for quite some time, and I'm interested in making some upgrades to get it up and running again. (In case you're interested, some details about what I've done previously here: dsz123.net/Projects/RobotArm/)
So my thought is (obviously) to replace my old Mac laptop and custom software with LinuxCNC and probably replace the motor driver boards as well. I have a relatively recent Intel NUC with high-speed Ethernet that could host the LinuxCNC instance (I have read about how to set up the power options in the BIOS and use the correct network drivers to ensure reasonably latency).
The motors in the arm are brushed DC motors that run at 12V. Three max out at about 3.5 A, the remaining three are closer to 2.7 A. They all have nice glass encoders (at least 200 counts per revolution) that run at 5V and have the usual A/B signal as well as an index signal. The encoders are mounted to the motor shafts directly (rather than the joints or some intermediate shaft).
Not worried about the kinematics model at the moment (I think there's a PUMA model built-in), but am trying to wrap my head around the various I/O & driver options. It seems like the Mesa FPGA boards are pretty reasonably priced and quite powerful, but there are quite a few options.
From what I've gathered, one option would be to use three 7i40-LV drivers (two axes per driver) for the motors and encoders, but then I'd need some other interface board to connect to the PC, right? Is there a supported Mesa board that could connect to three separate 7i40-LV driver boards?
Another option seems to be the (new, not quite in stock but that's okay) 7i95T board , which has an Ethernet interface and is set up for 6 axes already. But that board isn't actually going to drive the motors directly, right? It says in the description it can work with servo motor drives (rather than stepper motor drives), but I can't see anything in the manual about how that would operate. What kind of motor drive would I need for this kind of configuration?
Is there some other configuration I'm missing?
Many thanks in advance for any advice & info!
Best,
-Dave Z.
					I've got an existing PUMA arm that I had working via custom software running on an old laptop and some basic RS232-controlled motor boards (with PID loops running on those motor control boards). Even when it was in working condition, there was a speed limitation for the control loop because the motor driver boards I used had fairly low baud rates. The system has been in storage for quite some time, and I'm interested in making some upgrades to get it up and running again. (In case you're interested, some details about what I've done previously here: dsz123.net/Projects/RobotArm/)
So my thought is (obviously) to replace my old Mac laptop and custom software with LinuxCNC and probably replace the motor driver boards as well. I have a relatively recent Intel NUC with high-speed Ethernet that could host the LinuxCNC instance (I have read about how to set up the power options in the BIOS and use the correct network drivers to ensure reasonably latency).
The motors in the arm are brushed DC motors that run at 12V. Three max out at about 3.5 A, the remaining three are closer to 2.7 A. They all have nice glass encoders (at least 200 counts per revolution) that run at 5V and have the usual A/B signal as well as an index signal. The encoders are mounted to the motor shafts directly (rather than the joints or some intermediate shaft).
Not worried about the kinematics model at the moment (I think there's a PUMA model built-in), but am trying to wrap my head around the various I/O & driver options. It seems like the Mesa FPGA boards are pretty reasonably priced and quite powerful, but there are quite a few options.
From what I've gathered, one option would be to use three 7i40-LV drivers (two axes per driver) for the motors and encoders, but then I'd need some other interface board to connect to the PC, right? Is there a supported Mesa board that could connect to three separate 7i40-LV driver boards?
Another option seems to be the (new, not quite in stock but that's okay) 7i95T board , which has an Ethernet interface and is set up for 6 axes already. But that board isn't actually going to drive the motors directly, right? It says in the description it can work with servo motor drives (rather than stepper motor drives), but I can't see anything in the manual about how that would operate. What kind of motor drive would I need for this kind of configuration?
Is there some other configuration I'm missing?
Many thanks in advance for any advice & info!
Best,
-Dave Z.
Please Log in or Create an account to join the conversation.
- PCW
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 17380
 - Thank you received: 5068
 
			
	
						28 Feb 2023 03:39				#265530
		by PCW
	
	
		
			
	
			
			 		
													
	
				Replied by PCW on topic Selecting driver boards for 6-axis PUMA arm			
			
				Is 3.5A the peak current or continuous?			
					Please Log in or Create an account to join the conversation.
- dsz123
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 11
 - Thank you received: 0
 
			
	
						28 Feb 2023 14:52				#265566
		by dsz123
	
	
		
			
	
			
			 		
													
	
				Replied by dsz123 on topic Selecting driver boards for 6-axis PUMA arm			
			
				Peak, I believe. A good bit lower most of the time, but I don't have an exact number, unfortunately.			
					Please Log in or Create an account to join the conversation.
- andypugh
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 19678
 - Thank you received: 4559
 
			
	
						03 Mar 2023 00:18				#265750
		by andypugh
	
	
		
			
	
	
			 		
													
	
				Replied by andypugh on topic Selecting driver boards for 6-axis PUMA arm			
			
				The 5i24 would be a good fit to drive 3 x 7i40.
You can connect 2 x 7i40 to each 50 pin header, so there are connections available for other cards too if you need more IO.
					You can connect 2 x 7i40 to each 50 pin header, so there are connections available for other cards too if you need more IO.
		The following user(s) said Thank You: dsz123 	
			Please Log in or Create an account to join the conversation.
- dsz123
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 11
 - Thank you received: 0
 
			
	
						04 Mar 2023 05:51				#265822
		by dsz123
	
	
		
			
	
			
			 		
													
	
				Replied by dsz123 on topic Selecting driver boards for 6-axis PUMA arm			
			
				Thanks so much, Andy.
In the 7i40 manual, I had missed the notes that effectively say each board only uses half the pins on a 50-pin cable, and you can select which half. Hence the ability to use two cards on one 50-pin bus.
I like the 5i24, especially since they are in stock at the moment, but unfortunately, the PC I have doesn't have PCI expansion slots available (it's a small form-factor Intel NUC from Logic Supply). I was hoping to use Ethernet instead. Given that, it seems like the 7i80HD or 7i93 cards are my options. Does that sound about right? The 7i80 cards have three 50-pin connectors, and the 7i93 has two, which should suffice. (As you suggest, having extra I/O will indeed come in handy, since there are brakes on three motors, etc.)
Again, thanks for your guidance!
-Dave
 			
					In the 7i40 manual, I had missed the notes that effectively say each board only uses half the pins on a 50-pin cable, and you can select which half. Hence the ability to use two cards on one 50-pin bus.
I like the 5i24, especially since they are in stock at the moment, but unfortunately, the PC I have doesn't have PCI expansion slots available (it's a small form-factor Intel NUC from Logic Supply). I was hoping to use Ethernet instead. Given that, it seems like the 7i80HD or 7i93 cards are my options. Does that sound about right? The 7i80 cards have three 50-pin connectors, and the 7i93 has two, which should suffice. (As you suggest, having extra I/O will indeed come in handy, since there are brakes on three motors, etc.)
Again, thanks for your guidance!
-Dave
Please Log in or Create an account to join the conversation.
- andypugh
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 19678
 - Thank you received: 4559
 
			
	
						04 Mar 2023 11:14				#265833
		by andypugh
	
	
		
			
	
	
			 		
													
	
				Replied by andypugh on topic Selecting driver boards for 6-axis PUMA arm			
			
				2 x HD50 sounds a bit tight. in theory you could use the unused half of one connector for GPIO, but I think that it would be simpler and more standard to have a whole connector for that, so 7i80 would be my suggestion. However it appears to be out of stock at mesa and mesaus.
If you are in Europe, though, eusurplus has stock: eusurplus.com/index.php?route=product/pr...t_id=103&search=7i80
					If you are in Europe, though, eusurplus has stock: eusurplus.com/index.php?route=product/pr...t_id=103&search=7i80
		The following user(s) said Thank You: dsz123 	
			Please Log in or Create an account to join the conversation.
- PCW
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 17380
 - Thank you received: 5068
 
			
	
						04 Mar 2023 16:44				#265854
		by PCW
	
	
		
			
	
	
			 		
													
	
				Replied by PCW on topic Selecting driver boards for 6-axis PUMA arm			
			
				We will have limited qtys of 7I80HDTs (New FPGA version of the 7I80) this coming week.			
					
		The following user(s) said Thank You: dsz123 	
			Please Log in or Create an account to join the conversation.
- dsz123
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 11
 - Thank you received: 0
 
			
	
						04 Mar 2023 18:59				#265864
		by dsz123
	
	
		
			
	
			
			 		
													
	
				Replied by dsz123 on topic Selecting driver boards for 6-axis PUMA arm			
			
				Thanks to you both! I've got some (hopefully working!) 7I40-LVs on order from eBay, and it seems like there were a couple 7I80HDTs in stock so I bought one of those as well.
Really appreciate the timely and helpful replies here to get me going!
-Dave
 			
					Really appreciate the timely and helpful replies here to get me going!
-Dave
Please Log in or Create an account to join the conversation.
- dsz123
 - Offline
 - New Member
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 11
 - Thank you received: 0
 
			
	
						16 Mar 2023 18:05				#266852
		by dsz123
	
	
		
			
	
			
			 		
													
	
				Replied by dsz123 on topic Selecting driver boards for 6-axis PUMA arm			
			
				So I received my Mesa boards and have them powered and connected to each other and the PC:
A few follow-up questions:
Thanks in advance for any further advice / help y'all can provide!
-Dave
In case it helps, here's the output from the mesaflash --readhmid command:
	
		
			
		
		
			
							
		
	
			
					- The 7i80HDT has 5V power, and is connected to the PC via ethernet. Address is all sorted, and ping times are reasonable.
 - Three 7i40-LVs are connected to the 7i80HDT via 50-pin connectors (one 50-pin cable has two boards, another has just one). They are getting power and seem fine.
 
A few follow-up questions:
- How can I tell what bitfile / configuration is loaded on the 7i80HDT? The manual for that board lists quite a few "Supplied Configurations" (page 16, including: SVST8_4IM2, SVST4_8, etc.). But I can't find a configuration name like that listed in the output of any of the mesaflash queries.
 - Does anyone know where to find those configuration files for the 7i80HDT? I downloaded the support software for that board from the mesanet.com website, but there are only two .bin files in that Zip archive, neither of which corresponds to the list on page 16 of the manual.
 - Do I actually need a custom configuration (.bin) for my setup anyway? As I understand it, I'll want at 6 axes of servos (with PWM output each) and 6 encoder inputs, and then a bunch of GPIO. Can I use the SVST8_4IM2 configuration, assuming I find the .bin file somewhere? Or does it need to know that I'm using the 7i40-LVs and require further customization?
 
Thanks in advance for any further advice / help y'all can provide!
-Dave
In case it helps, here's the output from the mesaflash --readhmid command:
			Warning: Spoiler!		
		smab@mixabot:~$ mesaflash --device 7i80HDT --addr 10.10.10.100 --readhmid
Configuration Name: HOSTMOT2
General configuration information:
  BoardName : MESA7I80
  FPGA Size: 20 KGates
  FPGA Pins: 256
  Number of IO Ports: 3
  Width of one I/O port: 24
  Clock Low frequency: 100.0000 MHz
  Clock High frequency: 200.0000 MHz
  IDROM Type: 3
  Instance Stride 0: 4
  Instance Stride 1: 64
  Register Stride 0: 256
  Register Stride 1: 256
Modules in configuration:
  Module: DPLL
  There are 1 of DPLL in configuration
  Version: 0
  Registers: 7
  BaseAddress: 7000
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 4 bytes
  Module: WatchDog
  There are 1 of WatchDog in configuration
  Version: 0
  Registers: 3
  BaseAddress: 0C00
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 4 bytes
  Module: IOPort
  There are 3 of IOPort in configuration
  Version: 0
  Registers: 5
  BaseAddress: 1000
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 4 bytes
  Module: MuxedQCount
  There are 12 of MuxedQCount in configuration
  Version: 4
  Registers: 5
  BaseAddress: 3600
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 4 bytes
  Module: MuxedQCountSel
  There are 1 of MuxedQCountSel in configuration
  Version: 0
  Registers: 0
  BaseAddress: 0000
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 4 bytes
  Module: SSerial
  There are 1 of SSerial in configuration
  Version: 0
  Registers: 6
  BaseAddress: 5B00
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 64 bytes
  Module: StepGen
  There are 12 of StepGen in configuration
  Version: 2
  Registers: 10
  BaseAddress: 2000
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 4 bytes
  Module: LED
  There are 1 of LED in configuration
  Version: 0
  Registers: 1
  BaseAddress: 0200
  ClockFrequency: 100.000 MHz
  Register Stride: 256 bytes
  Instance Stride: 4 bytes
Configuration pin-out:
IO Connections for P1
Pin#                  I/O   Pri. func    Sec. func        Chan     Sec. Pin func   Sec. Pin Dir
 1                      0   IOPort       None
 3                      1   IOPort       MuxedQCount      0        MuxQ-A          (In)
 5                      2   IOPort       MuxedQCount      0        MuxQ-B          (In)
 7                      3   IOPort       MuxedQCount      0        MuxQ-IDX        (In)
 9                      4   IOPort       MuxedQCount      1        MuxQ-A          (In)
11                      5   IOPort       MuxedQCount      1        MuxQ-B          (In)
13                      6   IOPort       MuxedQCount      1        MuxQ-IDX        (In)
15                      7   IOPort       MuxedQCount      2        MuxQ-A          (In)
17                      8   IOPort       MuxedQCount      2        MuxQ-B          (In)
19                      9   IOPort       MuxedQCount      2        MuxQ-IDX        (In)
21                     10   IOPort       MuxedQCountSel   0        MuxSel0         (Out)
23                     11   IOPort       StepGen          5        Step/Table1     (Out)
25                     12   IOPort       StepGen          5        Dir/Table2      (Out)
27                     13   IOPort       StepGen          4        Step/Table1     (Out)
29                     14   IOPort       StepGen          4        Dir/Table2      (Out)
31                     15   IOPort       StepGen          3        Step/Table1     (Out)
33                     16   IOPort       StepGen          3        Dir/Table2      (Out)
35                     17   IOPort       StepGen          2        Step/Table1     (Out)
37                     18   IOPort       StepGen          2        Dir/Table2      (Out)
39                     19   IOPort       StepGen          1        Step/Table1     (Out)
41                     20   IOPort       StepGen          1        Dir/Table2      (Out)
43                     21   IOPort       StepGen          0        Step/Table1     (Out)
45                     22   IOPort       StepGen          0        Dir/Table2      (Out)
47                     23   IOPort       None
IO Connections for P2
Pin#                  I/O   Pri. func    Sec. func        Chan     Sec. Pin func   Sec. Pin Dir
 1                     24   IOPort       None
 3                     25   IOPort       MuxedQCount      3        MuxQ-A          (In)
 5                     26   IOPort       MuxedQCount      3        MuxQ-B          (In)
 7                     27   IOPort       MuxedQCount      3        MuxQ-IDX        (In)
 9                     28   IOPort       MuxedQCount      4        MuxQ-A          (In)
11                     29   IOPort       MuxedQCount      4        MuxQ-B          (In)
13                     30   IOPort       MuxedQCount      4        MuxQ-IDX        (In)
15                     31   IOPort       MuxedQCount      5        MuxQ-A          (In)
17                     32   IOPort       MuxedQCount      5        MuxQ-B          (In)
19                     33   IOPort       MuxedQCount      5        MuxQ-IDX        (In)
21                     34   IOPort       MuxedQCountSel   6        MuxSel0         (Out)
23                     35   IOPort       StepGen         11        Step/Table1     (Out)
25                     36   IOPort       StepGen         11        Dir/Table2      (Out)
27                     37   IOPort       StepGen         10        Step/Table1     (Out)
29                     38   IOPort       StepGen         10        Dir/Table2      (Out)
31                     39   IOPort       StepGen          9        Step/Table1     (Out)
33                     40   IOPort       StepGen          9        Dir/Table2      (Out)
35                     41   IOPort       StepGen          8        Step/Table1     (Out)
37                     42   IOPort       StepGen          8        Dir/Table2      (Out)
39                     43   IOPort       StepGen          7        Step/Table1     (Out)
41                     44   IOPort       StepGen          7        Dir/Table2      (Out)
43                     45   IOPort       StepGen          6        Step/Table1     (Out)
45                     46   IOPort       StepGen          6        Dir/Table2      (Out)
47                     47   IOPort       None
IO Connections for P3
Pin#                  I/O   Pri. func    Sec. func        Chan     Sec. Pin func   Sec. Pin Dir
 1                     48   IOPort       SSerial          0        RXData0         (In)
 3                     49   IOPort       SSerial          0        RXData1         (In)
 5                     50   IOPort       SSerial          0        RXData2         (In)
 7                     51   IOPort       SSerial          0        RXData3         (In)
 9                     52   IOPort       SSerial          0        TXData0         (Out)
11                     53   IOPort       SSerial          0        TXEn0           (Out)
13                     54   IOPort       SSerial          0        TXData1         (Out)
15                     55   IOPort       SSerial          0        TXEn1           (Out)
17                     56   IOPort       SSerial          0        TXData2         (Out)
19                     57   IOPort       SSerial          0        TXEn2           (Out)
21                     58   IOPort       SSerial          0        TXData3         (Out)
23                     59   IOPort       SSerial          0        TXEn3           (Out)
25                     60   IOPort       SSerial          0        RXData4         (In)
27                     61   IOPort       SSerial          0        RXData5         (In)
29                     62   IOPort       SSerial          0        RXData6         (In)
31                     63   IOPort       SSerial          0        RXData7         (In)
33                     64   IOPort       SSerial          0        TXData4         (Out)
35                     65   IOPort       SSerial          0        TXEn4           (Out)
37                     66   IOPort       SSerial          0        TXData5         (Out)
39                     67   IOPort       SSerial          0        TXEn5           (Out)
41                     68   IOPort       SSerial          0        TXData6         (Out)
43                     69   IOPort       SSerial          0        TXEn6           (Out)
45                     70   IOPort       SSerial          0        TXData7         (Out)
47                     71   IOPort       SSerial          0        TXEn7           (Out)Please Log in or Create an account to join the conversation.
- PCW
 - 
				
											 - Offline
 - Moderator
 - 
				
			 
		Less
		More
		
			
	
		- Posts: 17380
 - Thank you received: 5068
 
			
	
						16 Mar 2023 18:38				#266853
		by PCW
	
	
		
			
	
	
			 		
													
	
				Replied by PCW on topic Selecting driver boards for 6-axis PUMA arm			
			
				I would use 7i80hdt_sv12d.bin			
					
		The following user(s) said Thank You: dsz123 	
			Please Log in or Create an account to join the conversation.
		Moderators: PCW, jmelson	
		Time to create page: 0.110 seconds