ti bisogna il phaserunner

Dependencies:   mbed PID mbed-rtos

Committer:
EpicG10
Date:
Fri May 17 14:35:54 2019 +0000
Revision:
8:1655d27152e6
Parent:
7:15e6fc689368
Child:
9:56aed8c6779f
Fehlt noch die analogOut

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EpicG10 7:15e6fc689368 1 /**
EpicG10 7:15e6fc689368 2 * Steuert die 4 Phaserunner
EpicG10 7:15e6fc689368 3 */
EpicG10 7:15e6fc689368 4
EpicG10 7:15e6fc689368 5 #ifndef PA_REGLER_H
EpicG10 7:15e6fc689368 6 #define PA_REGLER_H
EpicG10 7:15e6fc689368 7
EpicG10 7:15e6fc689368 8 #include "Phaserunner.h"
EpicG10 7:15e6fc689368 9 #include "Encoder.h"
EpicG10 8:1655d27152e6 10 #include "PID.h"
EpicG10 7:15e6fc689368 11
EpicG10 7:15e6fc689368 12 class Regler{
EpicG10 7:15e6fc689368 13 private:
EpicG10 7:15e6fc689368 14 //Alle Phaserunner
EpicG10 7:15e6fc689368 15 Phaserunner& vorderrad;
EpicG10 7:15e6fc689368 16 Phaserunner& hinterrad;
EpicG10 7:15e6fc689368 17 Phaserunner& linkspedal;
EpicG10 7:15e6fc689368 18 Phaserunner& rechtspedal;
EpicG10 7:15e6fc689368 19
EpicG10 8:1655d27152e6 20 // PID Regler
EpicG10 8:1655d27152e6 21 PID pid;
EpicG10 8:1655d27152e6 22
EpicG10 7:15e6fc689368 23 //Encoder
EpicG10 7:15e6fc689368 24 Encoder& encoder;
EpicG10 7:15e6fc689368 25
EpicG10 7:15e6fc689368 26 //Drehmomentverhältnis
EpicG10 7:15e6fc689368 27 uint8_t torqueRatio;
EpicG10 7:15e6fc689368 28
EpicG10 7:15e6fc689368 29 //Verhältnis des Gegenmomentes
EpicG10 7:15e6fc689368 30 uint8_t recupRatio;
EpicG10 7:15e6fc689368 31
EpicG10 7:15e6fc689368 32 //Zeitliche Berechnung der Werte
EpicG10 7:15e6fc689368 33 void ReglerCalculate();
EpicG10 7:15e6fc689368 34
EpicG10 7:15e6fc689368 35 // Ticker
EpicG10 7:15e6fc689368 36 Ticker ticker;
EpicG10 7:15e6fc689368 37
EpicG10 8:1655d27152e6 38 // Ellipse Parameters
EpicG10 8:1655d27152e6 39 float a_,b_,beta_;
EpicG10 8:1655d27152e6 40
EpicG10 8:1655d27152e6 41 // Regler Parameters Pedale
EpicG10 8:1655d27152e6 42 float Kp_,Ki_,Ts_,setPoint_;
EpicG10 8:1655d27152e6 43
EpicG10 8:1655d27152e6 44 // Ergometer Stufe (von 1 bis 10)
EpicG10 8:1655d27152e6 45 float ErgoStufe_;
EpicG10 8:1655d27152e6 46
EpicG10 8:1655d27152e6 47 // Pedelec Values
EpicG10 8:1655d27152e6 48 float PedStufe_, PedFactor_;
EpicG10 8:1655d27152e6 49
EpicG10 7:15e6fc689368 50 const static float PI = 3.14159265;
EpicG10 7:15e6fc689368 51
EpicG10 7:15e6fc689368 52
EpicG10 7:15e6fc689368 53 public:
EpicG10 7:15e6fc689368 54 /**
EpicG10 7:15e6fc689368 55 * Erstellt einen Regler für alle Phaserunner
EpicG10 7:15e6fc689368 56 * @param vorderrad
EpicG10 7:15e6fc689368 57 * @param hinterrad
EpicG10 7:15e6fc689368 58 * @param linkspedal
EpicG10 7:15e6fc689368 59 * @param rechtspedal
EpicG10 7:15e6fc689368 60 * @param encoder
EpicG10 7:15e6fc689368 61 */
EpicG10 7:15e6fc689368 62 Regler(Phaserunner& vorderrad, Phaserunner& hinterrad, Phaserunner& linkspedal, Phaserunner& rechtspedal, Encoder& encoder);
EpicG10 7:15e6fc689368 63
EpicG10 7:15e6fc689368 64 /**
EpicG10 7:15e6fc689368 65 * Regelt die Phaserunner auf eine bestimmte Geschwindigkeit.
EpicG10 7:15e6fc689368 66 * @param speed Geschwindigkeit in km/h
EpicG10 7:15e6fc689368 67 */
EpicG10 7:15e6fc689368 68 void setSpeed(uint8_t speed);
EpicG10 7:15e6fc689368 69
EpicG10 7:15e6fc689368 70 /**
EpicG10 7:15e6fc689368 71 * Setzt das Drehmomentverhältnis zwischen Vorderrad und Hinterrad.
EpicG10 7:15e6fc689368 72 * @param torqueRatio: Drehmoment des Hinterrades in %. Das Drehmoment auf dem Vorderrad ist dann 100% - torqueRatio.
EpicG10 7:15e6fc689368 73 */
EpicG10 7:15e6fc689368 74 void setTorqueProportion(uint8_t torqueRatio);
EpicG10 7:15e6fc689368 75
EpicG10 7:15e6fc689368 76 /**
EpicG10 7:15e6fc689368 77 * Setzt das Verhältnis des Gegenmomentes zwischen Vorderrad und Hinterrad.
EpicG10 7:15e6fc689368 78 * @param torqueRatio: Gegenmoment des Hinterrades in %. Das Gegenmoment auf dem Vorderrad ist dann 100% - torqueRatio.
EpicG10 7:15e6fc689368 79 */
EpicG10 7:15e6fc689368 80 void setRecuperationProportion(uint8_t recupRatio);
EpicG10 7:15e6fc689368 81
EpicG10 7:15e6fc689368 82 /**
EpicG10 7:15e6fc689368 83 * Setzt das Drehmoment auf beide Phaserunner.
EpicG10 7:15e6fc689368 84 * @param torque Drehmoment in Prozent
EpicG10 7:15e6fc689368 85 */
EpicG10 7:15e6fc689368 86 void setTorqueMotors(uint8_t torque);
EpicG10 7:15e6fc689368 87
EpicG10 7:15e6fc689368 88 /**
EpicG10 7:15e6fc689368 89 * Setzt das Drehmoment auf beide Phaserunner.
EpicG10 7:15e6fc689368 90 * @param torque Drehmoment in Prozent
EpicG10 7:15e6fc689368 91 */
EpicG10 7:15e6fc689368 92 void setTorquePedals(uint8_t torque);
EpicG10 7:15e6fc689368 93
EpicG10 7:15e6fc689368 94 /**
EpicG10 7:15e6fc689368 95 * Setzt die Rekuperation der Motoren
EpicG10 7:15e6fc689368 96 * @param recuperation
EpicG10 7:15e6fc689368 97 */
EpicG10 7:15e6fc689368 98 void setRecuperationMotors(uint8_t recuperation);
EpicG10 7:15e6fc689368 99
EpicG10 7:15e6fc689368 100 /**
EpicG10 7:15e6fc689368 101 * Setzt die Rekuperation der Pedale
EpicG10 7:15e6fc689368 102 * @param recuperation
EpicG10 7:15e6fc689368 103 */
EpicG10 7:15e6fc689368 104 void setRecuperationPedals(uint8_t recuperation);
EpicG10 8:1655d27152e6 105
EpicG10 8:1655d27152e6 106 /**
EpicG10 8:1655d27152e6 107 * Setzt die Ellipse Parameters
EpicG10 8:1655d27152e6 108 * @param a
EpicG10 8:1655d27152e6 109 * @param b
EpicG10 8:1655d27152e6 110 * @param beta
EpicG10 8:1655d27152e6 111 */
EpicG10 8:1655d27152e6 112 void setEllipseParameters(float a, float b, float beta);
EpicG10 8:1655d27152e6 113
EpicG10 8:1655d27152e6 114 /**
EpicG10 8:1655d27152e6 115 * Setzt die PI Regler Parameters
EpicG10 8:1655d27152e6 116 * @param Kp
EpicG10 8:1655d27152e6 117 * @param Ki
EpicG10 8:1655d27152e6 118 * @param Ts in s
EpicG10 8:1655d27152e6 119 */
EpicG10 8:1655d27152e6 120 void setReglerParameters(float Kp, float Ki, float Ts);
EpicG10 8:1655d27152e6 121
EpicG10 8:1655d27152e6 122 /**
EpicG10 8:1655d27152e6 123 * Setzt die PI Regler Setpoint
EpicG10 8:1655d27152e6 124 * @param SetPoint
EpicG10 8:1655d27152e6 125 */
EpicG10 8:1655d27152e6 126 void setReglerSetPoint(float Setpoint);
EpicG10 8:1655d27152e6 127
EpicG10 8:1655d27152e6 128 /**
EpicG10 8:1655d27152e6 129 * Setzt die Ergometer schwirichkeit Stufe
EpicG10 8:1655d27152e6 130 * @param ErgoStufe
EpicG10 8:1655d27152e6 131 */
EpicG10 8:1655d27152e6 132 void setErgoStufe(float ErgoStufe);
EpicG10 8:1655d27152e6 133
EpicG10 8:1655d27152e6 134 /**
EpicG10 8:1655d27152e6 135 * Setzt die Pedelec schwirichkeit Stufe
EpicG10 8:1655d27152e6 136 * @param ErgoStufe
EpicG10 8:1655d27152e6 137 */
EpicG10 8:1655d27152e6 138 void setPedStufe(float PedStufe);
EpicG10 8:1655d27152e6 139
EpicG10 8:1655d27152e6 140 /**
EpicG10 8:1655d27152e6 141 * Setzt die Pedelec Factor
EpicG10 8:1655d27152e6 142 * @param PedFactor
EpicG10 8:1655d27152e6 143 */
EpicG10 8:1655d27152e6 144 void setPedFactor(float PedFactor);
EpicG10 7:15e6fc689368 145 };
EpicG10 7:15e6fc689368 146
EpicG10 7:15e6fc689368 147 #endif //PA_REGLER_H
EpicG10 7:15e6fc689368 148