- PWM (modulación de ancho de pulso):
- Servomotor y PWM:
- Componentes requeridos:
- Diagrama de circuito:
- Explicación de trabajo y programación:
Raspberry Pi es una placa basada en procesador de arquitectura ARM diseñada para ingenieros electrónicos y aficionados. PI es una de las plataformas de desarrollo de proyectos más confiables que existen en la actualidad. Con una velocidad de procesador más alta y 1 GB de RAM, el PI se puede utilizar para muchos proyectos de alto perfil como procesamiento de imágenes e Internet de las cosas.
Para realizar cualquiera de los proyectos de alto perfil, es necesario comprender las funciones básicas de PI. Cubriremos todas las funcionalidades básicas de Raspberry Pi en estos tutoriales. En cada tutorial discutiremos una de las funciones de PI. Al final de esta serie de tutoriales de Raspberry Pi, podrá realizar proyectos de alto perfil por sí mismo. Siga los siguientes tutoriales:
- Introducción a Raspberry Pi
- Configuración de Raspberry Pi
- LED parpadeante
- Interfaz del botón Raspberry Pi
- Generación Raspberry Pi PWM
- Controlar el motor de CC con Raspberry Pi
- Control de motor paso a paso con Raspberry Pi
- Interfaz de registro de cambios con Raspberry Pi
- Tutorial de Raspberry Pi ADC
En este tutorial controlaremos el servomotor con Raspberry Pi. Antes de pasar al servo hablemos de PWM porque el concepto de control del servomotor proviene de él.
PWM (modulación de ancho de pulso):
Anteriormente hemos hablado de PWM muchas veces en: Modulación de ancho de pulso con ATmega32, PWM con Arduino Uno, PWM con 555 timer IC y PWM con Arduino Due. PWM son las siglas de 'Pulse Width Modulation'. PWM es un método que se utiliza para obtener voltaje variable de una fuente de alimentación estable. Para comprender mejor PWM, considere el circuito a continuación,
En la figura anterior, si el interruptor se cierra continuamente durante un período de tiempo, el LED estará 'ENCENDIDO' durante este tiempo continuamente. Si el interruptor se cierra durante medio segundo y se abre durante el siguiente medio segundo, el LED se encenderá solo en el primer medio segundo. Ahora, la proporción en la que el LED está encendido durante el tiempo total se denomina ciclo de trabajo y se puede calcular de la siguiente manera:
Ciclo de trabajo = tiempo de encendido / (tiempo de encendido + tiempo de apagado)
Ciclo de trabajo = (0.5 / (0.5 + 0.5)) = 50%
Entonces, el voltaje de salida promedio será el 50% del voltaje de la batería.
A medida que aumentamos la velocidad de ENCENDIDO y APAGADO a un nivel, veremos que el LED se atenúa en lugar de estar ENCENDIDO y APAGADO. Esto se debe a que nuestros ojos no pueden captar con claridad frecuencias superiores a 25 Hz. Considere un ciclo de 100 ms, el LED estará APAGADO durante 30 ms y ENCENDIDO durante 70 ms. Tendremos un 70% de voltaje estable en la salida, por lo que el LED brillará continuamente con un 70% de intensidad.
La relación de trabajo va de 0 a 100. '0' significa completamente APAGADO y '100' completamente ENCENDIDO. Esta relación de trabajo es muy importante para el servomotor. La posición del servomotor está determinada por esta relación de trabajo. Compruebe esto para la demostración de PWM con LED y Raspberry Pi.
Servomotor y PWM:
Un servomotor es una combinación de motor de CC, sistema de control de posición y engranajes. Los servos tienen muchas aplicaciones en el mundo moderno y con eso, están disponibles en diferentes formas y tamaños. Utilizaremos el servomotor SG90 en este tutorial, es uno de los más populares y más baratos. SG90 es un servo de 180 grados. Entonces con este servo podemos posicionar el eje de 0-180 grados.
Un servomotor tiene principalmente tres cables, uno es para voltaje positivo, otro es para tierra y el último es para ajuste de posición. El cable rojo está conectado a la alimentación, el cable marrón está conectado a tierra y el cable amarillo (o BLANCO) está conectado a la señal.
En servo, tenemos un sistema de control que toma la señal PWM del pin de señal. Decodifica la señal y obtiene la relación de trabajo de ella. Después de eso, compara la relación con los valores de posiciones predefinidos. Si hay una diferencia en los valores, ajusta la posición del servo en consecuencia. Entonces, la posición del eje del servomotor se basa en la relación de trabajo de la señal PWM en el pin de señal.
La frecuencia de la señal PWM (Modulación de ancho de pulso) puede variar según el tipo de servomotor. Para SG90, la frecuencia de la señal PWM es 50Hz. Para averiguar la frecuencia de funcionamiento de su servo, consulte la hoja de datos de ese modelo en particular. Entonces, una vez que se selecciona la frecuencia, la otra cosa importante aquí es el DUTY RATIO de la señal PWM.
La siguiente tabla muestra la posición del servo para esa relación de trabajo en particular. Puede obtener cualquier ángulo intermedio eligiendo el valor correspondiente. Entonces, para 45º de servo, la relación de trabajo debe ser '5' o 5%.
POSICIÓN |
PORCENTAJE DE OBLIGACIONES |
0º |
2.5 |
90º |
7.5 |
180º |
12,5 |
Antes de conectar el servomotor a Raspberry Pi, puede probar su servo con la ayuda de este circuito probador de servomotor. También consulte nuestros proyectos de Servo a continuación:
- Control de servomotor usando Arduino
- Control de servomotor con Arduino Due
- Interfaz de servomotor con microcontrolador 8051
- Control de servomotor con MATLAB
- Control de servomotor por sensor flexible
- Control de posición servo con peso (sensor de fuerza)
Componentes requeridos:
Aquí estamos usando Raspberry Pi 2 Model B con Raspbian Jessie OS. Todos los requisitos básicos de hardware y software se discutieron previamente, puede buscarlos en la Introducción de Raspberry Pi, aparte de lo que necesitamos:
- Pines de conexión
- Condensador 1000uF
- Servomotor SG90
- Tablero de circuitos
Diagrama de circuito:
A1000µF debe conectarse a través del riel de alimentación de + 5V, de lo contrario, el PI podría apagarse aleatoriamente mientras controla el servo.
Explicación de trabajo y programación:
Una vez que todo está conectado según el diagrama del circuito, podemos encender el PI para escribir el programa en PYHTON.
Hablaremos de algunos comandos que usaremos en el programa PYHTON, Vamos a importar el archivo GPIO de la biblioteca, la siguiente función nos permite programar los pines GPIO de PI. También estamos cambiando el nombre de “GPIO” a “IO”, por lo que en el programa siempre que queramos referirnos a los pines GPIO usaremos la palabra 'IO'.
importar RPi.GPIO como IO
A veces, cuando los pines GPIO, que estamos tratando de usar, pueden estar realizando otras funciones. En ese caso, recibiremos advertencias mientras ejecutamos el programa. El siguiente comando le dice al PI que ignore las advertencias y continúe con el programa.
IO.setwarnings (falso)
Podemos referir los pines GPIO de PI, ya sea por el número de pin a bordo o por su número de función. Como 'PIN 29' en la placa es 'GPIO5'. Entonces decimos aquí o vamos a representar el pin aquí por '29' o '5'.
IO.setmode (IO.BCM)
Estamos configurando PIN39 o GPIO19 como pin de salida. Obtendremos salida PWM de este pin.
Configuración de IO (19, IO.OUT)
Después de configurar el pin de salida, necesitamos configurar el pin como pin de salida PWM, p = IO.PWM (canal de salida, frecuencia de la señal PWM)
El comando anterior es para configurar el canal y también para configurar la frecuencia del canal ”. 'p' aquí es una variable, puede ser cualquier cosa. Estamos usando GPIO19 como el canal de salida PWM. “Frecuencia de la señal PWM” elegiremos 50, ya que la frecuencia de trabajo del SG90 es 50Hz.
El siguiente comando se utiliza para iniciar la generación de señales PWM. ' DUTYCYCLE ' es para configurar la relación de 'Encendido' como se explicó antes, p.start (DUTYCYCLE)
El siguiente comando se usa como un ciclo para siempre, con este comando las declaraciones dentro de este ciclo se ejecutarán continuamente.
Mientras que 1:
Aquí, el programa para controlar el servo usando Raspberry Pi proporciona una señal PWM en GPIO19. La relación de trabajo de la señal PWM se cambia entre tres valores durante tres segundos. Entonces, por cada segundo, el Servo gira a una posición determinada por la relación de trabajo. El servo gira continuamente a 0º, 90º y 180º en tres segundos.