Überclocker Update 18: I think I’ve fooled the Robot Gods… for now Edition

Alright, so I’m in Atlanta.

Sunday and Monday evening were mostly spent tuning the signal module. I found out that the Victors do indeed have optocouplers larger than the asses of most Hollywood women, and not even the Atmel chips could drive them. In the end, I still have to splice some small signal transistors (ran open-emitter style for non-inverting buffering goodness) into the PWM cables so the Victors would notice my desperate attempts to communicate.

The signal module is an Arduino embedded Atmel controller, and the code was all written by me. It’s my most complicated recent microcontroller adventure. I excavated a little of what I learned about discrete-time control systems from 6.01 to implement the control loop. Essentially, the AVR waits for an incoming R/C signal and reads each pulse width to determine my throttle stick position (and thus the fork position). It then has 18 milliseconds to determine what to do with it. 18 millseconds at 16MHZ is alot of time.

The AVR chips have a 10-bit analog-to-digital converter, so it reads the arm potentiometer and returns a value between 0 and 1023. Conveniently, R/C PWM signals have pulses between 1000uS and 2000uS, which is close enough to 1024 and 2048, 2^n values. So it was rather easy to make a proportional-only controller by scaling the armpot values. I added an integral term to the output equation also to get rid of the steady-state positioning error that resulted from the Victor controller’s deadband around 1500uS. This got the arm responsive enough for me to call it a night and tune it later.

Then stuff broke.

Of COURSE I had to go back and make a few solder joints more permanent, and otherwise touch up the PCB I mounted everything to. I didn’t notice that I had made a very tiny solder bridge between +22 volts (the robot’s main battery) and the output side of the 5v regulator chip.

When I plugged it back in, the AVR controller quite literally exploded in my face. It’s in several pieces.

So then I really did have to call it a night…and started packing the bot up. I ordered a new Arduino board (since the roasted one is very securely soldered to the PCB and not worth the effort to extract) and should have it next week. For anyone interested in learning from my adventures in making a giant servo, I’ll post my code when it’s cleaned up and tuned.

Uberclocker

I stuffed two suitcases full of robot equipment with clothing and personal supplies interspersed between the goods. Here’s Uberclocker locked into its handy bot carriage, with spare parts and hardware. As there was plenty of space in the suitcase, I zip tied NK and Pop Quiz in, to keep the bots in one place. The other suitcase contained the charger, transmitters, and tools.

Somehow this all got past Homeland Hilarity, but the botcase suffered a bent caster wheel. In order to make the thing self-supporting, I borrowed a hammer from one of the baggage offices to beat it back into shape. Wait, I just got handed a massive claw hammer by an airport desk clerk? Huh?

Anyways, in Atlanta, I got to work on the new clamp arm actuator. Here’s a rendering of the new design.

The gist of it: Solid aluminum structure, indirect gear drive. The leadscrew is fixed to the fr0k and does not rotate – instead, this whole assembly climbs up and down it. This takes all the loads off the motor shaft and instead transfers it to some big chunks of metal. The only way to destroy the clamp arm now is to rip the leadscrew clean out, or applying so much force that the nut strips out.

I’m not saying this can’t happen, but it’s unlikely to happen at D*C.

Here it is implemented. Yes, I’ve been COMPLETELY spoiled by easy access to machine tools – while this would have taken me a few minutes walking to get done at MITERS, I had to drive no less than 50 miles round-trip to make this sucker, and of course make Dale put up with my really bad habits that I’ve accumulated from working without supervision.

Suburban Atlanta needs a few you-build-it freelance engineering places, so I think I’ll make it a mission later in life to start them. Although I suspect the culture to support it is missing…

This actuator is a throwback to something I made in late 2005 for Science Olympiad. My robot entry for that year had a linear actuator attached to a movable jaw that could clamp down on objects. I custom-made the actuator using some gears hacked out of an R/C car, a block of UHMW, and patience on the drill press. The output gear is threaded on the inside to ride up and down a piece of threaded rod.

Pop Quiz 2

In the same machining session, I made a new blade collar for Pop Quiz. This retains the blade on its drive motor, so it’s a pretty critical part. Stock steel shaft collars didn’t come in the width I needed, and would have been a tad too heavy. So I made a quick aluminum clamp-style shaft collar, 1/4″ wide, 1.25″ OD.

I’m still facing severe failsafing issues with Pop Quiz. It’s been a reported problem with the tiny GWS receivers, and there seem to be no workarounds besides the usual anti-RF stuff, but the thing is still pretty jittery. It goes nuts if I turn the radio off when anything is moving.

Pretty bad for something that can remove outlying body parts with ease. I might switch back to the other micro-style receiver and mod it for height.

Here’s Pop Quiz in its final state.

In other bot news, Nuclear Kitten’s replacement battery pack arrived and will be swapped in shortly.

Dragon Con is A WEEK AWAY!

Überclocker Update 17: This is not funny Edition

