Inverted Pendulum / Mbed 2 deprecated IP-Interface

Dependencies:   mbed QEI

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?

UserRevisionLine numberNew 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