J’utilise un servo standard pour cet exemple.
Un Servo
1000US 2000us (0 degrés)---1500us (90 degrés)---(180 degrés)
Gamme
Low ------------------------- 1000 ------------------------- High
Servos de Rotation continue
Halt(90) inversion complète avant
Gamme = High-Low = 2000 – 1000 = 1000us
Gamme divisée par servo angle max =
1000 / 180 = 5,5555 microsecondes par degree(Mpd)
Angle de servo = (angle x Mpd) + bas
(78 x 5.56) + 1000 = 1433.68us est assez proche
Temps = Angle de Servo en nous divisé par unité de Pulsout
temps = 1434 / 5 = 287 (unité pulsout est 5)
pulsout broche, 287 = 78 degrés sur un servo
Servos utilisent Microseconds(us) afin que vous ayez l’angle désiré le servo pour aller à un contrôle précis. Microsecondes font partie de la langue des microprocesseurs pas les gens. Les fonctions qui traitent de microsecondes font, dans la façon dont ils ont été programmés.
Les gens obtenir brouillés vers le haut parce que les fonctions telles que pulsout ne fonctionnent pas de la façon dont ils pensent qu’ils devraient. N’oubliez pas qu’ils sont faits pour le système, sur qu'ils sont en cours d’exécution. Lire votre manuel. La plupart des fonctions pulsout sont comme cette « pulsout broche, temps ». Temps est le nombre de microsecondes dans chacune des unités qui composent le pouls pas un temps réel ou d’angle.
Servos de leur patrimoine de radiocommande besoin d’un flux d’impulsions sur toutes les 20 millisecondes ou alors pour environ dix fois le pouls même de les amener à reconnaître que c’est l’angle souhaité pour aller à. Dans votre programme juste mis en place une boucle d’envoyer un train d’impulsions à l’asservissement lorsque vous le réglez tout d’abord à chaque nouvel angle. Après que vous suffit de re-frais vous servo sur toutes les 30 à 50 millisecondes, ou selon les besoins de votre servo.
Pulsout peut être différent sur différents processeurs dans la même langue, car elle est basée sur la vitesse d’horloge du processeur et/ou le processeur. Il peut également être différente dans différentes versions de la même langue. Lire votre manuel.
Je pense que nous devrions dire les compagnies à normaliser les fonctions telles que pulsout. Servos serait beaucoup plus amusant.
Je garde une constante de la valeur de mon temps comme 28x2_TIME = 5. Je déclare la version maker, processeur, vitesse et langue dans un commentaire juste donc je sais ce que j’utilise. Cela peut être un vilain bug dans un programme visant à trouver.
unité = 5us
Pulsout pin, 90 est aiguë 5 x 90 = 450 pas 90 degrés par rapport à un servo
Temps = unité divisée en l’angle servo en microsecondes.
Temps = 1500 / unité = 300 est 300 cent pulsations de 5us chaque
Pulsout broche, 300 équivaut à une impulsion de 1500 microsecondes à la broche.
Un servo à 90 degrés.
Vous gardez un servo à un angle en actualisant il. Qui envoie la commande même au servo jusqu'à chaque 20ms. Plus la charge le plus de fois par seconde, que vous devez actualiser le servo. Pour les servos de rotation en continu la vitesse est contrôlée par le taux de rafraîchissement et de l’angle. Plus près de 180 est plus rapide vers l’avant. Plus près de 0 est plus rapide vers l’arrière. 90 degrés y halte. Il s’agit d’un moyen très simple de déplacer un robot. Regardez la BOE et Sumo Bots de Parallax.com. Servos déplacent nos idées. Faire quelque chose d’amusant.
J’utilise un servo standard par exemple.
Exemples de Pulsout
Arduino
digitalWrite (outPin, en haut) ; définit l’axe sur
delayMicroseconds (1500) ; pauses pour 1500 microsecondes (unsigned int)
digitalWrite (outPin, en bas) ; la tige se met
ou une bibliothèque de Servo
…
myservo.Write(POS) ; POS est 0-180 sous un angle
…
PicAxe pulsout broche, temps (0-65535) unsigned int
Horloge de vitesse nous par unité 0 90 180
4MHz 10us 100 150 200
8MHz 5us X2 pièces 200 300 400
16MHz 2.5us 400 600 800
32MHz 1.25us 800 1200 1600
64MHz 0.625us 1600 2400 3200
Goupille de pulsout base timbres, time(0-65535) unsigned int
Processeur nous par unité 0 90 180
Basic Stamp un 10us 100 150 200
Basic Stamp deux 2 500 750 1000
…
BasicAtom pulsout pin, time(word)
Processeur nous par unité 0 90 180
BA 5us 200 300 400
BAN 12us 84 125 167
BAP 3us 334 500 667
BAP40 2.5us 400 600 800
Référence de commande la bibliothèque Pololu AVR
:: setServoTarget (unsigned char servoNum, unsigned int pos_us)
angle de Servo pos_us 400 – 2450 en microsecondes. 1500 = 90 degrés.
N’oubliez pas de lire votre manuel sur votre servos et la fonction que vous permet de les contrôler.
Je tiens à féliciter ceux qui ont obtenu des robots marcheurs marche à l’aide des servos.
Par Steven R. Cypherd