Wednesday, June 27, 2012

TOBL2: Fire Day

Today we had what I'm going to call a fire day. It's just like a snow day, except with fire...never thought that was an option but that's what happened. Fortunately, where I work was closed due to smoke/air quality and not because there was nothing left of the place. Going outside wasn't the best option and we don't have a TV to watch Spain vs. Portugal in the EURO, so I spent the whole day playing with TOBL instead!

One thing  you don't realize when you relocate for a significant amount of time, is all the little things you're used to having access to. For example, usually when I do any design work I like having paper around to make sure what's in my head can actually be drawn and physically embodied. Well, I don't have any paper here, but we do have some old pizza boxes lying around...

Here was the original idea, of bringing the belt to the motor

And here would be some servo mechanism to tension the belt

What's this, moving the motor to the belt. Is this opposite day? No, it's fire day...

Now whenever somebody says to do envelope calculations, I'm going to do them on a pizza box, so much more room! Anyways, a few minutes into my brainstorming session I realized that my original plan of bringing the belt to a fixed motor was going to be difficult. Initially I wanted to do something like this:


The second spring isn't shown, but if it were the servo would have a neutral point where the spring displacements are equal and thus F1 = F2. This way, the servo could be floating during driving (tension) and the spring (F2) could do all the work. Then, when you need to detension, the servo arm would rotate downwards. However, this gets complicated when trying to load the pin that the tensioner bearings are riding on. This pin would require a slot on both of the plates that sandwich the wheels, and if the spring forces on either side weren't perfectly balanced the pin would tilt and not tension very well.

