WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Conception et réalisation d'un quadrotor UAV


par Abdelhak Amine Zitouni
University Of Science And Technology Houari Boumediene USTHB - Masters Degree 2018
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Chapitre III Conception et mise en oeuvre du fonctionnement

43

III.4.3. Test des signaux de sortie du récepteur RF :

Après la construction de l'émetteur RC et du récepteur, nous devons tester les signaux de contrôle PWM sortant du récepteur car ce sont les impulsions de commande à introduire au contrôleur de vol. On peut connecter les broches numériques de sortie du récepteur RF au canal d'entré d'un oscilloscope afin que nous puissions visualiser un seul signal PWM puis on fait varier les positions des joysticks.

Pour voir la variation des quatre signaux tous à la fois, j'ai utilisé un petit programme de test pour Arduino qui apporte les valeurs des signaux de commandes PWM sur le moniteur série de l'Arduino IDE, ces valeurs vont de 1000ìs jusqu'à 2000ìs avec une impulsion centrale de 1500ìs, Figure 3.20.

Figure 3.20 : Valeurs correspondantes aux signaux PWM afficher sur le moniteur série de l'Arduino IDE.

III.5. Contrôleur de vol du quadrotor :

Dans le schéma de la Figure 3.21, j'ai mis la diode D1 pour protéger le port USB de l'ordinateur lorsque l'Arduino est connecté à l'ordinateur lors de la programmation. Les résistances R2 = 1kÙ et R1 = 1,5kÙ divisent la tension de la batterie de vol par 2,5. De cette façon, il est possible de mesurer la tension de la batterie pendant le vol en utilisant AnalogRead à partir de la broche A0 de Arduino Uno. La LED est mise pour l'indication d'état de la batterie, elle s'allumera lorsque la tension de la batterie devienne basse.

Chapitre III Conception et mise en oeuvre du fonctionnement

44

Figure 3.21 : Schéma électronique du contrôleur de vol du quadrotor.

IMU

(Gyro& Accéléromètre) MPU-6050

2C

PWM

PWM

PWM

PWM

PWM

Récepteur Radio 2.4Ghz

Figure 3.22 : Schéma électronique global du quadrotor.

Chapitre III Conception et mise en oeuvre du fonctionnement

III.5.1. Lecture des signaux du récepteur RF :

Dans cette partie, je montre comment lire et calculer les largeurs des impulsions PWM venant du récepteur RF afin qu'ils puissent être utilisés pour contrôler le mouvement du quadrotor, et pour mieux comprendre le fonctionnement du contrôleur de vol, j'aime montrer au début les principes de base pour les signaux du récepteur.

Les ESC sont contrôlés par des trains d'impulsions PWM variant de 1000ìs à 2000ìs avec une amplitude de 5v, c'est à dire que la position d'arrêt de l'ESC est généralement atteinte avec une impulsion de 1000ìs et une accélération maximale est atteinte avec une impulsion de 2000ìs, la longueur de l'impulsion change lorsque nous changeons la position du joystick sur l'émetteur RC Figure 3.23. Les systèmes multicopters sont très instables et la stabilité est obtenue par d'énormes corrections par seconde, par exemple le contrôleur de vol de ce projet fait 250 correction / seconde ceci est également connu comme le taux de rafraîchissement ou la fréquence du contrôleur, en bref cela signifie que les quatres ESC sont corrigés tous les 4ms (la fréquence des signaux PWM à fournir au ESCs par le contrôleur de vol est de 250 Hz).

Figure 3.23 : Simulation des pulsations PWM de fréquence 50 Hz pour deux canaux du récepteur RF.

45

Chapitre III Conception et mise en oeuvre du fonctionnement

46

Dans notre cas, la fréquence des signaux PWM du récepteur RF (50 Hz) est cinq fois plus faible que la fréquence du contrôleur de vol (250 Hz), cela signifie que le quadrotor ne peut pas attendre les signaux du récepteur lors du vol.

