Difference between revisions of "SteeringSensor"

From Elcano Project Wiki
Jump to navigation Jump to search
m (Absolute wheel position: Analog)
(Absolute wheel position: Analog)
Line 9: Line 9:
  
 
Analog position sensors typically communicate angle using current or voltage levels. In these devices, current or voltage is a function of the angle. Example:
 
Analog position sensors typically communicate angle using current or voltage levels. In these devices, current or voltage is a function of the angle. Example:
 +
 +
[[File:wheel-turn-angle_360-degree-sensor.png | border]]
  
 
== Absolute wheel position: Digital ==
 
== Absolute wheel position: Digital ==

Revision as of 03:40, 2 July 2019


Steering Angle Sensor

To change or maintain travel direction, the system must know which way the front wheels are pointing. Elcano tricycles accomplish this task with a rotational position sensor placed on the front steer wheels. Each trike has two steering columns, and both are instrumented for redundancy. The sensor is mechanically mounted to the shaft. Since the system uses Ackerman steering, the turn angle of the two wheels will be slightly different. More information is below. Rotational position sensors may be incremental or absolute. An incremental position sensor only reports discrete changes in rotational position and possibly direction of rotation. Absolute position sensors report the current angle of the sensor shaft. Absolute position sensors have advantages for sensing wheel angle, such as always knowing the current wheel angle at the power-on state. Elcano test vehicles use absolute rotation sensors.

Absolute wheel position: Analog

Analog position sensors typically communicate angle using current or voltage levels. In these devices, current or voltage is a function of the angle. Example:

Wheel-turn-angle 360-degree-sensor.png

Absolute wheel position: Digital

Digital position sensors communicate angle digitally. Two ways a sensor can accomplish this task is by encoding the measured position into a binary stream (serial communication) or by encoding the position in binary by driving several output pins high or low (parallel communication).

Reducing Sensor Noise

The problem with sending an analog signal over a long wire to the Arduino is that the wire acts as an antenna and picks up noise. Thus we connect a twisted wire pair from sensor to Arduino that has Signal In as well as the return. The return wire is connected to the ground wire at the sensor. The return wire may have picked up noise when it gets to the Arduino. The Arduino subtracts the analog value of return from the Signal In. Since both wires have picked up approximately the same noise, subtracting them gives a more robust reading. The Signal In return signal goes to an analog input on the Arduino, and is not connected to Arduino ground. The test vehicle analog sensor uses four wires: power, ground, signal, and signal return.

Another alternative is to use an analog-to-digital converter to digitize the voltage reading from the sensor before it reaches C2. All analog signals are sensitive to noise from the environment, especially nearby electronics. This noise appears as voltage changes on the power and signal wires of the turn sensors and is visible with an oscilloscope. Because noise creates changes in voltage on the signal and power wires, it creates erroneous angle readings.

--Main.JosephBreithaupt - 2017-02-11

Sensors used

We have gotten the best results from RTY060LVNAX 60 degree analog rotary encoder with a 5V range. Other possibilities:

- TT Electronics 6127 sensor giving 5V analog output over 360 degrees https://www.digikey.com/products/en?keywords=987-1393-ND . Has six times less resolution than a 60 degree sensor, and the minimum resolution can get lost in the noise.

- EMS22A50-M25-LD6 Digital rotary encoder. This produces 1024 steps over 360 degrees, in SPI. It will give a resolution of 0.35 degrees. Requires a change to Arduino.

- TLC1549CP 10-bit analog-to-digital converter with serial control. This could be used to digitize the voltage from the RTY060LVNAX, reducing noise from analog transmission. Requires a change to Arduino.

- AMS5043 Magnetic Angle Encoder. This requires that a cylindrical magnet be mounted precisely on the shaft. The sensor has an indent for the magnet, but the indent in not in the right place. Difficult to get robust readings from the part.

- It is possible to tap into the feedback wire on the linear actuator. This reading suffers from hysteresis.

- Putting a current sensor on the actuator lets us measure the power draw, but this is not adequate for control.

Mounting the Steering Angle Sensor

The steering sensor is mounted directly the top of the steering knuckle. In the top if the steering knuckle is threaded rod that is kept in place using a jam nut. On the end of that threaded rod is a coupling nut that has been locked in place using a jam nut. From the coupling nut an adapter has been 3d printed that connects the coupling nut to the Steering angle sensor. The steering angle sensor is help in place using a piece of flat metal bar with a 90 degree bend.

Mounting in this position is beneficial by reducing the amount of mechanical play that the system is exposed to and therefore reducing false readings.

Ackermann Steering Geometry: wheel angle and turning radius

Many road vehicles use a variation of Ackermann Steering to allow a vehicle with more than two wheels to turn smoothly. The challenge of steering a multi-wheel vehicle in a circle is that all wheels are at different distances to the center of that circle, so they must turn to different angles and spin at different speeds. The trike used in the current Elcano system solves the speed differential problem by having only one drive wheel and un-driven steering wheels. The steering differential problem is solved using Ackermann steering geometry. With a basic understanding of Ackermann steering and right triangle geometry, we can predict variables like the turning radius of different wheels and the steering angle of different wheels. The inner turning wheel and outer turning wheel turn at different angles and have different turning radii. These calculations find both dimensions.

Principle Formulas: Ackermann steering geometry is based on two right triangles. Every calculation comes from right triangle trigonometry and the Pythagorean Theorem.

%ATTACHURL%/Angles.png

Key Variables:

  • Length = vehicle wheel base length, measured from front hub center to back hub center
  • Width = distance between center of the front wheels
  • A_inner = turning angle of inner front wheel
  • A_outer = turning angle of outer front wheel; A_outer < A_inner
  • R_inner = turning radius of the inner front turning wheel
  • R_outer = turning radius of the outer front wheel

%ATTACHURL%/TrikeTurning.png

Initial known variables: Length, Width, A_inner

Unknowns: A_outer, R_outer, R_inner

Calculations: First, create the inner wheel right triangle:

  • R_inner = hypotenuse
  • Length and "x_inner" = remaining sides
  • Tan(A_inner) = Length / x_inner
  • x_inner = = Length / Tan(A_inner)
  • R_inner = sqrt[(x_inner)^2 + (Length)^2]

Now create the outer wheel right triangle:

  • R_outer = hypotenuse
  • Length and "x_outer" = remaining sides
  • x_outer = x_inner + Width
  • R_outer = sqrt[(x_outer)^2 + (Length)^2]
  • A_outer = Tanh(Length / x_outer)

Now check that the dimensions make sense:

  • R_outer should be larger than R_inner
  • A_outer should be smaller than A_inner

Important: These idealized calculations do not replace experimentation. Turn radius accuracy will suffer if there are traction losses, changes in road surface height, geometry changes during steering, and other variables not considered in these calculations. Furthermore, if the vehicle is moving during a steering angle change, the turning radius changes while moving and the vehicle will not turn in a circle with a fixed radius.

-- Main.JosephDonan - 2017-05-17