Pour mes projets, j’utilise plusieurs servos standard qui sont contrôlées par le pilote de SERVO ADAFRUIT PWM qui à son tour est contrôlée par un script python sur Raspberry Pi.
Chaque fois que je re / monter un klaxon sur un servo que j’ai besoin de réajuster le "zéro angle". Si je remplace un servo, il peut avoir différente conversion de PWM à position angulaire. Il a fallu beaucoup de mon temps pour ajuster ces paramètres à chaque changement, que j’ai décidé d’écrire simple GUI Tkinter, qui permettrait de régler, vérifier et enregistrer :
* Valeur PWM pour le « zéro angle » (pwm0)
* conversion d’angle de rotation en degré de changement PWM (facteur)
* majuscules/minuscules des limites sur l’angle pour protéger le matériel contre les dommages (pwmHigh, pwmLow)
* canal ID 0-15 de générateur PWM à laquelle est reliée la servo
La formule de conversion en valeur PWM délivré au servo de l’angle de réglage (A) est comme suit :
PWM = A * facteur + pwm0
Si pwm < pwmLow :
PWM = pwmLow
Elif pwm > pwmHigh :
PWM = pwmHigh
Le film montre comment on peut utiliser cette interface pour déterminer expérimentalement : pwm0, facteur, pwmLow, pwmHigh. Dans ce film, j’ai voulu la flèche noire pour pointer vers le rouge, « 0 » quand j’ai mis l’angle A à 0 degrés sur l’échelle et la flèche ne doit jamais dépasser la plage angulaire marquée de noir « X » et « Y ». Après que servo nommé « futuba-S3003 » est calibré, les paramètres sont sauvegardés dans le pétrin de python.
Ensuite, on peut utiliser ces paramètres comme indiqué dans ce programme court :
armConfName ="./servo.futuba-S3003.confarmConf=pickle.load( open(armConfName, "r" ) ) print 'loaded arm conf ',armConfName arm = ServoDriver() arm.setupController(armConf['freq']) arm.config(armConf) for ang in [10., 20., -20, -10.]: arm.setAngleDeg(ang) print 'set armAngDeg=%s, status=%s '%(ang,arm.status) time.sleep(2.) print "servos STOP & RELAX" arm.fullStop()
Ce code est accessible à partir de repo GIT bitbucket comme :
git clone
Il est prévu que vous avez déjà installé sur votre Pi-R (et testé) la bibliothèque Adafruit, comme décrit ici
https://Learn.Adafruit.com/Adafruit-16-Channel-se...
Avec tout le code est en place vient de lancer servo calibrateur comme « gksu » (sinon graphisme pas tunnel). Assurez-vous également que votre servo est branché sur le canal PWM affiché sur l’interface graphique
$ gksu ./servoCalibMain.py
Après avoir enregistré d’étalonnage dans à pickle, utilisez-le pour déplacer le servo avec juste quelques lignes de python
$ sudo ./exampleRun.py
Bonne chance
Jan