Objectifs
- Savoir commander son drone avec un Joystick
- Savoir varier la vitesses des moteurs avec Arduino
- Connaitre la vitesse minimale de démarrage des moteurs
- Etc.
Lecture du joystick
Dans ce tuto on va faire varier la vitesse d’un drone bicopteur (deux moteurs) en utilisant un Joystick et une carte Arduino. Le Joytick est branché via le pin analogique A0. Il est alimenté par la tension 5V et GND. L’objectif et de faire varier la vitesse du drone entre 0 (joystick au repos) et Vmax (Joystick dans la valeur maximale). La valeur Vmax de la vitesse sera définie par l’utilisateur comme une constante dans le programme.
Le joystick est équivalent à un potentiomètre à point milieu. Au repos, la tension au borne du joystick est égale à 5/2=2.5V. De plus on dispose de deux sens : (-) 2.5 vers 0V ou (+) 2.5V vers 5V. Ce mode de fonctionnement n’est pas compatible avec la commande du drone désirée. Notre objectif, au repos la tension mesurée doit être égal à 0. Lorsque on avance le Joystik vers (+) ou (-) on aimera bien avoir une augmentation de la vitesse vers la valeur maximale.
La fonction GetVitesse() sera utilisé pour faire des adaptation ainsi retourner une valeur de la vitesse comprise entre 0 et Vmax en fonction de l’état du Joystick. La fonction prend en entrée le pin analogique du Joystick et la vitesse maximale désirée. Ci-dessous la définition de a fonction GetVitesse().
Voir le tuto pour plus des explications
Comment faire varier la vitesse des moteurs ?
On peut faire la vitesse des moteurs d’une façon indépendante en utilisant un rapport cyclique différent. La bibliothèque <Servo.h> dédiée aux servos moteurs peut être utilisée pour la commande des moteurs brushless. Elle permet de générer un signal PWM d’une fréquence fixe égale à 50 Hz (période de 20 ms) avec la possibilité de faire varié le rapport cyclique. La valeur 0 du rapport cyclique correspond à une vitesse minimale (0), 180 pour la vitesse maximale. Ci-dessous les étapes et les syntaxes d’utilisation d’un ou plusieurs moteurs.
Déclaration des moteurs
On peut déclarer un plusieurs moteurs en utilisateur le type Servo comme indiqué ci-dessous :
Affectation des moteurs aux pins de la carte
L’affectation des variables M1, M2, etc. aux pins digitales de la carte Arduino doit être effectuée à l’intérieur de la fonction setup(). Il ne faut pas oublié de déclarer les constantes des pins comme indiqué dans l’exemple ci-dessous.
Variation de la vitesse des moteurs
Après l’étape de déclaration et affectation des pins, grâce à la fonction write(vitesse_0_180) on peut facilement faire varier le rapport d’un pin digital. Autrement dit, la vitesse du moteur ! La fonction write prend en entrée une valeur comprise entre 0(0%) et 180 (100%). Ci-dessous un exemple qui permet d’affecter la même vitesse à deux moteurs :
Programme Arduino
Alimentation locale du Drone
L’lamentation de l’ordinateur utilisée dans les vidéos précédentes (12V/8A) n’est pas suffisante pour faire fonctionner les deux moteurs au même temps. Nous avons utilisez donc une batterie de voiture 70Ah/12V muni d’un chargeur adapté pour nos tests. Ci-dessous la référence de la batterie ainsi un chargeur universel 12V/24V.