Servon Unscrambled
Jag använder en standard servo för detta exempel.
En Servo
1000us (0 grader)---1500us (90 grader)---2000us (180 grader)
Rad
Low ------------------------- 1000 ------------------------- High
Kontinuerlig Rotation servon
Full omvänd Halt(90) Full framåt
Rad = hög-låg = 2000 – 1000 = 1000us
Delas av servo max vinkel =
1000 / 180 = 5.5555 mikrosekunder per degree(Mpd)
Servo vinkel = (vinkel x Mpd) + låg
(78 x 5,56) + 1000 = 1433.68us är nära nog
Tid = Servo vinkel i oss dividerat med Pulsout enhet
tid = 1434 / 5 = 287 (pulsout enhet är 5)
pulsout pin, 287 = 78 grader på en servo
Servon använda Microseconds(us) så att du har bra kontroll över den vinkel du vill gå till servo. Mikrosekunder ingår i språket av mikroprocessorer inte människor. Funktioner som behandlar mikrosekunder göra så på sättet de var programmerade.
Människor få kodade upp eftersom funktioner som pulsout inte fungerar som de tror att de borde. Kom ihåg att de är gjorda för det system som de körs på. Läs din manual. De flesta pulsout funktioner är som denna "pulsout pin, tid". Tiden är antalet mikrosekund i varje enhet som kommer att göra upp pulsen inte en faktisk tid eller vinkel.
Servon från deras Radio Control arv behöver en ström av pulser om varje 20 millisekunder eller så för ungefär tio gånger av samma puls att få dem att inse att det är vinkeln du vill ha dem att gå till. I programmet bara ställa in en loop skicka ett tåg av pulser till servo när du först ställa in den till varje ny vinkel. Efter att du behöver bara re-fresh du servo om varje 30-50 millisekunder eller som behövs av ditt servo.
Pulsout kan vara olika på olika processorer på samma språk eftersom det bygger på klockhastigheten på processorn och/eller processorn. Det kan också vara olika i olika versioner av samma språk. Läs din manual.
Jag tror att vi bör tala om för företag att standardisera funktioner som pulsout. Det skulle göra servon mycket roligare.
Jag hålla en konstant för min tidsvärde som 28x2_TIME = 5. Jag konstatera den maker, processor, hastighet och språk versionen i en kommentar bara så jag vet vad jag använder. Detta kan vara en otäck bugg i ett program för att hitta.
enhet = 5us
Pulsout stift, 90 är akut 5 x 90 = 450 inte 90 grader till en servo
Tid = enhet uppdelad i servo vinkeln i mikrosekunder.
Tid = 1500 / enhet = 300 är 300 hundra pulser av 5us varje
Pulsout pin, 300 motsvarar en puls av 1500 mikrosekunder till stift.
Ett servo till 90 grader.
Du hålla en servo vinkel genom att uppdatera den. Som skickar kommandot till servo till varje 20ms. Ju större belastningen ju fler gånger per sekund som du måste uppdatera servo. För kontinuerlig rotation servon styrs hastigheten av den friska uppdateringshastighet och vinkel. Närmare 180 är snabbare framåt. Närmare till 0 är snabbare bakåt. 90 grader är halt. Detta är ett mycket enkelt sätt att flytta en robot. Titta på BOE och Sumo Bots från Parallax.com. Servon flytta våra idéer. Gör något roligt.
Jag använder en standard servo som exempel.
Pulsout exempel
Arduinoen
digitalWrite (outPin, högt); anger PIN-koden på
delayMicroseconds (1500); pauser för 1500 mikrosekunder (unsigned int)
digitalWrite (outPin, låg); framhäver den PIN-kod
eller ett Servo bibliotek
…
myservo.write(POS); POS är 0-180 som en vinkel
…
PicAxe pulsout pin, tid (0-65535) unsigned int
Klockan hastighet oss per enhet 0 90 180
4MHz 10us 100 150 200
8MHz 5us X2 delar 200 300 400
16MHz 2.5us 400 600 800
32MHz 1.25us 800 1200 1600
64MHz 0.625us 1600 2400 3200
Grundläggande stämplar pulsout pin, time(0-65535) unsigned int
Processorn oss per enhet 0 90 180
Basic stämpla en 10us 100 150 200
Basic stämpel två 2us 500 750 1000
…
BasicAtom pulsout pin, time(word)
Processorn oss per enhet 0 90 180
BA 5us 200 300 400
BAN 12us 84 125 167
BAP 3us 334 500 667
BAP40 2.5us 400 600 800
Pololu AVR bibliotek Kommandoreferens
:: setServoTarget (unsigned char servoNum, unsigned int pos_us)
pos_us 400-2450 Servo vinkel i mikrosekunder. 1500 = 90 grader.
Kom ihåg att läsa handboken till din servon och funktionen används för att kontrollera dem.
Jag rekommenderar de som fick gå robotar promenader med servon.
Av Steven R. Cypherd