C’est la rentré, et le moment de reprendre la R&D et de faire un point sur l’avancement du Drone.
Ces derniers mois j’ai surtout avancé sur la parti programme, IHM et code embarqué que vous pouvez retrouver sur github https://github.com/marc-j.
Le code ce découpe en 3 projets:

  • QIHMControl (reprise de l’IHM sous Qt, anciennement IHMControl en java)
  • UAVLink (protocole de communication)
  • InoDrone-pic32 (programme embarqué pour PIC32)

Niveau prototypage hardware toute a été revu :

  • PIC32 (sur carte ChipKIT Max32 fork d’une arduino Mega avec un uC pic32)
  • IMU 10DOF de chez DroTek (MPU6050, HMC5883, MS5611)
  • Xbee (pour la communication IHM -> embarqué, télémétrie, etc)
  • Convertisseur PWM’s to PPM avec un ATMega328 (pour la conversion des signaux d’un récepteur RC en un signal PPM de 26ms)
  • Radio Spektrum DX6i / récepteur AR6210

Le pic32 n’ayant pas de mémoire EEPROM, j’ai rajouter un lien I2C entre le pic32 et l’ATMega pour utiliser sa mémoire EEPROM afin de stocker les paramètres ( PID, etc ).

Après plusieurs mois de testes sur platine d’essaie, une dizaines d’hélices explosés, et des vibrations m’obligeant à rajouter des gros filtres numérique sur les capteurs au détriment de la réactivité du système, j’ai créé une carte de prototypage sur mesure qui viendra ce plugué directement sur la carte ChipKIT.

NeuroDroneProtoE577048-PCB_view_top

 

Pour limiter les vibrations le système sera fixé sur de la mousse et à terme très certainement sur des silent bloc.
Coté software, j’ai utilisé au début un algorithme DCM (Direction Cosine Matrix) mais après quelque teste (il faut que je reprenne l’algo), j’ai mit en place un filtre de Kalman étendu pour intégrer le magnétomètre, qui fonctionne au poile maintenant sans les moteurs en marche (trop de vibration).
Le CPU load à peine à 15% de sont potentiel dans une boucle de 100Hz, ce qui change des 90% avec un ATMega2560 utilisé au début, il y a donc encore du proc, pour rajouter des choses et heureusement (OSD, Navigation, interface web, machine à café, …) !
Le seul point bloquant que j’ai trouvé aujourd’hui sur le PIC32 c’est le nombre d’OC (Ouput Compare) pour générer les signaux PPM en direction des ESC / Servos-Moteurs, il y en a seulement 5 dont 4 déjà utilisés pour piloter les 4 moteurs.
Donc pour rajouter une caméra orientable ou connecter des servos-moteurs, il restera qu’une seule sortie OC ( ce qui sera surement bloquant pour la suite du projet ), à moins de reprendre directement les signaux du récepteur RC sans passer par l’uC, Mais dans le cas d’une caméra orientable je perdrai la possibilité de l’auto-stabilisé.

Coté teste réel, au début sur balançoire pour affiner les PID ce qui m’a prit un temps fous pour arriver à des résultats plus que médiocres à cause du retard amené par les filtres numérique pour illiminer le bruit des vibrations du système.
J’ai quand même décider de faire un teste sans balançoire, et à part entre autre l’IMU 10DOF posé sur la platine d’essaie qui à décider de s’envoler sans prévenir et donc le drone partir droit dans le mur (j’ai depuis rajouté plusieurs failsafes pour éviter de me retrouver avec une hélice planté dans le front), le problème du pilotage avec le joystick connecté au PC, et le stock d’hélice épuisé, et bien il ne c’est rien passé d’intéressant …

Donc maintenant j’attend la carte de prototypage que j’ai fais graver (chez Eurocircuit) puis je pourrais reprendre les testes dans de meilleurs conditions.
J’ai aussi supprimé aussi le pilotage par joystick, afin de passer sur une radio RC avec le récepteur directement connecté au système embarqué via le convertisseur PWM’s -> PPM et refais un stock d’hélice, puis prit le temps de les équilibrés pour encore limité au maximum les vibrations.

Dans les next step :

  • Tester et valider la carte de prototypage
  • Régler les PID ( je vais très certainement voir comment intégrer une petite IA embarqué pour les réglés automatiquement, ce qui me semble entièrement faisable. )
  • Testes, testes et encore testes sur balançoire.

La suite au prochain numéro donc !

There are no comments.

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.