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

III.5.4. Contrôle des ESC :

Dans cette partie, le but est de générer les impulsions de commande à envoyer pour les quatre ESCs en fonction des variables de sorties PID, afin de contrôler la vitesse des moteurs du quadrotor. Les ESC sont connectés à l'Arduino Uno du contrôleur de vol via les broches digitales (D4, D5, D6 et D7) du registre PORTD. Au début du programme principal, ces broches numériques doivent être déclarés en tant que sorties. Après avoir calculé les variables de sortie du contrôleur PID pour les axes de commande (Pitch, Roll et Yaw), il devient possible de calculer les largeurs d'impulsion à fournir pour les ESC toutes les 4 ms afin de corriger la position du quadrotor.

Throttle est mis comme le signal
De base pour le calcul des
Impulsions des ESCs

Affecter le signal Throttle à la variable entière d'accélération :
Accélération = Reciver_input 3

Non

Accélération> 1800

Oui

Accélération = 1800

Laisser 200us de gap pour garder le contrôle Total à plein vitesse

Calcul des impulsions de correction :

Largeurs d'impulsion esc 1 Largeurs d'impulsion esc 2 Largeurs d'impulsion esc 3 Largeurs d'impulsion esc 4

58

esc_1 = accélération - Pid_sortie_pitch + Pid_sortie_roll - Pid_sortie_yaw esc_2 = accélération + Pid_sortie_pitch + Pid_sortie_roll + Pid_sortie_yaw esc_3 = accélération + Pid_sortie_pitch - Pid_sortie_roll - Pid_sortie_yaw esc_4 = accélération - Pid_sortie_pitch - Pid_sortie_roll + Pid_sortie_yaw

Au début, il est nécessaire de déclarer le signal d'entrée du récepteur Throttle « Reciver_input 3 » comme la variable de base d'accélération. Pour assurer que les trois contrôleurs PID ont suffisamment d'espace pour corriger le quadrotor à pleine vitesse, la variable d'accélération est limitée à 1800 ìs au lieu de 2000 ìs. De cette façon, chaque contrôleur PID peut ajouter 200 ìs supplémentaires en cas de besoin. Pour calculer les impulsions des ESC, il suffit de combiner les variables de sorties PID séparées (Pitch, Roll et Yaw) et de les ajouter ou les soustraire à la variable d'accélération suivant cet algorithme :

Chapitre III Conception et mise en oeuvre du fonctionnement

59

La Figure3.31 représente les axes Roll, Pitch et Yaw du quadrotor, la correction des impulsions des ESCs se fait selon les quatre instructions de l'algorithme citées en haut.

Figure 3.31 : Disposition des ESCs et direction de rotation du quadrotor

Pour l'axe de Roulis, si le quadrotor penche vers la droite en raison du vent ou de la turbulence, cela conduit le Gyro d'envoyer un angle de roulis positif (Données d'entrée Roll du Gyro> 0), lorsque le pilote ne veut aucun mouvement (le joystick de l'émetteur est en position centrale) c'est à dire la variable roulis du récepteur est de 0 ° / sec (Pid_Roll_consigne= 0°) implique que la sortie roulis du contrôleur PID est positive (Pid_sortie_roll> 0) car l'erreur????> 0. Donc pour que le quadrotor puisse revient à l'état stable 0°, la vitesse du moteur avant droit doit augmenter et ceci est fait en ajoutant la sortie du contrôleur PID Roll (Pid_sortie_roll) à l'impulsion de l'ESC 1.

Le même principe pour le tangage (Pitch), lorsque le front du drone est incliné en bas à cause d'une perturbation ou du vent, le Gyro envoie un angle de tangage négatif et la sortie du contrôleur PID Pitch devienne négative (Pid_sortie_pitch< 0), en soustrayant la sortie du PID Pitch de l'impulsion ESC 1 implique que la vitesse du moteur1 s'augmente et le quadrotor retrouve l'état stable 0°, cela est illustré dans la Figure 3.32 et la Figure 3.33 pour l'axe de roulis (Roll) et la même chose pour le tangage (Pitch).

Le même principe se répète pour chaque combinaison moteur / ESC.

Chapitre III Conception et mise en oeuvre du fonctionnement

60

Figure 3.32 : L'algorithme du PID conduit le quadrotor de revenir À l'état voulu en agissant sur les ESCs