Actually it is. From the past several builds, I have come to a conclusion that beginning exactly one week before I am to leave for an event, things will go horribly wrong that will leave whatever I am building crippled and disabled and unable to function up to its full potential. We saw this with TB4.5MCE for Battlebots IQ, where I lost an arm ESC and couldn’t obtain a main battery worth its weight in beans. TB4.5SP1 for Motorama had a whole third of the bot go out two days before I left, and only some last minute hacks allowed it to run at all.

There are plenty of rational explanations, of course, since I usually get to rigorously testing my engineered systems only in that last week or so, and untested systems like to break if they’re not properly designed and built. But the fun explanation is that the robot gods are just out to get me.

Oddly enough, nothing wrong wrong with NK except losing a LiPo cell, which is not a terminal disaster.

Over the past few days, I have been slowly wiring up Uberclocker. Working in an environment where everyone else is also working on something interesting means I get distracted far too easily, so it’s really taken _that long_ to wire the bot up.

Here’s most of the wiring. For a bot with 5 motors, 4 controllers, and 2 batteries, the wire layout is surprisngly clean. In this picture, the master power switch had not been mounted and no cell balancer wiring is installed.

This was the condition of the wiring for the bot’s first remote-controlled powerlift – the previous one was by touching wires to battery leads, which isn’t exactly a legit in-arena tactic. So what weighs more than or equal to a 30lber?

Well, at MITERS, plenty of things, but the only thing compact enough was this…

…45 pound rackmount uninterruptible power supply battery pack.

I approve of this bot. It can raise the 45 pounds pretty briskly and can suspend it in the air with no motor power applied (with the controller in Brake mode), and can bob it up and down. I don’t have an amperage number yet.

As expected, the back end of the bot lurched upwards on beginning the lift, but fell back down due to the support from the rollers in the front. I didn’t practice balancing the bot with a load on the rollers, but that should probably happen some time.

Then stuff broke.

First, while running the clamp arm with no load, the Banebots 12-45 controller popped its reverse direction. It was a very audible (and frightening) pop that made me think one of the FETs on the Victor 883 controlling the fork motors fried.This was strange, since I was using a motor far, far smaller than what the BB controller should be capable of handling, and it was not clamping down on something or hitting a travel limit. Just small reverse throttle.

So I have started the replacement-under-warranty process with Banebots. We’ll see how THAT one goes – chances are they’ll be considerate and ship me a new one in Atlanta.

After the mild scare, I decided to continue testing by dropping in the ANT150 controller from Nuclear Kitten. But again, that didn’t last long, because…

… the actuator motor shaft snapped. The B62 has a reported history of fracturing output shafts, and it looks like the bug hit me. However, it looks like the shaft actually broke in flexure, which tells me that the radial support at the base of the leadscrew is poor.

I’m not surprised. When the clamp arm hits something on its way down, the load on the actuator is essentially pure compression. Any buckling of the part connections at all could lead to catastrophic failure, which seems like what happend in this case.

This is bad. Very, very bad. Considering the whole leadscrew assembly was green Loctite’d together, it’s going to be nearly impossible to extract the broken shaft stub. A replacement motor is a hefty $30, and I’d have to buy and machine a new section of leadscrew.

Bad indeed. Without the upper clamp arm, Uberclocker is a giant spatula of questionable sexiness.

I’m now in the process of specing out parts and designing a new leadscrew machanism. This will be an indirect drive type device that will take the stress off the motor shaft itself. The motor, furthermore, will be mobile along with the upper clamp instead of being pivoted in a fixed location on the forks. Instead, the leadscrew will be fixed with a pin type joint at the base.

Using an indirect drive leadscrew mechanism, similar to the “beak” of my 2005 Science Olympiad robot, should make the whole thing more reliable anyway.

This will have to be fabbed in Atlanta, since I won’t get any parts I order now by Monday and actually get anything done. So with the clamp out of commission, I tied it to the fr0k to secure it and continued finishing and finalizing the wiring. I installed the battery balancer plug, another Convenient DB9 Connector of LiPo Balancingâ„¢ , physically mounted the power switch, and cut holes in the top plate to accomodate them.

Besides the DB9 connector, I also put in a direct connection to the battery using a Deans female side connector mounted to the left Ebay. For this bot, the charging current needed will exceed the limitations of the 24-22 gauge wire that fits in the DB9 connector, so I will use that only for the charger’s balancing function, and the big connector for actual charging current.

After tidying up the interior some, it was time for a beauty shot. Cheesy cell phone camera style.

The bot’s now only missing stickers and blinkenlichten.

And also the signal module. The signal module is my name for the receiver + fork controller combo that will occupy the left side Ebay. The fork controller will take input from the Spektrum Rx and do two things – one is buffer the signals for the Victors, and two is correlate my transmitter’s Throttle stick position with the position of the fork. It will take input from the potentiometer mounted to the fork and drive the ESC accordingly.

I decided to let it process al l the receiver signals (and passing drivetrain commands straight through) instead of making a separate buffer board for the drive only – it keeps the wiring cleaner and allows for future expansion of more advanced control schemes.

There is minimal hardware left to implement, since the microcontroller already comes with its neato support board.

There are exactly three days left. Can I get everything working?!?