CONTROL DE UN VENTILADOR CON SENSOR DE DISTANCIA

DISEÑO DE SISTEMAS BASADOS EN MICROPROCESADOR CONTROL DE UN VENTILADOR CON SENSOR DE DISTANCIA PRÁCTICA 2 Luis González Medina Rubén Domínguez Falcón

0 downloads 100 Views 1013KB Size

Story Transcript

DISEÑO DE SISTEMAS BASADOS EN MICROPROCESADOR

CONTROL DE UN VENTILADOR CON SENSOR DE DISTANCIA PRÁCTICA 2 Luis González Medina Rubén Domínguez Falcón 2008-2009

INDICE

INTRODUCCIÓN ……………………………………………………………………………………… 3 OBJETIVOS ……………………………………………………………………………………………… 3 MATERIAL USADO ………….………………………………………………………………………. 3 DESARROLLO ………….……………………………………………………………………………... 4 IMPLEMENTACIÓN………….……………………………………………………………………… 7 CONCLUSIONES ………….………………………………………………………………………….. 8

INTRODUCCIÓN A lo largo de las siguientes páginas expondremos las características y el método de implementación usado para el desarrollo de una aplicación que nos permita controlar la potencia de un ventilador con el fin hacer levitar un determinado objeto. Para ello serán utilizados un sensor de distancia y un conversor analógico digital que convierta la señal y se la de al PIC en forma binaria

OBJETIVOS Haciendo uso del PIC 16F84A y de un conversor analógico digital, concretamente el AD570JD, pretendemos controlar la velocidad de un ventilador de 12 voltios. Mediante la manipulación de la velocidad del ventilador intentaremos controlar el grado de levitación de un objeto situado dentro de un tubo cilíndrico. El esquema de la idea es el siguiente: En la parte inferior un ventilador, sobre el que se coloca un tubo transparente. Dentro de este una circunferencia de cartón/papel que suba y baje, según la fuerza del ventilador. En la parte superior, el sensor de distancia calcula la distancia del cartón, de forma que podemos saber su posición y aplicar más o menos potencia al ventilador.

MATERIAL USADO 

Pic 16F84A

Tiene una arquitectura de 8 bits e instrucciones tipo RISC. Sus características son:

Memoria Flash de programa (1K x 14). Memoria EEPROM de datos (64 x 8). Memoria RAM (68 registros x 8). Un temporizador/contador (timer de 8 bits). Un divisor de frecuencia. Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A y 8 pines el puerto B). 

Conversor analógico/digital AD570JD

Se trata de un conversor de una señal analógica a una salida digital. Por uno de sus puertos se introducirá una señal analógica, que variará entre un mínimo de 0 Voltios a un máximo de 10 voltios. Mediante los puertos, se podrá controlar el momento en el que queremos que convierta y este nos avisará de cuando se ha producido la conversión. Su velocidad de conversión es alta, en torno a las 25 µs.



Sensor de distancia por Infrarrojos: Sharp GP2D12

El Sharp GP2D12 es un sensor medidor de distancias por infrarrojos que indica mediante una salida analógica la distancia medida. La tensión de salida varía de forma no lineal cuando se detecta un objeto en una distancia entre 10 y 80 cm. La salida está disponible de forma continua y su valor es actualizado cada 32 ms. El sensor utiliza solo una línea de salida para comunicarse con el procesador principal. El sensor se entrega con un conector de 3 pines. Tensión de funcionamiento 5V, Temperatura funcionamiento:-10 a 60ºC, Consumo Medio: 35 mA. Margen de medida 10cm a 80 cm.