Malgré tout cela, le processeur de l'Arduino Uno "ATmega328p" nous donne des outils pour faire résoudre à ce problème en utilisant les interruptions de changement d'état de broche «Pin Change Interrupt Register PCI0». Ça signifie que nous pouvons interrompre le programme en cours pour effectuer une tâche spéciale lorsque l'état logique de la broche numérique change, après cette interruption le processeur continue l'exécution du programme d'une façon normal. Cependant cette méthode nécessite moins de boucles CPU donc il faut garder la routine d'interruption aussi courte que possible, sinon on va gâcher l'exécution du programme en cours.

L'interruption de changement de broche « PCI0 » se déclenchera si l'une des broches PCINT7 à PCINT0 se bascule d'état, les bits (PCINT0, PCINT1, PCINT2 et PCINT3) qui correspondent au registre d'interruption « PCI0 » se réfèrent respectivement aux broches numériques (8, 9, 10 et 11) de l'Arduino Figure 3.24, selon le schéma du contrôleur de vol Figure 3.21 les entrées du récepteur sont connectées aux broches numériques 8 à 11.

Figure 3.24 : Diagramme des broches de l'ATmega328p.

Dans le programme du contrôleur de vol, on peut créer des sous-programmes d'interruption qui serait toujours exécutées chaque fois que les broches numériques 8 à 11 changent d'état logique, ceci consiste à mesurer le temps entre les fronts montants et descendants des impulsions PWM venant du récepteur. L'organigramme suivant explique une partie du sous-programme de l'interruption pour lire un seul canal « canal 1 » du récepteur, la même partie se répète pour les autres canaux sauf que les différents canaux du récepteur sont liées à des différentes broches du registre PORTB.

Chapitre III Conception et mise en oeuvre du fonctionnement

Voir si on a un front Non Voir si on a un front

Montant Descendant

Précédente_canal 1=0

La même routine se répète pour les autres canaux {canal 2 (PINB1), canal 3 (PINB2) et canal 4 (PINB3)}, le sous-programme de l'interruption est appelé chaque fois dans le programme principal du contrôleur de vol si l'une des entrées 8, 9, 10 ou 11 change d'état. Les variables d'entrées du

Affecter la variable Time 1 dans la variable Temp actuelle (Time 1 =Temp actuelle)

Se souvenir de l'état actuel du variable (Précédente_canal 1=1)

Oui

Le bit 0 du
PORTB
(PINB0=1)?

Oui

Non

Calculer la longueur de l'impulsion du canal 1 Reciver_input 1 = Temp_actuelle - Time1

Se souvenir de l'état actuel du variable (Précédente_canal 1=0)

Précédente_canal 1=1

L'entrée PINB0 se Bascule de 1 à 0

Oui

Non

47

Sous-programme d'interruption :

Activer le registre de L'interruption de changement de broche « PCI0 »

Affecter le compteur us dans la variable Temp actuelle = micros ( );

Chapitre III Conception et mise en oeuvre du fonctionnement

48

récepteur (Reciver_input 1, 2 et 4) de la routine d'interruption sont destinées pour le calcul des points de consigne (Pitch, Roll et Yaw) du contrôleur PID afin de contrôler les impulsions PWM des ESC. L'entrée « Reciver_input 3 » qui correspond à la commande «Throttle », est mise comme un signal de base pour accélérer les moteurs. Cette image Figure 3.25, représente les axes du roulis (Roll), tangage (Pitch) et lacet (Yaw) d'un aéronef.

Figure 3.25 : Les mouvements de base.

L'angle de roulis positif soulève l'aile gauche et abaisse l'aile droite, l'angle de tangage positif soulève le nez et abaisse la queue et l'angle de lacet positif déplace le nez vers la droite. Ceci est la norme utilisé pour ce contrôleur de vol du quadrotor.

Pour plus d'informations sur les registres utilisés dans le programme, voir le manuel du datasheet pour l'ATMEGA328p dans l'annexe de ce mémoire.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Soit réservé sans ostentation pour éviter de t'attirer l'incompréhension haineuse des ignorants"   Pythagore