Diagram of Inclinometer (12KB)
The inclinometer is a unidirectional sensor using a capacitive transducer. The output is a variable square wave which is proportional to the angle. The dielectric used within the transducer is chosen to provide dampening by reducing oscillations caused by overshooting or shock. Yet still provide a reasonable reaction time to angular movements. The dielectric used here is Glycol, which I purchased in the grocery store, should be available at the Pharmacy too, and this provides a reaction time to simulate the circular canals in the Inner Ear. The single axis sensor has a effective range from +60deg. to -60 deg with 1deg resolution. The accuracy is still not perfected, this fluxuates due to it being homemade versus manufactured, and hovers around 3deg. The reaction time is suitable to relay the angular postions for the robot to react in time. The tranducer is interfaced to a digital oscillator made with a Schmitt trigger Inverter gate. The oscillator has an adjustment using a trimmer pot to calibrate the sensor ouput. The sensor output is measured via a digital input port on the microcontroller to covert into the angular position. A software lookup table is all that's needed if there a concern about computation speed.
I have experimented with a Pole balancing robot using various type of homebuilt Inclinometers and I'll explain briefly here how I solved this. My "pole" is attached to a base in which I induce the external forces to test the reaction of the robotic pole. I'll be describing the Inclinometer sensor which I built to solve the balancing problem, thereafter, you can apply to this any sort of robot you want. I built this robot using two Inclinometers to provide an X & Y axis . I know you can simply go out and buy an Inclinometer, but I couldn't find one cheap enough and suitable to adapt into my robot.My robot isn't big enough to accomodate most of the commercial types there are so I resorted to making my own. I'm still working on a drawing to upload onto my webpage if anyone is curious about how it looks. It'll be online shortly.
I first experimented with different transducers to detect angular position similiar to what the others have described. Such as pendulum(inverted joystick) sensor w/ potentiometer/optical feedback, mercury switches, micro switches, etc,etc. I found the Inclinometer was a better solution than using an accelerometer in my project. Perhaps not in yours, but my inclinometer is no more difficult than interfacing a single input port bit on your microcontroller and having the software programmed to time the pulse width. The Acceleration functions can all be done in software. It's not rocket science. At the moment, I'm still trying to perfect the Inclinometer as far as repeatability is concerned because it's homebuilt, otherwise it's working as it is and quite accurately (approx 3deg resolution). Even your ear doesn't have such accuracy.
Now, what I emphasized in was making it's construction as easy as possible. I constructed the transducer with clear acrylic plastic so I can view the response of the electrolytic. I experimented with different types of liquids to test for dampening, dielectric constant, evaporation, etc. Since the enclosure for the tranducer is homebuilt the evaporation constant was a big factor. I'm still thinking about trying some others, even though I have this working, but it relys on how accessible the materials are. The electrolytic I use is Glycol, it very easy to get, I find it in the Pharmacy store, or the grocery store. The dielectric constant is high enough to let me make the inclinometer fit in approx. 4cc volume space, including the one chip oscillator. The power is routed to the sensor via the 3-wire cable. One wire is for the output, then power and ground.
The shape is cylindrical, 1cm width & 3cm dia., and the transducer probe is embedded inside. The probe is shaped in a semi-circular pattern and it's comprised of three elements. The elements are made using 16ga. magnet wire. They're arranged side by side with the outer two elements being common. The reason for 3 elements is to take into account for any deviation perpendicular to the sensor axis. The probe automatically averages any deviation to the axis through simple parallel circuit law of capacitance. You'll have the same reading if the sensor is upright or deviated from it's upright position. This isn't possible with only 2 elements, the capacitance will change.
The oscillator is nothing more than a 1 gate Schmitt trigger Inverter in a closed loop with a micro-trimmer(multi-turn 100k). The transducer is wired between the Input and ground. The center frequency of the oscillator is 1mhz, this is a result of the dielectric in the liquid, plus the components in order the circuit to oscillate. The capacitance can't be increased any more than I know of unless there's some other liquid with a higher dielectric constant AND similiar properties. So, the high frequency output is something I've been living with. Perhaps a High-Tech liquid but I can't afford it. At the moment, I have an interface to downconvert the high frequency pulse in order for my micro (abit too slow for this) to read this. It's simply a divide counter and through this I can increase the resolution which the micro can produce.
Anyhow, that's not the point. The other factor, dampening, was considered to give the robot a smooth response built into the sensor as much as possible w/o having to program any more than necessary. The Glycol gives me that, and with alittle filter subroutine to round it off. The reaction time of the sensor is quick, no lag whatsoever. The Inclinometer gives me a range of +/-60deg. I expect anything more than that, the robot is "flat on it's back" anyway. Not even a person can withold themselves upright beyond a certain angle w/o falling down.
As far as Inertia is concerned, this is overcomed due to the inherit nature of this sensor, much like the semicircular canals in your ear. The inclinometer performs the same function as this. The robot reacts to all forces applied to it. If there's a large external force applied to the robotic pole (such as being pushed), the inertia of the liquid will force it create a counteracting change in capacitance. This prevents severe oscillations in the robot's stability. In combination with the liquid dampening, it reacts to the change in the angular position before it's too late.
The counteracting change in capacitance from the inertia of the liquid corresponds to the angle necessary to make the robot lean into the applied force and thus attempt to balance itself, and it does. The liquid will tend to remain still (due to Inertia) but slides towards the applied force because of the cylindrical enclosure and change the capacitance. If there's any change in the attitude, the sensor will also output the change in angle and the robot will change accordingly while it's experiencing the shock. The sensor can also sustain vibration using the Filter software. This software will cancel the repititious vibrations and avoid the robot from being too sensitive to this sort of motion.
I tested this by inducing all kinds forces to try and confuse it, and it still reacts quick enough to stay upright. When I hold it in my hands and gyrate it in all sorts of directions it continues to maintain upright. The next step is to make it free fall rather than me inducing the external forces. Most of the mechanics are already in place, I just have to attach the robotic pole to a gimbal on the bottom of it to give it freedom and watch it go. There may be some info which I forgot to place here, so I'll try to answer any questions.
Since this is a homebuilt version , there's still experimentation with construction. One, especially is how to prevent the dielectric from evaporating. So far, the transducer has been operational for approx. 9months before the dielectric evaporated below the threshold of operation. A suitable container is needed (and not expensive) to produce similiar results as a hermetically sealed container. Right now, all I use is a clear plastic material cut up from used boxes, bottles and sealed with hot glue (not contaminating as superglue is).
Common, everyday clear arylic plastic material found in consumer packaging. I used the pill bottles to get the cylindrical shape for the sensor and flat sheets from the boxes to seal the ends.
Magnet wire, 16 gauge
74HC14, Schmitt trigger Inverter
100k multi-turn trimmer
Comments, suggestions, tips are