At this point, I thought back to my real first idea, which was to have the motor on a pivot. I threw out that idea originally because I didn't like having a motor that's not rigid with the frame (and I still don't). Practically though, this is a lot simpler because a motor itself does not rotate like a belt does -you can't bolt anything to a belt. So, that's where my third pizza box drawing comes in, which looks like this in SolidWorks form:

Most of the drivetrain complete 

Better shot of the motor mount plate

View of the drivetrain from the inside where the electronics will eventually sit

This of course had it's own challenges. The primary difficulty was making a robust mounting system for the motor that would withstand the torque from the belt tension on a single pin! To that end, the motor is centered as much as possible so that it's entire mass isn't cantilevered. The plate that carries the motor will serve as one washer of a thrust bearing, the other will be the inner plate, and a matching thrust bearing on the other side. Thrust bearings can take a lot of lateral load, these ones are rated to about 26lbs and were the only ones on McMaster small enough for the task. This picture should clarify what that actually looks like:


In the middle of the frame you can see the darker grey thrust bearings sandwiching the inner plate. To get everything to fit and not interfere (still not entirely done with that) took a lot of geometry and trial and error. Probably took more time to dimension this plate than design all of the electronics.

Not including the servo or supports to keep the inner and outer plates together. 

There are several advantages to this design. Firstly, due to the way the motors are mounted there is more room in the middle section for the electronics and battery to sit. I'm still playing with the tray that will mount all of that but I'm going to do my best to make TOBL2 narrower -this would make driving a lot more controlled. Unlike the original design, I don't have to worry as much about the springs. As you can see above on the shots of the drivetrain in its entirety, there are holes galore on the motor mounting plate, both to accept some sort of turnbuckle from the servo and a spring(s) to maintain belt tension. Having all these mounting options will be important in finding the perfect spring displacement which keeps tension in normal and 60 degree mode, but also isn't too strong for the servo to de-clutch. Next step: figure out the supports which hold the two drivetrains together and carry the electronics. Maybe tomorrow will be a fire day too?

Sunday, June 17, 2012

Summer in Colorado: HardwareHardwareHardware

An embarrassing amount of time has passed since my last blog post. I don't resent that, because I think it just means my life is getting more interesting, so I have had less time to myself. Certainly though, I have missed my secret life as a rogue robot tinkerer, and all the creative stimulation that having projects to work on seems to bring. My six-wheeled friend, TOBL (soon to be TOBL2), has been waiting patiently, yet eagerly in his little box. He's finally about to get some attention!

Box O' TOBL has a pretty nice view. 

Yesterday, I moved to Colorado to spend the summer interning as a hardware engineer...sort of. My first day is Monday so we'll find out what work really entails then. As far as I can tell, I'll be beating some oscilloscopes to death and then when they fail, attempt to figure out why from a hardware perspective. I was told that you're either a hardware guy, and you'll absolutely fall in love with it, or the opposite. I'm hoping for the former.

In a way, I'll learn more about my various robotics projects this summer more so than ever before. Hardware is at the heart of each of them after all. It's also going to be tantalizing working somewhere with so many oscilloscopes, logic analyzers, a machine shop complete with CNC mills and a water jet, pick-an-place machines, clean room, the lot. Surely, I won't have access to any of these nice things for my personal projects, so it'll be a true test of character not to use my keycard to sneak in on weekends.

So, last time I had just got my motor controller boards back and soldered together. There were (and still are) a lot of loose ends to take of for MKI. In the original DigiKey order, I forgot to put in the resistors for the current detection circuit and the ones for the hard-short between the signal and power ground planes. The board has also yet to be hooked up to a scope (this is going to kill me), though this isn't as critical until I get around to the current detection stuff. It would also be nice to take a look at the pwm too, though.

All of the hardware! Arduino board, motor controller, motors, radio, servos, everything.

As for the rest of TOBL2, all of the pieces for the new drivetrain are in but I still don't have a frame. Most likely this will be a water jet piece(s) so that's something I can work on here. Since last time I got some new XBee radios. They're still Series 1 but this time I opted for the chip antenna, which has slightly worse range but should help keep the electronics a little more compact. The old ones I had worked great but were salvaged and had such old firmware that it couldn't be changed. This doesn't matter since they were already set to talk directly to each other. It's nice to have a second set so I can have multiple boards going at once. I updated the firmware and paired them so they're ready to go. I also modified the code so the servos trigger on a new button I added to the iPhone control layout. Though the way I did it would probably make CS people cry.

Well, that's not much of a progress post but all I got for now. Looking forward to summer of hardware and outdoorsy things!

Tuesday, January 24, 2012

MKI: First steps

Yesterday three MKI boards came in the mail and today two motors were driven by one MKI board. I'm very pleased with this controller so far because whenever it doesn't do what I want it to, it turns out it's my fault and not its; which is great! Let me explain...

Top

Bottom

MKI was easy to solder together, despite having no solder mask. The trickiest part was actually preparing XPWMShield. To accommodate a motor controller upstairs, the 5V regulator was just too tall and had to be bent down; which also meant putting the battery input terminal on the bottom. In addition, two of the servo pwm inputs were flipped (to eventually incorporate servos). All power is passed through a temporary splitter that supply the boards individually. When TOBL2 comes together I'll make a nicer connector.

Soldered

Shield mode

Once it was all together I ran into a slight problem with motor A. With no solder mask I shorted a small gap by one of the diodes which meant the motor would run fine and make the L298 burning hot in the other. After a few tests runs - being oblivious to this problem - it still works fine so the stock heat sinking does a great job, which was a concern given there is no space on the board to add heat sinking. Here are the motors running through a quick forward and reverse ramp program:



In getting to this stage I learned some subtleties about the L298. For example, I forgot to mention why the motors took their first steps today and not yesterday. In the datasheet ST says "The sense resistor, not of a wire wound type, must be grounded near the negative pole of Vs that must be near the GND pin of the I.C." Maybe it's just me but this doesn't get across the same message as "The current sense pins must be connected in some way to ground for the motors to work!" -which I found digging though forums. Until I get small enough resistors there is a wire in their place to keep the controller happy.

It's also important to note that for now at least, the regulator I had planned to use is bypassed by a wire, supplying 7.4 uncensored volts. It was hard to find a regulator with a low enough differential between input and output voltages to be efficient. Essentially with the current 2S pack I'd need a 4V regulator to support the voltage overhead and voltage loss during use. This would mean dissipating (read: wasting) a stupid amount of power. Combined and unloaded the motors draw 10mA times 3.4V loses only 34mW. However, during loading and more extreme conditions 2A is feasible which would be a 6.8W loss; which is quite significant! We'll see how it works without a regulator for now...glad I was talked out of it.

Next steps are to test the current sensing and implement my iPhone controller setup. Classes start tomorrow. Boooo.

Friday, January 13, 2012

MKI: Motor Controller

At some ill-defined point in time routing becomes art, I think. I've spent the greater part of the last week transforming that schematic from my last post into the pretty pictures you will see below. It's my first motor controller so I don't want it to suck. Call it MKI if you like (i.e. motor kontroller one or MKI like the VW GTI). The point is I've hung around Shane too long and am beginning the motor controller phase of my life; which is sure to see many iterations.


This first - shield - controller is being produced for TOBL2 and is therefore stupid compact. I know this because routing was a beach. It's contained within a 1.65" x 1.85" form and will plug directly into the headers on XPWMShield I created last year.

MKI has some things that I'm proud of:

There are isolated ground planes on the bottom layer of the board. This technique was suggested by Shane, of course. The logic pins are tied to a ground plane (SGND) which is only connected to the main power ground plane (PGND) by an 0805 resistor. This resistor is sized such that it will explode when too much current is drawn, acting like a fuse to protect the current-sensitive pins on the logic end. In this case running at 6V and fearing 2A gives a 3ohm resistor.

Power ground plane.

Signal ground plane.

Each motor has three diagnostic LEDs. One to indicate forward, one for reverse, and another for over-current. The latter I cannot tout until I write the software for the controller. This LED is not connected to the actually current sensing pin but will use feedback from it to illuminate. More on that once I have a board to test.

It's not visible now but originally several traces wove through the seven-pin header; which the DRC did not like. Moving these traces basically meant ripping up half the wires and starting fresh...#firstworldproblems. (<-- first and last time I will hash tag...yuck...Twitter)

Things I'm not proud of:

Looking at the images above the ground planes are pretty well-contained save for a few wires that need to reach the top header. We'll see if any noise results from this, shouldn't be too bad.

There are 50 f***ing vias. On a via/area basis that isn't bad at 16.4/in^2. However, this board is being ordered 4pcb Bare Bones which allows 35/in^2 maximum, and I'm sure you could pick a given 1" x 1" where that is the case. Hopefully they don't check that so carefully but regardless, that is a shameful quantity of vias.

Switching to the mechanical realm the Robot Marketplace order is in and I suspect so is the McMaster order. In addition I have been working on the frame design. Don't believe me?

Boom.

This wasn't meant to be in the "things I'm not proud of" section but now that I think of it I'm not proud of how little attention the mechanics have received. Maybe I can make it up by over-engineering servo-automated belt-tensioners...

Wednesday, January 4, 2012

Space Invaders and Motor Controllers

The first order of business to address in buildapalooza is TOBL2's motor controller -that way the new chassis can be built while the board and parts are being shipped! This is the first motor controller I've designed and it's based off of the L298 Dual H-Bridge, PowerSO 20 package. Essentially it's an Arduino shield...shield, because it will stack onto XPWMShield. Here's the schematic:


Actually this is the schematic, but it does kinda look like the Space Invaders alien:



It will drive TOBL2's two new FingerTech motors at 6V, which promise not to ask for any more than 2.6A combined if both motors stall. The L298 is rated to handle up to 4A, but to be safe the current sensing pins will be in effect and there will be more status LEDs than one could ever need. Oh, and automated belt tensioning/detensioning....yeah I really don't want any more slipping or breaking (which were all part of TOBL1's charm). More details on the controller once I have a physical controller in my hand to test. Just a little amuse-bouche before the feast of blogposts and building commence.

Tuesday, December 27, 2011

< Buildapalooza 2012 >

Did I mention I'm an undergrad? Apparently junior year is is a buttload harder than sophomore year, but after a long semester I'm back for what I call Buildapalooza 2012 (on vacation now won't be building until after the New Year). Here is the plan:

gMeter, the amount of time it will take to write your software, including all the LCD code, was just not feasible this semester. And now that I finally have a break, I simply don't hate myself enough to plow through the datasheets. Unfortunately, I'm putting you on the back shelf until the summer rolls around.

TOBL, you break too much. In the middle of September I brought TOBL to World Maker Faire in New York. Before I could even set up a demo I watched a five year old strip an internal gear on the left servo, by rolling it around like a wind up toy. Maybe that little tyke was trying to tell me something, like "get rid of the servos!" So that's what's going to happen.

Introducing TOBL V2.0 or TOBL2 if you like...there was already a V1.1 when counting the revised XPWMShield board. Some new things I'd like to incorporate into this version:
  • Gear motors
  • Belt/Pulley drive
  • Automated tensioning/clutch
  • Aluminum plates (replacing acrylic)
  • Bearings and proper supporting
  • Revisit the wireless updating on XPWMShield V1.1
  • New control interface (on iPhone)
By swapping the modified plastic geared servos for gear motors the possibility of breaking gears on back-loading should be eliminated. Further to this end, an automated clutch system is in the works to tension and de-tension the drive belts when summoned. The gear motors will also increase TOBL's top speed from a fraction of an MPH up to about 4.6 of them by my maths (using the motors linked above). Swapping the acrylic should work towards the goal of making TOBL more durable, not to mention I'll feel better pressing bearings into aluminum. Oh yeah, and because she'll be running motors I need to design a motor controller to interface w/XPWMShield. So there will be some electronics to keep things interesting too.

Okay, there you have it, Buildapalooza 2012 starts in T-minus one week. Until then I'm gonna go sit on a beach ;-)