Wheel encoder

From Rsewiki
(Difference between revisions)
Jump to: navigation, search
(Encoder interface)
(Introduction)
 
(17 intermediate revisions by one user not shown)
Line 5: Line 5:
 
Wheel encoders are intended on all 4 motors, replacing the brake.
 
Wheel encoders are intended on all 4 motors, replacing the brake.
  
Initially rear motors are mounted with encoders. The encoders are of type AS5057 12 bit magnetic encoders.
+
Initially rear motors are mounted with encoders only. The encoders are of type AS5057 14 bit magnetic encoders.
  
 
Additionally encoder A and B signals are forwarded, but not enabled.
 
Additionally encoder A and B signals are forwarded, but not enabled.
 +
 +
The third encoder interface is used for steering - implemented using an AS5045 12 bit encoder.
  
 
==Board==
 
==Board==
Line 16: Line 18:
  
 
Figure 1. Breadboard with Teensy 3.1 and 4 8-pin connectors to the AS5047 boards. The board also holds the needed voltage dividers for battery voltage and steering potentiometer.
 
Figure 1. Breadboard with Teensy 3.1 and 4 8-pin connectors to the AS5047 boards. The board also holds the needed voltage dividers for battery voltage and steering potentiometer.
 +
 +
FRONT-RIGHT is changed to be steering encoder (may 2019).
  
 
===Encoder interface===
 
===Encoder interface===
Line 35: Line 39:
 
The coding above conforms to T568A, but  
 
The coding above conforms to T568A, but  
 
the cables used on the terrainhopper uses T568B,  
 
