Ik ben met behulp van een standaard servo voor dit voorbeeld.
Een Servo
1000us (0 graden)---1500us (90 graden)---2000us (180 graden)
Bereik
Low ------------------------- 1000 ------------------------- High
Continue rotatie Servos
Volledige omgekeerde Halt(90) volledig voorwaarts
Bereik = hoog – laag = 2000 – 1000 = 1000us
Bereik gedeeld door servo max hoek =
1000 / 180 = 5.5555 microseconden per degree(Mpd)
Servo hoek = (hoek x Mpd) + Low
(78 x 5,56) + 1000 = 1433.68us is dicht genoeg
Tijd = hoek van de Servo in ons gedeeld door Pulsout eenheid
tijd = 1434 / 5 = 287 (pulsout eenheid is 5)
pulsout pin, 287 = 78 graden op een servo
Servo's gebruik Microseconds(us) zodat u fijne controle over de gewenste de servo hebben naar hoek. Microseconden maken deel uit van de taal van microprocessoren niet mensen. Functies die te maken hebben met microseconden doen in de manier waarop ze werden geprogrammeerd.
Mensen krijgen krabbelde omhoog, omdat functies zoals pulsout niet de manier waarop ze denken dat ze moeten werken. Vergeet niet dat ze zijn gemaakt voor het systeem dat ze op worden uitgevoerd. Uw handleiding te lezen. De meeste functies van de pulsout zijn als deze 'pulsout pin, tijd'. Tijd is het aantal microseconde in elke eenheid die zal maken van de pols niet een werkelijke tijd of hoek.
Servo's uit hun RadioControle erfgoed moeten een stroom van pulsen over elke 20 milliseconden of zo voor ongeveer tien keer van de dezelfde puls om hen te erkennen dat de hoek juist wilt u hen naar. In uw programma slechts instellen een lus een trein van pulsen naar de servo verzonden wanneer u eerst het instellen op elke nieuwe hoek. Na dat u hoeft te re-vers u servo over elke 30-50 milliseconden of als nodig door uw servo.
Pulsout kunnen verschillen op verschillende processors in dezelfde taal zijn, omdat het is gebaseerd op de kloksnelheid van de processor en/of de processor. Ook kan het anders in verschillende versies van dezelfde taal. Uw handleiding te lezen.
Ik denk dat we de bedrijven op de standaardisering van functies zoals pulsout moet vertellen. Het zou de servo's veel leuker maken.
Ik houd een constante van de tijdwaarde van mijn als 28x2_TIME = 5. Ik verklaren de maker, de processor, de snelheid en de taal versie in een commentaar, gewoon zodat ik weet wat ik gebruik. Dit kan een vervelende bug in een programma te vinden zijn.
eenheid = 5us
Pulsout pin, 90 is acuut 5 x 90 = 450 niet 90 graden naar een servo
Tijd = eenheid in de hoek van de servo onderverdeeld in microseconden.
Tijd = 1500 / eenheid = 300 is 300 honderd pulsen van 5us, elke
Pulsout pin, 300 is gelijk aan een puls van 1500 microseconden tot en met de pin.
Een servo op 90 graden.
U houdt een servo bij een hoek omdat ze worden vernieuwd. Dat is dezelfde opdracht stuurt naar de servo tot elke 20ms. Hoe groter de belasting, de meer tijden per seconde hoeft te vernieuwen de servo. Voor continue rotatie servo's wordt de snelheid gecontroleerd door de vernieuwingsfrequentie en de hoek. Dichter bij 180 is sneller vooruit. Dichter bij 0 is sneller achteruit. 90 graden is een halt toe te roepen. Dit is een zeer eenvoudige manier om te bewegen van een robot. Kijk naar de BOE en Sumo Bots van Parallax.com. Servo's verplaatsen onze ideeën. Maak iets leuks.
Ik ben met behulp van een standaard servo als voorbeeld.
Voorbeelden van Pulsout
Arduino
digitalWrite (outPin, hoog); de PIN-code ingesteld op
delayMicroseconds (1500); pauzes voor 1500 microseconden (unsigned int)
digitalWrite (outPin, laag); de pin vertrekt
of Servo-bibliotheek
…
myservo.write(POS); POS is 0-180 als een hoek
…
Picaxe pulsout pin, tijd (0-65535) unsigned int
Klok snelheid ons per eenheid 0 90-180
4MHz 10us 100 150 200
8MHz 5us X2 onderdelen 200 300 400
16MHz 2.5us 400 600 800
32MHz 1.25us 800 1200 1600
64MHz 0.625us 1600 2400 3200
Fundamentele Stamps pulsout pin, time(0-65535) unsigned int
Processor ons per eenheid 0 90-180
Basic Stamp één 10us 100 150 200
Basic Stamp twee 2us 500 750 1000
…
BasicAtom pulsout pin, time(word)
Processor ons per eenheid 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 Library commando referentie
:: setServoTarget (unsigned char servoNum, unsigned int pos_us)
pos_us 400-2450 Servo hoek in microseconden. 1500 = 90 graden.
Vergeet niet om uw handleiding op uw servo's en de functie die u gebruikt ze te bestrijden.
Ik beveel die robots kreeg wandelen wandelen met behulp van servos.
Door Steven R. Cypherd