by PaulL » Sun Feb 02, 2014 12:55 am
by PaulL
Sun Feb 02, 2014 12:55 am
I love it when a plan comes together...
I've made more progress. The controller board is built, the power board is built. I've already made modifications to the next revision based on building these two boards, some things that I needed, some things that will make it easier to build.
As a first set of boards, I've managed to turn this into what is, so far, a working prototype. I've done some testing on the power board and the control board. Only audio amp, optocoupler, PMBus to the DC to DC converters, and laser driver / laser actuator driver testing remain. I'm confident in all but the PMBus testing - for that to be successful depends on a few things - we'll see. I had a few changes to make, not too bad: added forgotten pull up resistors to the PCA9685 I2C Bus, changed resistors on the MPU-9150 / DC to DC Converter I2C Bus, swapped out the oscillator capacitors in troubleshooting the fact that analog voltage input is required to run the STM32 (THAT was frustrating to realize!).
I did manage to fry the first STM32, as it is quite clear that if you accidentally plug pullups into a 5v bus on a breadboard, you will render the chip non-functional (didn't have low enough resistors on the MPU9150 / PMBus I2C, wired out to a breadboard to fiddle). I "borrowed" an STM32 from a Maple Mini, as it's bootloader is already flashed and I didn't want to fuss with trying to tack a wire to a pin again. I'll probably put another STM32 back in the Maple Mini I robbed the chip from at some point. I have 4 Maple Mini's lying around, and I'm sure I can find projects for all of them at some point in the future - no sense leaving one board processor-less. I'll order an extra STM32 next time I place a Digikey order.
These boards were relatively problem free to build, easy to get working, very few solder bridges easily fixed. The correct resistor packs have arrived and are installed - only one bridge with manually applied paste across 5 tiny resistor packs, not too bad. A little flux pen and an iron, and done. I had 2 or 3 bridges on the STM32, fixed with flux pen and iron.
I had an oversight - I didn't connect Boot1 to anything, as I figured it wasn't needed - WRONG! It needed to be tied to ground to flash the Maple Mini boot loader. Magnet wire and cautious effort was needed to bridge off the pin to ground. I've added a solder bridge for the next board rev.
I used magnet wire to add the missing I2C pullup resistors as well.
I think one more rev will make these boards just about right, but with the tweaks, they're good enough to test and develop with.
Initially, I ordered two sets of components, thinking I'd fry enough to justify a second set on another of the 3 boards sent - other than the accidentally blown STM32, I have no other component failures, so these parts will be saved for boards V2.
One more note about construction - via-in-pad is problematic, no matter what you do. Though what I have is working, I don't know if it'll handle the current. I'll give it some thought and try something different on the DC to DC converters on the next board rev (at the least, move vias out of the pads - there's room). I may go for a larger single via in the power pads, as there's a lot of current to be running in and out of these - a via large enough to easily flow a good amount of solder - the holes I have are what was recommended in the datasheet, but they're not big enough to feasibly get solder into once the component is mounted.
Testing!
All testing was done via Remote Desktop into the Z530 board. Two USB ports are on the control board, wired to the Z530 (white connectors bottom right on the blue Z530 board in the pics). One is the typical Maple Mini USB connection (for programming), the other is a CP2103 USB to UART bridge for higher speed / less CPU load.
The power board voltages are all good, the MAX1614 works as expected - a high current switch driver / controller that can keep the LiPo's safe from over-discharge and notify the STM32 that shutdown is needed (which can then power down non-critical functions, and ultimately the Z530).
The CP2103 was flawless from the start, no issues with this chip at all. I thought it would have a problem, as the stencil left the pads with very little paste - but it was fine. I'm capable of running 921600 bps through it to and from the STM32 - a nice hardware pipe for commands and responses. I've read that SerialUSB is software-based and won't go that fast, no reason to tie up the CPU doing needless things. Also handy was that by chance, I have the CP2013 tied to USART1 on the STM32, which is needed for bootloading, so that was convenient.
The PCA9685's are talking at 400 kHz, I'll do some motion on a servo or two soon.
The MPU9150 is talking over I2C at 400 khz, I ran a sketch to verify, got to see data streaming out of the CP2103 over a 921600 bps connection via Hyperterminal on the Z530 board - temp, mag, gyro, accelerometer. Monitoring temp on the MPU9150 could be useful, for example, to diagnose fan problems.
There will be some hardware changes to the torso brackets, I will need to add / move some holes for wiring. Haven't worked out a bot-controlled charger plugin (easy alignment, easy insertion, sufficient current handling), I'll get to that eventually. Maybe have him stick his finger in a special socket, who knows.
Fit Testing!
These boards will be stacked. I still don't know how much interference the DC to DC converters may cause, some copper shielding between the power and control board may be needed. I don't anticipate any interference problems between the Z530 and the control board.
The fit around the fan and the speakers is spot on. The position of the boards cuts the fan air flow such that these two boards get some air, as does the Z530. This should work well.
I need to give some thought to board mounting. The holes left and right on the control board are a little off (I knew they would be, I wasn't expecting the first board rev to work as well as it did) - I could make it work as is, but I'll change it in the next rev.
Also need to give more thought to wire routing, there's going to be quite a bit going on - camera power, Laser power, Laser Actuator Power, Hand Servo Power, Z530 power, SATA cable (found a site that sells some right-angled combinations that should work) and SATA power, battery wires, Camera and BlinkM in the head, Microphone, USB, Speaker Wiring, Audio input wiring, Z530 board header connections, power switch, neck servos, etc. I'll use high flex silicone wiring where I can. I need to order some 24 or 26 gauge stuff, have some 30 something gauge, 20, 16, and 12 gauge in silicone. I might design up some wiring boards I can tuck here and there - $5 each for 3 copies (<1 sq in), can't beat that OSHPark price!!
I'll definitely do the same STM32's in the hands, I have a set of UART pins brought out to some connections to control them from the main board.
The pics!!
So, here are the boards as received - very nice:
Boards as built:
Boards stacked together:
And fit in the top frame of the torso (bear in mind, this "box" will house two standard servos and 3 micro servos - one micro servo will be above the power board on the right. LOTS of stuff packed in tight):
And a bit of a secret I'll let out, a 64GB SSD I'll mount to the chest (takes only 5v, so power will get wired to the same supply as the Z530 board). Yes, there are two, only one will be in the bot at one time:
He'll be 1 foot tall, 1.6 Ghz, 2gb 667Mhz DDR2, 64Gb SSD, 72 Mhz STM32 controller, mag / gyro / accelerometer, PMBus power control, QSI Speakers with enclosures driven by a Class D ~2W audio amp, Micro Camera, NTSC to USB Converter, Line Laser and Actuator for 3D imaging, 3 DOF neck, 5 DOF per hand, Wrist and Hip rotation, 33 servos, 1 magnetic actuator, plus whatever I'm forgetting at the moment. He's going to be quite a machine.
***
A quick note about SATA and SBC's: I checked out some details on Compulab's site (they make the FitPC2, etc), and what I found is that they use a "bridge" from SATA to IDE, meaning that even though SATA boasts of huge speed, you'd be limited to IDE ATA speeds even with the fastest drive you can find.
However, the Kontron board I'm using has a SATA controller strapped to the PCI bus, as it should be: faster.
Regardless, the SATA drive will beat the snot out of the MicroSD card I was planning on using. Maybe I can find another use for the MicroSD card - MP3's or whatever, personality / program configuration, something like that.
I love it when a plan comes together...
I've made more progress. The controller board is built, the power board is built. I've already made modifications to the next revision based on building these two boards, some things that I needed, some things that will make it easier to build.
As a first set of boards, I've managed to turn this into what is, so far, a working prototype. I've done some testing on the power board and the control board. Only audio amp, optocoupler, PMBus to the DC to DC converters, and laser driver / laser actuator driver testing remain. I'm confident in all but the PMBus testing - for that to be successful depends on a few things - we'll see. I had a few changes to make, not too bad: added forgotten pull up resistors to the PCA9685 I2C Bus, changed resistors on the MPU-9150 / DC to DC Converter I2C Bus, swapped out the oscillator capacitors in troubleshooting the fact that analog voltage input is required to run the STM32 (THAT was frustrating to realize!).
I did manage to fry the first STM32, as it is quite clear that if you accidentally plug pullups into a 5v bus on a breadboard, you will render the chip non-functional (didn't have low enough resistors on the MPU9150 / PMBus I2C, wired out to a breadboard to fiddle). I "borrowed" an STM32 from a Maple Mini, as it's bootloader is already flashed and I didn't want to fuss with trying to tack a wire to a pin again. I'll probably put another STM32 back in the Maple Mini I robbed the chip from at some point. I have 4 Maple Mini's lying around, and I'm sure I can find projects for all of them at some point in the future - no sense leaving one board processor-less. I'll order an extra STM32 next time I place a Digikey order.
These boards were relatively problem free to build, easy to get working, very few solder bridges easily fixed. The correct resistor packs have arrived and are installed - only one bridge with manually applied paste across 5 tiny resistor packs, not too bad. A little flux pen and an iron, and done. I had 2 or 3 bridges on the STM32, fixed with flux pen and iron.
I had an oversight - I didn't connect Boot1 to anything, as I figured it wasn't needed - WRONG! It needed to be tied to ground to flash the Maple Mini boot loader. Magnet wire and cautious effort was needed to bridge off the pin to ground. I've added a solder bridge for the next board rev.
I used magnet wire to add the missing I2C pullup resistors as well.
I think one more rev will make these boards just about right, but with the tweaks, they're good enough to test and develop with.
Initially, I ordered two sets of components, thinking I'd fry enough to justify a second set on another of the 3 boards sent - other than the accidentally blown STM32, I have no other component failures, so these parts will be saved for boards V2.
One more note about construction - via-in-pad is problematic, no matter what you do. Though what I have is working, I don't know if it'll handle the current. I'll give it some thought and try something different on the DC to DC converters on the next board rev (at the least, move vias out of the pads - there's room). I may go for a larger single via in the power pads, as there's a lot of current to be running in and out of these - a via large enough to easily flow a good amount of solder - the holes I have are what was recommended in the datasheet, but they're not big enough to feasibly get solder into once the component is mounted.
Testing!
All testing was done via Remote Desktop into the Z530 board. Two USB ports are on the control board, wired to the Z530 (white connectors bottom right on the blue Z530 board in the pics). One is the typical Maple Mini USB connection (for programming), the other is a CP2103 USB to UART bridge for higher speed / less CPU load.
The power board voltages are all good, the MAX1614 works as expected - a high current switch driver / controller that can keep the LiPo's safe from over-discharge and notify the STM32 that shutdown is needed (which can then power down non-critical functions, and ultimately the Z530).
The CP2103 was flawless from the start, no issues with this chip at all. I thought it would have a problem, as the stencil left the pads with very little paste - but it was fine. I'm capable of running 921600 bps through it to and from the STM32 - a nice hardware pipe for commands and responses. I've read that SerialUSB is software-based and won't go that fast, no reason to tie up the CPU doing needless things. Also handy was that by chance, I have the CP2013 tied to USART1 on the STM32, which is needed for bootloading, so that was convenient.
The PCA9685's are talking at 400 kHz, I'll do some motion on a servo or two soon.
The MPU9150 is talking over I2C at 400 khz, I ran a sketch to verify, got to see data streaming out of the CP2103 over a 921600 bps connection via Hyperterminal on the Z530 board - temp, mag, gyro, accelerometer. Monitoring temp on the MPU9150 could be useful, for example, to diagnose fan problems.
There will be some hardware changes to the torso brackets, I will need to add / move some holes for wiring. Haven't worked out a bot-controlled charger plugin (easy alignment, easy insertion, sufficient current handling), I'll get to that eventually. Maybe have him stick his finger in a special socket, who knows.
Fit Testing!
These boards will be stacked. I still don't know how much interference the DC to DC converters may cause, some copper shielding between the power and control board may be needed. I don't anticipate any interference problems between the Z530 and the control board.
The fit around the fan and the speakers is spot on. The position of the boards cuts the fan air flow such that these two boards get some air, as does the Z530. This should work well.
I need to give some thought to board mounting. The holes left and right on the control board are a little off (I knew they would be, I wasn't expecting the first board rev to work as well as it did) - I could make it work as is, but I'll change it in the next rev.
Also need to give more thought to wire routing, there's going to be quite a bit going on - camera power, Laser power, Laser Actuator Power, Hand Servo Power, Z530 power, SATA cable (found a site that sells some right-angled combinations that should work) and SATA power, battery wires, Camera and BlinkM in the head, Microphone, USB, Speaker Wiring, Audio input wiring, Z530 board header connections, power switch, neck servos, etc. I'll use high flex silicone wiring where I can. I need to order some 24 or 26 gauge stuff, have some 30 something gauge, 20, 16, and 12 gauge in silicone. I might design up some wiring boards I can tuck here and there - $5 each for 3 copies (<1 sq in), can't beat that OSHPark price!!
I'll definitely do the same STM32's in the hands, I have a set of UART pins brought out to some connections to control them from the main board.
The pics!!
So, here are the boards as received - very nice:
Boards as built:
Boards stacked together:
And fit in the top frame of the torso (bear in mind, this "box" will house two standard servos and 3 micro servos - one micro servo will be above the power board on the right. LOTS of stuff packed in tight):
And a bit of a secret I'll let out, a 64GB SSD I'll mount to the chest (takes only 5v, so power will get wired to the same supply as the Z530 board). Yes, there are two, only one will be in the bot at one time:
He'll be 1 foot tall, 1.6 Ghz, 2gb 667Mhz DDR2, 64Gb SSD, 72 Mhz STM32 controller, mag / gyro / accelerometer, PMBus power control, QSI Speakers with enclosures driven by a Class D ~2W audio amp, Micro Camera, NTSC to USB Converter, Line Laser and Actuator for 3D imaging, 3 DOF neck, 5 DOF per hand, Wrist and Hip rotation, 33 servos, 1 magnetic actuator, plus whatever I'm forgetting at the moment. He's going to be quite a machine.
***
A quick note about SATA and SBC's: I checked out some details on Compulab's site (they make the FitPC2, etc), and what I found is that they use a "bridge" from SATA to IDE, meaning that even though SATA boasts of huge speed, you'd be limited to IDE ATA speeds even with the fastest drive you can find.
However, the Kontron board I'm using has a SATA controller strapped to the PCI bus, as it should be: faster.
Regardless, the SATA drive will beat the snot out of the MicroSD card I was planning on using. Maybe I can find another use for the MicroSD card - MP3's or whatever, personality / program configuration, something like that.