Proyecto Indicador de Velocidad, Distancia y RPM PDF

Title Proyecto Indicador de Velocidad, Distancia y RPM
Author Jhon Alejandro Sanchez
Course Electrónica Digital
Institution Universidad de Caldas
Pages 20
File Size 905.2 KB
File Type PDF
Total Downloads 84
Total Views 140

Summary

Informe del proyecto final de la asignatura electrónica Digital, el proyecto es un indicador de velocidad, distancia y rpms, usando el efecto hall. En el informe ademas se muestran los planos electrónicos y la programación en arduino para realizar dicho proyecto....


Description

Indicador Digital de Velocidad, Distancia y RPM con Sensor Efecto Hall

Carlos Mario Bolaños Julián David Llano Julián Darío Londoño Jhon Alejandro Sánchez

Profesor: Jonh Plata

Universidad de Caldas Electrónica Digital Manizales 2016

Introducción

Medir es simplemente comparar, y cada persona, cada pueblo, en tiempos antiguos usaban la medida mano para medir distancias, y aún hoy mucha gente, cuando no tiene una regla o una cinta métrica, mide el ancho de la puerta con la mano o el largo de una distancia con pasos, con la evolución se necesitó encontrar un patrón que entregara con una mayor exactitud a la medición y es cuando surgen las medidas como el metro(diezmillonésima parte del cuadrante del meridiano terrestre) y del segundo (9192631770 oscilaciones de la radiación emitida en la transición entre los dos niveles hiperfinos del estado fundamental del isótopo 133 del átomo de cesio (133 Cs); de allí surgen algunas unidades derivadas como la velocidad que no es más que la derivada de la distancia con respecto al tiempo v: dr/dt.

El velocímetro fue inventado por Josip Belušić de Croacia en 1888. Un velocímetro es un instrumento que mide el valor de la rapidez promedio de un vehículo. Debido a que el intervalo en el que mide esta rapidez es generalmente muy pequeño se aproxima mucho a la magnitud es decir la rapidez instantánea, la forma más común de un velocímetro depende de la interacción de un pequeño imán fijado al cable con una pequeña pieza de aluminio con forma de dedal fijada al eje del indicador. Las nuevas tecnologías permiten diseñar velocímetros de una manera más sencilla, incluso para medios de transporte que usamos a diario como una bicicleta aplicando el mismo principio de funcionamiento, empleando un sensor magnético y procesando esta información por una placa de arduino para luego visualizar la información en una pantalla LCD.

Justificación

Se realizará un velocímetro para bicicleta capaz de medir la velocidad, RPM y la distancia recorrida, este proyecto se realizara porque nos hemos interesado en aplicar lo visto en la clase de electrónica digital y llevarlo a un caso real como lo es el velocímetro para la bicicleta, además porque también queremos aprender como es el funcionamiento de los sensores efecto hall los cuales utilizan un campo magnético para poder dar una señal y también para seguir aprendiendo sobre la programación en arduino para eso en este proyecto se estudiara el código parte por parte. El proyecto se realizará primero que todo conociendo como se utiliza el sensor, se realizaran programas en el arduino solamente para conocer el funcionamiento del sensor, luego de que se conozca el funcionamiento del sensor se procede a realizar los cálculos para poder hallar la velocidad, rpm y distancia. Una vez tengamos los cálculos realizaremos un nuevo programa individual con una pantalla LCD donde podremos ver los resultados de la velocidad, rpm y distancia. Luego realizamos el montaje electrónico con el arduino, el sensor y demás componentes electrónicos y realizamos el programa final donde ira la información del funcionamiento del sensor relacionado con la velocidad, rpm y distancia esto para que nos arroje el verdadero valor en la pantalla LCD una vez el montaje electrónico y el programa nos arrojen los datos correspondientes se procede con el último paso del proyecto el cual es acondicionarlo a la bicicleta para poder ver los resultados en tiempo real.

Objetivo general



Realizar un velocímetro capaz de medir la distancia, revoluciones por minuto y velocidad en una bicicleta o ya sea en un motor.

Objetivos específicos



Diseñar un velocímetro de bicicleta que muestre la distancia recorrida



Comprender el funcionamiento del sensor efecto magnético de efecto Hall.



Mostrar los parámetros de velocidad, distancia recorrida y RPM en una pantalla LCD.



Emplear el hardware y software de arduino, aplicando lo aprendido en clase.

Explicación del proyecto

El objetivo principal del proyecto es medir la velocidad a la que va una bicicleta, con el fin de hacer comprensible la explicación del mismo vamos a mencionar el listado de elementos que utilizaremos y lo explicaremos por partes

Materiales

Arduino UNO

Empleando una placa de arduino UNO desarrollaremos el programa lógico para encontrar los datos requeridos (velocidad, distancia y RPM ) procesando la lectura de entrada del sensor de efecto Hall y poder visualizarlos en una pantalla LCD.

Sensor de Efecto Hall Efecto Hall: El efecto Hall se produce cuando se ejerce un campo magnético transversal sobre un cable por el que circulan cargas. Como la fuerza magnética ejercida sobre ellas es perpendicular al campo magnético y a su velocidad (ley de la fuerza de Lorentz), las cargas son impulsadas hacia un lado del conductor y se genera en él un voltaje transversal o voltaje Hall (VH), de alli tomaremos una lectura digital del pulso que envia el sensor con el acople de un imán en los pedales de la bicicleta para medir las RPM y uno en los pedales para medir la distancia recorrida y la velocidad.

Esquema del Sensor de Efecto Hall

El sensor de efecto Hall tiene acoplado un amplificador operacional que toma la señal de voltaje del elemento Hall que que puede ser de orden de milivoltios (mV) que por si solo es complejo implementarlo en un circuito digital y la convierte en una señal mas trabajable, luego pasa por un Scmitt trigger o disparador de Schmitt que conmuta para después pasar por un transistor NPN un 0 o un 1 lógico a la salida.

AT Mega 328P

El Atmega328 AVR 8-bit es un Circuito integrado de alto rendimiento que está basado un microcontrolador RISC, combinando 32 KB ISP flash una memoria con la capacidad de leermientras-escribe, 1 KB de memoria EEPROM, 2 KB de SRAM, 23 líneas de E/S de propósito general, 32 registros de proceso general, tres temporizadores flexibles/contadores con modo de comparación, interrupciones internas y externas, programador de modo USART, una interface serial orientada a byte de 2 cables, SPI puerto serial, 6-canales 10-bit Conversor A/D (canales en TQFP y QFN/MLF packages), "watchdog timer" programable con oscilador interno, y cinco modos de ahorro de energía seleccionables por software. El dispositivo opera entre 1.8 y 5.5 voltios. Por medio de la ejecución de poderosas instrucciones en un solo ciclo de reloj, el dispositivo alcanza una respuesta de 1 MIPS, balanceando consumo de energía y velocidad de proceso .

Hoy el ATmega328 se usa comúnmente en múltiples proyectos y sistemas autónomos donde un micro controlador simple, de bajo consumo, bajo costo es requerido. Tal vez la implementación más común [cita requerida] de este chip es en la popular plataforma Arduino, en sus modelos Uno y Nano.

Circuito Electrónico

Conexión del sensor de efecto Hall al arduino

A la entrada 3 del arduino de conecta el pin D0 del sensor al cual se le da la orden de Lectura (digital read), el sensor es alimentado por una bateria y la salida de arduino de 5V se conecta a Vcc del sensor igual que la tierra (GND).

Conexión del sensor de efecto Hall al arduino y led

El led debe de encender cuando el sensor detecta el campo magnético, el led va conecto a tierra y va a la señal PWM 4 del arduino.

Inicialmente intentamos hacer el circuito acoplando independientes las partes con sensor con el circuito comparador pero por practicidad y facilidad en el momento de montar el circuito en la bicicleta optamos por adquirir el sensor ya compacto con todo el circuito incluso obteniendo mejores resultados.

Evidencias

Montaje del circuito ya terminado

Montaje del circuito a un moto-reductor

Ensayo al sensor Efecto Hall

Ensayo del sensor de efecto Hall con circuito comparador independiente

Programa donde solo se estaba ensayando el sensor para conocer su funcionamiento

Programa donde se llama la librería de la pantalla y se programa

Circuito Electrónico

M1: AT Mega 328P – PU R1: Resistencia pull up 10kOhm R2: Resistencia de 220 Ohm RV1: Regulador de voltaje LM7805 empleado para obtener los 5V que alimentan el AT Mega 328P y el display LCD. S1: Sensor de efecto Hall que lee cada vuelta de la llanta trasera de la bicicleta que toma el dato inicial del número de vueltas por medio de un imán pegado al rin, y que permite procesar los datos de distancia y velocidad. S2: Sensor de efecto Hall que lee cada vuelta en los pedales de la bicicleta que toma el dato inicial de cada vuelta en los pedales y que permite procesar el dato de las RPM (Revoluciones por minuto). B1: Batería de 9V, primer elemento de la fuente de voltaje para el circuito. C1: Capacitor electrolítico de 10uf que sirve de filtro para entregar una señal mas contante al circuito. P1: Potenciómetro para ajustar el brillo de la pantalla LCD.

Programación del Arduino

A continuación se detalla por pasos el código o la programación que se utilizó para el proyecto:

//1º Declaramos las constantes del programa con el siguiente código: // CONSTANTES: Aquí se declaran las constantes que no cambian de valor a lo largo del programa. Se usan para activar los pines y librerías: #include LiquidCrystal lcd(7, 8, 9, 10, 11 , 12); utilizar de la pantalla

// Librería del display LCD: // Le decimos a la librería cuales son los pines a

////////////////////////////////////////////////////////////////////////// entrada y salidas del sensor y led int hallPin = 3; // Numero de pin del sensor hall de la rueda int ledPin = 4; // Número de pin del led testigo del sensor rueda int hallPinpedal=5; // Numero de pin del sensor hall del pedal int ledPinpedal=6; // Número de pin del led testigo del sensor pedal /////////////////////////////////////////////////////////////////////////// variables calculo distancia float distRecorrida=0; //Variable para almacenar la distancia recorrida float distKM=0; //Variable para almacenar los Km recorridos int contador=0; //Contador de las vueltas sensadas por el sensor de la rueda ////////////////////////////////////////////////////////////////////////// //2º Añadimos a lo anterior la declaración de variables: // VARIABLES: Aquí se declaran las variables que cambian de valor a lo largo del programa; int hallState = 0; // variable para leer el estado del sensor hall de la rueda int hallStatepedal = 0; //variable para leer el estado del sensor hall del pedal unsigned long time = millis(); // variable de tiempo int RPM = 0; // variable para guardar las revoluciones por minuto de la rueda int RPMpedal = 0; // variable para guardar las revoluciones por minuto del pedal int Limpiart1 = 0; // variable para contar una vuelta completa de la rueda int Limpiart1pedal = 0; //variable para contar una vuelta completa del pedal int KMh = 0; // variable para almacenar los datos de Kilómetros/hora float perisensor = (2 * 3.1416 * 0.2); // perímetro de la rueda long t1 = millis(); por el sensor

// variable para medir el tiempo al primer paso de la rueda

long t2 = millis(); rueda por el sensor long t1pedal = millis(); pedal por el sensor long t2pedal = millis(); pedal por el sensor

// variable para medir el tiempo al segundo paso de la

// variable para medir el tiempo al primer paso del // variable para medir el tiempo al segundo paso del

//////////////////////////////////////////////////////////////////////////// //3º Añadimos a lo anterior la inicialización de Arduino: // INICIALIZACION: Se inicializan todos los valores en Arduino para su calibración void setup() { lcd.begin(16, 2); lcd.print("HOLA PASTU!"); pinMode(ledPin, OUTPUT); pinMode(hallPin, INPUT); pinMode(ledPinpedal, OUTPUT); pinMode(hallPinpedal, INPUT); Serial.begin(9600); lcd.print(" "); while (millis() < 5000) {} time = millis(); milisegundos lcd.begin(16, 2); lcd.print(" "); }

// se inicializa el display LCD // se muestra un texto de inicio en la pantalla // Inicializar el pin del LED rueda como SALIDA: // Inicializar el pin del sensor rueda como ENTRADA: // Inicializar el pin del LED pedal como SALIDA: // Inicializar el pin del sensor pedal como ENTRADA: // Establecer el puerto serie en 9600 // se borra el texto de "Inicializando": // Espera calibración durante 5 segundos // se toma el valor de tiempo del reloj de Arduino en // Se inicializa el display // se envían espacios al LCD para borrar el texto anterior // Fin de la inicialización

//4º Añadimos a lo anterior el bucle del programa que se ejecutará indefinidamente: // BUCLE DEL PROGRAMA void loop(){ hallState = digitalRead(hallPin); if (hallState == LOW) { LOW, entonces: digitalWrite(ledPin, HIGH);

// Inicio del bucle sin fin (loop) // Leer el estado del sensor rueda de efecto hall: // Si el estado del sensor rueda detecta el imán, o sea es // Enciende el LED rueda;

if (Limpiart1 == 1) { // Si es la segunda vez que el eje pasa por el sensor, entonces: t2 = millis(); // Tomar en t2 el valor del reloj interno en milisegundos, RPM = 60000 / (t2 - t1); // Calcular las revoluciones por minuto KMh = (RPM * 3.1416 * 0.2 * 60)/1000; //Cálculo de velocidad = (rpm*pi*diametro rueda * 60min)/1000m

t1 = t2; // Dejar en t1 el valor del reloj tomado antes en t2 para iniciar otra cuenta Limpiart1 = 0; // Poner a cero el contador de pasos del eje por el sensor distRecorrida=perisensor*contador; //Calculamos la distancia recorrida por la rueda en metros distKM=distRecorrida/1000; //Calculamos la distancia recorrida por la rueda en Kilómetros contador = contador + 1; //Contamos cuantas vueltas ha hecho la rueda

////////////////////////////////////////////////////////////////////////////

lcd.setCursor(0, 0); primera línea del lCD lcd.print("RPM "); lcd.print(RPM); lcd.print(" "); anteriores

// Imprimir RPM; // Poner el cursor del LCD en el primer carácter de la // Escribir el texto RPM // Escribir el valor de RPM // Escribir espacios a continuación para borrar valores

////////////////////////////////////////////////////////////////////////////

lcd.setCursor(9, 0); linea 1 (el cero es posición 1) lcd.print("Kmh "); lcd.print(KMh); lcd.print(" "); anteriores

// Imprimir KMh; // Ubicar el cusor del display en la posición 10 de la la // Escribir el texto Kmh // Escribir el valor Kmh // Escribir espacios a continuación para borrar valores

//////////////////////////////////////////////////////////////////////////// lcd.setCursor(0,1); //Ubicar el cursor del display en la posicion1 de la linea 2 if(distRecorrida...


Similar Free PDFs