ME 405 Romi
Loading...
Searching...
No Matches
encoder.py
Go to the documentation of this file.
1from time import ticks_us, ticks_diff # Use to get dt value in update()
2from pyb import Pin, Timer
3
6class Encoder:
7
8
12 def __init__(self, tim, chA_pin, chB_pin):
13 #Initializes an Encoder object
14 self.position = 0 # Total accumulated position of the encoder
15 self.prev_count = 0 # Counter value from the most recent update
16 self.delta = 0 # Change in count between last two updates
17 self.dt = 0 # Amount of time between last two updates
18 self.last_time = 0
19 self.current_time = 0
20 self.tim = tim
21 self.offset = 0
22 self.tim.init(prescaler = 0, period = 65535)
23 self.timCh_A = tim.channel(1, pin=chA_pin, mode=Timer.ENC_A)
24 self.timCh_B = tim.channel(2, pin=chB_pin, mode=Timer.ENC_B)
25
26
30 def update(self):
31 self.delta = self.tim.counter() - self.prev_count
32
33 self.current_time=ticks_us()
34 self.dt = ticks_diff(self.current_time, self.last_time)
35 self.last_time = ticks_us()
36
37 if self.delta > 65536 / 2:
38 self.delta -= 65536
39 elif self.delta < -65536 / 2:
40 self.delta += 65536
41
42 self.prev_count = self.tim.counter()
43 self.position += self.delta
44
45
46
49 def get_position(self):
50 return (self.position * 1/1437.1 * 2 * 3.14159 * 35) + self.offset
51
52
55 def get_velocity(self):
56 return (self.delta / self.dt) * 1/1437.1 *2 * 3.14159 * 35 * -1000000
57
58
61 def zero(self):
62 self.position = 0
63 self.prev_count = self.tim.counter()
64
65
68 def get_dt(self):
69 return self.dt
70
71
73 def set_offset(self, offset):
74 self.offset = offset
75
76
77
78
The Encoder Diver Class.
Definition encoder.py:6
__init__(self, tim, chA_pin, chB_pin)
Encoder Initialization.
Definition encoder.py:12
get_position(self)
Encoder Position Get.
Definition encoder.py:49
get_velocity(self)
Encoder Velocity Get.
Definition encoder.py:55
get_dt(self)
Get dt.
Definition encoder.py:68
update(self)
Encoder Update.
Definition encoder.py:30
zero(self)
Zero the Encoder.
Definition encoder.py:61
set_offset(self, offset)
Set Offset.
Definition encoder.py:73