You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
float vieuxTemps=0; //variable utilisee pour mesurer le temps qui passe
31
32
float Kp=0.05; //correction prop
32
-
float Ki=0.1; //correction integrale
33
+
float Ki=0.02; //correction integrale
33
34
float Kd=0.; //correction derivee
34
35
float integral=0;//valeur de l'integrale dans le PID
35
36
float derivee=0; //valeur de la derivee dans le PID
36
-
37
+
int old_out = 0;
37
38
//mesures
38
39
volatileint count=0; //variable utilisee pour compter le nombre de fronts montants/descendants
39
40
volatileint vieuxCount=0; //stocke l'ancienne valeur de count pour ensuite faire la difference
40
41
volatile byte state=LOW;
41
-
float mesures[10]; // tableau de mesures pour lisser
42
+
float mesures[3]; // tableau de mesures pour lisser
42
43
43
44
////I2C
44
45
union floatToBytes {
@@ -61,6 +62,12 @@ const float r2_NiMh = 1000; // resistance of the second resistor
61
62
float voltage_LiPo = 0; // variable to store the value read
62
63
float voltage_NiMh = 0; // variable to store the value read
63
64
65
+
66
+
67
+
//direction millieu 1851
68
+
// tout a gaucge 1231
69
+
// tout a droite 2471
70
+
64
71
floatgetMeanSpeed(float dt){
65
72
int length = sizeof(mesures)/sizeof(mesures[0]);
66
73
//ajout d'une nouvelle mesure et suppression de l'ancienne
@@ -94,11 +101,24 @@ float getSpeed(float dt){
94
101
vieuxTemps=millis();
95
102
return V;
96
103
}
104
+
105
+
97
106
voidblink(){ //on compte tous les fronts
98
107
//Serial.print(count);
99
108
count++;
100
109
}
110
+
111
+
101
112
floatPID(float cons, float mes, float dt) {
113
+
114
+
115
+
if ( old_out <= 0 && cons > 0){ // pour pouvoir sauter directement dans la plage de pwm ou la roue bouge et une transition plus fluide entre marche arriere et avant
116
+
integral = 2500; // valeur experimentale
117
+
}
118
+
elseif (old_out >= 0 && cons <0 ){ // pour pouvoir sauter directement dans la plage de pwm où la roue bouge et une transition plus fluide entre marche avant et arriere
119
+
integral = -5000; // valeur experimentale
120
+
}
121
+
102
122
// Adjust the measured speed based on the sign of the desired speed
0 commit comments