DESARROLLO Para explicar el proceso seguido a la hora de desarrollar el proyecto hemos de definir dos vías, distintas, pero complementarias. Por un lado la parte hardware y por otro la parte software. A continuación procedemos ambas. Ha de notarse que en el último momento el sensor de distancia no respondía, aparentemente estropeado, por lo que no hubo más opción que reemplazarlo por un potenciómetro. Finalmente lo que hace el programa será controlar la velocidad del ventilador según el potenciómetro. Desarrollo Hardware. Esquema de conexiones Para la realización del proyecto haremos uso del kit de microprogramación “Pic School” en el que se incluye una placa con zócalo de conexión para el PIC, y todos los conectores necesarios para los puertos que este es capaz de manejar. La placa incluye también una protoboar, en la cual realizaremos la conexión del conversor. Esquema de conexión del conversor El conversor analógico/digital ira conectado a la placa protoboar como comentamos anteriormente. Para comprender el conexionado del mismo es necesario primero definir la distribución de sus patas.

Partiendo desde la muesca de la parte superior del conversor (visto desde arriba) por la izquierda tenemos 9 patas, la primera de ellas no la usaremos, en las ocho restantes se almacenara el valor digital obtenido por el conversor. En la pata número 2 se almacena el

bit menos significativo, y en la pata número nueve el más significativo. Por la parte derecha, y de nuevo partiendo desde la muesca tenemos otras nueve patas, una vez más la primera tampoco la usaremos, las ocho restantes tienen el siguiente uso: 2ª pata: Contiene el valor del DATA_READY. Si este valor se encuentra a 0 sabremos que el conversor ha terminado su trabajo y que el valor digital se encuentra colocado en las 8 patas de la izquierda. 3ª y 5ª pata: Son dos entradas que no usaremos, su funcionamiento está definido en el datasheet del conversor, nosotros las conectaremos ambas a la tierra general de la placa, es decir, a la misma tierra a la que hemos conectado la fuente 9 voltios. 4ª pata: En esta pata hemos de conectar la tierra de los -15 voltios que nos demanda el conversor, tendremos una fuente puenteada en inversa y la tierra de esta fuente es la que conectamos a esta pata. Además hemos de conectar esta pata también a la tierra general de la placa puesto que todas las tierras tienen que estar conectadas entre sí para que la referencia del 0 sea única. 6ª pata: Esta pata se usa para darle al conversor el valor que queremos convertir. Irá conectado por tanto al sensor de distancia. 7ª pata: A esta pata conectaremos los -15 voltios, su alimentación. 8ª pata: En esta pata se encuentra el CONVERT. Es la pata con la que indicamos al conversor en que momento queremos que comience la conversión. 9º pata: Es una conexión a 5 voltios, ira conectada a la entrada de 5 voltios de la placa. Una vez descrito el funcionamiento de cada una de las patas del conversor procedemos a describir sus conexiones a la placa. Las 8 patas donde se aloja el valor digital obtenido irán conectadas al puerto B, empezando por la pata 2 que ira conectada al B0 y acabando por la pata nueve que ira conectada al B7. La pata del DATA_READY ira conectada al bit 3 del puerto A del PIC y la pata de CONVERT al bit 0 del mismo. La pata número 15 (la número 6 por la derecha) es la pata que deberíamos conectar a la salida del sensor de distancia. Por problemas técnicos al final descartamos el sensor de distancia y colocamos un potenciómetro en su lugar. Como consecuencia de esto, a esta pata conectamos la salida variable del potenciómetro, con lo que variando la resistencia conseguimos los distintos valores a convertir.

Esquema de conexión del potenciómetro El potenciómetro ira conectado también en la placa protoboard, tendrá una pata conectada a tierra, otra conectada a la salida de 5 voltios de la placa y la pata de la resistencia variable conectada a la entrada del conversor. Esquema de conexión del ventilador El ventilador necesita una entrada de tensión de 12 voltios, por lo que la placa por sí sola no es capaz de alimentarlo. Haremos uso del driver de la placa, conectando una fuente de 12 voltios al mismo y controlándolo con el bit 2 del puerto A. Esto nos permite que, cuando pongamos un 1 lógico el ventilador reciba alimentación, y cuando pongamos un cero se corte esta alimentación.

