¿Cómo controlar la velocidad de rotación de un servo usando un potenciómetro?

0

Estoy tratando de escribir un programa usando BASIC para girar un servo 180 grados hacia atrás y hacia adelante, y usar un potenciómetro para controlar la velocidad a la que gira el servo. Tengo un código, pero cuando lo ejecuto, el servo se asusta y comienza a temblar en un punto, y no sé por qué está haciendo eso o qué lo está causando. ¿Puede alguien explicarme por qué está haciendo eso, qué lo está causando o una forma de solucionarlo?

' What's a Microcontroller - ControlServoWithPotUsingDirectives.bs2
' Read potentiometer in RC-time circuit using RCTIME command.
' Apply scale factor and offset, then send value to servo.
' {$STAMP BS2}
' {$PBASIC 2.5}

counter VAR Word

rcPin PIN 5                                       ' I/O Pin Definitions
servoPin PIN 14

scaleFactor CON 15                               ' Constant Declarations
offset CON 1
delay CON 10

time VAR Word                                     ' Variable Declaration

PAUSE 1000                                        ' Initialization

DO
                                                  ' Main Routine
 HIGH rcPin                                       ' RC decay measurement
 PAUSE 100
 RCTIME rcPin, 1, time
 'time = time * scaleFactor                       ' Scale scaleFactor.
 'time = time + offset                             ' Offset by offset.
 'PULSOUT servoPin, time                           ' Send pulse to servo.
 'DEBUG HOME, DEC5 time                            ' Display adjusted time value.

 FOR counter = 300 TO 1100 STEP time
   PULSOUT servoPin, counter
   PAUSE 7
   DEBUG DEC5 counter, CR
   DEBUG DEC5 time, CR
 NEXT

 PAUSE 10

 FOR counter = 1100 TO 300 STEP time
   PULSOUT servoPin, counter
   PAUSE 7
   DEBUG DEC5 counter, CR
   DEBUG DEC5 time, CR
 NEXT

LOOP
    
pregunta smith8m3

1 respuesta

1
  

"El servo se asusta y comienza a contraerse en un solo lugar".

Verifique sus conexiones con el servo, esto parece ser un problema que tuve en mis primeros años de graduación: GND sin compartir. Si está utilizando una fuente externa para alimentar el servo, la fuente externa GND debe estar conectada a la GND del microcontrolador. De lo contrario, su señal de control de servo no se referenciará adecuadamente y dará lugar a "comportamiento indefinido" en forma de contracción.

    
respondido por el Vicente Cunha

Lea otras preguntas en las etiquetas