Figure 3.33 : Retour à l'état de consigne désiré par le pilote 0°.

Selon les dernières instructions citées dans l'algorithme en haut :

Si la sortie PID Pitch est (-) : les impulsions

Si la sortie PID Roll est (-) : les impulsions

Si la sortie PID Yaw est (-) : les impulsions

 
 

et

et

et

 
 

ESC 1

ESC 4

ESC 2

ESC 3

 
 
 
 

ESC 3

ESC 4

ESC 1

ESC 2

 
 
 
 

ESC 1

ESC 3

ESC 2

ESC 4

Chapitre III

Conception et mise en oeuvre du fonctionnement

Si la sortie PID Pitch est (+) : les impulsions

Si la sortie PID Roll est (+) : les impulsions

Si la sortie PID Yaw est (+) : les impulsions

 
 

et

et

et

 
 

ESC 1

ESC 4

ESC 2

ESC 3

 
 
 
 

ESC 3

ESC 4

ESC 1

ESC 2

 
 
 
 

ESC 1

ESC 3

ESC 2

ESC 4

L'étape suivante consiste à envoyer les impulsions calculées aux ESC, ceci est fait en maintien les sorties numériques du PORTD (D4, D5, D6 et D7) à un niveau logique haut avec un délai de temps correspond aux largeurs d'impulsions ESC calculées précédemment. Pour avoir le front descendant des impulsions, il suffit d'exécuter une boucle « while » jusqu'à ce que les quatre bits de poids fort du registre PORTD soient à zéro, ça signifie la fin de l'impulsion ESC.

Pour s'assurer que la fréquence des signaux PWM est de 250 Hz, un temporisateur de boucle vide est employé pour s'exécuter jusqu'à ce que les 4 ms soient expirées. Finalement, il en résulte quatre trains d'impulsions PWM synchronisé avec une fréquence de 250 Hz, Figure3.34.

Figure 3.34 : Simulation des impulsions PWM de fréquence 250 Hz à envoyer pour deux ESCs

61

Chapitre III Conception et mise en oeuvre du fonctionnement

62

Chapitre III Conception et mise en oeuvre du fonctionnement

Toutes les données pour contrôler les moteurs sont disponibles. L'organigramme suivant explique l'algorithme utilisé pour générer des impulsions PWM aux ESC:

Initialisation des variables flottantes :
Boucle_temps, timer_ch 1, timer_ch 2,
timer_ch 3, timer_ch 4,
esc_boucle_temps

On attend jusqu'à 4000 us le TIMER microseconde Micros ( ) est utilisé pour

Sont écoulés. Calculer le temps écoulé.

Micros ( ) - boucle_temps < 4000

Non

Oui

La fréquence du contrôleur de vol est de 250Hz. Cela signifie que les ESCs ont besoin de leur Impulsions toutes les 4ms.

Stocker le temps actuel du compteur
pour la prochaine boucle :
Boucle_temps = micros ( )

Met à la fois les sorties numériques
D4, D5, D6 et D7 haut :

PORTD |= B11110000

 

Calcule des largeurs d'impulsions à Fournir pour les ESCs.

Restez dans cette boucle jusqu'à ce que D4, D5, D6 et D7 soient zéro. Non

Oui

Esc_boucle_temps = micros ( )

Stocker le temps actuel du compteur Chaque fois que la boucle est exécutée.

Si (timer_ch 1 = esc_boucle_temps) PORTD &= Si (timer_ch 2 = esc_boucle_temps) PORTD &= Si (timer_ch 3 = esc_boucle_temps) PORTD &= Si (timer_ch 4 = esc_boucle_temps) PORTD &=

 

Rendre la sortie numérique

B11101111

B11011111

 

B10111111

À zéro pour chaque ESC si

B01111111

Le délai de temps de

 

L'impulsion est expirée.

Timer_ch 1= esc_1 + Boucle_temps Timer_ch 2= esc_2 + Boucle_temps Timer_ch 3= esc_3 + Boucle_temps Timer_ch 4= esc_4 + Boucle_temps

PORTD = 16

Fin de la boucle principale void loop.

63

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








"Il existe une chose plus puissante que toutes les armées du monde, c'est une idée dont l'heure est venue"   Victor Hugo