Drivers
Périphériques
Brochage
Mesure de la Position / Vitesse
Le codeur Incrémental
- Le Codeur incrémental est un capteur de position.
- Son axe est solidaire de celui de la machine.
- Il fait tourner un disque comportant des zones transparentes et opaques.
- une LED émet un rayonnement capté par des photodiodes au passage de chaque zone transparente du disque.
La présence de deux leds permet de déterminer le sens de rotation.
Un signal supplémentaire (Index) est mis à 1 à chaque tour.
Position
- La position est accumulée dans un timer dont l’horloge est (A xor B)
- Ce timer est remis à 0 à chaque tour (grâce au signal Index)
- La position absolue correspond à INDX*(CNT_PER_ROUND)+CNT
Vitesse
- La vitesse est la dérivée de la position.
- Numériquement cela se traduit par SPEED=(POS_act-POS_prec)/Te
- Ce résultat est faux au moment de la remise à zéro du timer.
- L’algorithme suivant est donc nécessaire :
SENS DIRECT
- Speed=10000-5000=5000 –> Speed>0 –> Speed<16384 –> Speed=10000
- Speed=25000-20000=5000 –> Speed>0 –> Speed<16384 –> Speed=10000
- Speed=2232-30000=-27768 –> Speed<0 –> Speed<-16384 –> Speed=-27768+32768=5000 –> Speed=10000
SENS INVERSE
- Speed=5000-10000=-5000 –> Speed<0 –> Speed>-16384 –> Speed=-10000
- Speed=20000-25000=-5000 –> Speed<0 –> Speed>-16384 –> Speed=-10000
- Speed=30000-2232=27768 –> Speed>0 –> Speed>16384 –> Speed=27768-32768=-5000 –> Speed=-10000
quadEncoder
Mesure des Courants
driver ADC
Multitâche
Le RTOS FreeRTOS est utilisé pour gérer la synchronisation des tâches FAST_TASK (la plus prioritaire) et PRINT_TASK
- tickTimer impose la fréquence d’échantillonage Fe (période Te=45µs)
- à chaque fois que tickTimer atteint 2250, une conversion Analogique-Numérique est réalisée (pour récupérer les courants).
- à chaque interruption fin de comptage, un jeton est donné au sémaphore SEM. Cela libère la tache FAST TASK.
- La tache FAST Task est chargée de calculer les nouveaux rapports cycliques.
- lorsque FAST_TASK reprend un jeton à SEM, elle est mise en attente.
- PRINT_TASK peut alors s’exécuter pour envoyer des informations sur la liaison série.
- pwmTimer Evolue à la même fréquence que tickTimer ; le rapport cyclique est représenté par le registre CCR.
main
PWM Timer
Tick Timer