the cables used on the terrainhopper uses T568B,  
([[File:rj45-color-code.png]]
+
 
but as long as both cables are the same, then it works.
+
[[File:rj45-color-code.png]]
 +
 
 +
but as long as both cables are the same, then it should be OK.
 +
 
 +
====Connection to Teensy====
 +
 
 +
CLK  on all ports -> 100 Ohm -> pin 14 (CLK) on Teensy
 +
MISO on all ports -> 100 Ohm -> pin  8 (DIN)
 +
MOSI on all ports -> 100 Ohm -> pin  7 (DOUT)
 +
3.3V on all ports to pin 3.3V on Teensy
 +
Chip select:
 +
Rear Right -> 100 Ohm -> pin 9
 +
Rear Left  -> 100 Ohm -> pin 15
 +
Steer      -> 0 Ohm -> pin 20
 +
Front Left -> 0 Ohm -> pin 21
 +
Encoder A, B
 +
Rear Right -> 0 Ohm -> pin 18 (A), 17 (B)
 +
Rear Left  -> 0 Ohm -> pin  4 (A),  5 (B)
 +
Steer      -> 0 Ohm -> pin  2 (A),  3 (B)
 +
Front Left -> 0 Ohm -> pin  0 (A),  1 (B)
  
 
===Voltage dividers===
 
===Voltage dividers===
Line 46: Line 69:
 
The battery voltage divider uses a 27kOhm and a 1.2kOhm, allowing up to 28.2V to be measured. (in (optional) ground connection is mounted a 100 Ohm resistor to avoid or limit any ground current).
 
The battery voltage divider uses a 27kOhm and a 1.2kOhm, allowing up to 28.2V to be measured. (in (optional) ground connection is mounted a 100 Ohm resistor to avoid or limit any ground current).
 
There is a filter capacitor of 390nF.
 
There is a filter capacitor of 390nF.
 +
 +
Connected to pin (23) A9 on Teensy
  
 
====Steering potentiometer====
 
====Steering potentiometer====
  
 
The steering potentiometer is supplied from 3.3V supply (through 100 Ohm resistors). The arm is then voltage divided using a 20kOhm and 11kOhm resistors, with a filter capacitor of 330nF.
 
The steering potentiometer is supplied from 3.3V supply (through 100 Ohm resistors). The arm is then voltage divided using a 20kOhm and 11kOhm resistors, with a filter capacitor of 330nF.
 +
 +
Potentiometer arm is connected to pin (19) A5 on Teensy.
  
 
====Emergency stop====
 
====Emergency stop====
Line 56: Line 83:
  
 
A voltage divider is added on the emergency line with 20kOhm and 4.7kOhm, this should give a switch voltage of about 7V - assuming supply from 24 V.
 
A voltage divider is added on the emergency line with 20kOhm and 4.7kOhm, this should give a switch voltage of about 7V - assuming supply from 24 V.
 +
 +
Connected to pin 22 (A8) on Teensy.
 +
 +
=== Debug output ===
 +
 +
The Teensy constantly blinks its LED every second.
 +
 +
The output should look something like:
 +
 +
$ cat /dev/ttyACM0
 +
enc 3.3 0 1  7907 54  1747 60 2740 1 1 0 0 805364
 +
enc 3.3 0 1  7908 54  1748 60 2741 1 1 0 0 805372
 +
enc 3.3 0 1  7908 54  1745 60 2740 1 1 0 0 805380
 +
enc 3.3 0 1  7908 54  1752 60 2741 1 1 0 0 805388
 +
enc 3.3 0 1  7908 54  1747 60 2741 1 1 0 0 805396
 +
enc 3.3 0 1  7907 54  1748 60 2740 1 1 0 0 805403
 +
enc 3.3 0 1  7908 54  1748 60 2741 1 1 0 0 805411
 +
enc 3.3 0 1  7908 54  1748 60 2740 1 1 0 0 805419
 +
enc 3.3 0 1  7907 54  1749 60 2741 1 1 0 0 805427
 +
 +
messages has this format:
 +
 +
enc : keyword
 +
3.3 : intended for battery voltage (V)  (connected to 3.3V output of teensy - not used)
 +
0  : emergency switch (1=24V)          (not connected)
 +
1  : value from steering potentiometer (value 1 is a bit odd - not used)
 +
7907: encoder rear left
 +
54  : magnet distance rear left (fine)
 +
1747: encoder rear right
 +
60  : magnet distance rear right (fine)
 +
2740: encoder value steering (2560=max right, 2755=center, 2966=max left)
 +
1  : valid value (as5045 steering)
 +
1  : ocf from 5045 init OK
 +
0  : cof from 5045 no overflow if 0
 +
0  : lin from 5045 no liniarity problems if 0
 +
805364 : time in ms since Teensy start
 +
Line ends with a linefeed and carriage return

Latest revision as of 14:58, 3 July 2019

Back to TerrainHopper

Contents

[edit] Introduction

Wheel encoders are intended on all 4 motors, replacing the brake.

Initially rear motors are mounted with encoders only. The encoders are of type AS5057 14 bit magnetic encoders.

Additionally encoder A and B signals are forwarded, but not enabled.

The third encoder interface is used for steering - implemented using an AS5045 12 bit encoder.

[edit] Board

Encoder interface is I2C and interfaced using a Teensy 3.1 processor, as shown in figure 1.

Board ann.png

Figure 1. Breadboard with Teensy 3.1 and 4 8-pin connectors to the AS5047 boards. The board also holds the needed voltage dividers for battery voltage and steering potentiometer.

FRONT-RIGHT is changed to be steering encoder (may 2019).

[edit] Encoder interface

Signal wires to encoders has a 100 Ohm serial resistor (CLK, MISO, MOSI (and CS on rear encoders))

  • pin 1: CLK (green-white)
  • pin 2: Chip select (green)
  • pin 3: MISO (orange-white)
  • pin 4: GND (blue)
  • pin 5: MOSI (blue-white)
  • pin 6: 3.3V (orange)
  • pin 7: B quadrature signal (brown-white)
  • pin 8: A quadrature signal (brown)

Wires using unshielded network cable (cat-5)

NB! some network cables have different color coding in the rj45 side of the connector. The coding above conforms to T568A, but the cables used on the terrainhopper uses T568B,

Rj45-color-code.png

but as long as both cables are the same, then it should be OK.

[edit] Connection to Teensy

CLK  on all ports -> 100 Ohm -> pin 14 (CLK) on Teensy
MISO on all ports -> 100 Ohm -> pin  8 (DIN)
MOSI on all ports -> 100 Ohm -> pin  7 (DOUT)
3.3V on all ports to pin 3.3V on Teensy

Chip select:

Rear Right -> 100 Ohm -> pin 9
Rear Left  -> 100 Ohm -> pin 15
Steer      -> 0 Ohm -> pin 20
Front Left -> 0 Ohm -> pin 21

Encoder A, B

Rear Right -> 0 Ohm -> pin 18 (A), 17 (B)
Rear Left  -> 0 Ohm -> pin  4 (A),  5 (B)
Steer      -> 0 Ohm -> pin  2 (A),  3 (B)
Front Left -> 0 Ohm -> pin  0 (A),  1 (B)

[edit] Voltage dividers

The Teensy AD converter for battery voltage and steering potentiometer uses 1.2V reference. The signals therefore needs voltage dividers.

[edit] Battery

The battery voltage divider uses a 27kOhm and a 1.2kOhm, allowing up to 28.2V to be measured. (in (optional) ground connection is mounted a 100 Ohm resistor to avoid or limit any ground current). There is a filter capacitor of 390nF.

Connected to pin (23) A9 on Teensy

[edit] Steering potentiometer

The steering potentiometer is supplied from 3.3V supply (through 100 Ohm resistors). The arm is then voltage divided using a 20kOhm and 11kOhm resistors, with a filter capacitor of 330nF.

Potentiometer arm is connected to pin (19) A5 on Teensy.

[edit] Emergency stop

This is intended to inform software that emergency stop is pressed - pt. only one channel for rear emergency stop, but maybe the remote should be separate.

A voltage divider is added on the emergency line with 20kOhm and 4.7kOhm, this should give a switch voltage of about 7V - assuming supply from 24 V.

Connected to pin 22 (A8) on Teensy.

[edit] Debug output

The Teensy constantly blinks its LED every second.

The output should look something like:

$ cat /dev/ttyACM0
enc 3.3 0 1  7907 54  1747 60 2740 1 1 0 0 805364
enc 3.3 0 1  7908 54  1748 60 2741 1 1 0 0 805372
enc 3.3 0 1  7908 54  1745 60 2740 1 1 0 0 805380
enc 3.3 0 1  7908 54  1752 60 2741 1 1 0 0 805388
enc 3.3 0 1  7908 54  1747 60 2741 1 1 0 0 805396
enc 3.3 0 1  7907 54  1748 60 2740 1 1 0 0 805403
enc 3.3 0 1  7908 54  1748 60 2741 1 1 0 0 805411
enc 3.3 0 1  7908 54  1748 60 2740 1 1 0 0 805419
enc 3.3 0 1  7907 54  1749 60 2741 1 1 0 0 805427

messages has this format:

enc : keyword
3.3 : intended for battery voltage (V)  (connected to 3.3V output of teensy - not used)
0   : emergency switch (1=24V)          (not connected)
1   : value from steering potentiometer (value 1 is a bit odd - not used)
7907: encoder rear left
54  : magnet distance rear left (fine)
1747: encoder rear right
60  : magnet distance rear right (fine)
2740: encoder value steering (2560=max right, 2755=center, 2966=max left)
1   : valid value (as5045 steering)
1   : ocf from 5045 init OK
0   : cof from 5045 no overflow if 0
0   : lin from 5045 no liniarity problems if 0
805364 : time in ms since Teensy start
Line ends with a linefeed and carriage return
Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox