Servo kalibrator GUI
För mina projekt använder jag flera standard servon som kontrolleras av ADAFRUIT PWM SERVO föraren som i sin tur kontrolleras av ett python-skript som körs på Raspberry Pi.
Varje gång jag re / montera ett horn på en servo som jag behöver att anpassa "noll vinkel". Om jag byta en servo, kan det ha olika omvandling av PWM till vinkel position. Det tog så mycket av min tid att justera dessa parametrar med varje förändring beslutat att skriva enkla Tkinter GUI som gör det möjligt att ställa in, kontrollera och spara:
* PWM värde för "noll vinkel" (pwm0)
* omvandling av rotationsvinkeln i graden till PWM förändring (faktor)
övre/undre gränser för vinkeln att skydda maskinvara från skador (pwmHigh, pwmLow)
* kanal ID 0-15 av PWM generator som servo är ansluten
Formeln konvertera ange vinkeln (A) till PWM värde utfärdas till servo är följande:
PWM = A * faktor + pwm0
om pwm < pwmLow:
PWM = pwmLow
Elif pwm > pwmHigh:
PWM = pwmHigh
Filmen visar hur man kan använda denna GUI att experimentellt bestämma: pwm0, faktor, pwmLow, pwmHigh. I denna film jag ville ha den svarta pilen att peka på röda "0" när jag ställa in vinkeln A vid 0 grader på skalan och pilen bör aldrig överstiga den kantiga sortiment präglas av svart "X" och "Y". När servo heter 'futuba-S3003' är kalibrerad sparas parametrarna i en python ättikslag.
Man kan sedan använda de inställningarna som visas i denna korta programmet:
armConfName ="./servo.futuba-S3003.conf
armConf=pickle.load (öppen (armConfName, "r"))
skriva ut "laddade arm conf", armConfName
arm = ServoDriver()
arm.setupController(armConf['freq'])
arm.config(armConf)
för ang i [10., 20., -20, -10.]:
arm.setAngleDeg(ang)
skriva ut "Ange armAngDeg = %s, status = %s ' %(ang,arm.status)
Time.Sleep(2.)
skriva ut "servon STOP & RELAX"
arm.fullStop()
Denna kod är tillgänglig från bitbucket GIT repo som:
git clone
Det förväntas du redan har installerat på din R-Pi (och testade) Adafruit biblioteket, som beskrivs här
https://learn.adafruit.com/adafruit-16-Channel-se...
Med all kod är i stället rättvis sjösätta servo kalibrator som "gksu" (annars grafik kan inte tunnel). Kontrollera också att din servo är ansluten till PWM kanalen visas på GUI
$ gksu./servoCalibMain.py
När du har sparat kalibrering i till pickle, använda den för att flytta servo med bara några rader för python
$ sudo./exampleRun.py
Lycka till
Jan