- Portada
- Ensablaje mecánico
-
Programación básica
-
Introducción al Montaje Electrónico
-
Resistencias y Ejemplos de cálculo
-
El pulsador
-
La protoboard y los LEDs
-
Entradas y salidas digitales. Lectura de un pulsador y encendido de un led.
-
Entradas Analógicas. Lectura de un potenciómetro.
-
El Servomotor
-
Salidas PWM. Control posición de un servo
-
Cuestionario Programación básica10 xp
-
-
Programación extendida
-
Actividad. Estados de caja. Apertura y cierre
-
Actividad. Dial analógico. Introducción de dígitos. Pantalla LCD
-
Introducción a Funciones
-
Las funciones
-
Actividad. Funcionalidad elemental caja fuerte.
-
El Zumbador
-
Actividad. Sistema de alarma con zumbador
-
Actividad avanzada. Cambio de contraseña. Memoria EEPROM
-
Actividad avanzada. Display: Íconos y animaciones
-
Cuestionario Programación extendida10 xp
-
- Para terminar
Salidas PWM. Control posición de un servo
PROGRAMACIÓN BÁSICA
Servos y modulación PWM

Introducción
Los servomotores es un tipo de motor eléctrico de baja potencia muy utilizado en robótica. Éstos son controlados por señales PWM (Pulse Width Modulation) que permiten un control preciso de la posición angular. A diferencia de los motores DC estándar que giran continuamente, los servos pueden ser posicionados en un ángulo específico dentro de su rango de movimiento, que generalmente es de 0 a 180 grados. Las partes de las que consta un servomotor se pueden observar en la siguiente figura:


Modulación por Ancho de Pulso (PWM)
La modulación por ancho de pulso (PWM) es una técnica utilizada para controlar la cantidad de energía suministrada a un dispositivo electrónico. En el contexto de Arduino, PWM se utiliza para generar señales digitales que simulan una señal analógica mediante la variación del ancho del pulso en una frecuencia fija. Una señal PWM se caracteriza por su frecuencia y su ciclo de trabajo:
La frecuencia es la cantidad de ciclos completos que ocurren en un segundo, medida en Hertz (Hz). Para controlar servos, le suele emplear una frecuencia de 50Hz (Periodo = 20ms).
El ciclo de trabajo(DutyCicle) es el porcentaje de tiempo que la señal PWM está en estado alto(Ton) con respecto a un periodo completo (T). Se calcula como Ton/T. Un ciclo de trabajo del 50% significa que la señal está en alto durante la mitad del tiempo y en bajo durante la otra mitad.
La modulación PWM se puede utilizar para controlar una variedad de dispositivos, incluidos motores, LEDs, y más. En concreto, nosotros nos centraremos en el movimiento de los servomotores.
Actividad: Control de servo con PWM.

Los servos reciben señales PWM para controlar su posición. Éstos cuentan con dos cables de alimentación (rojo: 5v negro o marrón: gnd) y un cable de señal. La posición del servo está determinada por el ancho del pulso de la señal PWM:
Un pulso de 1ms posiciona el servo en 0 grados.
Un pulso de 1.5ms posiciona el servo en 90 grados.
Un pulso de 2ms posiciona el servo en 180 grados.
La librería Servo.h de Arduino simplifica el control de servos, gestionando internamente la generación de señales PWM adecuadas.
Funcionamiento conceptual de la librería.
Hemos de crear tantas instancias como servos vayamos a usar. El objeto myServo es una instancia de la clase Servo que permite controlar el servo.
Por lo general, dentro de la función setup(), se utiliza myServo.attach(pin); para especificar a que pin digital se encuentra conectado el servo está conectado.
El método myServo.write(pos) instruye al servo a moverse a la posición especificada por pos.
En el siguiente ejemplo de código base, se muestra el uso básico de esta librería para mover el servo de manera autónoma. El servo se moverá de 0 a 180 grados y luego de vuelta a 0 grados en un bucle continuo.
Cuando utilizamos una librería, normalmente debemos crear lo que se llama un Objeto para poder utilizar las funciones añadidas (que reciben el nombre de métodos). Para este caso concreto, debemos crear un Objeto del tipo Servo que nos permita controlar en nuestro código el servomotor. La creación es como sigue:
Servo miObjetoServo;
donde "miObjetoServo" es el nombre que queremos dar al objeto que vamos a crear para acceder a todos los métodos de la librería.
La creación del objeto debe estar ubicada antes del setup(), teniendo alcance global.
En el setup() de nuestro código debemos inicializar el servomotor utilizando el método:
donde "miObjetoServo" es el Objeto de tipo Servo que hemos creado previamente y "pin" es el número del Pin donde tengamos el servomotor conectado. Debes asegurarte de que dicho pin permita PWM (en Arduino UNO son los pines que van acompañados del símbolo "~")
Para mover el servomotor debemos utilizar el siguiente método:
donde "miObjetoServo" es el Objeto de tipo Servo que hemos creado previamente y "grados" es la posición en la que queremos colocar el servomotor en grados (entre 0º y 180º).
Nota importante
Todos los servomotores disponibles en el mercado pueden experimentar vibraciones en los ángulos de 0º o 180º, debido a las tolerancias de fabricación y puede reducir la vida útil del motor. Si tu servomotor presenta vibraciones en estos ángulos, es recomendable programarlo para moverse a ángulos cercanos, como 5º o 175º, para mitigar dichas vibraciones.
Nota importante
Los cambios de dirección a alta velocidad pueden provocar sobrecalentamiento y daños permanentes en el motor. Un breve intervalo de espera después de cada ajuste de posición (movimiento) ayudará a proteger el miniservo de movimientos abruptos y prolongará su vida útil.
| Vistas | |
|---|---|
| 3 | Número de vistas |
| 3 | Vistas de miembros |
| 0 | Vistas públicas |
| Acciones | |
|---|---|
| 0 | Gustos |
| 0 | No me gusta |
| 0 | Comentarios |
Compartir por correo
Por favor iniciar sesión para compartir esto webpage por correo.