IMPLEMENTACIÓN Para el código lo primero que hemos hecho ha sido crear una librería para usar el conversor. De esta forma su uso será más sencillo, además de la reusabilidad para el futuro. Librería Conversor Se trata de una librería que permite hacer una lectura del conversor AD570JD. Para ello, la salida DATA_READY del conversor (pata 17) se conecta a el puerto A, bit 0, del 16f84 y el CONVERT (pata 11) al bit 3 del puerto A del 16f84. La lectura se produce en el puerto B y se devuelve en DATOAD. El puerto B queda configurado como salida al final del ciclo. El A0 como entrada y el A3 como salida. Su funcionamiento es el siguiente: Primero configuramos los puertos, el A0 como entrada y el A3 como salida. Luego deshabilitaremos inmediatamente la conversión. Puede ser que vengamos de una situación en la que se utilice este puerto y por alguna razón habilitara la conversión. Configuramos el puerto B como entrada (será donde leamos el dato del conversor). Ahora volvemos a habilitar la conversión. Para ello pondremos un 0 en el CONVERT. Ahora esperaremos a que el conversor convierta el dato. Esto lo sabremos cuando el DATA_READY esté a 0. Cuando así sea, haremos dos nop (no operation), porque el dato que esté en el puerto B no será válido hasta pasados 500 nanosegundos. Una vez leído el dato, lo guardamos en DATOAD y desactivamos la conversión. Código principal En este código controlaremos un ventilador a partir de una señal de entrada, que sería la salida del potenciómetro convertida a digital previamente por el conversor. Para controlar el ventilador decidimos definir un periodo de tiempo y controlar, mediante dos valores el tiempo que está encendido y el tiempo que está apagado durante ese periodo. Lo primero que hará el código será poner el ventilador al máximo de potencia durante un periodo de tiempo. Para ello ponemos un uno en el puerto que controla el ventilador (el A0) y llamamos a un retardo. Este lo mantendrá encendido durante un pequeño intervalo de tiempo, pero conseguirá que tenga la potencia suficiente para arrancar. Se comprueba empíricamente que si no se hace esto, puede no llegar a tener la fuerza de mantenerse encendido. Luego entraríamos en el bucle principal. En este leeríamos el conversor, con la función LEERCONVERSOR. Con el dato devuelto calculamos dos parámetros. Estos son Velo y Freno. Estos dos parámetros definen el tiempo que el ventilador esta encendido y apagado durante un período. Siempre tenemos en cuenta que estos valores sean 0 o mayores que cero. Para calcular Velo simplemente le asignamos el valor leído del conversor. El valor máximo del conversor será 0x81, un parámetro que definiremos como MAXVEL y que será el tope posible, o sea, lo definiremos como el periodo. De esta forma, Freno será simplemente MAXVEL menos Velo. Sumamos siempre uno a Velo y Freno para evitar que sean 0. Después de calcular estos parámetros, imprimiremos el valor del conversor en el Puerto B (conectados a los leds) y llamaremos a la rutina Velocidad. Esta rutina será la encargada de

controlar realmente la velocidad del ventilador. Tiene el ventilador apagado tantas instrucciones como el valor de Freno y lo enciende durante Velo. Cuando sale de la rutina el ventilador queda encendido hasta que vuelva a la rutina velocidad. Los valores límite del potenciómetro son: 5,06V para el límite superior, con esta tensión el ventilador alcanza su máxima velocidad, 0,9 V para el límite inferior, aunque en este punto la capacidad de giro del motor es casi nula, continúa en funcionamiento en parte gracias a la ayuda de la inercia.

CONCLUSIONES Una vez finalizado el desarrollo del proyecto hemos comprobado como el objeto en cuestión levitaba en función de la velocidad dada por el potenciómetro. Si bien el objeto elegido no era el más idóneo para el experimento, bastó para comprobar cómo se cumplían los resultados esperados. Una pena no haber podido realizarla con el sensor de distancia. Por último nos gustaría hacer hincapié en el hecho de que todas las tierras deben estar conectadas a una referencia común, puesto que de no hacerlo veríamos comprometida la integridad del circuito. Esta era una de las principales razones por la que encontramos más errores y es sin duda, una de las lecciones que mejor hemos aprendido.

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.