Posts Tagged Electronics

Quadrupeds Need a Whole Lot of Motor Controllers

Bare PCBs 1

Blank PCBs

It’s
Leg Motor Controller 1

Motor Controller in the Leg

been a while since my last update on the Quadruped’s build progress, but I finally got my PCBs back for the motor controllers. Since the robot has twelve motors, I need six motor controllers in total (Each of my controllers controls two motors). They’re an updated version of the h-bridge I prototyped last fall, and used in my mini sumo robot. Although definately more than is really required, the motor controllers boast ultra-low RDSon Direct FETs, and HC9S12C32 micro-controller to handle the control and monitoring of the h-bridges. The black soldermask really enhances the look of the PCBs mounted in the robot.

Each leg has it’s own motor controller to manage the two motors in each leg, and another two motor controllers will manage the four motors in the core. The leg motor controllers are shaped specifically to fit within the frame on one side. The other side of the upper leg frame will hold another PCB with some sensors (I’m planning on e-field and/or pressure sensors in the robot’s feet and on the leg itself.)

Leg Motor Controller 2

Motor Controller and Angle Sensing Boards

Each
Leg Pogo Adaptor

Programming Adapter

joint requires angular feedback for the motor controller’s closed loop system. This is accomplished by using special potentiometers through which the joint shaft will pass. The potentiometer is wired as a simple voltage divider, andĀ  as the angle of the shaft changes, the potentiometer will give a different voltage output. This voltage will in turn be read by the motor controller and turned into useful data. The special potentiometers used here were a bit of an obscure find, but luckily they are a stock item at Digikey.

In order to ease the routing of all the connections on a 2 layer PCB, I decided to offload the large BDM header onto a separate board, which can be screwed onto the leg frame when I load the motor controller firmware. Several pogo pins thenĀ  make the programming connections to the test points on the controller PCB. I decided to get creative with the shape, and it turned out pretty neat.

I’m toying with the idea of putting a customized boot loader in the 9s12 controller, and giving the main processor (the Gumstix) programming control over all motor drivers. This way, instead of individually updating firmware on the motor controllers as I continue development down the road, I can instead just load one hex file into the Gumstix’ file system, and it will automatically update the firmware on all six motor controllers.

New Battery

LiPo Batteries

I also recently ordered the batteries I will be using to power the robot, 4x 2000 mAh LiPo batteries. I will be running then in a 2-series 2-parallel configuration to get 4000 mAh at 7.2 volts to run the entire robot. I still need to design and build a board that will fit underneath the batteries in the core of the robot, which will be responsible for battery protection/charging as well as power and control signal distribution to the four legs.

Still a lot of work to go, but it’s getting closer to walking…

, , ,

4 Comments

Some Random Stuff

GPS Module and Antenna

U-Blox GPS and Satantel Antenna

One of my friends working on a GPS project of his own managed to aquire some Sarantel Helical antennas, and got some for me as well. I’m planning on using them with the U-blox GPS module I have had sitting around. (I originally bought the GPS module for a MUAV autopilot I’ve been slowly designing, but when I got busy with work it got put aside and technology outpaced my design. For the MUAV autopilot I’m now intending on using a smaller, lighter GPS module which has freed up this one for service on my Quadruped). I’m still mulling around on choosing an LNA to throw in between the radio and antenna to improve sensitivity, so the PCB design is stalled until I make a selection.

Four Legs in progress 2

Teaser Photo

Although the GPS is “technically” able to attain a GPS lock indoors according to the literature, I’m not going to count on that. The camera will be used for indoor navigation and world modeling (I’ll post more on the progress of that later), while the GPS will be used primarily for outdoors navigation. The main reason for this is I’m thinking of having a go at the Robo Magellan competition put on by the Seattle Robotics Society. Although for the general flat environment a small walker is at a huge speed disadvantage to the larger wheeled or tracked rovers that typically enter, I’m more interested in the technical challenge of designing a robust and adaptive walking/navigation algorithm for the robot than winning.

Populated Mobo

Mini Sumo Brain

As a bit of an unrelated note, here’s a picture of the populated circuit board for my mini sumo. Now that there’s no pressing deadline to get the robot working, I’ll have more time to fiddle with this board and get FreeRTOS up and running on the LPC2138 to manage the data and computational requirements of some of the more complicated sensors I’m throwing into this sumo robot for no other reason than “because I thought it would be a good technical challenge”

, , , , ,

1 Comment

Mini Sumo PCBs…

BlankPCB

Bare PCBs

After
MockUpPCB

Fitting the PCB in the body...

a rushed PCB design marathon, I got my PCBs in last week, built by the good folks at APCircuits. The stencil came in shortly after. Since I made the PCBs into a panel, I had to cut them appart and file down the edges so that it would fit in the chassis. Overall the PCBs turned out nicely. I built them up and can sucessfully load code into the LPC2138. (No pictures of the completed circuit board yet). Things are comming togethor nicely.

You’ll also notice on the silk screen that I have given this robot a more creative name than Mini Sumo Version 6. I now call it “1.21Gw,” pronounced, of course, much as Doc Brown pronounced it in the timeless classic (no pun intended) “Back to the Future”

Now to finish it up and write some basic code for the robot games this weekend.

, , ,

4 Comments

H-Bridge Fundamentals

An introduction into basic H-Bridge theory and operation, this article covers the fundamentals you need to know to make a working H-Brigde with N and P Channel MOSFETs

Read the rest of this entry »

, ,

33 Comments

H-Bridge Prototype Build

IMG_4596

Driver Board with solder paste

I received the PCB for my prototype motor controller the other day, courtesy of the good folks at Batch PCB. For under $20 USD shipped for the motor controller PCB and the USB to Serial programming adapter PCB, I didn’t mind the one-month wait to get the PCBs back. Over my lunch break today I made use of the lab to do the re-flow work. It was actually my first time doing solder re-flow, my only previous experience being observing it in both small scale and mass production overseas through work.

Re-flowing this design is a must, as I’m employing “Direct FET” packages from IRF. The package is basically a metal can with the bare FET on the bottom side. This is supposed to allow for very good heat dissipation, and minimal packaging loss (read: Low RDS-on). I’m expecting this PCB to handle approximatley 10 amps per channel (it will handle two motors) continuous if properly cooled, but for the next few projects I have on the go, it will be much less. The PCB is small itself, measuring a little over 1″x1.5″!

IMG_4606

"Completed" Controller with PortEscap motor

The brain of this motor controller is a Freescale 9s12c micro controller. This MCU will handle PWM, ramping, optional position/speed encoder input, thermal monitoring, current monitoring, and RS-232 or I2C communications for a main processor. The main objective of this is to have all those tasks offloaded from a main robot CPU, allowing to have several of these drivers in one robot (i.e. 12 motor Quadruped robot)

Unfortunately, it appears that ths 9s12 I put on there has a maximum bus speed of 16 MHz, however the internal serial bootloader I was hoping to use to load code needs to ramp the PLL up to 24 MHz for proper operations, so testing is on hold until I get a 24 MHz capable part, hopefully early next week.

Edit: 14 December – I borrowed a BDM programmer from a colleague, and managed to load code into the 9s12, and currently have the motor driver actually driving a motor, complete with ramping up and down in speed.

,

2 Comments