Control de un motor Dc con un sensor ultrasónico y un puente H ajustando el ciclo de trabajo del mismo
You are viewing an older revision! See the latest version
Homepage
Proyecto final Sistemas Microprocesados Universidad Politécnica Salesiana
¶
Control PWM con Sensor HCSR04
¶
En la implementación de este proyecto se utilizan las herramientas que se aprendieron a lo largo del curso e implementarlas dentro de un microprocesador.
¿Que es un sensor de ultra sonidos?
¶
Un sensor de ultra sonidos es un dispositivo para medir distancias. Su funcionamiento se base en el envío de un pulso de alta frecuencia, no audible por el ser humano. Este pulso rebota en los objetos cercanos y es reflejado hacia el sensor, que dispone de un micrófono adecuado para esa frecuencia.
Midiendo el tiempo entre pulsos, conociendo la velocidad del sonido, podemos estimar la distancia del objeto contra cuya superficie impacto el impulso de ultrasonidos.
¿CÓMO FUNCIONA UN SENSOR DE ULTRASONIDOS?
¶
El sensor se basa simplemente en medir el tiempo entre el envío y la recepción de un pulso sonoro. Sabemos que la velocidad del sonido es 343 m/s en condiciones de temperatura 20 ºC, 50% de humedad, presión atmosférica a nivel del mar. Transformando unidades resulta
Diagrama de conexion en Arduino
¶
Se adjunta la conexión con una placa arduino UNO, en nuestro caso lo realizaremos con nuestra placa de entrenamiento STM32F4 discovery.
Montaje en Arduino
Para activar el sensor necesitamos generar un pulso eléctrico en el pin Trigger (disparador) de al menos 10us. Previamente, utilizaremos la librería HCSR04.h proveniente de https://os.mbed.com/users/aralshukaili/code/HCSR04/
Los pines a utilizar en la tarjeta STM32F4 son PB6 y PB7, se adjunta el Pinout de la placa con sus respectivas funcionalidades para cada pin, en este caso dicho pines son Rx, Tx para recepción y transmisión de datos, en la comunicación serial con Hercules se utilizan los pines PA2, PA3 ademas se utilizan leds indicadores para las distancias, estos son los pines PD13 y PD14 de la placa.
Codigo para programar sensor ultrasónico con librería
¶
main.cpp
#include "mbed.h" #include "HCSR04.h" HCSR04 ultrasonico(PB_6,PB_7); //PB6 pin TX y pb7 pin RX estos pines se usan para transmision y recepcion de datos DigitalOut VERDE(PD_13);// LED PARA INDICAR DISTANCIA MAYOR A 50 CM DigitalOut NARANJA(PD_14); // LED PARA INDICAR DISTANCIA MENOR O IGUAL A 10CM Serial comunicacion(PA_2,PA_3); // PINES DE COMUNICACION SERIAL int main() { comunicacion.baud(115200); // VELOCIDAD DE COMUNICACION comunicacion.printf("comienzo"); //IMPRIMIR PALABRA COMIENZO while(1) { long d= ultrasonico.distance(1); comunicacion.printf("Distancia:%i\n\r",ultrasonico.distance(1)); if(d<=10) { // DISTANCIA MENOR O IGUAL A 10CM VERDE=0; NARANJA=1; } if(d>=50) { //DISTANCIA MAYOR IGUAL A 50CM VERDE=1; NARANJA=0; } wait(0.1); } }
Conexión con Puente H TB6612FNG
¶
Primero deberemos estudiar el concepto de puente H y el driver con el que se trabaja para hacer la modulación de ancho de pulso para controlar a dos motores, entonces surge la siguiente pregunta:
¿Qué es un TB6612FNG ?
¶
El TB6612FNG es un controlador (driver) de motores que nos permite manejar dos motores de corriente continua desde Arduino, variando tanto la velocidad como el sentido de giro.
El TB6612FNG puede ser considerado una versión mejorada del L298N. Al igual que esté, internamente está formado por dos puentes-H, junto con la electrónica necesaria para simplificar su uso, y eliminar posibles cortocircuito por errores de uso.
Sin embargo, en el caso del TB6612FNG los puentes-H están formados por transistores MOSFET, en lugar de transistores BJT como en el L298N. Esto permite que el TB6612FNG tiene mejor eficiencia y menores dimensiones que el L298N.
El TB6612FNG también permite controlar intensidades de corriente superiores, siendo capaz de suministrar 1.2A por canal de forma continua, y 3.2A de pico. Recordar que el L298N tiene una intensidad máxima teórica de 2A, pero las pérdidas hace que en la práctica sólo pueda suministrar 0.8-1A.
Diagrama de Conexiones en Arduino
¶
El esquema de montaje no es demasiado complicado. Por un lado, suministramos la tensión que alimentará el motor desde una fuente de alimentación externa, mediante el pin VM. La tensión máxima es de 15V.
Además, tenemos que alimentar la electrónica del módulo mediante el pin VCC. El rango de tensión para VCC es 2.7 a 5.5V, para el control del módulo los pines AIN1, AIN2 Y PWMA controlan el canal A, mientras que los pines BIN1, BIN2, y PWMB controlan el canal B.
Information
Finalmente, el pin STBY controla el modo Standby. Debemos ponerlo en HIGH para activar el motor. Podemos conectarlo a un pin digital de Arduino, si queremos poder activar el modo Standby, o conectarlo a VCC si queremos dejarlo permanentemente desconectado