Professional Documents
Culture Documents
Los sensores imitan la capacidad de percepcin de los seres humanos, por ello es cada
vez ms usual encontrarlos incorporados a cualquier rea tecnolgica. Debido a esta
caracterstica de imitar la percepcin humana, se pueden encontrar sensores
relacionados con los diferentes sentidos: vista, odo, tacto, es decir, responden a la
informacin que reciben del entorno. Los dispositivos que incorporan sensores dan
informacin acerca del estado del sistema.
Por lo tanto, los sensores, son dispositivos electrnicos que permiten interactuar con el
entorno, de forma que proporcionen informacin de ciertas variables que nos rodean
para poder procesarlas y as generar rdenes o activar procesos (Serna,2010: Pg.3).
2.1.1 CLASIFICACIN
Dada la gran cantidad de sensores que existen, es necesario clasificarlos para entender
mejor su naturaleza y funcionamiento. No obstante, esta tarea no es fcil, por lo que
existen varios tipos de clasificaciones (Serna, 2010: Pg.3).
De acuerdo a su funcionamiento
Digitales: Proporcionan la informacin mediante una seal digital que puede ser
un 0 o un 1 lgicos, o bien un cdigo de bits.
2.1.2 CARACTERSTICAS
A la hora de elegir un sensor para una aplicacin concreta, es necesario tener en cuenta
determinados aspectos para obtener el mejor rendimiento dentro de dicha aplicacin:
Rapidez en la respuesta.
Radio de accin.
Fiabilidad en el funcionamiento.
Tensiones de alimentacin.
Consumo de corriente.
Relacin calidad/precio
Laberinto en T
Variables a medir:
Laberinto elevado
Variables a medir:
Actgrafo
Variables a medir:
Con un mismo tipo de sensor se puede monitorear ms de una variable, las variables
son las siguientes: Deteccin de presencia del ratn por cuadrantes, tiempo que el ratn
tarda en llegar a la recompensa, nmero de entradas , salidas a los brazos abiertos y
cerrados, tiempo de permanencia del ratn en los cuadrantes y deteccin de dipping.
Se utilizar otro sensor para registrar cuando el sistema est en la posicin correcta. Por
lo que el sensor 1: se encargar de detectar la presencia del ratn 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 realizar la seleccin.
Apropiado para el funcionamiento
Sensor Descripcin
requerido
Sensor1.
Sensor 2
Separacin mnima de pistas: si se trabaja con tensiones bajas, el mnimo debe ser de 0.3mm,
pero tiene que aumentarse para tensiones mayores.
Separacin entre los bordes de la placa y las pistas: tiene que ser, como mnimo, 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 alimentacin tendrn que tener como
mnimo 1 o 2 mm, independientemente de la corriente que consuma el circuito.
Largo de las pistas: Se procura de hacer lo ms cortas posibles las pistas, con el fin de hacer un
diseo simple y reducir el tamao del pcb.
Uniones pista-pad: En las uniones pista-pad la pista debe ser radial a dicho pad, y no
tangencial, no deben unirse dos o ms pads, dicha unin se debe hacer mediante una pista.
Etapa de potencia
(Puentes H)
c Controlador
de posicin
Tx Actuadores
c Principal
(Micromotoreductores
envi de datos.
Recepcin y
Bluetooth.
y motoreductores)
Limit switch
Rx
c Deteccin
de presencia
Matriz de c Generador
Leds emisores
sensores de frecuencia
infrarrojos
receptores
Micro controlador principal
Descripcin: Es el micro controlador encargado de la recepcin y transmisin de datos, es decir acumula los datos obtenidos por los dems micro
controladores (microcontrolador control de posicin y microcontrolador deteccin de presencia) y enva por rs232 los datos, a su vez recibe la
informacin por rs232 y distribuye las tareas correspondientes a los dems micro controladores (microcontrolador control de posicin y
microcontrolador deteccin de presencia) segn el dato recibido.
Despus de recepcin por bluetooth: Activacin y desactivacin de pines de microcontrolador para la distribucin de tareas.
Despus de transmisin: Recibe la informacin obtenida por los microcontroladores y la enva por rs232.
Microcontrolador Control de posicin.
Descripcin: Es el microcontrolador encargado de cambiar los estados lgicos en la salida de los puertos del mismo que estn conectados a las
entradas de los puentes H, con el objetivo de habilitar o desactivar los motorreductores y micromotoreductores, donde tendr integrado por
cdigo un sistema de control ON-OFF, adems se comunica con el c Principal para recibir los datos seleccionados por el usuario y enva
variables al c Principal de acuerdo a la posicin del sistema o modulo.
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 cdigo del microcontrolador , a su vez terminado de posicionar el sistema se enviara la variable de
posicionamiento correcto.
Microcontrolador Deteccin de presencia.
Descripcin: Es el microcontrolador encargado de leer las seales entregadas por los sensores que se utilizan para detectar la presencia del
ratn, adems, dipping, estiramientos, nmero de veces que entra y sale el roedor de los brazos abiertos , cerrados y eleccin correcta o
incorrecta del brazo.
Mediante un men de casos incluido en el cdigo de este microcontrolador se enva una variable o variables especficas cdigo binario al uc
Principal.
Tabla de envi de datos principal
Envi de datos por Envi de datos por Envi de datos por Envi de datos por Envi de datos por Envi de datos por
bluetooth a microcontrolador microcontrolador microcontrolador microcontrolador microcontrolador
microcontrolador principal a bluetooth. principal a control de posicin a principal a deteccin de presencia
principal. microcontrolador microcontrolador microcontrolador a microcontrolador
control de posicin. principal. deteccin de principal.
presencia.
Variable del mdulo a Posicin del ratn por Variable del mdulo a Posicin requerida Inicio de Posicin del ratn por
utilizar. 2bits cuadrantes. utilizar. 2 bits lista. 1 bit sensado.(men de cuadrantes.
casos)
Inicio de prueba por Dippings. Dippings
modulo.1 bit
Fin de la prueba.1 bit Estiramientos. Estiramientos.
Aprox 4 bits
Posicin lista del Modulo requerido listo
mdulo a utilizar. 1 bit 1 bit
Inicio de prueba por modulo. (Sensores en especfico): Con el objetivo de sensar las partes correspondientes y no producir malinterpretacin en
los datos.
Fin de la prueba: para volver al men principal de microcontrolador deteccin de presencia y regresar a la posicin principal del sistema
controlado por microcontrolador control de posicin.
Posicin lista del mdulo a utilizar: Indica al usuario cuando est listo el modulo solicitado, debido a cuestiones de limpieza .
Microcontrolador generador de frecuencia
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.
= 1 /
= ( / ( ) ) 1
Metodologa
Algoritmo
Definicin: Conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado
o resolver un problema.
Diagrama de flujo.
Un diagrama de flujo debe ilustrar grficamente los pasos o procesos a seguir para alcanzar la
solucin de un problema. Los smbolos 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 ms tarde la escritura del programa en algn lenguaje de
programacin.
Los smbolos estndar 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 control de posicin
Diagrama de flujo microcontrolador deteccin de presencia.
Simulaciones, diseos de pistas y diseos 3D.
Micromotorreductor.
Motorreductor.
Simulacion de puente H de motorredcutor
Diseo de pistas de puente H de motorreductores.
Micromotorreductores.
Motorreductores (Dos placas)
while(1)
{
}
else{
PORTD = (0<<PD7);
while (!(bit_is_set(PINA,1)))
{
PORTB=0X02;
PORTD=0X00;
}
while (!(bit_is_set(PINA,3)))
{
PORTB=0X08;
PORTD=0X00;
}
while (!(bit_is_set(PINC,0)))
{
PORTD=0X01;
PORTB=0X00;
}
while (!(bit_is_set(PINC,3)))
{
PORTD=0X08;
PORTB=0X00;
}
}
}
}
else{
PORTD = (0<<PD7);
while (!(bit_is_set(PINA,1)))
{
PORTB=0X02;
PORTD=0X00;
}
while (!(bit_is_set(PINA,3)))
{
PORTB=0X08;
PORTD=0X00;
}
while (!(bit_is_set(PINC,1)))
{
PORTD=0X02;
PORTB=0X00;
}
while (!(bit_is_set(PINC,2)))
{
PORTD=0X04;
PORTB=0X00;
}
}
}
//PORTD = (1<<PD2);
//La siguiente condicional comprueba si el laberinto en T esta listo
else if (bit_is_clear(PIND,4) && bit_is_clear(PIND,5))// Configuracion
sin compuerta
{
while (!(bit_is_set(PINA,3)))
{
PORTB=0X08;
PORTD=0X00;
}
while (!(bit_is_set(PINC,0)))
{
PORTD=0X01;
PORTB=0X00;
}
while (!(bit_is_set(PINC,2)))
{
PORTD=0X04;
PORTB=0X00;
}
}
}/////
while (!(bit_is_set(PINA,2)))
{
PORTB=0X04;
PORTD=0X00;
}
while (!(bit_is_set(PINA,5)))
{
PORTB=0X20;
PORTD=0X00;
}
while (!(bit_is_set(PINA,7)))
{
PORTB=0X80;
PORTD=0X00;
}
while (!(bit_is_set(PINC,0)))
{
PORTB=0X00;
PORTD=0X01;
}
while (!(bit_is_set(PINC,2)))
{
PORTB=0X00;
PORTD=0X04;
}
while (!(bit_is_set(PINA,2)))
{
PORTB=0X04;
PORTD=0X00;
}
while (!(bit_is_set(PINA,4)))
{
PORTB=0X10;
PORTD=0X00;
}
while (!(bit_is_set(PINA,6)))
{
PORTB=0X40;
PORTD=0X00;
}
while (!(bit_is_set(PINC,0)))
{
PORTB=0X00;
PORTD=0X01;
}
while (!(bit_is_set(PINC,2)))
{
PORTB=0X00;
PORTD=0X04;
}
}
}
}
}
Microcontrolador deteccin de presencia.
#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
DDRA=0X1F;//Configuracion como salida del puerto A
DDRB=0X00;//Configuracion como entrada del puerto B
DDRC=0X00;//Configuracion como entrada del puerto C
DDRD=0X00;//Configuracion como entrada del puerto D
//Dipping 14
//Centro 15
//Estiramiento 16
while(1)
{
if (bit_is_set(PINA,7) && bit_is_clear(PINA,6) && bit_is_clear(PINA,5))
{
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/////////////////////////////////////
/////////////////////////////////////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(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(PIND,2)){
//Estiramiento
PORTA=0x12;
}
else if (bit_is_set(PINB,4) && bit_is_set(PINB,3)){
//Estiramiento
PORTA=0x12;
////////////////////////Centro///////////////////////////////
///////////////////////////////////////////////Termina ----->Laberinto
elevado////////////////////////////////////////////
}
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;
}
////////////////////////////////////////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_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;
}
////////////////////////////////////////Termina --->Compuerta
derecha///////////////////////////////////////////////////
}
}
}
Microcontrolador Principal
val=1;
}
else if (ch==w)// Activacion de la compuerta izquierda
{
//PORTD=0X40;
PORTB=0X24;
}
else if (ch==g)
{
v=PINC;//Lo del puerto C ponlo en v
if ( bit_is_set(PINB,7))
{
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==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');
}
Microcontrolador generador de frecuencia.
int aux=0;
ISR(TIMER0_OVF_vect)
{
if(PORTB) PORTB = 0;
else PORTB = 15;
if(PORTD) PORTC = 0;
else PORTC = 15;
if(PORTD) PORTD = 0;
else PORTD = 31;
TCNT0 = 247;
//aumentar sube la freq
//TCNT0 = 246;
}
int main(void)
{
cli();
//0 entrada
//1 salida
//TCNT0 = 246;
TCNT0 = 247;
//TCNT0 = 0XB2;
//habilita interrupcion por desbordamiento
TIMSK |= (1 << TOIE0);
//habilita interrupciones globales
sei();
while(1)
{
}
}