Difference between revisions of "User talk:Mael"

From Electrolab
Jump to: navigation, search
(Microcontrôleur DsPIC)
(Blanked the page)
 
(8 intermediate revisions by one user not shown)
Line 1: Line 1:
== Système de balisage infrarouge ==
 
  
Cette page présente mes travaux actuels sur la fabrication d'un système de balisage infrarouge pour mobile.
 
Le système contient les fonctions suivantes :
 
  Emission infrarouge de 4 balises autonomes,
 
  Réception infrarouge sur une tourelle,
 
  Contrôle d'un moteur pas à pas d'entrainement de la tourelle.
 
 
En plus de la fonction de triangulation associée au balisage, le système intègre en permanence deux entrées codeuses, assurant ainsi l'odométrie du mobile. Les données d'odométrie sont ensuite intégrées aux données de balisage en permanence par l'intermédiaire d'un filtre de Kalman.
 
 
Un troisième volet de ce projet est le calcul en permanence d'une "void area", basée sur un réseau de capteurs ultrason déployés sur le mobile.
 
 
Dans un second temps, un autre projet viendra compléter celui-ci avec la réalisation d'un système de contrôle commande des moteurs (en DC, stepper DC puis en BLDC) avec un calcul de trajectoire basé sur les splines de Catmull-Rom.
 
----
 
 
=== Localisation par balisage infrarouge ===
 
 
Le principe de balisage infrarouge consiste à utiliser des balises émettant un signal infrarouge que va détecter un plot central, déployé sur une structure mobile roulante par exemple.
 
Le concept est développé dans le cadre de la coupe de France de robotique, et permet de disposer facilement d’une information de localisation sur la table de 3x2m.
 
>>Table + balisage<<
 
 
Le but est d’obtenir la meilleur estimation de x et y afin d’avoir la position du robot sur la table, ainsi que son orientation.
 
Le principe appliqué est celui de la triangulation, basée sur une mesure d’angle (il existe le même principe avec les distances, tout n’étant au final qu’une application des équations de trigonométrie).
 
Le choix du balisage infrarouge est lié au faible coût de la mise en œuvre (une centaine d’euros tout compris) et à la relativement grande précision du système.
 
Il sera couplé, dans la suite de ce document, à un dispositif d’odométrie et un dispositif de sonars permettant d’affiner la position courante du robot et de créer une « void area » autour du robot indiquant les zones accessibles ou non au robot.
 
>>Table + odométrie<<
 
 
----
 
 
== Microcontrôleur DsPIC ==
 
 
Cette section est dédiée à l'utilisation des microcontrôleurs DsPic de chez Microchip.
 
Ces chips sont majoritairement utilisés dans le système présenté ici. Il est donc nécessaire de poser un certain nombre de bases sur leur utilisation, en particulier leur mise en oeuvre et les drivers disponibles.
 
=== Pourquoi pas en Arduino? ===
 
Parce-que.
 
=== Configuration générale  ===
 
Les DsPic sont de petits microcontrôleurs 16 bits très puissants que l'on peut utiliser pour tout ou presque :
 
Contrôle de moteur par PWM,
 
Conversion analogique numérique 16 bits (ADC),
 
Acquisition de signaux numériques (Input Capture)
 
Communication CAN (natif), i2c (natif), UART (natif), SPI (natif), etc.
 
Une foultitude de timers,
 
etc.
 
 
Il existe plusieurs familles de DsPIC : 30F, 32, 33F, 33E. Seuls les 33F sont détaillés ici.
 
Dans une même famille, tous les microcontrôleurs utilisent les drivers de la même façon, avec le même code, sous réserve qu'ils disposent du driver. En effet, dans la famille des 33F il va exister pléthore de chips différents, la différence se situant au niveau du nombre de drivers, d'E/S, de timers, de place mémoire, etc.
 
Dans la suite, les explications seront apportées sur un DsPIC33FJ128MC802 ou un DsPIC33FJ64GP802, dont la principale différence est un PWM pour le premier.
 
La programmation peut se faire en C ou en assembleur. Les exemples proposés sont en C, je reviendrais par la suite sur la manière de les programmer.
 
 
=== Schéma de câblage ===
 
Câbler un 33F n'est pas très compliqué, mais il existe quelques petits pièges qui peuvent vampiriser beaucoup de temps et d'énergie dans un développement. Le schéma ci-dessous reprend le câblage "générique" d'un 33F :
 
>> Schéma de câblage chip <<
 
 
'''!MCLR''' : La patte sert à la fois à la programmation et à la mise en marche du Chip : !MCLR = 0/NC - Chip inactif, !MCLR = VDD : Chip actif.
 
 
'''PGEDi/PGECi''' : broches de programmation, elles peuvent aussi avoir d'autres application lors de l'usage du chip. Il y a plusieurs mappages des PGEC/D possibles, j'utilise ici le premier.
 
 
'''VSS/AVSS''' : ground, 0 logique. La broche "A-" est normalement la branche utilisée pour faire passer de la puissance dans le chip, mais en règle général il vaut mieux tout avoir sur la même source et utiliser ensuite des composant fait pour pour les aspects puissance.
 
 
'''OSC1 / OSC2''' : entrées du quartz. Voir le chapitre horloge pour le détail d'utilisation.
 
 
'''VDD/AVDD''' : 3,3V (+/- 10%)
 
 
'''VCAP''' : Cette entrée doit être reliée à la masse par un condo de 10µF, l'idéal étant un tantale polarisé (CMS ou non d'ailleurs). Sans ce condo, le chip ne marchera pas et ne pourra même pas être programmé.
 
 
=== Horloge ===
 
Les DsPIC peuvent être cadencés assez haut, mais pour cela ils utilisent une PLL interne
 

Latest revision as of 08:56, 12 December 2013