INFORMACIÓN
El Servomotor SG90 RC 9g es un motor que permite el control preciso de la posición angular de 0° hasta 180° mediante una señal PWM. Incluye 3 brazos y 3 tornillos, cuenta con un cable de hasta 25cm.
Son utilizados en gran variedad de proyectos de electrónica, robótica, carros de control remoto, aeronaves y más. Funcionan con la mayoría de tarjetas electrónicas de control con microcontroladores, como por ejemplo las tarjetas de Arduino, Nodemcu, Esp32, Pic´s y Raspberry Pi y otras.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Modelo: SG90
- Color: Azul
- Tamaño: 22.8mm x 12.3mm x 22.5mm
- Peso: 13 g
- Grados / Angulo de Rotación Máximo: 0° a 180°
- Engranajes: Nylon
- Temperatura de trabajo:-30 a +60 °C
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Aplicaciones
- Se utiliza actuador de muchos robots como Biped Robot, Hexapod, brazo robótico, etc.
- De uso común para el sistema de dirección en juguetes RC
- Robots donde se requiere control de posición sin retroalimentación
- Por lo tanto, se usa menos peso en robots con múltiples DOF como robots humanoides
Servomotor SG90 utilizando la tarjeta UNIT DUAL MCU
A continuación te mostramos un diagrama y su respectivo código en MicroPython utilizando Thonny y el RP2040 en la nueva UNIT DUAL MCU para controlar un servomotor SG90 con dos botones:
Código
#Este código también funciona en el ESP32 mismo que se incluye en el UNIT DUAL MCU o por separado, solo recuerda cargar el bootloader de MicroPython y revisar los pines import machine import utime # Configuración de los botones boton1 = machine.Pin(19, machine.Pin.IN, machine.Pin.PULL_UP) boton2 = machine.Pin(3, machine.Pin.IN, machine.Pin.PULL_UP) # Configuración de los LEDs (opcional) led1 = machine.Pin(21, machine.Pin.OUT) led2 = machine.Pin(15, machine.Pin.OUT) # Configuración del pin de control del servomotor servo_pin = machine.Pin(0) # Crea un objeto PWM para controlar el servomotor pwm_servo = machine.PWM(servo_pin) # Frecuencia del PWM para el servomotor (50 Hz) pwm_servo.freq(50) # Función para ajustar el ángulo del servomotor def set_servo_angle(angle): duty_cycle = int(1024 + (angle / 180) * 3072) pwm_servo.duty_u16(duty_cycle) try: valor = 90 # Ángulo inicial en 90 grados while True: # Si el botón 1 está presionado, mueve el servomotor en una dirección (aumenta el ángulo) if boton1.value() == 0: # Si el botón 1 está presionado if valor < 390: valor += 10 set_servo_angle(valor) print(f"Ángulo del servo: {valor} grados") # Solo para depuración led1.on() # Enciende el LED1 cuando el botón 1 está presionado led2.off() # Apaga el LED2 # Si el botón 2 está presionado, mueve el servomotor en la dirección opuesta (disminuye el ángulo) elif boton2.value() == 0: # Si el botón 2 está presionado if valor > 0: valor -= 10 set_servo_angle(valor) print(f"Ángulo del servo: {valor} grados") led2.on() # Enciende el LED2 cuando el botón 2 está presionado led1.off() # Apaga el LED1 else: led1.off() # Apaga LED1 cuando no se presiona el botón 1 led2.off() # Apaga LED2 cuando no se presiona el botón 2 utime.sleep(0.02) # Pausa corta para evitar lecturas innecesarias except KeyboardInterrupt: # Detén el PWM y limpia los recursos al interrumpir el programa con Ctrl+C pwm_servo.deinit() print("\nPWM detenido. Recursos liberados.")
*Nota: El servomotor incorpora un controlador que sólo permite tener una rotación 0° hasta 180° si se manda el ancho de pulso PWM desde el microcontrolador. Si estás utilizando el probador de servos este estará limitado de 0° a 90°. Este servo no incorpora tope para definir en los engranes mecánicamente la rotación de 0° hasta 180° por lo que si gira de forma manual el servo tendrá una rotación continua sin tener tope.
Valoraciones
No hay valoraciones aún.