Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pot/pot.cpp@22:c18f04d1dc49, 2016-11-18 (annotated)
- Committer:
- dlweakley
- Date:
- Fri Nov 18 02:47:59 2016 +0000
- Revision:
- 22:c18f04d1dc49
- Parent:
- 20:8063c82bbb35
- Child:
- 23:5238b046119b
PID attempt
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| dlweakley | 8:2abfdbf5a3b8 | 1 | #include "mbed.h" |
| dlweakley | 8:2abfdbf5a3b8 | 2 | #include "pot.h" |
| dlweakley | 8:2abfdbf5a3b8 | 3 | |
| dlweakley | 20:8063c82bbb35 | 4 | |
| dlweakley | 20:8063c82bbb35 | 5 | Pot::Pot(PinName _pin, QEI* motor_encoder, float offset) : pend_angle(_pin),encoder() { |
| dlweakley | 20:8063c82bbb35 | 6 | encoder=motor_encoder; |
| dlweakley | 11:ed9539245ea0 | 7 | offset=offset; |
| dlweakley | 20:8063c82bbb35 | 8 | |
| dlweakley | 20:8063c82bbb35 | 9 | } |
| dlweakley | 20:8063c82bbb35 | 10 | |
| dlweakley | 20:8063c82bbb35 | 11 | void Pot::update(){ |
| dlweakley | 20:8063c82bbb35 | 12 | angular_velocity = (get_angle() - angle)/ UPDATE_TIME; |
| dlweakley | 22:c18f04d1dc49 | 13 | angle=get_angle_pulse(); |
| dlweakley | 20:8063c82bbb35 | 14 | velocity = (get_position() - position) / UPDATE_TIME; |
| dlweakley | 20:8063c82bbb35 | 15 | position=get_position(); |
| dlweakley | 20:8063c82bbb35 | 16 | } |
| dlweakley | 20:8063c82bbb35 | 17 | |
| dlweakley | 20:8063c82bbb35 | 18 | void Pot::set_zeros(){ |
| dlweakley | 20:8063c82bbb35 | 19 | this->offset = (-1)*this->get_angle(); |
| dlweakley | 20:8063c82bbb35 | 20 | this->encoder->reset(); |
| dlweakley | 8:2abfdbf5a3b8 | 21 | } |
| dlweakley | 8:2abfdbf5a3b8 | 22 | |
| dlweakley | 8:2abfdbf5a3b8 | 23 | float Pot::get_angle(){ |
| dlweakley | 20:8063c82bbb35 | 24 | float a = pend_angle.read() * VOLTAGE_ANGLE_RATIO + offset; |
| dlweakley | 20:8063c82bbb35 | 25 | return a; |
| dlweakley | 20:8063c82bbb35 | 26 | } |
| dlweakley | 20:8063c82bbb35 | 27 | |
| dlweakley | 22:c18f04d1dc49 | 28 | float Pot::get_angle_pulse(){ |
| dlweakley | 22:c18f04d1dc49 | 29 | float b = (float) 360/ (float)1024; |
| dlweakley | 22:c18f04d1dc49 | 30 | float a = ((float)encoder->getPulses()*b); |
| dlweakley | 22:c18f04d1dc49 | 31 | return a; |
| dlweakley | 22:c18f04d1dc49 | 32 | } |
| dlweakley | 22:c18f04d1dc49 | 33 | |
| dlweakley | 20:8063c82bbb35 | 34 | float Pot::get_position(){ |
| dlweakley | 20:8063c82bbb35 | 35 | float a = (-1)*encoder->getPulses()*CM_PER_PULSE; |
| dlweakley | 20:8063c82bbb35 | 36 | return a; |
| dlweakley | 20:8063c82bbb35 | 37 | } |
| dlweakley | 20:8063c82bbb35 | 38 | |
| dlweakley | 20:8063c82bbb35 | 39 | float Pot::angle_as_voltage(){ |
| dlweakley | 20:8063c82bbb35 | 40 | float a = pend_angle.read(); |
| dlweakley | 8:2abfdbf5a3b8 | 41 | return a; |
| dlweakley | 11:ed9539245ea0 | 42 | } |
| dlweakley | 20:8063c82bbb35 | 43 | |
| dlweakley | 20:8063c82bbb35 | 44 | int Pot::position_as_pulse(){ |
| dlweakley | 20:8063c82bbb35 | 45 | return this->encoder->getPulses(); |
| dlweakley | 11:ed9539245ea0 | 46 | } |
| dlweakley | 20:8063c82bbb35 | 47 | |
| dlweakley | 20:8063c82bbb35 | 48 | void Pot::print_test(){ |
| dlweakley | 20:8063c82bbb35 | 49 | printf("Position: %f \tVelocity: %f \tAngle: %f \tAngular Velocity: %f \r\n", position, velocity, angle, angular_velocity); |
| dlweakley | 20:8063c82bbb35 | 50 | } |
| dlweakley | 20:8063c82bbb35 | 51 | |
| dlweakley | 20:8063c82bbb35 | 52 | |
| dlweakley | 20:8063c82bbb35 | 53 | |
| dlweakley | 20:8063c82bbb35 | 54 | |
| dlweakley | 20:8063c82bbb35 | 55 |