autostable...

Bonjour,

je commence la robotique et c'est pas facile... Bref, je voudrai stabiliser mon projet sur 2 roue. J'ai donc une romeo v2 et en capteur un accéléromètre DFROBOT 0143. Impossible de faire ce que je veux. Voici le code:

> #include <Servo.h>
>
> Servo servo_pin_12;
> int _ABVAR_1_anglez;
> Servo servo_pin_11;
>
> void setup()
> {
> servo_pin_11.attach(11);
> servo_pin_12.attach(12);
> _ABVAR_1_anglez = 0;
> }
>
> void loop()
> {
> _ABVAR_1_anglez = analogRead(A2) ;
> if (( ( _ABVAR_1_anglez ) > ( 385 ) ))
> {
> servo_pin_11.write( 2000 );
> servo_pin_12.write( 1000 );
> delayMicroseconds( 1000 );
> }
> else
> {
> servo_pin_11.write( 0 );
> servo_pin_12.write( 0 );
> }
> if (( ( _ABVAR_1_anglez ) < ( 365 ) ))
> {
> servo_pin_11.write( 1000 );
> servo_pin_12.write( 2000 );
> delayMicroseconds( 1000 );
> }
> else
> {
> servo_pin_11.write( 0 );
> servo_pin_12.write( 0 );
> }
> }

Je ne suis pas sûr d'avoir bien compris le projet. C'est un robot avec 2 servos à rotation continue qui doit rouler seulement en équilibre sur ses 2 roues sans tomber ?
Si c'est ça il faut commencer par mesurer l'écart entre la consigne (horizontal 0° ?) et la mesure d'inclinaison et appliquer en permanence une correction proportionnelle à cet écart.
Sans attendre d'atteindre de trop grand écarts sinon ça va osciller brutalement.
Les delay d'attente trop longs (1 sec) sont bien sûr préjudiciables à une bonne réactivité.

C'est sûr qu'en terme de régulation on a vu mieux ! Dans un premier temps il faut adapter la réponse à la dérive, donc gérér la commande des servos en fonction de l'écart d'angle.

Ensuite avec des servo.write(2000) ou servo.write(1000) tu va pas aller bien loin ... il faudrait déjà essayer de comprendre ce qu'il faut mettre en parenthèse : Servo - Arduino Reference

Merci Christian,
oui c'est exactement ça 2 servos continus etc... La position horizontale est 370.

Image 002.jpg

Ok batto, je vais essayer de comprendre ça... merci