Design calculations: Difference between revisions
Line 19: | Line 19: | ||
At max speed there should be approx 4.48 encoder ticks per ms, or 223 us between tics | At max speed there should be approx 4.48 encoder ticks per ms, or 223 us between tics | ||
The timing base is pt. 10us, so velocity resolution is rather bad at high speeds. | The timing base is pt. 10us, so velocity resolution is rather bad at high speeds. | ||
This may be improved by averaging if time between encoder is smaller than sample time. | This may be improved by averaging if time between encoder edges is smaller than sample time. | ||
Sample time is (pt.) 1ms. | Sample time is (pt.) 1ms. | ||
Line 25: | Line 25: | ||
At low speed the time between encoder ticks make the calculated wheel velocity delayed, resulting in poor controller performance (or even instability). | At low speed the time between encoder ticks make the calculated wheel velocity delayed, resulting in poor controller performance (or even instability). | ||
A velocity estimator is implemented based on anchor voltage and current velocity. This is then high-pass filtered and added to the encoder based velocity. | A velocity estimator is implemented based on anchor voltage and current velocity. This is then high-pass filtered and added to the encoder based velocity. | ||
This function currently disabled - gave problems while balancing. | |||
The motor controller has problems with low (and high) PWM values at the used 20kHz switch rate. This gives almost no motor power if PWM is less than 7-10%. | |||
Lower switch frequency may give problems with audio noise and high peak current in anchor coils. | |||
== Parameter estimation== | == Parameter estimation== |
Revision as of 14:44, 14 January 2016
Maximum speed
Motor has 5600 RPM at 6V no load. Gearing is 9.68:1 Wheel diameter is 6cm.
This gives a max speed of 5600/60/9.68*0.06*Pi = 1.8m/s
Encoder calculations
The encoder has 48 ticks per revolution. This gives 48*9.68 = 464.64 ticks per wheel revolution, or Distance per tick = pi*0.06/464.64 = 0.40568 mm/tick
Speed calculation
Speed is calculated based on time between encoder ticks
At max speed there should be approx 4.48 encoder ticks per ms, or 223 us between tics The timing base is pt. 10us, so velocity resolution is rather bad at high speeds. This may be improved by averaging if time between encoder edges is smaller than sample time.
Sample time is (pt.) 1ms.
At low speed the time between encoder ticks make the calculated wheel velocity delayed, resulting in poor controller performance (or even instability). A velocity estimator is implemented based on anchor voltage and current velocity. This is then high-pass filtered and added to the encoder based velocity. This function currently disabled - gave problems while balancing.
The motor controller has problems with low (and high) PWM values at the used 20kHz switch rate. This gives almost no motor power if PWM is less than 7-10%. Lower switch frequency may give problems with audio noise and high peak current in anchor coils.
Parameter estimation
Pololu say that at 6V stall current is 2.2A, or R_A = 2.7 Ohm
On this robot the total anchor resistance is estimated to 3.3 Ohm (including H-bridge and wires) based on current step responce.
Current consumption
When idle (drive motors not running), the current consumption is approximately:
- from 12V: 60mA,
- from 7.5V: 80mA.
- from 5V: 120mA.
This is to drive the Teensy 3.1 at 96MHz, the buck-boost converter and the motor controller with output disabled. From 5V