Top Banner

of 72

rapportquadri

Jul 15, 2015

Download

Documents

Ghada Beydoun
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

Modlisation et interface de contrle d'un quadri-rotorRapport de projetPierre BeugnetRaphal PolonowskiNik Khairail Afzan Nik MohamedTuteurs : Arben elaAbdellatif ReamaRemerciementsAvanttoutechose, noussouhaiterionsremercierlesacteursquiontparticipdeprsoudeloinaubondroulement du projet, et plus particulirement :z M. Cela et M. Reama, enseignants chercheurs au laboratoire COSI, et tuteurs de notre projet, pourleurs conseils aviss et leur disponibilit,z M. Belrepayre, technicien du laboratoire COSI, pour ses conseils pratiques et son aide matrielle,z M. Pereira, du magasin de composants, pour son grand choix de composants,z Le groupe s'tant occup du projet concernant le robot pendulaire, avec qui nous avons changbeaucoup d'informations, savoir : M. Castelli, M. Jossoud et M. Schroeder.2Table des matires1. Introduction......................................................................................................................................................................52. Prsentation......................................................................................................................................................................6a. Qu'est-ce qu'un quadri-rotor ?.................................................................................................................................6b. Comment le piloter ?................................................................................................................................................6c. Applications possibles...............................................................................................................................................73. Contexte............................................................................................................................................................................8a. Modle dynamique....................................................................................................................................................8b. Modlisation Simulink.............................................................................................................................................9c. Matriel utilis..........................................................................................................................................................12d. Travail ralis............................................................................................................................................................124. Travail planifi................................................................................................................................................................13a. Critiques....................................................................................................................................................................13b. Cahier des charges...................................................................................................................................................135. Travail effectu...............................................................................................................................................................14a. Etudes thoriques.....................................................................................................................................................14i. Commande des moteurs par MOSFETs........................................................................................................14ii. La commande par PWM.................................................................................................................................15iii. Les capteurs........................................................................................................................................................17iv. Comment utiliser les capteurs........................................................................................................................21v. Filtrage de Kalman.............................................................................................................................................26vi. Le contrleur PID............................................................................................................................................31b. La carte embarque.................................................................................................................................................33i. Contraintes du systme.....................................................................................................................................33ii. Identification des moteurs...............................................................................................................................34iii. Choix du microcontrleur.............................................................................................................................341. Ressources ncessaires.................................................................................................................................342. La famille dsPIC...........................................................................................................................................35iv. Modules du dsPIC utiliss..............................................................................................................................361. Output/Compare/PWM..........................................................................................................................362. Convertisseur analogique/numrique.....................................................................................................363. Interruption...................................................................................................................................................374. UART.............................................................................................................................................................38v. Algorithme gnral............................................................................................................................................40vi. Ralisation de la carte.......................................................................................................................................411. Carte du contrleur.....................................................................................................................................412. Carte des capteurs........................................................................................................................................433. Electronique de puissance..........................................................................................................................444. Routage..........................................................................................................................................................455. Mise en place des cartes..............................................................................................................................46c. L'interface au sol.......................................................................................................................................................47i. Utilit d'une liaison au sol.................................................................................................................................47ii. La RS-232 en bref..............................................................................................................................................48iii. Schma de connexion......................................................................................................................................483iv. Liaison srie sous Simulink.............................................................................................................................49v. Interface graphique............................................................................................................................................501. RS232 Input..................................................................................................................................................502. Scopes.............................................................................................................................................................513. Sliders.............................................................................................................................................................514. RS-232 Output............................................................................................................................................53vi. Interfaage avec une manette de jeu..............................................................................................................54vii. Possibilits.........................................................................................................................................................55d. Procdure de test.....................................................................................................................................................55i. Dmarrage du quadri-rotor :............................................................................................................................55ii. Lancement de la liaison srie...........................................................................................................................58iii. Exemple de visualisation.................................................................................................................................59iv. Essais dj effectus...........................................................................................................................................59v. Validation du systme lectronique et informatique..................................................................................606. Problmes........................................................................................................................................................................61a. Rsolus.......................................................................................................................................................................61i. Bruit des capteurs, filtrage.................................................................................................................................61ii. Electronique de puissance................................................................................................................................61iii. Programmation du dsPIC..............................................................................................................................61b. Actuellement............................................................................................................................................................62i. Banc de test..........................................................................................................................................................62ii. Contrle en translation....................................................................................................................................62iii. Communications..............................................................................................................................................63iv. Autonomie..........................................................................................................................................................63v. Modlisation........................................................................................................................................................63vi. Contrleur..........................................................................................................................................................647. Suggestions.....................................................................................................................................................................65a. Banc de test...............................................................................................................................................................65b. Contrle en translation..........................................................................................................................................65c. Communications.....................................................................................................................................................66d. Autonomie................................................................................................................................................................66e. Modlisation.............................................................................................................................................................66f. Contrleur.................................................................................................................................................................678. Conclusion.....................................................................................................................................................................689. Bibliographie..................................................................................................................................................................7010. Abstract.........................................................................................................................................................................724Introduction1.IntroductionCe rapport est la synthse du travail que nous avons ralis durant ces cinq semaines de projet passes aulaboratoire COSI.Les projets sont pour nous une source de grande motivation, celui de 4me anne plus particulirementencore. D'abord, car c'est le dernier que nous faisons l'cole, et ensuite c'est celui qui s'approche le plus denos affinits techniques, car tant ralis dans le cadre de la majeure Systmes Embarqus, majeure que nousavons choisie.Enchoisissantceprojet, nousnesavionspasvraimentquoi nousattendre, carc'taitunenginetunconcept que nous n'avions jamais vu auparavant. C'est lorsque nous avons rcupr les rapports des quipesprcdentes que nous avons pu rellement entrer dans le vif du sujet et cerner ce que l'on attendait de nous. Reprendreunprojetdjentamtaitunepremirepournous, dslorsonnesavaitpastropparocommencer ni par quel bout le prendre ; c'est finalement grce nos tuteurs que nous avons pu dfinir uncahier des charges clair.Dans ce rapport se trouve la synthse de ce qui a t fait auparavant, les objections faites et les objectifsrsultants, ainsi que le travail que nous avons ralis, en thorie et en pratique. Ensuite, sont dcrites desprocdures detests afindeguider les groupes suivants, puis les diffrents problmes quenous avonsrencontrsaucoursduprojetaveclessolutionsassocies,etenfinlessuggestionsetrflexionsquenousavons eu en regard des problmes rencontrs. 5Prsentation2.Prsentationa.Qu'est-ce qu'un quadri-rotor ?Le quadri-rotor est un engin volant dot de quatre rotors placs aux extrmitsdune croix. Ce sont cesquatrerotorsqui fournissentlaforceverticale(portance)qui permetlappareil deslever. Envol, lequadri-rotor peut voluer suivant ses axes de lacet, tangage et roulis ainsi qu'en translation dans l'ensembledes directions. Aussi, un tel engin est compltement instable et pour le contrler, il faut mettre au point unsystme qui pilote la puissance des moteurs individuellement pour contrer linclinaison sur lesdiffrentsaxes. C'est la ralisation de ce systme de stabilisation qui est dbattue dans ce rapport.b.Comment le piloter ?Avant de penser pouvoir le piloter, il faut arriver le stabiliser. Pour cela, les quatres moteurs sont sollicitsde la manire suivante :z Axe de roulis : en agissant sur les moteurs gauche et droit, on peut maintenir l'horizontalit. Parexemple, si lequadri-rotorpenchegauche, onaugmentelavitessedumoteurgauchetoutendiminuant le droit.z Axe de tangage : les moteurs avant et arrire permettent de garder une assiette stable sur cet axe. Sile quadri-rotor est orient vers l'arrire, il faut donner plus de vitesse au moteur arrire et baissercelle du moteur avantEnsuite, pourdessoucisdecommodit,ilsedoitd'trestabilissursonaxedelacet.Onralisecelaenagissant sur les moteurs par paires : on augmente la vitesse de rotation de deux moteurs face face (avant etarrire)et on diminue la vitesse des deux autres (gauche et droite).Pourfinir, l'altitudedoittrestableetcelaestfacilementralisenjouantsurlavitessederotationdel'ensembledesmoteurs. Ondiminuelavitessedesquatremoteurspourfairedescendrelequadri-rotor6Prsentationtandis qu'on l'augmente pour le faire monter.c.Applications possiblesCe genre de ralisation est trs la mode en ce moment, car il permet de rpondre des problmatiques defacilit de pilotage et d'autonomie.Sduite par ces qualits, la police britannique a fait l'acquisition d'hlico-robots de la mme catgorie que lequadri-rotor. Ces drones embarquent une camra vido et un appareil photo pour collecter des peuves sides comportements antisociaux sont dtects.Aussi, l'armeesttrsintresseparcegenred'engin. Elleorganiseeneffetdesconcoursdedronesafind'explorer les nombreuses capacits de ces appareils. On peut facilement imaginer qu'ils peuvent tre utilespour explorer des zones dangereuses ou innaccessibles par l'homme.Enfin, le march du jouet n'est pas oublier. De nombreux fans de modlisme sont passionns par le quadri-rotor et s'amusent en fabriquer ou en faire l'acquisition auprs des nombreuses socits spcialises qui ledistribuent.7Contexte3.Contextea.Modle dynamiqueLemodledynamiqueduquadri-rotorpeuttrevucommeunsystmeolesvolutionsspatialesduquadri-rotor sont les sorties et la tension de chacun de ses moteurs sont les entres.Lemodleestrgitparlesquationsdelamcaniquequilefontvoluersur6axes. Ilsubitdesforcesd'acclration de diffrents types :z Laportance:gnreparlesquatrerotorsenrotation, ellepermetl'appareildes'leversiellecompenseaumoinslatrane.Elles'critdelaforme:tx=bl (D42D22) surl'axederoulisetty=bl (D32D12) sur l'axedetangage avec Di2lavitesse de chaque moteur aucarr en(rad / s)2, b le coefficient de porte enkg.m/ rad2etl la demi-envergure du quadri-rotor en mtres.z La trane : rsultante des frottements de l'air sur le quadri-rotor, elle est parallle et oppose latrajectoire. Son expression est :tz=d (D12+D32D22D42) avecd le coefficient de trane enkg . m2/ rad2.z L'effet gyroscopique : lorsque le quadri-rotor est en rotation sur deux axes, cette force apparat sur letroisime axe et tend rsister aux mouvements du quadri-rotor. Elle vaut :tx=Irotoroy(D3+D1D2D4)etty=Irotorox(D3D1+D2+D4)avecIrotorlemomentd'inertiedumoteuren kg.m2etoxlavitesseangulairesuivantl'axedes x enrad / s .En projetant les trois forces prcdentes et en ajoutant l'effet sur l'acclration des moments d'inertie surchaque axe, le quadri-rotor ragit alors en roulis, tangage et lacet de la manire suivante : quation de la vitesse angulaire suivant l'axe de roulis8Modletensionsmoteur 1moteur 2moteur 3moteur 4vitesses angulairesacclrationsposition11O x yz1= O 1( IyIz)I x+bl(D42D22)Ix+ OIrotor(D1D2+D3D4)IxContextequation de la vitesse angulaire suivant l'axe de tangagequation de la vitesse angulaire suivant l'axede lacetAussi, le quadri-rotor subit des acclrations sur les 3 axes de lespace. Ces acclrations dpendent de laportance gnre par les moteurs noteTiqui vaut : Ti=b.Di2aveci 1 , 2 ,3 , 4chaquemoteur. Du principe de la dynamique : F=mg avec F=Tiet projetes dans les 3 dimensions del'espace, ces acclrations se rsument de la sorte :quation de l'acclration suivant l'axe xquation de l'acclration suivant l'axe yquation de l'acclration suivant l'axe zb.Modlisation SimulinkLes quations prcdentes ont t traduites sous Simulink par les quipes prcdentes afin de dterminerun algorithme de contrle embarquer par la suite sur le quadri-rotor.91= 1 O( IxI y)Iz+d (D12+D22D32+D42)Iz x=(cos1sinOcos1+sin 1sin1)mi=14Ti y=(sin1sin Ocos1cos 1sin 1)mi =14Tiz=g+(cosOcos1)mi=14TiO= 1 1 ( IzIx)I y+bl (D32D12)I y+ 1Irotor(D1D2+D3D4)IyContexteUne fois les diffrentes forces modlises, les premires simulations ont pu confirmer un systmetotalement instable. Fut alors dtermin un contrleur agissant par le biais d'un correcteur PID. Ce dernierreoit l'cart entre l'angle du quadri-rotor donn par intgration des gyroscopes et la consigne en angle, etl'cart entre sa position donne par une double intgration des acclromtres et la consigne en position.10ContexteLes simulations ralises en boucle ouverte et en boucle ferme ont permises de dterminer les coefficientsoptimauxappliquerchacundes sixPIDcorrigeant l'ensembledes axes delibertsdusystme. Ensimulation, le quadri-rotor semblait robuste en rponse de petites perturbations :11Contextec.Matriel utilisAfin de mettre en pratique le rsultat des tudes menes sous Simulink, il est repris la structure d'un quadri-rotor un jouet du commerce, le X-UFO de Silverlit.Au dpart contrlable la tlcommande, l'objectif est de remplacer l'lectronique par le contrleur dduitdes simulations afin de rendre le quadri-rotor totalement autonome. Est rutilis galement le lot de deuxbatteries Ni-Mh 12V de 800mAh, qui assureront la fourniture d'nergie l'engin.d.Travail ralisLes quipes prcdentes ont entrepris laralisationdecettelectroniquedecontrleaumoyend'unmicrocontrleurMSP430f149deTexasInstrument. Unebauchedeprogrammeatfaite, maisnonteste.Aussi, des capteurs ont t interfacs pour dterminer l'tat duquadri-rotor. L'acclromtre 3axesADXL330 est emprunt Analog Devices tandis que les deux gyroscopes deux axes sont des IDG300 dechez InvenSense. Ils sont tous les trois monts sur une plaque prts tre utiliss.Enfin, des variateurs T-20Bde chez Modelcraft sont implments afinde commander les moteursconvenablement par le biais d'un signal PPM.Une plaque a t conue, sur laquelle on retrouve les capteurs et des filtres passe-bas associs.12Travail planifi4.Travail planifia.CritiquesQuelques critiques peuvent tre formules quant aux choix faits par les prcdentes quipes :z Les capteurs bas de gamme tant fortement bruits, il a t envisag l'applicationde filtresanalogiques sur les signaux dlivrs. Aussi, il s'est rvl que ces filtres, mal dimensionns, taienttotalement inutiles.z Le microcontrleur MSP430 bien que disposant d'une puissance de calculs honnte et defonctionnalits intressantes, n'est pas en mesure de gnrer quatre signaux PWM avec des rapportscycliques diffrents. L'essence mme de ce projet tant le pilotage individuel de chacun des moteurs,l'utilisation de ce microcontrleur est proscrire.z Lesvariateursdepuissancenesontpasadaptscarilssontenfaitdestinspiloterdesservo-moteurs de modles rduits par un signal PPM, traditionnellement gnr par une tlcommande.Des systmes de commande plus simples existent.b.Cahier des chargesCes diffrents soucis rpertoris nous ont aid dfinir des objectifs prcis dans la ralisationdel'lectronique :z Mise en place d'un filtrage des signaux: un filtrage numrique sophistiqu semble ncessaire pourdduire le signal utile noy dans le bruit dlivr par les capteurs. Un filtre de Kalman, mixant aumieux les informations pour dterminer l'tat du systme, est la solution la plus approprie notreproblme.z Conception d'une carte contrleur: comprend l'implmentation d'un microcontrleur sur une cartelectronique, programm par l'algorithme de contrle dvelopp sous Simulink.z Ralisation d'un montage de puissance: permettant le contrle de la vitesse de rotation des quatremoteurs commands par des signaux PWM qui seront gnrs par le microcontrleur.13Travail effectu5.Travail effectua.Etudes thoriquesi.Commande des moteurs par MOSFETsPour pouvoir stabiliser en assiette le quadri-rotor, nous devons contrler indpendamment la vitesse des 4hlices, et donc des 4moteurs courant continu. Cependant, lacommande demoteurs partir dumicrocontrleurdirectementestimpossiblecarlecourant tirpar unmoteurquel qu'il soit, estbiensuprieur au courant admis par une patte d'un microcontrleur, qui est de 25mA. Pour remdier cela, onfait appel une interface de puissance.Letransistor bipolaireest largement utilisenlectroniquepourcommander uncircuit partird'uncomposant faible puissance. Cependant, un transistor bipolaire est command assez fortement en courant,et tant donn leur gain moyen, les 25mA disponibles en entre vont tre atteints rapidement si on dsirequelques ampres en commutation. Le deuxime inconvnient des transistors bipolaires est leur dissipationexcessive de chaleur, ncessitant alors des refroidisseurs imposants.Le MOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor) est le transistor convenant nosbesoins, car contrairement au bipolaire, il ne ncessite quasiment aucun courant de base pour commuter etlaisser passer plusieurs ampres. Voyons plus en dtails ses principales caractristiques : z RDS(ON): Rsistanceentrelasourceet ledrainlorsqueleMOSFETest ON(interrupteurferm).z ID(MAX) : Intensit maximale que le transistor peut laisser passer de la source au drain.z PD : Puissance dissipe maximale que le transistor peut supporter.z VGS(TH) : Tension appliquer en entre du MOSFET pour pouvoir le commuter.z CISS : Capacitance entre la gate et l'ensemble source-drain.La puissance dissipe est le premier lment prendre en compte pour le choix du MOSFET, car cela vadterminersi undissipateurserancessaire. Pourcela, il faut savoirqu'unMOSFETfonctionnant encommutationdissipelepluslorsdupassagedel'interrupteurd'ouvertfermetinversement. Eneffet,lorsque l'interrupteur est ferm (MOSFETON), VDS est trs faible et IDS est lev, et lorsque14Travail effectul'interrupteur est ouvert (MOSFET OFF), VDS est lev et IDS est trs faible. Ce n'est donc pas dans cesdeux cas que le MOSFET va dissiper de la chaleur. En revanche, lors du passage de l'tat ON l'tat OFF,on peut calculer :P=IRDSON=IUCependant, lors du passage d'un tat l'autre, le courant et la tension aux bornes du MOSFET n'est pasmaximale, elle est a peu prs divise par 2. On aurait plutt :Si l'on continue dans ce raisonnement, la dissipation moyenne va dpendre du temps relatif decommutation par rapport au temps o le MOSFET reste dans un tat. Il suffit d'additionner les temps demonte et de descente duMOSFET, et de diviser letout par lapriodeutilise pour commuter leMOSFET. La formule devient alors : Pmoyenne=( I2)(U2 )(tDon+tR+tRVoff+tF+tC)(T2 )avec P en Watts.UnautrepointprendreencomptepourcommanderunMOSFETconcernelatensionappliqueenentre VGS qui doit se situer en gnral entre 5 et 10 volts de plus que la tension VGS(TH). De plus, CISSentreenjeuici, caravantd'atteindrelatensiondsire, ilvafalloirchargercettecapacit. Cettechargencessitealorsuncertaincourant, qu'ilvautmieuxviterd'amenerdirectementdumicrocontrleur. Ledriver de MOSFETs va jouer ce rle. Ce driver est simplement un buffer plusieurs entres comme celle-ci :Lasortietantencollecteurouvert, ilsuffitdetirer unersistanceensortieducomposant,latensiondsire, pour avoir une commande identique au signal d'entre, mais de tension plus leve. Enfin, c'est ledriver qui va fournir le courant demand par le MOSFET, donc le microcontrleur se trouve protg.ii.La commande par PWMLa PWM (Pulse Width Modulation) ou MLI (Modulation de Largeur dImpulsion) en franais, est unemthode qui comme son nom lindique consiste faire varier un signal lectrique non pas en amplitudeni en frquence, mais en largeur dimpulsion. Explicitons ceci laide dun schma :15Pcommutation=( I2)(U2 )Travail effectuLes trois signaux ci-dessus ont une frquence de 20kHz soit une priode de 50s. Les temps Thautet Tbassont les temps que l'on fait varier pour raliser cette modulation. Par convention, on n'utilise que le tempsThautpourdfinirlerapportcyclique, ouDutyCycle(D.C.)enanglais, qui est donnparlaformulesuivante : (rsultat en %)Dans cet exemple, le premier signal a un D.C. gal 50%, le second 75%, et 25% pour le troisime.L'intrt de cette technique est vident pour la commande d'un moteur travers un MOSFET. En effet, laPWM envoye au transistor va faire varier la tension moyenne aux bornes du moteur courant continu. Sion utilise un moteur de 5V par exemple, un cycle de travail de 0% arrtera le moteur (0V), tandis qu'un16Duty Cycle=ThautT 100Travail effectucycle de 50% fera tourner le moteur la moiti de sa puissance maximale (2,5V), et qu'un cycle de 100% lefera tourner plein rgime (5V).La frquence de la PWM est choisie de telle manire viter la surcharge de bruit lors du fonctionnementde l'appareil. L'oreille humaine peut idalement capter les sons de 50Hz 20kHz. En dessous de la barre des50Hz, la rsolution de commande devient trop faible, on ne peut commander correctement le moteur. Avecune frquence de20kHz, lesifflement provoqu par les frottements internes dumoteur sont quasi-inaudibles pour un humain. Aussi il faut garder l'esprit que le moteur peut tre apparent une charge R-L, impliquant des temps de charge et de dcharge non ngligeables ; donc plus la frquence sera leve, etmoins le courant oscillera autour de sa valeur moyenne.Cependant, il ne faut pas augmenter trop fortement la frquence de la PWM, car comme vu en (V.a.i.), lapuissance dissipe par le MOSFET dpend du ratio entre le temps de commutation et la frquence de laPWM, ainsi plus cette dernire sera leve, plus le MOSFET chauffera.iii.Les capteursLe groupe de l'anne dernire avait fait acheter 3 capteurs, 1 acclromtre 3 axes, et 2 gyroscopes 2 axes.Les 6 axes de liberts sont donc couverts par les capteurs, dont un en double. Il convient avant tout chose deprocder l'analyse des performances de ces capteurs, afin de s'assurer qu'ils sont effectivement adapts notre application.L'acclromtreCetacclromtre3axesestproduitparAnalogDevices, souslenomADXL330. Voicicesprincipalescaractristiques : Lecapteurpeutmesurerdesacclrationsallantjusqu'3,6gcequi estlargementsuffisantpournotreapplication, car le quadri-rotor ne devrait pas faire de mouvements brusques. La sortie est faiblement non-17Travail effectulinaire 0,3% de l'tendue mesurable, et ne devrait donc pas poser de problme pour les calculs futurs.Ce composant possde une sensibilit trs correcte de 300mV/g. Notre engin ne subissant la plupart dutemps que l'attraction terrestre, nous pouvons esprer, lorsque l'on fera pivoter le quadri-rotor sur ses axesde roulis et de tangage, obtenir des valeurs d'une excursion d'environ 600mV sur les axes X et Y, et d'environ300mV sur l'axe Z. L'influence de la temprature sur la sensibilit est trs faible, voire ngligeable comptetenu des conditions de nos tests qui se feront en intrieur. La tension 0g est de 1,5V pour une tension d'alimentation de 3V, on donc peut s'attendre des valeurs ensortie de capteur allant de 1,2V 1,8V pour des variations allant de -1g 1g. Ces valeurs seront affectestrs faiblement par l'offset d la temprature, qui est de 1mg/C.Une caractristique importante pour un capteur est le bruit en sortie. Ce bruit dpend directement de labande passante en sortie du composant.Enfin, voici la trs large bande passante de sortie sans filtre, ainsi que la frquence de rsonnance ducomposant.Lecomposantenlui-mmeestdifficilesouder, ainsilasocitSparkfunmontececomposantsuruneplaque permettant une mise en oeuvre immdiate : 18Travail effectu D'aprs la datasheet (page 12), on peut calculer la bande passante du filtre en sortie grce cette formule : La plaque Sparkfun est dote de condensateurs de 0,1F en sortie de chaque axe. On a donc :Ce premier montage restreint de manire considrable la bande passante en sortie des capteurs en liminantles hautes frquences. La bande passante connue, il est facile de trouver la densit de bruit correspondante : Bruit=Densitdu Bruit.( Bande passante1,6)Et d'aprs les donnes de la datasheet : Bruit( X , Y )=280.(501,6)=2,5mg soit0,7mVBruit( Z )=350.(501,6)=3,13mg soit0,94mVLes consquences de ces bruits se rpercuteront en fonction de la rsolution du convertisseur analogique-numrique choisi, et bien entendu du filtrage numrique mis en place.En sus de ces remarques, il est impratif d'avoir une source de tension correctement filtre, car d'aprs ladatasheet (page 13), la sensibilit et la tension 0g sont proportionnelles la tension d'alimentation ducomposant. Lebruit n'est pas proportionnel latensiond'alimentation, mais savaleur dpenddelasensibilit, ainsi, plus la tension augmente, moins le bruit est important.Le gyroscopeLes deux gyroscopes sont identiques, il sont produits par InvenSense, sous le nom IDG-300. Regardons deplus prs ses caractristiques :19F(3db)=1(2n32KDC( X ,Y , Z))=5FC( X ,Y , Z )F( X ,Y , Z)=50,1=50 HzTravail effectuUne tendue de 500/s est bien suffisante pour notre application, vu le peu de mouvements de notre engin ;et mme en cas de perturbations, il parat peu probable d'atteindre les 500/s.La sensibilit de 2mV//ssemble galement suffisante puisqu'elle permettra de dtecter les mouvements lents de 1/s minimum, ainsique les mouvements plus rapides. Encore une fois, la prcision de ces mesures dpendra de la rsolution duconvertisseur analogique-numrique.Contrairement l'acclromtre, la tension au repos et la sensibilit de ce gyroscope ne dpendent pas de latension d'alimentation : tout est calibr et fig lors de la fabrication.Le composant possde en interne un filtre passe-bas avec une frquence de coupure de 140Hz. Celui-ci serasuffisant avant de procder au filtrage numrique.On peut encore une fois calculer la densit de bruit correspondant la bande passante des sorties :Bruit( X , Y )=0,014.(1401,6)=0,2/ s soit0,4mVLa plaque utilise est galement monte par Sparkfun, car le composant est difficile souder, et lescomposants externes sont dj en place : Enregarddesfrquencesdersonnancedesdiffrentscapteurs(ADXL330:5,5kHz, IDG-300:12et15kHz), la frquence de la PWM 20kHz ne devrait pas perturber leur fonctionnement, cependant, il est20Travail effectupossible que la structure du quadri-rotor vibre une frquence proche de celles-ci, mais dans ce cas il estimpossible de le savoir.iv.Comment utiliser les capteursEssaisMaintenant quenousconnaissonsendtailsnoscapteurs, il fautles testerpourconfirmerlesvaleursattendues, et rflchir au meilleur moyen d'utiliser ces donnes pour piloter notre quadri-rotor en angle eten position.Les premiers essais ont t effectus sur l'axe de tangage, donc avec deux des quatres moteurs allums, et diffrentes tensions, afindeserendrecomptedubruit gnrpar les moteurs et les vibrations delastructure. Les mouvements sur l'axe de tangage vont tre perus par l'axe Y du gyroscope, et par l'axe X del'acclromtre. Sur ces graphiques, le gyroscope sera toujours reprsent en bleu, et l'acclromtre en vert.Ce premier essai a t effectu moteurs teints. Les donnes brutes rvlent un retour assez prcis sur lemouvement appliqu auquadri-rotor : enhaut, le gyroscope fournit la vitesse angulaire, qui varieuniquement lors du mouvement ; et l'acclromtre donne en quelque sorte l'angle appliqu l'engin. Enbas, c'estl'acclromtreenYqui estreprsentenvert, pours'assurerquelemouvementsurl'axedetangage ne perturbe pas ses acquisitions. Le bruit est dans l'ensemble assez faible, les filtres mis en place surlescartesSparkfunsemblentefficacesetliminerlemaximumdebruitpropreaucapteur. Dslors, unfiltrage semble plutt simple mettre en oeuvre pour obtenir des courbes lisses.21Travail effectuLes moteurs sont maintenant allums une tension de 4V : Ds ce deuxime essai, on se rend compte de la diffrence de l'influence du bruit gnr par les moteurs etles vibrations rsultantes entre le gyroscope et l'acclromtre. Ce dernier est trs sensible et semble prendreencomptechaquepetitevariationdelapositiondelastructure. Legyroscopeestmoinsaffectetestlgrement plus bruit que lors de l'essai 0V. Un filtrage adquat est maintenant indiscutable, car 4V lequadri-rotor ne peut pas s'envoler, et avec un tel bruit, la stabilisation est impossible.Les moteurs sont allums une tension de 8V : Encore une fois, l'acclromtre est bien plus bruit : tandis que les variations de celui-ci restaient entre -50et+50lorsdel'essai4V, elless'tendentmaintenantde-100+100. Legyroscopeestbeaucoupplusbruit maintenant, les variations au repos sont trs prononces et posent problme.Les moteurs sont allums une tension de 12V : 22Travail effectuEnfin, cet essai 12V permet de se rendre compte du bruit potentiel pendant le vol de l'appareil. Les deuxcapteurs sont trs bruits, avecdes variations semlangeant tellement qu'il est difficilededistinguerl'information utile. Le filtrage est bien une ncessit pour assurer un contrle correct.D'autrepart, unparamtreimportantvients'ajoutercesbruits: lorsquelasimulationdureplusieursminutes, onrelve une driveimportante dugyroscope. Les acclromtres cependant neprsententaucune drive au cours du temps.Calcul des anglesLa simulation prvoyait d'intgrer les donnes des gyroscopes pour obtenir directement l'angle. Voici unetentative d'intgration sur les donnes rcupres 0V :Vu le bruit de sortie des capteurs et la drive observe, il semble impossible de procder ainsi. Remarquonsau passage que le gyroscope est plus prompt ragir la variation que l'acclromtre.S'il n'est pas possible d'obtenir l'angle par le gyroscope, il est pourtant envisageable de calculer l'angle demanire fiable grce aux acclromtres. Pour ce faire, regardons de plus prs comment obtenir l'angle detangage par exemple : 23Travail effectuEn ayant les vecteurs acclration sur les 2 axes, on peut obtenir l'angle rsultant en calculant l'arctangenteentre les deux. Les figures 1. 5. illustrent diffrentes positions du quadri-rotor (le rond vert reprsentantl'avant de l'engin), et les valeurs des axes Xet Zde l'acclromtre correspondants (reprsentesrespectivement par les flches rouges et bleues). La figure 6. illustre le calcul associ chaque quadrant pour24AccelX = 0AccelZ = 300 AccelX = 150AccelZ = 150 AccelX = -300AccelZ = 0 AccelX = -150AccelZ = 150 AccelX = 300AccelZ = 0 Quadrant 1 : 0=atan( AccelZAccelX )Quadrant 4 : 0=atan( AccelZAccelX )+360Quadrant 2 : 0=atan( AccelZAccelX )+180Quadrant 3 : 0=atan( AccelZAccelX )+180z zz zz z0=450=900=90x xx xx x1. 2.4. 3.5.6.0=+450=0Travail effectuobtenir l'angle correct.Cependant, comme on le voit sur les graphiques, ce calcul ncessite qu'on lui retranche 90 pour obtenirl'angle du quadri-rotor. Ainsi on aura l'angle exact par ces quatres formules : Quadrant 1 :Quadrant 2 : Quadrant 3 : Quadrant 4 : Par exemple, pour la figure 3., on aurait : ce qui correspond bien l'angle du quadri-rotor.Ces calculs peuvent bien entendu s'appliquer l'axe de roulis, ce moment-l on remplacera juste les valeursde l'axe X de l'acclromtre par les valeurs de l'axe Y.Calcul de la positionConnatre la position du quadri-rotor dans l'espace est une tche plus ardue qu'elle ne semble. Pourtant,sachant l'acclration tout moment, on aurait : donc,sachantv0=0puisque l'engin dmarre avec une vitesse nulle. Alors : et l'algorithme de calcul se limiterait donc cette ligne : X (i )=X (i 1)+0,5AccelXdtdtavecdt =1 par exemple, on obtiendrait au final :X (i )=X (i 1)+0,5AccelXVoici le rsultat de cette opration, en ayant effectu un court dplacement de notre acclromtre sur le250quadrirotor=atan( AccelZAccelX )900quadrirotor=atan( AccelZAccelX )+180900quadrirotor=atan( AccelZAccelX )+180900quadrirotor=atan( AccelZAccelX )+360900quadrirotor=atan(150150)+18090=45+18090=45a=dvdtv=at +v0x=12at +v0t =12atTravail effectuplan horizontal :La position calcule est fausse car elle drive rapidement et fortement cause du bruit de l'acclromtre.De plus, outre ce problme de drive nous avons deux problmes pour la fiabilit de la position:premirement, il est difficile de distinguer une acclrationde unchangement de positiond'uneacclrationde unchangement d'angle ; et deuximement, il n'est pas possible de savoir, lorsquel'acclration est nulle, si c'est parceque l'engin a une vitesse constante, ou parcequ'il est vraiment l'arrt. Il faut se rendre l'vidence : il n'y a pas de moyen simple avec le matriel disposition permettant deconnatre prcisment la position d'un objet dans l'espace, sans aide extrieure. La preuve est que le GPS estla technologie la plus rpandue aujourd'hui dans le monde pour connatre une position, mais sa prcisionne serait pas suffisante pour un quadri-rotor. Letravail ralisseconcentreradoncsurlefiltragedesdonnes des capteursafindepouvoirasservircorrectement le quadri-rotor en angle.v.Filtrage de KalmanLe filtre de Kalman est un filtre d'estimation rcursif. Sa particularit est de pouvoir estimer l'tat actuel partir du dernier tat prcdemment estim et d'une nouvelle mesure. Il diffre en cela des algorithmes detype batch , carilneconserveaucunhistoriquedesmesuresoudesestimations. L'tatdufiltreestreprsent par deux variables : z( x)( kk): l'tat estim l'instant k,zP(kk ): la matrice de covariance de l'erreur (mesure de la prcision de l'estimation)L'algorithme de Kalman se droule en deux phases : la premire est la phase prdictive, pendant laquelle lefiltre rcupre la dernire valeur de l'tat estim pour estimer l'tat l'instant courant ; la deuxime est laphasedemisejour, durantlaquelleunenouvellevaleurmesureestintroduite,permettantdecorrigerl'estimation de la premire phase, et ainsi obtenir un tat plus prcis.Partie prdictive : z tat prdit : ( x)( kk1)=Fk( x)( k1k1)+Bku( k1)26Travail effectuz Estimation prdite de la covariance : P(kk1)=FkP(k 1k1)FkT+Q( k1)avec Fk: matrice de transition, qui relie l'tat prcdent l'tat actueluk: entre de commandeBk: matrice reliant uk xP(kk1): covariance de l'erreur calcule a prioriP(kk ): covariance de l'erreur calculea posterioriQk: matrice de covariance du bruit de processPartie de mise jour : z Innovation : ( y)k=ykHk( x)( kk1)z Covariance de l'innovation : Sk=HkP( kk1)HkT+Rkz Gain de Kalman : Kk=P( kk1)HkTSk1z Nouvel tat : ( x)( kk)=( x)( kk1)+Kk( y)kz Nouvelle covariance :P(kk )=( I KkHk)P( kk1)avec( y)k: mesure du process l'instant kHk: matrice qui relie l'tatxk la mesure ( y)kRk: covariance du bruit de mesureApplication au problme de l'estimation de l'angle du quadri-rotor : Comme il a t dbattu prcdemment, l'intgration d'un gyroscope amne une valeur correcte mais biaisedel'angle,celle-cidrivantdoncrapidement. Bienquel'anglepuissetrecalculeparlesacclromtres,ceux-ci sontbienpluslentquelegyroscope. L'objectifdecefiltredeKalmanestd'liminerlebiaisdel'intgration du gyroscope en se basant pour l'innovation sur l'angle donn par l'acclromtre pourcorriger au mieux l'angle et suivre au mieux le biais dans le temps.Les matrices constantes de l'algorithme sont :zzLes valeurs de ces matrices ont t dtermines exprimentalement afin d'obtenir visuellement les meilleurs27Rk=RangleQk=|Qangle00 QgyroTravail effectursultats.Le calcul de l'angle partir du gyroscope est donn par ces formules : z 0=0+(0b)dt etb=bavec 0 : angle0 : vitesse angulaire b : biaisL'tat du systme est donc dfini par : zzCode correspondant : /* Partie prdictive *//* En ayant fait les dveloppements des diffrents calculs on peut crire : */// Estimation de l'anglex_angle += dt * ( dotAngle x_bias );// Estimation de la matrice de covarianceP_00 += -dt * ( P_10 + P_01 ) + Q_angle * dt;P_01 += -dt * P_11;P_10 += -dt * P_11;P_11 += Q_gyro * dt;Viennent ensuite les calculs de mise jour :z( y)k=ykHk( x)( kk1)28( x)k=|0bk=|1 dt0 1 k|0b(k 1)+|dt0k|0 0( k1)=|0+(0b)dtbP(kk1)=|1 dt0 1kP( k1k 1)|1 0dt 1k+Q( k1)|P0,0dtP1,0dtP0,1+Qangledt P0,1dtP1,1P1,0dtP1,1P1,1+Qgyrodt|P0,0dtP1,0dtP0,1P0,1dtP1,1P1,0dtP1,1P1,1+|Qangle00 QgyroTravail effectuIci,ykest l'angle donn par le rsultat de l'arctangente entre les 2 axes de l'acclromtre.Avec Hk=|1 0, onobtient alors ( y)k=yk0k. Onpeut galement calculer la covariance del'innovation : zPuis, le gain de Kalman : zEt le nouvel tat corrig : z( x)( kk)=( x)( kk1)+Kk( y)kEnfin, la matrice de covariance mise jour : zP(kk )=( I KkHk)P( kk1)Code correspondant : /* Partie de mise jour *//* En ayant fait les dveloppements des diffrents calculs on peut crire : */// Innovationy = angle_m - x_angle;// Covariance de l'innovationS = P_00 + R_angle;// Gain de KalmanK_0 = P_00 / S;29Sk=HkP( kk1)HkT+Rk=| 1 0 P( kk1)|10+Rk=P0,0+RangleKk=P( kk1)HkTSk1=|P0,0P1,0S1|0bk=|0b( k 1)+Kk( yk0k)(|1 00 1|K0K1| 1 0)|P0,0P0,1P1,0P1,1=(|1 00 1|K00K10)|P0,0P0,1P1,0P1,1|1K00K11|P0,0P0,1P1,0P1,1=|P0,0P0,0K0P0,1P0,1K0P1,0P0,0K1P1,1P0,1K1Travail effectuK_1 = P_10 / S;// Etat mis jourx_angle +=K_0 * y;x_bias+=K_1 * y;// Covariance mise jourP_00 -= K_0 * P_00;P_01 -= K_0 * P_01;P_10 -= K_1 * P_00;P_11 -= K_1 * P_01;// Retourne la valeur corrige de l'anglereturn filterdata->x_angle;Essai et conclusion sur le filtre :Une fois le filtre implant dans le DSP, un test a t effectu 12V, c'est--dire au maximum de puissancedes moteurs. Voici les captures d'crans de cet essai :30Travail effectuLes courbes de gauche correspondent aux donnes brutes des diffrent capteurs : de haut en bas, on a legyroscope, l'axeZpuisl'axeXdel'acclromtre. droite, lersultatdel'angleensortiedufiltredekalman : c'est la vitesse angulaire intgre, ote du biais pist grce l'acclromtre. Le filtre fonctionneparfaitement pour cette application.vi.Le contrleur PIDLe rgulateur Proportionnel-Intgral-Driv (PID), est un contrleur de systme en boucle ferme. Il essayede corriger l'erreur calcule entre une variable mesure la sortie du contrleur et une consigne donne enentre, encalculantuneactionadaptesenseajusterlasortieduprocd. Cergulateurestencoretrsutilis dans l'industrie.Le rgulateur PID implique 3 paramtres distincts : le terme Proportionnel, le terme Intgral et le termeDriv. Le terme proportionel dtermine l'action directe par rapport l'erreur calcule, le terme intgralconsidre la somme des erreurs rcentes pour ragir, et le terme driv dtermine la raction par rapport lavitesse de changement de l'erreur.En changeant le coefficient pour chacun des trois termes, on peut changer l'volution de la sortie en termesderesponsivituneerreur, dedpassementparrapportlaconsigne, etd'oscillationautourdecetteconsigne.Voici la formule donnant la valeur de sortie : zLes schmas suivants illustrent les diffrentes actions des coefficients Kp, Ki et Kd respectivement : 31Rsultat =K pe(t )+Ki0te(t)d t+Kd(dedt)Travail effectuLecoefficientKpprsentel'avantagedeproduireunlargechangementensortieparrapportl'erreur,cependant il peut aussi rendre le systme instable s'il est trop grand. Le gain Ki acclre le mouvement du systme vers la consigne et limine l'erreur rsiduelle souvent produitelors d'un contrle uniquement proportionnel. Un Ki trop fort en revanche, prsente un large dpassementet peut faire diverger rapidement le systme.Enfin, le gain Kd permet d'attnuer le dpassement et les oscillations du systme, ainsi il permet de corrigerle dfaut du terme intgral, mais il ralentit galement le systme dans l'atteinte de la consigne.Code correspondant : // Calcul PID pour l'axe de tangage : previous_errorT = errorT;errorT = setpointT - Tangage;PropT = ((float)KpT/1000.0) * errorT;IntT = IntT + ((float)KiT/1000.0) * errorT * dt;DerT = ((float)KdT/1000.0) * (errorT - previous_errorT) * dt;outputT = PropT + IntT + DerT;Cet algorithme est effectu intervalles rguliers sur le micro-contrleur, le temps dt est donc connu.Les essais effectus sous Simulink sont corrects, et les coefficients du PID trouvs l'anne passe semblentjuste, mme si la simulation semble trop parfaite pour correspondre au quadri-rotor rel. En voici l'exempleen image, soumis deux perturbations en roulis et en tangage : 32Travail effectuLe temps pressant, l'tude du contrle du quadri-rotor n'a pas t pousse plus loin que ce qui avait t faitl'anneprcdente, l'objectiftantd'avoirunelectroniquefonctionnellequi puissepermettredetesterfacilement un PID ou tout autre type de contrle.b.La carte embarquei.Contraintes du systmeAfinderendrelequadri-rotorentirementautonome, il estindispensabled'yembarquerl'ensembledusystme de contrle. Ce systme est compos :z d'un microcontrleur excutant le filtrage numrique et l'algorithme de correctionz de capteurs fournissant les informations sur l'tat du quadri-rotorz d'un montage de puissance autorisant la commande des moteursAussi l'ensemble des composants ncessitent une source d'nergie qui doit tre embarque sur l'engin. Des33Travail effectuaccumulateurs sont donc utiliss mais offrent une autonomie l'engin de seulement quelques minutes.ii.Identification des moteursLa batterie dlivrant du +12V, il est vraisemblable que la tension nominale des moteurs soit de 12V. cettetension, chaque moteur consomme environ 2A.TandisquelemodleSimulinkpossdaitdesvariablesnecorrespondantpasauquadri-rotorutilis, ilsemblait intressant de retrouver ces valeurs pour amliorer le modle. Pour obtenir le gain en vitesse des moteurs, un montage comme celui-ci a t mis en place : En alignant l'metteur et le rcepteur infrarouge, il a t ainsi possible de mesurer prcisment, diffrentestensions, la vitesse de rotationdes moteurs. Le gainest linaire, et il est d'environ57rad/s/V, soit541trs/min/V, soit 6500trs/min 12V.La pousse a t mesure l'aide d'une balance et de poids. Ces diffrents poids ont t placs dans unenacelle souleve par le quadri-rotor, jusqu' atteindre la limite de dcollage de l'engin partir du sol. Unefois la limite trouve, le tout est pes : nous obtenons environ 480g, le quadri-rotor seul (avec les plaquesdes capteurs et de contrle) pesant 270g, et la batterie d'origine pesant 80g.Ces donnes peuvent tre exploites dans la modlisation du systme. Malheureusement, par manque detemps, elle n'ont pas t utilises pendant le projet, mais pourront servir plus tard.iii.Choix du microcontrleur1.Ressources ncessairesAfin de raliser les tches d'acquisition des tensions des capteurs, de filtrage numrique, de correction PID,etdecommandemoteur, l'utilisationd'unmicrocontrleurs'imposait. Aussi, il sedevaitderpondrecertains critres de performances et de fonctionnalits.Tout d'abord sont convertir six tensions analogiques dlivres par trois capteurs, reprsentant lesacclrations et les vitesses de rotation dans les six axes de liberts. Cet opration requiert un convertisseur34Travail effectuanalogique/numriquedtdesixcanauxd'acquisition. Larsolutiondel'ADCn'estpasngliger, lescapteurs ayant au mieux une sensibilit de 2mV, le convertisseur doit fournir un rsultat sur 12 bits. En effetavec une amplitude de 5V, cela permettra de mesurer une variation minimale de 1,22mV.Ensuite, lessignauxseronttraterparunfiltredeKalman, gourmandencalculnumriqueenvirguleflottante. L'utilisation d'un calculateur avec une architecture 16bits est conseille pour raliser cesoprations. Toujoursdansunsoucisdeperformances, ilestgalementrecommandd'utiliseruncircuitpaul par des oprations arithmtiques cables, qui se raliseraient en un cycle d'horloge unique.Le quadri-rotor disposant par dfinitionde quatre moteurs, le microcontrleur retenir disposerancessairement delacapacitles commander indpendemment. Lacommandemoteur s'oprant aumoyend'unsignal modulationdelargeurd'impulsion, lecalculateuremployseraquipdequatremodules de gnration de signaux PWM, logiquement accompagns de quatre compteurs.Enfin, avec pour souci de faciliter le dveloppement du contrleur (en pouvant agir en temps rel sur lesvaleurscontenuesenmmoireparexemple), ilsembleessentielquelemicrocontrleurretenirdisposed'une liaison srie afin qu'il puisse communiquer avec un poste de travail quip d'une interface RS232.2.La famille dsPICAvec pour objectif de dcouvrir une nouvelle famille de microcontrleurs, le choix a t fait de s'orientervers les dsPIC de chez Microchip. Prenant en compte les contraintes exposes prcdemment, il fut retenule modle dsPIC30F4013, microcontrleur hautes performances architecture RISC.Equip d'un convertisseur analogique/numrique d'une rsolution de 12 bits, il permet l'acquisition de 13voies analogiques, chose largement suffisante l'application. Sa vitesse de conversion de 200 000 samples la seconde ne devrait pas non plus tre un facteur limitant.Afin d'excuter nos oprations arithmtiques une vitesse convenable, le 30F4013 est paul par un DSPengine comprenant un multiplicateur/diviseur de 17 x 17 bits cbl, ainsi qu'un additionneur/soustracteurde 40 bits rapide.Les quatres modules Output/Compare/PWM que possde le dsPIC permettront de gnrerindpendemment les signaux ncessaires au contrle de chaque moteur en accord avec des Timers matriels.Ensuite, l'UART (contrleur de liaison srie) intgr offre la possiblit d'interfacer notre microcontrleuravec une application tournant sur PC par exemple, afin de piloter le quadri-rotor sans avoir programmerle dsPIC pour changer ses paramtres.Enfin, les outils de dveloppement associs sont robustes et gratuits. L'environnement de dveloppementintgr MPLAB est gratuit, tout comme le compilateur C30. Le programmateur officiel est lui payant, maisun petit montage base de transistors permet de programmer le dsPIC sans frais.35Travail effectuiv.Modules du dsPIC utiliss1.Output/Compare/PWMCe module, prsent en quatre exemplaires sur le dsPIC30F4013, permet de gnrer des signauxcomparativementunebasedetemps. Danslecasduquadri-rotor, seulelafonctiondegnrationdesignaux PWM est utilise. Pour la mettre en place, la configuration de plusieurs registres est ncessaire.Pour calculer la valeur entrer dans le registre BRGVAL, il faut en premier lieu connatre la vitesse prcised'excution des instructions du microcontrleur. Celle-ci est conditionne par deux paramtres : le quartzutilis ainsi que la PLL associ. Le dsPIC30F4014 peut fonctionner une vitesse maximale de 30 MIPS,c'est--dire, de 30 millions d'instructions la seconde. En utilisant un quartz de 20MHz, il faut chercher atteindre la vitesse la plus importante avec les options de la PLL disponibles. Ici est utilis le mode : HS / 3+ PLL * 4 ; il signifie que la frquence du quartz est divise par trois, puis que cette frquence est multipliepar quatre. Il est alors obtenu une vitesse de fonctionnement de 26,67 MIPS.Aussi, la priode du signal PWM doit tre spcifie. Comme rappel dans la partie thorique, pour dpasserle spectre auditif humain, il est commun d'employer une frquence suprieure la dizaine de kHz. Il estemployiciunefrquencede20kHzenspcifiant1333dansleregistrePR2duTimer2quipilotelesmodules PWM. Cette valeur est dduite par un simple calcul, sachant que le dsPIC tourne 26,67 MIPS :Ensuite, il faut spcifier le rapport cyclique dsir au travers des registres OCxR (avec x = 1, 2, 3, 4 pourchacun des modules PWM) sachant que la valeur de la priode du Timer (1333) reprsente 100%. Si nousdsirons alors 50% de rapport cyclique, nous inscrivons 666 dans le registre OCxR.Finalement, il ne reste qu' indiquer aux modules Output/Compare/PWM qu'ils doivent fonctionner enmodePWMavecpourbasedetempsleTimer2etdmarrercedernier. Sontconfigurspourcelalesregistres OCxCON (avec x = 1, 2, 3, 4 pour chacun des modules PWM) et T2CON de la sorte :z OCxCON = 0x0006z Output Compare Timer Select bit = Timer2 is the clock source for comparez Output Compare Mode Select bits = PWM mode on OCx, Fault pin disabledz T2CON = 0x0001z Timer On bit = Starts 16-bit timer2.Convertisseur analogique/numriqueL'acquisitiondes tensions analogiques dlivres par les trois capteurs est ralise par le module deconversion analogique/numrique. Ses diffrents registres de configuration permettent de slectionner les36PR2=MIPSfrquencePWM=2666666720000=1333,33Travail effectucanaux d'acquisition, les tensions de rfrence ainsi que la vitesse d'acquisition. Il est configur de la sorte convertir lasuitesixtensions analogiques sur demande, avecles rsultats stocks dans des registresdistincts.L'acquisition de l'ensemble des canaux de conversion est lance dans la boucle principale. Conformment la documentation du convertisseur, il faut dans un premier temps lancer un sampling des diffrents canaux,parlamise1dubitASAMsitudansleregistreADCON1. Lorsqueceprocessusesttermin, ilestpossible de lancer la conversion par la remise zro du bit ASAM.Le rsultat tant cod sur 12 bits, il nous faut mettre en forme la valeur, que nous dsirons en mV. Cela sedroule ainsi :AccelX = ((((float)ADCBUF0)*VREFPLUS)/ADCRES) OffsetAccelX;AccelY = ((((float)ADCBUF1)*VREFPLUS)/ADCRES) OffsetAccelY;AccelZ = ((((float)ADCBUF2)*VREFPLUS)/ADCRES) - OffsetAccelZ + 340;GyroZ= (((((float)ADCBUF3)*VREFPLUS)/ADCRES) - OffsetGyroZ ) / 2.0;GyroY= (((((float)ADCBUF4)*VREFPLUS)/ADCRES) - OffsetGyroY ) / 2.0;GyroX= (((((float)ADCBUF5)*VREFPLUS)/ADCRES) - OffsetGyroX ) / 2.0;La constante VREFPLUS vaut 5000mV, et correspond l'tendue du convertisseur analogique/numrique.ADCRESreprsentelarsolutionduCAN,quiestde12bits.PourconnatrelersultatenmV,ilfautsimplement multiplier le rsultat de la conversionpar l'entendue VREFPLUS, puis le diviser par larsolution ADCRES. Ensuite est soustrait l'offset des capteurs qui a t determin la mise en marche duquadri-rotor pour replacer les valeurs zro.L'acclromtre situ sur l'axe Z tant plac perpendiculairement aux deux autres, nous ajoutons 340mV lavaleur acquise pour que son zro reprsente l'horizontalit du quadri-rotor, et que le calcul de l'arctengantese droule correctement.Le rsultat des gyroscopes est lui divis par deux, afinde le convertir en/s, conformment auxspcifications de la datasheet.3.InterruptionLe dsPIC30F4013 est capable de drouter l'excution de son programme principal suivant de nombreusessourcesd'interruption. Afind'excuterlecorrecteurPIDunefrquencefixe, il estutilisuneroutined'interruption dclenche sur dpassement de compteur, le Timer1 en l'occurence.Souhaitantunepriodede10mspourunmicrocontrleurtournant26,67MIPS, ilfautcalculerlesvaleurs entrer dans les registres de configuration du compteur :PrescalerTimer1PriodeTimer1=PriodeinterruptionFrquenceCPUPrescalerTimer1PriodeTimer1=10ms26,67 MIPS=266667En choisissant un Prescaler de 64, il est ainsi ais de dterminer la priode :37Travail effectuCette valeur est inscrire au registre TMR1, en complment de la configuration du registre T1CON :z TMR1 = 4166z T1CON = 0x8020z Timer On Control bit = Starts the timerz Timer Input Clock Prescale Select bits = 1:64 prescale valueIl nerestequ'autoriserlesinterruptionssurdpassementduTimer1, etleurassignerunniveaudepriorit :z IPC0 = 0x4000z Timer1 Interrupt Priority bits = Interrupt is priority 4z IEC0 = 0x0008z Timer1 Enable Interrupt bit = Interrupt request enable4.UARTL'UART, pour Universal Asynchronous Receiver Transmitter, ajoute la possibilit au microcontrleur decommuniquer avec d'autres priphriques, au travers du standard de communication RS-232. Cela permet,via une interface graphique sur PC, de piloter les diffrents paramtres du quadri-rotor.Le dbit, bien qu'assez faible, reste suffisant pour cette application o il est prcisment de 115,2 kbits/s.Cettevitessedetransmissionest spcifieaumoduleUARTvialeregistreBRGVAL, qui sedoit decontenir une valeur calcule par la formule suivante :Dsirantlavitessedetransmission/rceptionmaximaleautoriseparledsPIC, etprenantencomptelafrquence du microcontrleur de 26,67 MIPS :Ensuite, le module de communication doit tre activ ; cela est ralis par la configuration suivante de sonregistre U1MODE :z U1MODE = 0x8000z UART Enable bit = UART is enabled38PriodeTimer1=26666764=4166BRGVAL=( MIPS / BAUDRATE)161BRGVAL=( 26,67MIPS / 115200kbits/ s)161=13Travail effectu1.TransmissionLatransmissiond'une trame auformat ASCII est grandement facilite par les fonctions ddies ducompilateur C30. Il faut d'abord fabriquer la trame grce la fonction sprintf, provenant de la bibliothquestandard du C. Par exemple, pour envoyer les angles de tangage, roulis, lacet ainsi que les rapports cycliquesdes quatre signaux PWM, il est utilis la syntaxe suivante :sprintf(trame, "%d:%d:%d:%d:%d:%d:%d:%d\n", (int)Tangage, (int)Roulis,(int)Lacet, (int)PWMAvant, (int)PWMArriere, (int)PWMGauche, (int)PWMDroite,(int)flag);Leflagpermetdesynchroniserl'envoidelatrameductinterfacePC. Nesouhaitantpasrecevoirenpermanence les paramtres spcifis sur le poste de travail pour ne pas surcharger le microcontrleur, le flagest positionn 1 rgulirement pour demander l'application la mise jour des donnes.LafonctionputsUART1()delabibliothqueUARTdeC30transmetlatramepasseenparamtreensortie du dsPIC sur sa ligne TX.putsUART1(trame);2.RceptionLa rception est plus dlicate raliser : ds rception du premier bit par le module UART, le dsPIC estdtourn vers une routine d'interruption et c'est l'utilisateur de capturer chaque octet reu. Pour mettre enplace ce systme, il faut donner la plus haute priorit cette interruption. En effet, la reception ne peut pastre interrompue par la premire fonction d'interruption (sur dpassement du compteur), celacorromperait les donnes, et le programme buggerait. Les registres relatifs ce fonctionnement sont alorsconfigurs de la sorte :z U1STA = 0x0400z Transmit Enable bit = UART transmitter enabledz Receive Interrupt Mode Selection bit = Interrupt flag bit is set when a character is receivedz IEC0 = 0x0200z UART1 Receiver Interrupt Enable bit = Interrupt request enabledz IPC2 = 0x0070z UART1 Receiver Interrupt Priority bits =Interrupt is priority 7 (highest priorityinterrupt)Ds rception d'un premier caractre, le programme est drout vers la fonction d'interruption associe, etil faut rcuprer latramemanuellement. L'ideest d'utiliser uncaractredefindechanefacilementidentifiable, car la longueur de la chane est variable. Le code embarqu est le suivant :reception[rxptr] = U1RXREG; // Sauvegarde du caractre39Travail effecturxptr++; // Incrmente le pointeurif(reception[rxptr-1] == 'x') // Si fin de chane{finreception = 1; // Indicateur pour la boucle principalerxptr = 0; // Remise zro du pointeurflag = 0; // Arrte l'envoi par l'application PC}Ne reste qu' dcoder la chane de caractres par l'intermdiaire de la fonction standard sscanf() :sscanf(reception, "pierre:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%d:%dx", &KpT,&KiT, &KdT, &setpointT, &altitude, &KpR, &KiR, &KdR, &setpointR, &init,&NewJoyRoll, &NewJoyPitch, &CmdRoll, &CmdPitch, &KpL);Les paramtres rcuprs sont :z Coefficients du correcteur PID sur l'axe de tangage : KpT, KiT, KdTz Consigne en angle sur l'axe de tangage : setpointTz Consigne en altitude : altitudez Coefficients du correcteur PID sur l'axe de roulis : KpR, KiR, KdRz Consigne en angle sur l'axe de roulis : setpointRz Reset de l'application embarque : initz Trim en tangage et roulis : NewJoyRoll, NewJoyPitchz Commande en tangage et roulis : CmdRoll, CmdPitchz Coefficient du correcteur proportionnel sur l'axe de lacet : KpLv.Algorithme gnralL'ide gnrale du programme embarqu est relativement simple. Il faut dans l'ordre :1. Convertir les tensions analogiques des capteurs2. Mixer les donnes par le filtre de Kalman3. Calculer la commande par le correcteur PID4. Mettre jour le rapport cyclique des moteursLefiltredeKalmanetlecorrecteurPIDdevants'excuterunepriodefixe(choisieici10ms), ilestindispensabledeles excuter dans unefonctiond'interruption, commeprcisprcedemment. Il fautajoutercelauneprioded'initialisationdescapteursaudmarrageduprogramme, afind'enregistrerlaposition horizontale.40Travail effectuAprs analyse des temps d'excution, on constate comme attendu que l'envoi et la rception de donnes surla liaison srie prend beaucoup de temps, cause de la faible vitesse limite par le protocole 115,2 kbits/s.Maisceci n'estpaslimitantcarlaconditionncessaireestd'obteniraumoinsunenouvellevaleurdescapteurs pourchaqueexcutiondelafonctiond'interruption. L'acquisitiondelatensiondes capteursn'occupant seulement 1,8ms de temps CPU, la boucle principale occupe au total 6,5ms de tempsd'excution et le filtre de Kalman dispose donc sans problme d'une valeur mise jour chacune de sesexcutions.vi.Ralisation de la carteL'ensemble de l'lectronique embarque est dcoup en trois parties :z Une carte avec le microcontrleur et l'alimentationz Une carte o sont situs les trois capteursz Un montage de puissance situ au plus prs de chaque moteur1.Carte du contrleurLedsPIC30F4013nencessitepasuncablageparticulirement complexe pour l'alimenter. Il dispose detrois pins relier la masse et trois autres relier au 5V. L'alimentation du convertisseuranalogique/numrique reprsente par les pattes AVSS et AVDD sont relies elles aussi la masse et au 5Vrespectivement. Un condensateur dcouple l'ensemble de ces quatre entres d'alimentation.Ensuite, l'oscillateur du microcontrleur est excit par le quartz 20MHz associ deux condensateurs de22pF, comme recommand dans la datasheet.N'est pas oublier laconnexionde labroche de reset appeleMCLR. Elle seconnecte au5Vpar41DbutInitialisation des capteursAcquisition des capteursEnvoi / rception liaison srieBoucle infinieFiltrage de KalmanCorrection PIDMise jour Duty Cycle PWMFin de la boucleFin du programme1.8ms4.7ms0.4msFonction d'interruptionExcute toutes les 10msTravail effectul'intermdiaire d'une rsistance pour limiter le courant l'allumage.Lacartedumicrocontrleurpermetgalementdegnrerlestroistensionsncessairespouralimenterl'ensembledescomposants:3,3V, 5Vet12V. LescomposantslogiqueTTL(microcontrleur, driver)requirent une tension de 5V, les trois capteurs fonctionnent 3,3V, et les moteurs tournent une tensionnominale de 12V. Il a t retenu le choix d'utiliser des batteries de 12V qui polariseront directement lesmoteurs, tandis que les tensions de 3,3V et 5V seront obtenues par des rgulateurs.42Travail effectuLa datasheet de ces rgulateurs prconise la mise en place de condensateurs de filtrage de 10F de part etd'autre de chaque rgulateur. De plus le courant ncessit par les composants logiques n'tant pasparticulirement lev, la presence de dissipateurs thermiques n'est pas obligatoire.Pour finir est plac galement sur cette carte un 74LS07, driver qui, comme expliqu prcdemment dans lapartie thorique va permettre de mettre niveau les signaux PWM gnrs par le dsPIC. En effet, la sortiedes broches de PWM, l'amplitude en tension est de 5V, mais pour commander les moteurs sur l'intgralitdu rapport cyclique, nous ajustons les signaux PWM une amplitude de 12V. Pour cela chaque sortie dudriver est amen au 12V par une rsistance de tirage.2.Carte des capteursAfin de permettre leur remplacement plus ais, il a t retenu de placer les capteurs sur une carte partentire. Lescomposantssitussurcettecartesontdesplusrduits: uniquementlescapteursyserontsouds, ainsi qu'une barrette, afin d'y placer un connecteur pour transmettre les tensions des capteurs vers lacarte du contrle et amener l'alimentation aux composants.43Travail effectu3.Electronique de puissanceLes moteurs consommant un courant lev (2A pleine vitesse), le dsPIC est incapable de dlivrer une telleintensit. Le montage suivant permet de fournir le courant ncessaire leur fonctionnement.QuatreMOSFETsIRF630sontutilisspouramplifier le courant.Ces MOSFETs ont t choisis car ils44Travail effectutaient disponibles de suite en magasin. Ils sont un peu surdimensionns car si on regarde d'un peu plusprs la datasheet, ils peuvant supporter 9A chacun. On a :z RDS(ON) = 0,35z ID(MAX) = 9A (en continu), 36A (en pulsations)z PD = 75Wz VGS(TH) = 3V pour 250Az CISS = 540pF avec VDS = 25V et f = 1MHzOn peut calculer la puissance dissipe : Mme en prenant une marge de 5 fois le temps normal de commutation, on arriverait 0,09W, ce qui esttrs correct et ne ncessite pas de refroidissement, qui n'est ncessaire qu' partir d'1W dissip. La preuve estqu'en fonctionnement, les MOSFETs sont froids au toucher, ils ne chauffent quasiment pas. Ils sont donc commands par un signal PWM en provenance du dsPIC via un cable crois avec la masse.Une diode de roue libre permet de protger le circuit en amont et un condensateur dcouple l'alimentationau plus prs du moteur.4.RoutageLa suite de logiciels CADSOFT Eagle rpond parfaitement aux besoins de conception du projet. Elle estcompose d'unditeurSchematicpour raliser graphiquement les circuits et d'unditeur decircuitsimprims Layout coupl un routeur automatique.Aprs un placement prcis des composants et la dfinition des contraintes en taille des cartes, le routeurralise le circuit imprim. Ci-dessous, la reprsentation de la carte du contrleur :45Pmoyenne=( I2)(U2 )(tDon+tR+tRVoff+tF+tC)(T2 )=(22)(122 )(0,074)(502 )=60,07425=0,018WTravail effectu5.Mise en place des cartesLa carte des capteurs est place au sommet du quadri-rotor, dans les tiges fixes par les quipes prcdentes :La carte du contrleur est fixe sous le quadri-rotor, au moyen de scotch :46Travail effectuLes montages de puissance sont souds directement sur chaque moteur comme visible en arrire-plan.c.L'interface au soli.Utilit d'une liaison au solAvantdecrerunsystmetotalementautonome, il semblaitprimordial depossderuneinterfacequicommuniqueaveclesystmeentemps rel, afindercuprer les diffrents paramtres et pouvoir lesmodifier. Eneffet, onpeut imaginer l'norme perte de temps engendre par la programmationdumicrocontrleur chaque modification de variable. Il fallait donc imaginer un dispositif qui puisse mettre jour la mmoire du dsPIC de manire assez simple, de faon ne pas avoir dvelopper une applicationspcifique.Du point de vue matriel, plusieurs types de communications taient appropries au problme :z Liaisons filaires : USB, RS-232, CAN, Ethernet, ...z Liaison sans fil : Zigbee, Bluetooth, Wi-Fi...L'idal est bien sur d'utiliser les ondes radios comme moyen de communication pour viter l'utilisation desfils mais il a t finalement adopt une liaison filaire de type RS-232, pour plusieurs raisons :z Simplicit d'utilisation au niveau logiciel : standard trs rpanduz Cot modique : un circuit intgr et un cblez Mise en oeuvre matrielle aise : un simple composant logiqueDu point de vue logiciel, il tait possible de dvelopper une petite application pour accder au port srie.Nanmoins, il a t retenu d'utiliser le logiciel Simulink, qui permet l'affichage de graphique et de donnesde manire trs simple, sans avoir recours un diteur de code.47Travail effectuii.La RS-232 en brefRS-232est unenormequi standardiseunport decommunicationdetypesrie. Il estdisponiblesurpresque tous les PC mme s'il a tendance tre remplacer pas le populaire USB. Malgr cela, il reste encoretrs utilis dans l'industrie notamment, grce sa robustesse et sa simplicit.Sur la liaison srie, les bits d'information (1 ou 0) arrivent successivement, des intervalles rguliers. L'octet transmettre est envoy bit par bit (en commenant par le bit de poids faible) par l'metteur sur la ligne Txde la machine 1, vers le la ligne Rx de la machine 2. Ce type de liaison est en fait une liaison asynchrone caril n y a pas d'horloge commune entre l'metteur et le rcepteur. Du coup, pour que la communication puissefonctionner correctement, des bits supplmentaires sont indispensables :z Bit de dbut - bit (start = 0) plac au dbut du trame.z Bit de fin - bit (stop) plac la fin du trame.Exemple de trame de message:Transmission de $59 (01011001)ReposStartBit 0Bit 1 Bit 2Bit 3 Bit 4Bit 5Bit 6Bit 7Stop Reposiii.Schma de connexionPour raliser la liaison srie entre le PC et le quadri-rotor, nous avons utilis un MAX232 de MAXIM. Ilsert d'interface lectrique entre une liaison srie TTL (0-5V) et une liaison srie RS232 (+12 -12V) et ceavec une simple alimentation 5V.48Travail effectuCe montage est ralis sur une carte de dveloppement part entire, cela dans un souci de modularit. Eneffet, sur la carte du contrleur sont disponibles les connexions Rx et Tx sur des broches spcifiques, il seraitdonc trs ais d'interchanger le moyen de communication, avec une liaison sans fil par exemple.iv.Liaison srie sous SimulinkAu niveau logiciel, Simulink ne disposant pas nativement de la capacit accder au port srie, il lui a tajout un blockset spcifique dvelopp par Leonardo Daga et distribu gratuitement.Sur l'imageci-dessus sont reprsents les diffrents blocs disponibles dans leblockset qui permettentd'accder au port srie en lecture et en criture.49Travail effectuv.Interface graphiqueLacaptured'cransuivanteprsentel'interfaceprincipaleglobaledel'application. Elleestcomposedequatre parties distinctes :z RS232 Input : rceptionne les trames envoys par le quadri-rotorz Scopes : prsente les donnes sous forme graphiquez Sliders : permet de rgler les diffrents paramtresz RS232 Ouput : transmet les donnes au quadri-rotor1.RS232 InputCe bloc permet de configurer les paramtres de la liaison srie ainsi que le format des messages envoys parle microcontrleur. La configuration se fait par les blocs RS232 Setup et RS232 Read Format. Le premierbloc permet de spcifier les options de la liaison srie (vitesse, parit, contrle de flux) tandis que le secondrequiert le format de la trame dcoder. Ce format doit tre conforme celui utilis par le dsPIC lors del'mission (dcrit dans le chapitre sur la carte embarqu).50Travail effectuLes donnes dcodes sont transmises au sous-systme Scopes par le biais de la sortie Visualisation tandisque la dernire valeur reprsentant le flag se retrouve inject vers le bloc d'mission.2.ScopesComme son nom l'indique, ce bloc se compose entirement de graphiques qui permettent de visualiser lesdonnes arrivant du bloc prcdent. Il est possible d'ajouter ici des blocs plus ludiques comme un horizonartificiel pour reprsenter l'assiette du quadri-rotor de manire graphique ou bien une interface permettantlacommunicationavecunsimulateur devol, afind'afficher lequadri-rotor entemps rel sous FlightSimulator par exemple.3.SlidersLe bloc Sliders propose le rglage des coefficients des correcteurs PID, de l'altitude, et permet de redmarrerle microcontrleur.51Travail effectuSurlafigureci-dessous, nouspouvonsvoirlestroisSlidersquicorrespondentchacundescoefficientsproportionnel, intgraletdrivducorrecteurPIDdel'axedetangageL'interfaceestidentiquepourlerglage du PID sur l'axe de roulis. Il est possible galement de donner des consignes en altitude ainsi qu'enangle si l'on ne dsire pas un vol stationnaire.52Travail effectu4.RS-232 OutputCe bloc contient le bloc RS232 Write Format qui permet de formatter la chaine du message envoyer sur laliaisonsrie. Les donnes qui sont envoyes proviennent des Sliders dusous-systmeprcdent. Cotquadri-rotor, le microcontrleur se doit de disposer du mme format de trame pour tre en mesure de ladcoder.53Travail effectuvi.Interfaage avec une manette de jeuPour offrir un contrle manuel du quadri-rotor, il a t ajout une interface pour manette de jeu. Celle-ciest en mesure de recevoir l'tat de tout contrleur configur sous Windows. Cela permet alors de:z Contrler l'altitude du quadri-rotorz Trimer l'appareil en volz Dplacer le quadri-rotor en translationCi-dessous est reprsent l'affectation des boutons sur une manette:54Travail effectuvii.PossibilitsSimulink est un outil trs puissant qui a fortement aid au dveloppement du quadri-rotor. Aussi, on peutimaginer augmenter les possibilits offertes via cette interface.Des dizaines deblocksets sont disponibles et permettent des visualisations plus intressantes quedescourbes classiques, et des interfaages avec des simulateurs de vols par exemple. De plus, cette interface tant flexible, il est facile de dplacer l'algorithme de filtrage et de correction PIDversSimulink, voiredeleremplacerparunautretypedecontrle; l'applicationpouvantrcuprerlesdonnes des capteurs par la liaison srie, effectuer les calculs, puis rexpdier la commande des moteurs versle dsPIC.d.Procdure de testi.Dmarrage du quadri-rotor :Voici le quadri-rotor dans son ensemble : 55Travail effectuLe cble connect la carte possde six fils : Ces six fils correspondent :z l'alimentation en +12V : jaune et vertz la masse du montage : fil dnudz la masse relier sur la carte RS232 : noir z l'alimentation relier la carte RS232 : rouge56Travail effectuz les cbles TX et RX ensembles : rougesOn les connecte comme ceci sur la plaque RS232 : 57Travail effectuUne fois le quadri-rotor branch comme il se doit, il faut le poser au sol et le plaquer pour empcher toutdpart inattendu des moteurs. Cette action est ncessaire car il faut galement que la phase d'initialisationdes capteurs se fasse l'horizontal.Surtout, il faut viter lors de l'allumage de dpasser les +14V car cela pourrait endommager fortement lesmoteurs.ii.Lancement de la liaison srieUne fois le quadri-rotor sous tension, il faut rapidement lancer la liaison srie sous Simulink pour que leprogrammeprennedesvaleurscorrectespourlaPWMdesmoteurs. Ilfautinsrer inf danslacasecorrespondant au temps de simulation, puis appuyer sur le bouton Play.Pour plus de tranquilit lors des premiers essais, mieux vaut mettre tous les coefficients des diffrents PID zro : Enfin, il est prfrable de mettre l'altitude une faible valeur, 200 par exemple : 58Travail effectuiii.Exemple de visualisationIl est facile prsent de visualiser les angles du quadri-rotor, ainsi que les consignes PWM appliques enentre des moteurs : iv.Essais dj effectusLesessaisempiriqueseffectusontrvlsdescoefficientspermettantunestabilisationdequelquessecondes du quadri-rotor. Voici les valeurs de ces coefficients pour les deux axes : zK p=5,5zKi=0,159Travail effectuzKd=10,5Le transfert sur la liaison srie s'effectuant en entiers, on envoie les valeurs en milliers, donc il faut rgler lesslides comme cela pour les deux axes : v.Validation du systme lectronique et informatiqueLe travail ralis en lectronique et en informatique permet de communiquer rapidement et facilement avecle quadri-rotor. Il est possible d'effectuer des tests en changeant les coefficients du PID sans pour autantavoir reprogrammer le microcontrleur. Cela s'avre trs pratique pour effectuer une batterie d'essais enun temps limit.Le systme fonctionne parfaitement bien que le quadri-rotor ne soit pas compltement stabilis. Ce rsultatpeut tre constat par la vido des essais en vol disponible sur le CD-Rom accompagnant ce rapport.Deplus, undeuximeprogrammedudsPICest disponiblesansl'algorithmePID, lemicrocontrleurenvoyantles diffrents anglesfiltrsetrceptionnantlesvaleursdesPWMenvoyerdirectementauxquatres moteurs. Ainsi, il sera ais pour les personnes travaillant sur le quadri-rotor dans le futur, de pouvoirmettre en place sous Simulink d'autres types de contrle sans avoir reprogrammer le dsPIC constamment.60Problmes6.Problmesa.Rsolusi.Bruit des capteurs, filtrageCommevoquprcdemment, lebruitgnrparlesvibrationsdesmoteursetdelastructureesttrsimportant et pose un problme certain lors du vol du quadri-rotor. Il t trs difficile d'liminer les bruits :un filtre passe-bas a d'abord t test, puis un premier algorithme de Kalman qui n'tait pas satisfaisant, etenfin l'algorithme que nous avons dcrit dans le rapport. ce jour, l'algorithme que nous avons mis en placeest certainement le plus fiable et prcis que nous ayons trouv.ii.Electronique de puissanceL'lectronique de puissance est peut-tre la partie qui nous a pos le plus de problme lors de la ralisationde la carte. En effet, les masses du circuit de contrle et du circuit de puissance de la premire plaque n'ayantpastspares, beaucoupdeperturbationsauniveaudel'alimentationtaientprsentes. Laplaquedecontrle a d tre refaite en consquence,avec une sparation claire des masseset des pistes plus larges,comme indiqu sur le schma Eagle et visible sur le typon en annexe sur le Cd-Rom.Un autre problme tait le dcouplage de la masse au niveau des diffrents composants du circuit. Alors quela premire plaque tire ne contenait aucun condensateurs de dcouplage, mme au niveau des moteurs, lesperturbations au niveau de l'alimentation taient trs importantes (plusieurs centaines de mV) ; ce qui poseproblme pour les capteurs par exemple, quand on sait que les valeurs de sorties sont dpendantes de latension d'alimentation. La deuxime plaque comporte un condensateur de dcouplage pour le dsPIC, pourle driver de MOSFETs, et pour chaque moteur.iii.Programmation du dsPICLafamilledsPICdeMicrochiprequiertunprogrammateurparticulierpourlesfairefonctionnerdontl'cole ne dispose pas. Aussi, nous disposions d'un dbuggeur sur circuit ICD2 qui nous a permis de corrigerles erreurs de programmation trs facilement. Malheureusement, aprs une erreur de manipulation, cet outiln'a plus voulu fonctionner. Il nous a fallu concevoir un programmateur maison , bien moins performantqu'un ICD2, mais galement moins riche en fonctionnalits. En effet, il n'est pas possible avec un simpleprogrammateur d'explorer la mmoire du microcontrleur ou d'excuter le code pas pas, chose facilitantgrandement le dveloppement.61Problmesb.Actuellementi.Banc de testLe principal problme que nous recontrons l'heure actuelle est de l'ordre de l'exprimentation. En effet,tester un engin volant pouvant se dplacer dans l'ensemble des directions n'est pas des plus simples. Pourcela il a t imagin diffrents bancs de tests :z Bancsurunaxe:fabricationartisanaled'unbancdetestenboismaintenantlequadri-rotorauniveau d'une tige et ne lui laissant donc qu'unaxe de rotation de libert. Malheureusement, celasoulve deux soucis imputable au banc de test. Premirement, les frottements sont trs importantsetlestestsnesontdoncpasreprsentatifsdelasitutationrelle. Ensuite, lesystmen'estplusconforme au modle dynamique car seuls deux moteurs fonctionnent et le quadri-rotor n'est paslibre de tous ses mouvements. Cela ne permet donc pas de valider le PID dtermin en simulation. Accroch au plafond par un fil : le quadri-rotor est accroch en son centre par un fil qui est attachautourd'unepoutresitueenhauteur. L'enginestmaintenantlibredanstouslesaxesmaisilseretrouve galement stabilis l'horizontal par la seule action des fils. Il est donc difficile de validerle bon fonctionnement du contrleur. Libremaisretenupardes fils: cettefoislequadri-rotorestentirementlchetonpeutdoncvaluerl'actionducontrleur. Il yestaccrochtoutdemmequatrefilsqui permettentdeleretenir, s'il a tendance se dplacer en translation. Le soucis est qu'il ncessite deux personnes pourtenir les fils et accompagner le quadri-rotor dans ses dplacements.ii.Contrle en translationUn autre souci rencontr ds les premires exprimentations o le quadri-rotor se retrouvait libre tait qu'ila tendance se dplacer naturellement entranslation. Eneffet, seule une correctionenassiette est62Problmesimplmente, ce qui permet d'observer le quadri-rotor voler. Aussi, celui-ci se dplace horizontalement, une vitesse plus ou moins importante, et lors de la rencontre d'obstacles, nous sommes dans l'obligation dele retenir, et nous ne pouvons donc valider un fonctionnement parfait sur un long moment.Il est tout fait logique d'obtenir ce rsultat, n'ayant pas mis en mise au niveau du contrleur un contrle entranslation. Le quadri-rotor n'a alors aucune rfrence, et toute drive est donc permise.iii.CommunicationsBien qu'associ une interface de contrle intressante, celle-ci se doit de communiquer en permanence sesdonnes avec le quadri-rotor. Il a t implment pendant ce projet, une liaison srie base sur le protocoleRS-232. Cette technologie permet de disposer d'undbit suffisant pour l'application, mais ncessitegalement la connexion par un fil entre le quadri-rotor et le poste hbergeant l'application.Cela restreint les dplacements possibles de l'engin, en le limitant la longueur des fils de transmissions. Deplus, cette longueur ne peut tre augmente indfiniement, le standardRS-232limitant la porte quelques mtres.iv.AutonomieLe quadri-rotor est bienentenduprvupour fonctionner sur batteries mais celles d'origine ont uneautonomie bien faible. En effet, moins de cinq minutes de vol sont disponibles. Cela est d la technologieNi-Mh, assez encombrante et lourde, qui est mal adapte aux engins volants. De plus, les temps de chargesont assez long (plusieurs heures) et ne sont pas compatibles avec des besoins en tests incessants.Les exprimentations se sont alors ralises au moyen d'une alimentation stabilise pouvant dlivrer 10A 12V. Le problme est le cble pour amener cette nergie au quadri-rotor. Celui-ci est pais et gne l'enginpendant son vol, en le faisant osciller fortement, sabotant alors les performances du correcteur.v.ModlisationDcouvrant des inexactitudes dans le comportement attendu du quadri-rotor, il nous est venu l'esprit enfindepriodedeprojetderepenserlemodledveloppsousSimulink. Eneffetcelui-ci, bienquelesdiffrentes forces entrant enjeusont correctement implmentes, n'est pas parfaitement conforme l'ensemble du systme, et ce, sur un point crucial, les capteurs.Les acclromtres et gyroscopes sont dcrits comme de simples lecteurs de position et d'angle du quadri-rotor, or, il n'en n'est rien. Les acclromtres, en plus d'tre sensibles aux acclrations, subissent l'attractionterrestreetleurtensiondesortierefltedoncleurinclinaisonparrapportl'horizonterrestre.Deplus,gyroscopes comme acclromtres sont excessivement bruits, et c'est bien ceci la principale difficult de ceprojet.63Problmesvi.ContrleurDe l'tude du modle Simulink est galement ressorti une remarque sur les correcteurs PID mis en place. Lasimulation permettant de donner des perturbations au systme, nous nous sommes essays reproduire descomportements que le quadri-rotor est amen rencontrer en ralit.Par exemple, on peut imaginer une petite perturbation : un angle de dix degrs par seconde. Or, bien que lesPIDssoientconfigursdemanireoptimale, lecontrleurnepeutcorrigerunetelleperturbationetlequadri-rotorentreeninstabilit. Ilatremarququelalimiteestatteintepouruneperturbationd'aumaximum quelques degrs par seconde, ce qui est bien peu.64Suggestions7.SuggestionsDans la suite seront voques quelques suggestions aux problmes prsents prcdemment.a.Banc de testLe systme actuel n'est pas particulirement mauvais, car il permet d'observer le quadri-rotor libre de toutmouvement, dans son comportement attendu. Aussi cela ncessite la prsence de toute l'equipe o deuxpersonnes sevoient tenir lequadri-rotor par des fils tandis qu'untroisimes'attacheauxrglages surl'interface de contrle.Un banc de test qui permettrait d'exprimenter seul le fonctionnement du quadri-rotor serait un systme derotule. Cela limiterait les mouvements du quadri-rotor sur deux axes de rotations et, si la rotule prsente desfrottements ngligeables, de valider un correcteur robuste en assiette. Une volution serait de fixer cette rotule sur une tige, libre verticalement. Ce serait dans le but de laisserdeux axes de liberts supplmentaires au quadri-rotor : rotation en lacet et translation verticale. Pourraientalors tre facilement expriment la correction de l'angle en lacet ainsi que l'asservissement de l'altitude.b.Contrle en translationCe point nous semble essentiel pour la bonne suite du projet et diverses solutions, en vue de maintenir lequadri-rotor une position fixe, sont envisageables :z Contrle par tlcommande: bien que ne rpondant plus la problmatique du projet ensupprimant lafonctionnalit autonome de l'engin, le contrle entranslationaumoyend'unetlcommande est la manire la plus simple demaintenir le quadri-rotor dans une zone donne.Dj implment dans l'algorithme, ce contrle ncessite une personne tenant la manette, et donnerdes consignes inverses aux directions vers lesquelles le quadri-rotor translate.z Dtection d'obstacles : ceci est une solution qui permet de donner une certaine autonomie au quadri-rotor, d'une manire relativement aise. L'ide est de placer un ou plusieurs capteurs (ultrasons, ...)sur le quadri-rotor, et empcherai ce dernier de toucher des obstacles, en commandant le quadri-rotor dans le sens oppos. C'est en fait une mthode qui permet de s'abstenir de la personne quipilote l'engin via la manette, mais cela ne permet toujours pas de le maintenir une position fixe.z Webcamet LEDs: unsystmecomposdeLEDs placs sur lequadri-rotoret d'unewebcamassocie un poste de travail permettrait cette fois-ci de maintenir le quadri-rotor une positionfixe, sansinterventionhumaine. Malheureusement, bienquecelanesoitpasbiencompliqumettre enplace, le quadri-rotor n'est alors plus autonome. Eneffet, unordinateur doit enpermanence tre ses cts, et si l'engin volant sort du champ de vision de la webcam, il sembleimpossible de le retrouver sa position initiale.65Suggestionsz Ajout d'un GPS : une technique couramment employe dans l'asservissement en position de dronesest l'emploi d'un GPS. Il permet de connatre la position absolue sur la terre, et autorise donc uneautonomie totale de l'engin. Aussi, la position d'un tel systme est trs limit (dizaine de mtres) etn'est utilisable qu'en extrieur. Cela peut tout de mme tre une piste explorer, en association unecentrale inertielle plus volue.z Ajout d'une camra: voici la technique qui semble la plus adapte au projet, mais en contrepartie,elle est galement la plus complique mettre en place. Elle consiste doter le quadri-rotor d'unecamra vido, d'acqurir les images, et d'en analyser le contenu, afin de dterminer l'environnement(murs, sol, plafond, obstacles). Serait alors possible de maintenir le quadri-rotor une distance fixeet dtermine entre deux murs par exemple, et de ce fait, est utilisable en intrieur. Mais ce systmenous semble assez complexe mettre en oeuvre, et pourrait mme occuper cinq semaines de projet lui seul, et pourquoi pas, ferait un bon sujet en majeure Signaux et Tlcommunications.c.CommunicationsL'utilisation d'une interface de pilotage au sol nous semble essentiel pour la bonne conduite de ce projet, etle remplacement de la liaisonRS-232 se rvle primordial. Des solutions moyennement onreuses,particulirement performantes et simples d'emploi sont envisageables. Elles consistent en diffrentsprotocoles de communication sans fil tels que le ZigBee, le bluetooth ou le Wi-Fi. De petits modules prt treutilisssontdisponiblespouruncotdequelquesdizainesd'euros, etautoriseraientunvol surdegrandes distances au quadri-rotor.d.AutonomieCepointnousafortementpnalisenfindeprojet, pourtantunesolutionrapideetefficacepeuttrefacilement mise en oeuvre. Cela consisterait remplacer les batteries actuelles par des Li-Po, technologiebien plus performante en poids et en nergie que les actuelles batteries Ni-Mh. Une autonomie dpassant ladizaine de minutes serait alors possible, et des tests sans aucun fils pourraient alors tre raliss.Aussi, il serait intressant de concevoir une carte u