Selecting driver boards for 6-axis PUMA arm
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Time to create page: 0.082 seconds