2.1
INVESTIGAR,
ANALIZAR Y SELECCIONAR SENSORES A EMPLEAR PARA LA
DETECCIÓN DE LAS VARIABLES MENCIONADAS EN EL PLANTEAMIENTO DEL PROBLEMA
Los sensores imitan la capacidad de percepción de los seres humanos, por ello es cada vez más usual encontrarlos incorporados a cualquier área tecnológica. Debido a esta característica de imitar la percepción humana, se pueden encontrar sensores relacionados con los diferentes sentidos: vista, oído, tacto, es decir, responden a la información que reciben del entorno. Los dispositivos que incorporan sensores dan información acerca del estado del sistema.
Por lo tanto, los sensores, son dispositivos electrónicos que permiten interactuar interactuar con el entorno, de forma que proporcionen información de ciertas variables que nos rodean para poder procesarlas y así generar órdenes o activar procesos ( Serna,2010: Pág.3).
2.1.1 CLASIFICACIÓN
Dada la gran cantidad de sensores que existen, es necesario clasificarlos para entender mejor su naturaleza y funcionamiento. No obstante, esta tarea no es fácil, por lo que existen varios tipos de clasificaciones ( Serna, 2010: Pág.3).
De acuerdo a su funcionamiento
Activos: requieren de una fuente externa de energía de la que recibir alimentación de corriente para su funcionamiento. Pasivos: no requieren de una fuente de energía externa, si no que las propias condiciones medioambientales son suficientes para que funcionen según su cometido. (Serna, 2010: Pág.3).
De acuerdo a las señales que proporcionan
Analógicos: Proporcionan la información mediante una señal analógica (tensión, corriente), es decir, que pueden tomar infinidad de valores entre un mínimo y un máximo. Digitales: Proporcionan la información mediante una señal digital que puede ser un “0” o un “1” lógicos, o bien un código de bits.
De acuerdo a la naturaleza de su funcionamiento
Posición: son aquellos que experimentan variaciones en función de la posición que ocupan en cada instante los elementos que lo componen. Fotoeléctricos: Son aquellos que experimentan variaciones en función del campo magnético que les atraviesa. Temperatura: Son aquellos que experimentan variaciones en función de la temperatura del lugar donde están ubicados. Humedad: Son aquellos que experimentan variaciones en función del nivel de humedad existente en el medio en que se encuentran. Presión: Son aquellos que experimentan variaciones en función de la presión a que son sometidos (Serna, 2010: Pág.5). Movimiento: Son aquellos que experimentan variaciones en función de los movimientos a los que son sometidos. Químicos: Son aquellos que experimentan variaciones en función de los agentes químicos externos que pudieran incidir sobre ellos.
De acuerdo a las señales que proporcionan
Analógicos: Proporcionan la información mediante una señal analógica (tensión, corriente), es decir, que pueden tomar infinidad de valores entre un mínimo y un máximo. Digitales: Proporcionan la información mediante una señal digital que puede ser un “0” o un “1” lógicos, o bien un código de bits.
De acuerdo a la naturaleza de su funcionamiento
Posición: son aquellos que experimentan variaciones en función de la posición que ocupan en cada instante los elementos que lo componen. Fotoeléctricos: Son aquellos que experimentan variaciones en función del campo magnético que les atraviesa. Temperatura: Son aquellos que experimentan variaciones en función de la temperatura del lugar donde están ubicados. Humedad: Son aquellos que experimentan variaciones en función del nivel de humedad existente en el medio en que se encuentran. Presión: Son aquellos que experimentan variaciones en función de la presión a que son sometidos (Serna, 2010: Pág.5). Movimiento: Son aquellos que experimentan variaciones en función de los movimientos a los que son sometidos. Químicos: Son aquellos que experimentan variaciones en función de los agentes químicos externos que pudieran incidir sobre ellos.
Atendiendo a los elementos utilizados en su fabricación
Mecánicos: son aquellos que utilizan contactos mecánicos que se abren o cierran.
Resistivos: Son aquellos que utilizan en su fabricación elementos resistivos.
Capacitivos: son aquellos que utilizan en su fabricación condensadores. condensadores.
Inductivos: son aquellos que utilizan en su fabricación f abricación bobinas.
Piezoeléctricos: son aquellos que utilizan en su fabricación cristales como el cuarzo. Semiconductores: Semiconductores: son aquellos que utilizan en su fabricación semiconductores.
2.1.2 CARACTERÍSTICAS
A la hora de elegir un sensor para una aplicación concreta, es necesario tener en cuenta determinados aspectos para obtener el mejor rendimiento dentro de dicha aplicación:
Rapidez en la respuesta.
Situación donde van a ser utilizados.
Radio de acción.
Fiabilidad en el funcionamiento.
Tensiones de alimentación.
Consumo de corriente.
Márgenes de temperatura de funcionamiento.
Posibles interferencias por agentes externos.
Resistencia a la acción de agentes externos.
Relación calidad/precio
En algunas ocasiones es necesario conocer determinadas características técnicas que brindan información sobre la calidad del sensor:
Resolución: es la mínima variación de la magnitud de entrada que puede apreciarse a la salida. Sensibilidad: es la relación entre la variación de la magnitud de salida y la variación de la magnitud de entrada. Error: es la desviación de la medida proporcionada por el sensor respecto de la real. Se suele expresar en %. Precisión: Es el error esperado al repetir varias veces la misma medida.
La tabla 15 muestra 15 muestra el tipo de sensores que habitualmente más se utiliza en función de la aplicación (Serna, 2010: Pág.6).
Tabla 1: Aplicación 1: Aplicación de los distintos sensores
2.1.3 REQUERIMIENTOS DE MEDICIÓN DE LOS SENSORES DEL “PSSLR”
Laberinto en T Variables a medir:
Detección de presencia del ratón por cuadrantes.
Tiempo que el ratón que tarda en llegar a la recompensa.
Laberinto elevado Variables a medir:
Numero de dipping´s realizados.
Número de entradas y salidas a los brazos abiertos y cerrados.
Numero de estiramientos estiramientos realizados.
Actígrafo Variables a medir:
Detección de presencia del ratón por cuadrantes.
Tiempo de permanencia del ratón en los cuadrantes. cuadrantes.
Mecanismo del sistema Variables a medir:
Posicionamiento correcto del módulo a utilizar.
Con un mismo tipo de sensor se puede monitorear más de una variable, las variables son las siguientes: Detección de presencia del ratón por cuadrantes, tiempo que el ratón tarda en llegar a la recompensa, número de entradas , salidas a los brazos abiertos y cerrados, tiempo de permanencia del ratón ratón en en los cuadrantes y detección de dipping. Se utilizará otro sensor para registrar cuando el sistema esté en la posición correcta. Por lo que el sensor 1: 1: se encargará de detectar la presencia del ratón ratón y el sensor 2: se encargará de detectar el posicionamiento correcto del sistema. Para el requerimiento de variables a cumplir por el sensor 1 y sensor 2 se utilizara la tabla 16 para 16 para realizar la selección.
Sensor
Capacitivos
Descripción
Apropiado para el funcionamiento requerido
La función del detector capacitivo co nsiste en señalar un cambio de estado, basado en la variación del estímulo de un campo eléctrico. Los sensores capacitivos detectan objetos metálicos, o no metálicos, midiendo el cambio en la capacitancia, la cual depende de la constante dieléctrica del material a detectar, su masa, tamaño, y distancia hasta la superficie sensible del detector.
Sensor 2: Para el correcto posicionamiento de los módulos del sistema, se podría emplear esta clase de sensor ya que algunas partes del sistema son metálicas y mediante el sensado podría indicar la posición correcta del módulo.
Fotoeléctrico
Es un dispositivo electrónico que responde al cambio en la intensidad de luz. Estos sensores requieren de un componente emisor que genere la luz (diodo led), y un componente receptor que recoge la luz generada por el emisor.
Inductivo
Está formado por un devanado enrollado en un núcleo. Al aproximar el extremo del devanado a un objeto metálico, cambia su inductancia. Este cambio puede monitorearse por el efecto que produce en un circuito resonante. Solo se puede usar para detectar objetos metálicos.
Ultrasónico
Los sensores de ultrasonidos son detectores de proximidad que trabajan libres de roces mecánicos y que detectan objetos a distancias de hasta 8m. El sensor emite impulsos ultrasónicos. Estos reflejan en un objeto, el sensor recibe el eco producido y lo convierte en señales eléctricas, las cuales son elaboradas en el aparato de valoración.
Sensor 1: Esta clase de sensores son adecuados debido a que se puede detectar la obstrucción ocasionada entre emisor y receptor con la configuración electrónica adecuada, en este caso se utilizaría para la detección del ratón.
Sensor 2: Para el correcto posicionamiento de los módulos del prototipo, se puede emplear este sensor ya que se podría adaptar una parte metálica adecuada en el prototipo para la detección y así indicar la posición correcta del módulo.
Sensor 1: Se puede ocupar para la detección de presencia, debido a que tiene un rango de alcance suficiente para implementarse.
Interruptores de posición
El final de carrera o sensor de contacto (también conocido como "interruptor de límite") o limit switch, son dispositivos eléctricos, neumáticos o mecánicos situados al final del recorrido de un elemento móvil, como por ejemplo una cinta transportadora, con el objetivo de enviar señales que puedan modificar el estado de un circuito.
Sensor 2: En el caso de requerimientos del sensor 2, este sensor cumple con los requerimientos, ya que para identificar la posición arriba o abajo del módulo del prototipo sólo se requerirá de una ubicación adecuada de cada uno de los sensores en el mismo.
Tabla 2: Descripción de sensores de presencia
En la tabla 16 se realizó una descripción de los diferentes grupos de sensores, además se realizó un análisis de acuerdo a la información para selección de un grupo de sensores que pueda ayudar a cubrir las tareas por los sensores 1 y 2.
Factores que influyen Sensor1: Alcance (distancia), frecuencia de trabajo, tamaño, precio, disponibilidad, apropiado para trabajar con ratones. Sensor2: tamaño, precio y disponibilidad. Límites de los factores Sensor1.
Alcance (distancia): 60 cm o más. Frecuencia: 32-48 Khz Tamaño: 4cm x 1cm. Precio: $20 a $80 Disponibilidad: Ag electrónica, ect. Sensor 2. Precio: $20 a $80 Disponibilidad: Ag electrónica, ect.
Recabar información de los proveedores Seleccionar el componente que reúna las mejores características Sensor 1 Sensores
R. de acción.
Tamaño
Precio Disponibilidad
Si
Trabaja idealmente con luz roja Si
Sharp GP2D12 Sharp GP2Y0D02 Sensor de presencia infrarrojo industrial IRM-8601 TSOP 1838 Ultrasónico
Rapidez en respuesta
Si
Ideal para el trabajo con roedores. Si
Si
No
Si
Si
Si
No
Si
Si
Si
Si
No
No
No
Si
Si
Si
Si Si Si
Si Si Si
Si Si No
Si Si Si
Si Si Si
Si Si No
Si Si Si
Si
Sensor 2 Sensores
Tamaño
Precio
Disponibilidad Rapidez en respuesta
Sensor efecto hall Micro switch Ultrasónico Emisor-receptor
Si Si Si Si
Si Si No Si
Si Si Si Si
Si Si Si Si
Trabaja idealmente con luz roja Si Si Si No
Reglas de ruteo La finalidad de las reglas de ruteo tiene que ver con la minimización del área utilizada, la disminución de posibilidades de interferencia y de ruidos, y una apropiada distribución de los componentes. A continuación, se mencionan las reglas destacadas de acuerdo a los requerimientos. Separación mínima de pistas: si se trabaja con tensiones bajas, el mínimo debe ser de 0.3mm, pero tiene que aumentarse para tensiones mayores. Separación entre los bordes de la placa y las pistas: tiene que ser, como mínimo, de aproximadamente entre 2 y 3 mm. Ancho de las pistas: entre otros factores, dependerá de la corriente que pasará por ellas. A mayor corriente, mayor ancho de pistas. Las pistas de alimentación tendrán que tener como mínimo 1 o 2 mm, independientemente de la corriente que consuma el circuito. Un grosor de la capa de cobre de 35 um (común) 4mm de anchura soportan 8 a 10 A máximo, 1.5mm para 2 a 4 A y 0.2mm para 0.5 A. Largo de las pistas: Se procura de hacer lo más cortas posibles las pistas, con el fin de hacer un diseño simple y reducir el tamaño del pcb. Trazado de intersecciones: Debe evitarse, que, en la intersección de dos pistas, se forme
Reglas de ruteo La finalidad de las reglas de ruteo tiene que ver con la minimización del área utilizada, la disminución de posibilidades de interferencia y de ruidos, y una apropiada distribución de los componentes. A continuación, se mencionan las reglas destacadas de acuerdo a los requerimientos. Separación mínima de pistas: si se trabaja con tensiones bajas, el mínimo debe ser de 0.3mm, pero tiene que aumentarse para tensiones mayores. Separación entre los bordes de la placa y las pistas: tiene que ser, como mínimo, de aproximadamente entre 2 y 3 mm. Ancho de las pistas: entre otros factores, dependerá de la corriente que pasará por ellas. A mayor corriente, mayor ancho de pistas. Las pistas de alimentación tendrán que tener como mínimo 1 o 2 mm, independientemente de la corriente que consuma el circuito. Un grosor de la capa de cobre de 35 um (común) 4mm de anchura soportan 8 a 10 A máximo, 1.5mm para 2 a 4 A y 0.2mm para 0.5 A. Largo de las pistas: Se procura de hacer lo más cortas posibles las pistas, con el fin de hacer un diseño simple y reducir el tamaño del pcb. Trazado de intersecciones: Debe evitarse, que, en la intersección de dos pistas, se forme ángulos de 90 grados. Conectores entrada-salida: Tienen que colocarse alejados entre sí; en lo posible, ubicados en extremos opuestos, para evitar un acoplamiento entre ellos. Uniones pista-pad: En las uniones pista-pad la pista debe ser radial a dicho pad, y no tangencial, no deben unirse dos o más pads, dicha unión se debe hacer mediante una pista. Diagrama de flujo para la fabricación de un pcb.
Áreas funcionales del “PSSLR” (parte electrónica):
Etapa de potencia: Puentes H, motoreductores y micromotoreductores. Etapa de sensado. Generación de frecuencia (36-38KHz). Etapa de control, Recepción y envió de datos, procesamiento de información.
Diagrama por bloques “Electrónica”.
Etapa de potencia (Puentes H)
µc “Controlador Tx e n v i ó d e d a t o s .
R e c e p c i ó n y
B l u e t o o t h .
Rx
de posición” µ c “ P r i n c i p a l ”
Actuadores (Micromotoreductores y motoreductores) Limit switch
µc “Detección de presencia”
Matriz de sensores receptores
Leds emisores infrarrojos
µc “Generador de frecuencia”
Micro controlador “principal”
Descripción: Es el micro controlador encargado de la recepción y transmisión de datos, es decir acumula los datos obtenidos por los demás micro controladores (microcontrolador control de posición y microcontrolador detección de presencia) y envía por rs232 los datos, a su vez recibe la información por rs232 y distribuye las tareas correspondientes a los demás micro controladores (microcontrolador control de posición y microcontrolador detección de presencia) según el dato recibido. Datos que se reciben o envían por bluetooth. Se reciben: Variable del módulo a utilizar.
Emisor Bluetooth (Rx).
Inicio de prueba por modulo. Fin de la prueba. Posición lista del módulo a utilizar. Posicion del raton por cuadrantes
Bluetooth (Rx). Bluetooth (Rx). µc “control de posición ”.
Se envían: Posición del ratón por cuadrantes. Dippings. Estiramientos. Modulo requerido
Receptor Bluetooth (Tx) Bluetooth (Tx) Bluetooth (Tx) µc “Control de posición”
µc “detección de presencia”.
Proceso que llevara a cabo después de transmisión o recepción. Después de recepción por bluetooth: Activación y desactivación de pines de microcontrolador para la distribución de tareas. Después de transmisión: Recibe la información obtenida por los microcontroladores y la envía por rs232.
Micro controlador “principal”
Descripción: Es el micro controlador encargado de la recepción y transmisión de datos, es decir acumula los datos obtenidos por los demás micro controladores (microcontrolador control de posición y microcontrolador detección de presencia) y envía por rs232 los datos, a su vez recibe la información por rs232 y distribuye las tareas correspondientes a los demás micro controladores (microcontrolador control de posición y microcontrolador detección de presencia) según el dato recibido. Datos que se reciben o envían por bluetooth. Se reciben: Variable del módulo a utilizar.
Emisor Bluetooth (Rx).
Inicio de prueba por modulo. Fin de la prueba. Posición lista del módulo a utilizar. Posicion del raton por cuadrantes
Bluetooth (Rx). Bluetooth (Rx). µc “control de posición ”.
Se envían: Posición del ratón por cuadrantes. Dippings. Estiramientos. Modulo requerido
Receptor Bluetooth (Tx) Bluetooth (Tx) Bluetooth (Tx) µc “Control de posición”
µc “detección de presencia”.
Proceso que llevara a cabo después de transmisión o recepción. Después de recepción por bluetooth: Activación y desactivación de pines de microcontrolador para la distribución de tareas. Después de transmisión: Recibe la información obtenida por los microcontroladores y la envía por rs232.
Microcontrolador “Control de posición”.
Descripción: Es el microcontrolador encargado de cambiar los estados lógicos en la salida de los puertos del mismo que están conectados a las entradas de los puentes H, con el objetivo de habilitar o desactivar los motorreductores y micromotoreductores, donde tendrá integrado por código un sistema de control ON- OFF, además se comunica con el “µc Principal” para recibir los datos seleccionados por el usuario y envía variables al “µc Principal” de acuerdo a la posición del sistema o modulo.
Datos que se reciben o envían. Se reciben: Variable del módulo a utilizar. * Laberinto en T. * Laberinto elevado. * Actigrafo. Prueba terminada
Emisor µc “Principal”
µc “Principal”
Se envían: Posicionamiento correcto del sistema.
Receptor µc “Principal”
Estado lógico en pines de salida del µc para el control de posición.
Puente H.
Proceso que llevara a cabo después de transmisión o recepción. Por medio de condicionales se eligen que pines se van a activar o desactivar para el posterior control de motoreductores y microreductores mediante puente H, configurado en el código del microcontrolador , a su vez terminado de posicionar el sistema se enviara la variable de posicionamiento correcto.
Microcontrolador “Control de posición”.
Descripción: Es el microcontrolador encargado de cambiar los estados lógicos en la salida de los puertos del mismo que están conectados a las entradas de los puentes H, con el objetivo de habilitar o desactivar los motorreductores y micromotoreductores, donde tendrá integrado por código un sistema de control ON- OFF, además se comunica con el “µc Principal” para recibir los datos seleccionados por el usuario y envía variables al “µc Principal” de acuerdo a la posición del sistema o modulo.
Datos que se reciben o envían. Se reciben: Variable del módulo a utilizar. * Laberinto en T. * Laberinto elevado. * Actigrafo. Prueba terminada
Emisor µc “Principal”
µc “Principal”
Se envían: Posicionamiento correcto del sistema.
Receptor µc “Principal”
Estado lógico en pines de salida del µc para el control de posición.
Puente H.
Proceso que llevara a cabo después de transmisión o recepción. Por medio de condicionales se eligen que pines se van a activar o desactivar para el posterior control de motoreductores y microreductores mediante puente H, configurado en el código del microcontrolador , a su vez terminado de posicionar el sistema se enviara la variable de posicionamiento correcto.
Microcontrolador “Detección de presencia”.
Descripción: Es el microcontrolador encargado de leer las señales entregadas por los sensores que se utilizan para detectar la presencia del ratón, además, dipping, estiramientos, número de veces que entra y sale el roedor de los brazos abiertos , cerrados y elección correcta o incorrecta del brazo.
Datos que se reciben y envían Se reciben: Modulo elegido para activación de lectura de sensores. Señales para determinar la posición del raton.
Emisor uc “Principal”
Matriz de sensores.
Se envían: Posición del ratón por cuadrantes.
Variables: Dippings, estiramientos, brazos abiertos, brazos cerrados
Receptor uc “Principal”
uc “Principal”
Mediante un menú de casos incluido en el código de este microcontrolador se envía una variable o variables específicas “código binario” al “uc Principal”.
Microcontrolador “Detección de presencia”.
Descripción: Es el microcontrolador encargado de leer las señales entregadas por los sensores que se utilizan para detectar la presencia del ratón, además, dipping, estiramientos, número de veces que entra y sale el roedor de los brazos abiertos , cerrados y elección correcta o incorrecta del brazo.
Datos que se reciben y envían Se reciben: Modulo elegido para activación de lectura de sensores. Señales para determinar la posición del raton.
Emisor
Se envían: Posición del ratón por cuadrantes.
uc “Principal”
Matriz de sensores.
Variables: Dippings, estiramientos, brazos abiertos, brazos cerrados
Receptor uc “Principal”
uc “Principal”
Mediante un menú de casos incluido en el código de este microcontrolador se envía una variable o variables específicas “código binario” al “uc Principal”.
Tabla de envió de datos principal Envió de datos por bluetooth a microcontrolador principal.
Envió de datos por microcontrolador principal a bluetooth.
Envió de datos por microcontrolador principal a microcontrolador control de posición.
Envió de datos por microcontrolador control de posición a microcontrolador principal.
Variable del módulo a utilizar. 2bits
Posición del ratón por cuadrantes.
Variable del módulo a utilizar. 2 bits
Posición requerida lista. 1 bit
Inicio de prueba por modulo.1 bit Fin de la prueba.1 bit
Dippings.
Dippings
Estiramientos. Aprox 4 bits Modulo requerido listo 1 bit
Estiramientos.
Posición lista del módulo a utilizar. 1 bit
Envió de datos por microcontrolador principal a microcontrolador detección de presencia. Inicio de sensado.(menú de casos)
Envió de datos por microcontrolador detección de presencia a microcontrolador principal. Posición del ratón por cuadrantes.
Inicio de prueba por modulo. (Sensores en específico): Con el objetivo de sensar las partes correspondientes y no producir malinterpretación en los datos. Fin de la prueba: para volver al menú principal de “microcontrolador detección de presencia” y regresar a la posición principal del sistema controlado por “microcontrolador control de posición”.
Posición lista del módulo a utilizar: Indica al usuario cuando esté listo el modulo solicitado, debido a cuestiones de limpieza .
Tabla de envió de datos principal Envió de datos por bluetooth a microcontrolador principal.
Envió de datos por microcontrolador principal a bluetooth.
Envió de datos por microcontrolador principal a microcontrolador control de posición.
Envió de datos por microcontrolador control de posición a microcontrolador principal.
Variable del módulo a utilizar. 2bits
Posición del ratón por cuadrantes.
Variable del módulo a utilizar. 2 bits
Posición requerida lista. 1 bit
Inicio de prueba por modulo.1 bit Fin de la prueba.1 bit
Dippings.
Dippings
Estiramientos. Aprox 4 bits Modulo requerido listo 1 bit
Estiramientos.
Posición lista del módulo a utilizar. 1 bit
Envió de datos por microcontrolador principal a microcontrolador detección de presencia. Inicio de sensado.(menú de casos)
Envió de datos por microcontrolador detección de presencia a microcontrolador principal. Posición del ratón por cuadrantes.
Inicio de prueba por modulo. (Sensores en específico): Con el objetivo de sensar las partes correspondientes y no producir malinterpretación en los datos. Fin de la prueba: para volver al menú principal de “microcontrolador detección de presencia” y regresar a la posición principal del sistema controlado por “microcontrolador control de posición”.
Posición lista del módulo a utilizar: Indica al usuario cuando esté listo el modulo solicitado, debido a cuestiones de limpieza .
Microcontrolador generador de frecuencia Es el microcontrolador encargado de generar la frecuencia requerida para establecer la comunicación con el sensor receptor TSOP 1838 con ayuda de leds infrarojos, para lo anterior se utilizaron registros específicos del microcontrolador obtenidos de la hoja de especificación del fabricante, para la generación de frecuencia se utilizaron registros del Timer 0. El funcionamiento general de un timer consiste en guardar en un registro especial de almacenamiento un valor máximo al que llegará un contador, cuando el valor en el contador sea igual al registro almacenado un comparador puede realizar las siguientes acciones: Activar el flag de salida del timer iniciando así una interrupción. Programamos un evento en el cual en el pin de salida se conmute elnivel anterior, se ponga a nivel bajo o se ponga a nivel alto y así generar una señal a determinada frecuencia.
Registros de configuración para timer0. Timer/Counter Control (TCCRn). Este registro configura la frecuencia a la que trabajará el timer, el modo de trabajo y si el timer controlará la salida del pin asociado a él, en este caso el pin OC0.
Microcontrolador generador de frecuencia Es el microcontrolador encargado de generar la frecuencia requerida para establecer la comunicación con el sensor receptor TSOP 1838 con ayuda de leds infrarojos, para lo anterior se utilizaron registros específicos del microcontrolador obtenidos de la hoja de especificación del fabricante, para la generación de frecuencia se utilizaron registros del Timer 0. El funcionamiento general de un timer consiste en guardar en un registro especial de almacenamiento un valor máximo al que llegará un contador, cuando el valor en el contador sea igual al registro almacenado un comparador puede realizar las siguientes acciones: Activar el flag de salida del timer iniciando así una interrupción. Programamos un evento en el cual en el pin de salida se conmute elnivel anterior, se ponga a nivel bajo o se ponga a nivel alto y así generar una señal a determinada frecuencia.
Registros de configuración para timer0. Timer/Counter Control (TCCRn). Este registro configura la frecuencia a la que trabajará el timer, el modo de trabajo y si el timer controlará la salida del pin asociado a él, en este caso el pin OC0.
Timer/Counter Register (TCNTn) Este registro permite realizar operaciones de escritura o lectura en el Timer, por ejemplo al especificar un cierto valor con el que se requiere que inicie el contador. Además este registro es el que guarda la cuenta del Timer/Counter0 (0 a 255).
Output Compare Register (OCRn) Aquí se guarda el valor a comparar con el registro TCNT0. Cuando el valor del registro TCNT0 coincide con el valor guardado en este registro, se realiza el evento programado para la coincidencia en comparación, ya sea generar una interrupción o cambiar el estado del pin OC0.
Timer Interrupt Mask Register (TIMSK) En este registro se encuentran los bits de habilitación de interrupciones para cada timer, los requeridos de este resgistro es el bit TOIE0 y OCIE0 que son los correspondientes al timer0 y los bits TOIE1, OCIE1A y OCIE1B que son los correspondientes al timer1. Sin embargo al no estar ocupando el registro OCRn no hay necesidad de modificar el valor de los bits OCIEn.
Formulas ocupadas para la generación de frecuencia. ó = 1 / = ( / ( ∗ ) )− 1
Metodología Algoritmo Definición: Conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver un problema. Características que los algoritmos deben reunir son las siguientes: Precisión: Los pasos a seguir en el algoritmo deben ser precisados claramente. Determinismo: El algoritmo, dado un conjunto de datos idénticos de entrada, siempre debe arrojar los mismos resultados. Finitud: El algoritmo, independientemente de la complejidad del mismo, siempre debe ser de longitud finita. Diagrama de flujo. Un diagrama de flujo representa la esquematización grafica de un algoritmo. En realidad, muestra gráficamente los pasos o procesos a seguir para alcanzar la solución a un problema. Su correcta construcción es sumamente importante porque a partir del mismo se escribe un programa en algún lenguaje de programación. Si el diagrama de flujo está completo y correcto, el paso del mismo lenguaje de programación es relativamente simple y directo.
Reglas para la construcción de diagrama de flujo. Un diagrama de flujo debe ilustrar gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Los símbolos presentados, colocados adecuadamente, permiten crear una estructura grafica flexible que ilustra los pasos a seguir para alcanzar un resultado especifico. El diagrama de flujo facilitara más tarde la escritura del programa en algún lenguaje de programación. Los símbolos estándar normalizados por ANSI (abreviatura de American National Standards Institute) son muy variados, aquí se presentan algunos:
Diagrama de flujo microcontrolador principal
Diagrama de flujo microcontrolador generador de frecuencia.
Diagrama de flujo microcontrolador generador de frecuencia.
Diagrama de flujo microcontrolador control de posición
Diagrama de flujo microcontrolador detección de presencia.
Diagrama de flujo microcontrolador detección de presencia.
Simulaciones, diseños de pistas y diseños 3D. Micromotorreductor.
Simulacion en proteus de puente H de micromotorreductores.
Simulaciones, diseños de pistas y diseños 3D. Micromotorreductor.
Simulacion en proteus de puente H de micromotorreductores.
Diseño de pistas de placas de micromotorreductores.
Diseño en 3D de placa de micromotorreductores.
Motorreductor.
Simulacion de puente H de motorredcutor
Diseño de pistas de puente H de motorreductores.
Diseño 3D de puente H de motorreductores.
Microcontrolador principal.
Simulación de microcontrolador principal.
Diseño de pistas de microcontrolador principal.
Diseño en 3D de microcontrolador principal.
Microcontrolador “Detección de presencia”.
Simulación de microcontrolador detección de presencia.
Diseño de pistas de microcontrolador detección de presencia.
Diseño en 3D de microcontrolador detección de presencia.
Microcontrolador “ Control de posición”.
Simulacion de microcontrolador control de posición.
Diseño de pistas de microcontrolador control de posición.
Diseño en 3D de microcontrolador control de posición.
Generador de frecuencia.
Simulacion de microcontrolador generador de frecuencia.
Señales entragadas por el osciloscopio en la simulacion.
Diseño de pistas de microcontrolador generador de frecuencia.
Diseño en 3D de placa generadora de frecuencia.
Regulación de voltaje.
Simulacion de circuitos reguladores de voltage.
Diseño de pistas de placa de reguladores de voltage.
Diseño en 3D de fuente con reguladores de voltaje
Diseño mini placas
Diseño miniplacas para conexión de leds infrarojos.
Diseño en 3D de mini placas para conexión de leds infrarrojos
Resultados. Microcontrolador principal.
Micromotorreductores.
Motorreductores (Dos placas)
Microcontrolador control de posición.
Microcontrolador detección de presencia.
Microcontrolador generador de frecuencia
Construccion de miniplacas
Códigos implementados en los microcontroladores. Microcontrolador control de posición #define F_CPU 4000000UL #include
//Libreria entradas y salidas #include //Libreria interrupcion #include //Libreria para retardos int VTB=0X5A,VTD=0X05,i=1; int main(void) { DDRB=0XFF;//Configuracion de puerto B como salida DDRD=0X8F;//Configuracion de puerto D como salida DDRA=0X00;//Configuracion de puerto A como entrada DDRC=0X00;//Configuracion de puerto C como entrada PORTA=0X00; PORTB=0X00; PORTC=0X00; PORTD=0X00;//Puertos valores iniciales en 0. while(1) { //Primeros dos bits menos significativos del puerto A se //utilizan para saber cual modulo es el requerido. //01 & 00---> Laberinto en T. //10---> Laberinto Elevado. //11---> Actigrafo. //PORTB=0XAA; if (bit_is_clear(PINC,5) && bit_is_set(PINC,4) | bit_is_clear(PINC,5) && bit_is_clear(PINC,4) ) { // Laberinto T if (bit_is_set(PIND,4) && bit_is_clear(PIND,5))// Configuracion compuerta derecha { if( bit_is_clear(PINA,0) && bit_is_set(PINA,1) && bit_is_clear(PINA,2) && bit_is_set(PINA,3) && bit_is_set(PINA,4) && bit_is_clear(PINA,5) && bit_is_set(PINA,6) && bit_is_clear(PINA,7) && bit_is_set(PINC,0) && bit_is_clear(PINC,1) && bit_is_clear(PINC,2) && bit_is_set(PINC,3) ) { PORTB=0X00; //PORTD = 0x80; PORTD = (1<
//compuerta derecha A6,A7 while (!(bit_is_set(PINA,6))) { PORTB=0X40; PORTD=0X00; }
while (!(bit_is_set(PINC,0))) { PORTD=0X01; PORTB=0X00; } while (!(bit_is_set(PINC,3))) { PORTD=0X08; PORTB=0X00; } } } else if (bit_is_clear(PIND,4) && bit_is_set(PIND,5))//Compuerta izquierda { if( bit_is_clear(PINA,0) && bit_is_set(PINA,1) && bit_is_clear(PINA,2) && bit_is_set(PINA,3) && bit_is_set(PINA,4) && bit_is_clear(PINA,5) && bit_is_set(PINA,6) && bit_is_clear(PINA,7) && bit_is_clear(PINC,0) && bit_is_set(PINC,1) && bit_is_set(PINC,2) && bit_is_clear(PINC,3) ) { PORTB=0X00; //PORTD = 0x80; PORTD = (1<
while (!(bit_is_set(PINC,1))) { PORTD=0X02;
PORTB=0X00; } while (!(bit_is_set(PINC,2))) { PORTD=0X04; PORTB=0X00; } } } //PORTD = (1<
while (!(bit_is_set(PINC,0))) { PORTD=0X01; PORTB=0X00; } while (!(bit_is_set(PINC,2))) { PORTD=0X04; PORTB=0X00; } } }
}///// else if ( bit_is_set(PINC,5) && bit_is_clear(PINC,4) ) { // Laberinto Elevado //La siguiente condicional comprueba si el laberinto en Elevado esta listo if( bit_is_set(PINA,0) && bit_is_clear(PINA,1) && bit_is_set(PINA,2) && bit_is_clear(PINA,3) && bit_is_clear(PINA,4) && bit_is_set(PINA,5) && bit_is_clear(PINA,6) && bit_is_set(PINA,7) && bit_is_set(PINC,0) && bit_is_clear(PINC,1) && bit_is_set(PINC,2) && bit_is_clear(PINC,3)) { PORTB=0X00; PORTD = 0x80;//Modulo laberinto elevado listo } else{ PORTD = (0<
} else if ( bit_is_set(PINC,5) && bit_is_set(PINC,4) ) { // Actigrafo. //La siguiente condicional comprueba si el Actigrafo esta listo if( bit_is_clear(PINA,0) && bit_is_set(PINA,1) && bit_is_set(PINA,2) && bit_is_clear(PINA,3) && bit_is_set(PINA,4) && bit_is_clear(PINA,5) && bit_is_set(PINA,6) && bit_is_clear(PINA,7) && bit_is_set(PINC,0) && bit_is_clear(PINC,1) && bit_is_set(PINC,2) && bit_is_clear(PINC,3)) { PORTB=0X00; PORTD = 0x80;//Modulo Actigrafo listo
} else{ PORTD = (0<
Microcontrolador detección de presencia. #define F_CPU 4000000UL #include #include int main(void) { DDRA=0X1F;//Configuracion DDRB=0X00;//Configuracion DDRC=0X00;//Configuracion DDRD=0X00;//Configuracion //Dipping 14 //Centro 15 //Estiramiento 16 while(1) { if (bit_is_set(PINA,7) && {
como como como como
salida del puerto A entrada del puerto B entrada del puerto C entrada del puerto D
bit_is_clear(PINA,6) && bit_is_clear(PINA,5))
/////////////////////////// Empieza
--->Laberinto en T ///////////////////////////////
if (bit_is_clear(PINB,0)){ //Cuadrante 1 //s1 PORTA=0x01; } else if (bit_is_clear(PINB,1)){ //Cuadrante 2 //s2 PORTA=0x02; } else if (bit_is_clear(PINB,2)){ //Cuadrante 2 //s3 //brazo abierto PORTA=0x02; } /////////////////////////////////////Empieza ---->Centros///////////////////////////////////// else if (bit_is_set(PINB,3) && bit_is_clear(PINB,4) && bit_is_clear(PIND,2)){ //Centro //s4 PORTA=0x0F; } else if (bit_is_set(PINB,4) && bit_is_clear(PINB,3) //Centro //s5 PORTA=0x0F; }
&& bit_is_clear(PIND,2)){
else if (bit_is_set(PIND,2) && bit_is_clear(PINB,4) && bit_is_clear(PINB,3)){ //Centro //s11 PORTA=0x0F; } /////////////////////////////////////Termina---->Centros///////////////////////////////////// else if (bit_is_clear(PINB,5)){ //Cuadrante 5 //s6 //brazo abierto PORTA=0x05; } else if (bit_is_clear(PINB,6)){ //Cuadrante 5
//s7 PORTA=0x05; } else if (bit_is_clear(PINB,7)){ //Cuadrante 4 //s8 PORTA=0x04; } else if (bit_is_clear(PIND,0)){ //Cuadrante 4 //s9 PORTA=0x04; } else if (bit_is_clear(PIND,1)){ //Cuadrante 3 //s10 PORTA=0x03; } else if (bit_is_clear(PIND,3)){ //Cuadrante 6 //s12 //brazo cerrado PORTA=0x06; } else if (bit_is_clear(PIND,4)){ //Cuadrante 6 //s13 PORTA=0x06; } else if (bit_is_clear(PIND,5)){ //Cuadrante 7 //s14 PORTA=0x07; } else if (bit_is_clear(PIND,6)){ //Cuadrante 7 //s15 PORTA=0x07; } else if (bit_is_clear(PIND,7)){ //Cuadrante 8 //s16 PORTA=0x08; } /////////////////////////// Termina }
--->Laberinto en T ///////////////////////////////
else if (bit_is_clear(PINA,7) && bit_is_set(PINA,6) && bit_is_clear(PINA,5)) { ///////////////////////////////////////////////Empieza ----->Laberinto elevado//////////////////////////////////////////// if (bit_is_clear(PINC,1)){ //Brazo abierto //s18 PORTA=0x02; } else if (bit_is_clear(PIND,3)){ //Brazo cerrado //s12 PORTA=0x05; } else if (bit_is_clear(PINB,5)){ //Brazo cerrado //s6 PORTA=0x05; }
else if (bit_is_clear(PINC,6)){
//Dipping 14 PORTA=0x0E; }
else if (bit_is_set(PINC,0) && bit_is_set(PINB,4)){ //Estiramiento PORTA=0x12; } else if (bit_is_set(PINC,0) && bit_is_set(PIND,2)){ //Estiramiento PORTA=0x12; } else if (bit_is_set(PINB,3) && bit_is_set(PIND,2)){ //Estiramiento PORTA=0x12; } else if (bit_is_set(PINB,4) && bit_is_set(PINB,3)){ //Estiramiento PORTA=0x12; } ////////////////////////Centro/////////////////////////////// else if (bit_is_set(PINB,3) && bit_is_clear(PINB,4) && bit_is_clear(PINC,0) && bit_is_clear(PIND,2)){ //Centro //s4 PORTA=0x0F; } else if (bit_is_set(PINB,4) && bit_is_clear(PINB,3) && bit_is_clear(PINC,0) && bit_is_clear(PIND,2)){ //Centro //s5 PORTA=0x0F; } else if (bit_is_set(PIND,2) && bit_is_clear(PINB,4) && bit_is_clear(PINC,0) && bit_is_clear(PINB,3)){ //Centro //s11 PORTA=0x0F; } else if (bit_is_set(PINC,0) && bit_is_clear(PINB,4) && bit_is_clear(PINB,3) && bit_is_clear(PIND,2)){ //Centro //s17 PORTA=0x0F; } ///////////////////////////////////////////////Termina ----->Laberinto elevado//////////////////////////////////////////// } else if (bit_is_set(PINA,7) && bit_is_set(PINA,6) && bit_is_clear(PINA,5)) { //////////////////////////////////////// Empieza -->Actigrafo/////////////////////////////////////////////////// if (bit_is_set(PINC,2)){ //cuadrante 12 //s19 PORTA=0x0C; }
else if (bit_is_set(PINC,3)){ //cuadrante 11 //s21 // (PINA,5) ---> (PINC,3) PORTA=0x0B; } else if (bit_is_set(PINC,4)){ //cuadrante 13 //s24 // (PINC,6) ---> (PINC,4) PORTA=0x0D; } else if (bit_is_set(PINC,5)){ //cuadrante 10 //s25 // (PINC,4) ---> (PINC,5) PORTA=0x0A; } else if (bit_is_clear(PINC,2) && bit_is_clear(PINC,3) && bit_is_clear(PINC,4) && bit_is_clear(PINC,5)){ //cuadrante 9 //s19 PORTA=0x09; } ////////////////////////////////////////Termina -->Actigrafo/////////////////////////////////////////////////// } else if (bit_is_clear(PINA,7) && bit_is_clear(PINA,6) && bit_is_clear(PINA,5)) { ////////////////////////////////////////Empieza --->Compuerta izquierda/////////////////////////////////////////////////// if (bit_is_clear(PINB,0)){ //Cuadrante 1 //s1 PORTA=0x01; } else if (bit_is_clear(PINB,1)){ //Cuadrante 2 //s2 PORTA=0x02; } else if (bit_is_clear(PINB,2)){ //Cuadrante 2 //s3 //brazo abierto PORTA=0x02; } else if (bit_is_set(PINB,3) && bit_is_clear(PIND,2)){ //Centro //s4 PORTA=0x0F; } else if (bit_is_set(PIND,2) && bit_is_clear(PINB,3)){ //Centro //s5 PORTA=0x0F; } else if (bit_is_clear(PIND,3)){ //Cuadrante 6 //s12 //brazo cerrado PORTA=0x06;
} else if (bit_is_clear(PIND,4)){ //Cuadrante 6 //s13 PORTA=0x06; } else if (bit_is_clear(PIND,5)){ //Cuadrante 7 //s14 PORTA=0x07; } else if (bit_is_clear(PIND,6)){ //Cuadrante 7 //s15 PORTA=0x07; } else if (bit_is_clear(PIND,7)){ //Cuadrante 8 //s16 PORTA=0x08; } ////////////////////////////////////////Termina --->Compuerta izquierda/////////////////////////////////////////////////// } else if (bit_is_set(PINA,7) && bit_is_clear(PINA,6) && bit_is_set(PINA,5)) { ////////////////////////////////////////Empieza --->Compuerta derecha/////////////////////////////////////////////////// if (bit_is_clear(PINB,0)){ //Cuadrante 1 //s1 PORTA=0x01; } else if (bit_is_clear(PINB,1)){ //Cuadrante 2 //s2 PORTA=0x02; } else if (bit_is_clear(PINB,2)){ //Cuadrante 2 //s3 //brazo abierto PORTA=0x02; } else if (bit_is_clear(PINB,5)){ //Cuadrante 5 //s6 //brazo abierto PORTA=0x05; } else if (bit_is_clear(PINB,6)){ //Cuadrante 5 //s7 PORTA=0x05; } else if (bit_is_clear(PINB,7)){ //Cuadrante 4 //s8 PORTA=0x04; } else if (bit_is_clear(PIND,0)){ //Cuadrante 4 //s9 PORTA=0x04; } else if (bit_is_clear(PIND,1)){ //Cuadrante 3 //s10 PORTA=0x03;
} //////////////////////// else if (bit_is_set(PINB,3) && bit_is_clear(PINB,4)){ //Centro //s4 PORTA=0x0F; } else if (bit_is_set(PINB,4) && bit_is_clear(PINB,3)){ //Centro //s5 PORTA=0x0F; } ////////////////////////////////////////Termina --->Compuerta derecha/////////////////////////////////////////////////// } } }
Microcontrolador Principal
#define F_CPU 4000000UL #include //Libreria entradas y salidas #include //Libreria interrupcion #include //Libreria para retardos void UART_config(void);//Funcion para configurar la UART unsigned char rx,var,men1,var1; unsigned char ch; //La variable ch es para guardar el dato que se recibe a traves del bluetooth unsigned char a='a'; //La constante a se refiere a actigrafo unsigned char e='e'; //La constante e se refiere al laberinto elevado unsigned char t='t'; //La constante t se refiere al laberinto t unsigned char p='p'; //La constante p se refiere a parar el experimento unsigned char i='i'; //La constante i se refiere a iniciar el experimento unsigned char g='g'; //La constante g se refiere a que el programa entrara a la parte del codigo en el que del micro envia informacion a labview unsigned char w='w'; //La constante w se refiere a la compuerta izquierda unsigned char q='q'; //La constante q se refiere a la compuerta derecha uint8_t v,d; //Las variables v y w son para una comparacion y que no se repita el numero que se envia la info a la pc int val; ISR(USART_RXC_vect) { rx = UDR; }; void USART_Transmit( unsigned char data ) { /* Wait for empty transmit buffer */ while ( !( UCSRA & (1<
//habilita interrupcion para RX UCSRB |= (1<
v=100;//el 100 significa que el sistema se transformo correctamente } else if ( bit_is_set(PIND,2)) { v=110;//el 110 significa que el sistema tiene un error } //USART_Transmit('D'); if (val==2) { if (v==2)//Brazo abierto { USART_Transmit('2'); USART_Transmit('2'); } else if (v==6)//Brazo cerrado { USART_Transmit('2'); USART_Transmit('3'); } else if (v==5)//Brazo cerrado { USART_Transmit('2'); USART_Transmit('3'); } else if (v==14) { USART_Transmit('2');//No. dipping USART_Transmit('4'); } else if (v==15) { USART_Transmit('c');//centro } else if (v==16) { USART_Transmit('2');//No. estiramientos USART_Transmit('1'); } else if (v==21) { USART_Transmit('2');//Entrada a brazo abierto USART_Transmit('2'); } } if (val==1){ if (v==1) { USART_Transmit('1'); } else if (v==2) { USART_Transmit('2'); } else if (v==3) { USART_Transmit('3'); } else if (v==4) { USART_Transmit('4'); } else if (v==5) { USART_Transmit('5'); } else if (v==6) {
USART_Transmit('6'); } else if (v==7) { USART_Transmit('7'); } else if (v==8) { USART_Transmit('8'); } } if (val==3) { if (v==9) { USART_Transmit('9'); } else if (v==10) { USART_Transmit('1'); USART_Transmit('0'); } else if (v==11) { USART_Transmit('1'); USART_Transmit('1'); } else if (v==12) { USART_Transmit('1'); USART_Transmit('2'); } else if (v==13) { USART_Transmit('1'); USART_Transmit('3'); } } else if (v==100)//el 100 significa que el sistema se transformo correctamente { USART_Transmit('1'); USART_Transmit('0'); USART_Transmit('0'); } else if (v==110) { USART_Transmit('1'); USART_Transmit('1'); USART_Transmit('0'); } } } while(ch!='n'); }