circuit à base de dspic pour piloter un servo

On a des fois besoin de tester un servo ou un variateur de vitesse en (aéro)modélisme sans brancher sur la radio.
On peut l'acheter dans le commerce mais c'est aussi très simple à fabriquer avec un dspic 30F3010 ou 30F4012.

Voici un schéma simple et le programme qui va avec.
L'idée est de générer un signal PWM de période 20 ms mais qui est assez bref :
0.9 ms au minimum
1.5 ms pour la commande neutre (point milieu)
2.1 ms pour la maximum

UN potentiomètre permet de faire varier le rapport cyclique du signal PWM, donc le temps pendant lequel le signal est à 5V par rapport au reste du temps de la période des 20 ms pendant lequel il reste à 0V.

Nous implantons ce programme sur un dspic 30F3010 ou 30F4012 (pin compatible, il est juste plus puissant est a un bus CAN)

Le header P2 permet d'alimenter le circuit avec le UBEC du variateur de vitesse mais sans utiliser l'entrée du variateur (commande) afin d'utiliser le Header P1 pour sortir l'information servo_pulse vers le servo.

Si on doit justement faire varier la vitesse du moteur BLDC alors on ne branche que le Header P1 sur le UBEC et bien sûr on branche la batterie Lipo et le moteur sur le variateur.


Vous pouvez télécharger le


Remarquez que j'ai eu des difficultés initialement à démarrer le dspic sur son oscillateur interne FRC avec une PLL x8, il fallait le réinitialiser (Reset sur la pin MCLR) manuellement à chaque fois pour qu'il démarre après avoir été alimenté.

J'ai changé et enlevé la PLL, il n'utilise que le FRC, ce qui est plus stable mais plus lent et donc on perd en résolution de la PWM, mais cela suffit amplement pour cette application, puisque j'ai 
1935-829 = 1106 valeurs différentes entre le min et le max, soit plus que la résolution de l'ADC 10 bits qui est de 1024 !

Commentaires

Posts les plus consultés de ce blog

Position du Soleil et SalatTime pour Arduino

RTC, SalatTime et Arduino

Mod DJT FrSky pour Telemetry via Bluetooth / Android Phone