Controlando el Servo motor SG90 del kit de desarrollo NodeMCU 1.0 [cerrado]

1

Tengo un "Servomotor SG90" de 5V y me gustaría controlarlo para moverlo a 0 grados, 90 y 180 grados, enviándole los impulsos apropiados desde mi kit de desarrollo NodeMCU.

Después de haber buscado en la red, no pude encontrar una fuente de ejemplo correcta sobre cómo programarlo esencialmente.

El IDE de Arduino tiene algunos ejemplos, pero son para hardware de Arduino y no para NodeMCU / ESP 8266. (Estoy usando esto para cargar código en NodeMCU)

Hay un boceto / programa de "barrido" y lo usé / modifiqué un poco para adaptarlo al pin NodeMCU, que NO funcionó. Por lo tanto, comuníquese con cualquier ingeniero que pueda compartir fragmentos de código (prefiera python) y muestre cómo controlar el motor servo.

Los pines en el nodo MCU que me gustaría usar son D1..D4. Tengo un adaptador de pared de 5 V desde el que puedo alimentar los pines de alimentación (Vcc) y GND del Servo. El pin naranja (es decir, PWM) en el SG90 Servo, es cómo intento controlar el Servo desde los pines D1 .. D4 de NodeMCU.

Cualquier ayuda sería apreciada.

    
pregunta Shashi Kiran

2 respuestas

3

Con NodeMCU puede usar el módulo pwm de esta manera:

local pin4 = 4
--setup at position 0
pwm.setup(pin4, 50, 71)
--turn to position -90
pwm.setduty(pin4, 27); pwm.start(D5); tmr.delay(500000); pwm.stop(D5)
--turn to position 0 again
pwm.setduty(pin4, 71); pwm.start(D5); tmr.delay(500000); pwm.stop(D5)
--turn to position +90
pwm.setduty(pin4, 123); pwm.start(D5); tmr.delay(500000); pwm.stop(D5)

27 , 71 y 123 son el "tiempo" apropiado del ciclo de trabajo para establecer la posición deseada de 0 a 180 grados hacia arriba. Encontré esto experimentando.

Para obtener más información, puede consultar el manual sg90 aquí y manual del módulo pwm aquí .

    
respondido por el rodvlopes
0

Con Nodemcu puede conducir el servo generando pulsos altos y bajos con cualquier pin GPIO. En el código de abajo se usa un potenciómetro para variar el ciclo de trabajo.

Potentiometer = 0   --setting the pot value  level adc pin
servo_PIN = 2       --pin for connection of servo
Max = 2400
Min = 700

tmr.alarm(0,20,1,function () -- 50Hz
value = adc.read(Potentiometer) --Read the adc pin
value2 = (value-2)*(Max-Min)/(1024-2)+Min 
gpio.write(servo_PIN, gpio.HIGH)
tmr.delay(value2)               --Delay for setting the servo position  
gpio.write(servo_PIN, gpio.LOW)
end)

tmr.wdclr() -- Internal Nodemcu OS function
    
respondido por el Robotscraft

Lea otras preguntas en las etiquetas