Este documento presenta un proyecto de un carrito salvavidas controlado mediante Bluetooth. El proyecto consta de dos partes: 1) control del carrito usando comunicación serial USART y PWM para controlar la velocidad de los motores y 2) comunicación con un LCD 16x2 para mostrar mensajes enviados vía Bluetooth desde una tablet. El código en C configura los puertos, USART, PWM e implementa funciones para el movimiento del carrito y la comunicación con el LCD.
Este documento presenta un proyecto de un carrito salvavidas controlado mediante Bluetooth. El proyecto consta de dos partes: 1) control del carrito usando comunicación serial USART y PWM para controlar la velocidad de los motores y 2) comunicación con un LCD 16x2 para mostrar mensajes enviados vía Bluetooth desde una tablet. El código en C configura los puertos, USART, PWM e implementa funciones para el movimiento del carrito y la comunicación con el LCD.
Este documento presenta un proyecto de un carrito salvavidas controlado mediante Bluetooth. El proyecto consta de dos partes: 1) control del carrito usando comunicación serial USART y PWM para controlar la velocidad de los motores y 2) comunicación con un LCD 16x2 para mostrar mensajes enviados vía Bluetooth desde una tablet. El código en C configura los puertos, USART, PWM e implementa funciones para el movimiento del carrito y la comunicación con el LCD.
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 1 ~ Ing. Zenn Cucho Mendoza
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERA ELECTRICA Y ELECTRNICA
Informe del Proyecto
Asignatura: Microcontroladores
Profesor: Ing. Zenn Cucho Mendoza
Alumnos: Cesar Guzmn Alvitrez 090609k Pamela Alvarado Churano 100704k
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 2 ~ Ing. Zenn Cucho Mendoza
Informe del Proyecto de Microcontroladores (Carrito Salvavidas) 1. Objetivo
Obtener una base del atmega8 para obtener proyectos aplicativos hacia la rama de control y automatizacin de la electrnica en complicidad con la robotica. Usar la comunicacin serial USART del atmega8 para comunicarnos inalmbricamente con el modulo bluetooh esclavo en lugar de usar un max232. Usar el PWM del atmega8 para controlar la velocidad de los motores y asi poder ahorrar energa en el transporte. Usar un LCD de 16x2 para escribir mensajes de texto hacia un lugar donde no llega seal telefnica y enviarlo por bluetooh desde una tablet hacia el LCD 16x2.
2. Descripcin del Proyecto:
El proyecto est dividida en 2 partes:
a) Control de un carrito
En el control del carrito usamos la comunicacin serial USART para comunicarnos con el exterior mediante el modulo bluetooh esclavo HC- 06.
Configuramos el USART a 9600bps, 8 bits de datos, 1 bit de parada, paridad ninguno.
Usamos el reloj interno del atmega8 y lo configuramos su frecuencia de trabajo a 8MHz.
Tambin usamos el PWM para controlar la velocidad a la que va el carrito y as no malgastar la batera.
Usamos tambin las interrupciones del atmega8 para habilitar la comunicacin serial mediante caracteres ASCCI y asi facilitar la comunicacin serial entre el atmega8 y la tablet. Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 3 ~ Ing. Zenn Cucho Mendoza
El vector de las interrupciones que usamos para este proyecto es el USART_RXC_vect.
Aca usaremos los botones de la aplicacin Bluetooh Serial Controller.
A continuacin la foto de la aplicacin y sus botones:
b) Comunicacin de un lcd
Configuramos el USART a 9600bps, 8 bits de datos, 1 bit de parada, paridad ninguno.
Usamos el reloj interno del atmega8 y lo configuramos su frecuencia de trabajo a 8MHz.
En la comunicacin de un LCD usaremos las libreras para inicializar el LCD y configurar el LCD como comunicacin serial.
Mediante una aplicacin llamada Bluetooth Serial Controller configuraremos los botones que usaremos en el proyecto pero a la vez tambin tiene un hyperterminal que nos ayudaran mandar cdigos ASCCI y asi comunicarnos con el LCD.
Al mandar un 1 como cdigo ASCCI en el hyperterminal mandaremos al carrito velocidad 1 pero a la vez tambin mandara el modo 1 del lcd, eso Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 4 ~ Ing. Zenn Cucho Mendoza
quiere decir que al poner modo 1 al lcd significa que se cumplir lo siguiente:
Si pones la letra a en el hyperterminal saldr en la pantalla LCD la palabra avanzar.
Si pones la letra r en el hyperterminal saldr en la pantalla LCD la palabra retroceder.
Si pones la letra i en el hyperterminal saldr en la pantalla LCD la palabra izquierda.
Si pones la letra d en el hyperterminal saldr en la pantalla LCD la palabra derecha.
Pero eso no es todo lo que puedes hacer en el LCD ya que aparte de que relaciona el carrito con el LCD tambin puedes mandar mensajes escribiendo en el hyperterminal, es decir lo que escribas en la pantalla del hyperterminal de la aplicacin en android tambin saldr en el LCD.
En la grafica mostramos el lugar de la aplicacin en donde escribimos los mensajes:
(En el anexo dejaremos el link donde se descarga la aplicacin)
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 5 ~ Ing. Zenn Cucho Mendoza
3. Circuito Esquemtico:
Parte 1:
Circuito esquemtico del carrito controlado mediante una tablet con sistema operativo android.
int main(void) { PB0/ICP1 14 PB1/OC1A 15 PB2/SS/OC1B 16 PB3/MOSI/OC2 17 PB4/MISO 18 PB5/SCK 19 PB6/TOSC1/XTAL1 9 PB7/TOSC2/XTAL2 10 PC6/RESET 1 PD0/RXD 2 PD1/TXD 3 PD2/INT0 4 PD3/INT1 5 PD4/T0/XCK 6 PD5/T1 11 PD6/AIN0 12 PD7/AIN1 13 PC0/ADC0 23 PC1/ADC1 24 PC2/ADC2 25 PC3/ADC3 26 PC4/ADC4/SDA 27 PC5/ADC5/SCL 28 AREF 21 AVCC 20 U1 ATMEGA8 IN1 2 OUT1 3 OUT2 6 OUT3 11 OUT4 14 IN2 7 IN3 10 IN4 15 EN1 1 EN2 9 VS 8 VSS 16 GND GND U2 L293D +5v +9v E R R O R TXD 3 RXD 2 CTS 8 RTS 7 DSR 6 DTR 4 DCD 1 RI 9 P1 COMPIM (+) Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 6 ~ Ing. Zenn Cucho Mendoza
configPuertos();//configuramos puertos configUSART();//configuramos el USART configPWM();//configuramos el PWM sei();//habilitacion de las interrupciones while(1){};//bucle infinito }
void configPuertos(void){ DDRC=0xFF;//configuramos a todo el puerto c como salida DDRB|=(1<<DDB1|1<<DDB2|1<<DDB3|1<<DDB4|1<<DDB5|1<<DD B6); DDRD|=(1<<DDD2|1<<DDD3|1<<DDD4|1<<DDD5|1<<DDD6);//CON FIGURAMOS COMO SALIDA AL DD2,DD3,DD4 //configuramos a los puertoss 1,2,3,4,5,6 como salida PORTB&=~(1<<PB3);//configuramos a pb3 como 0 PORTB&=~(1<<PB4);//configuramos a pb4 como 0
PORTB&=~(1<<PB5);//configuramos a pb5 como 0 PORTB&=~(1<<PB6);//configuramos a pb6 como 0 PORTC=0x3f;//configuramos al puerto c inicialmente para que //nos muestre incialmente el cero
PORTB&=~(1<<PB5);//cuando inicie pb5=0 PORTB&=~(1<<PB6);//cuando inicie pb6=0 } void avanzar(void){// todo este codigopara avanzar PORTB|=(1<<PB3); //pb3 como 1 PORTB&=~(1<<PB4);//pb4 como 0
PORTB|=(1<<PB5);// pb5 como 1 PORTB&=~(1<<PB6);//pb6 como 0
PORTD|=(1<<PD3); } void retroceder(void){// todo este codigo para retroceder PORTB|=(1<<PB4);// pb4 como 1 Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 7 ~ Ing. Zenn Cucho Mendoza
PORTB&=~(1<<PB3);//pb3 como 0
PORTB|=(1<<PB6);//pb6 como 1 PORTB&=~(1<<PB5);//pb5 como 0
PORTD|=(1<<PD4); } void gHorario(void){//para hacer un giro horario PORTB|=(1<<PB3);// pb3 como 1 PORTB&=~(1<<PB4);//pb4 como 0
PORTB|=(1<<PB6);// pb6 como 1 PORTB&=~(1<<PB5);//pb5 como 0
PORTD|=(1<<PD5); } void gAntihorario(void){// para hacer un giro horario PORTB|=(1<<PB4);// pb4 como 1 PORTB&=~(1<<PB3);//pb3 como 0
PORTB|=(1<<PB5);// pb5 como 1 PORTB&=~(1<<PB6);//pb6 como 0
PORTD|=(1<<PD6); } void configPWM(void){//configuramos al pwm en modo //no invertido modo 14 //wgm13,wgm12,wgm11,wgm10...1110 //salida en OC1A, OC1B entonces COM1A1, COM1B1 = 11 //preescalador 8 CS12,CS11,CSS10 =...010 TCCR1A|=(1<<COM1A1|1<<COM1B1|1<<WGM11); TCCR1B|=(1<<WGM13|1<<WGM12|1<<CS11); ICR1=49;//para una frecuencia de 20khz ICR1=(T*f/prescalador)-1 OCR1A=35; OCR1B=35; PORTC=0X4F; PORTD=4; }
void configUSART(void){ UCSRB|=(1<<RXCIE|1<<TXCIE|1<<RXEN|1<<TXEN); Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 8 ~ Ing. Zenn Cucho Mendoza
UCSRC|=(1<<URSEL|1<<UCSZ1|1<<UCSZ0); UBRRH|=(0<<URSEL); UBRRL=51;//9600 BAUDIOS PARA 8MHz }
ISR(USART_RXC_vect){ datoEnvio=UDR;
switch(datoEnvio){ case '1':{ PORTC=6; PORTD=0<<DDD2; OCR1A=21;//dutty de 45% OCR1B=21;//dutty de 45%
};break; case '2':{ PORTC=0X5B; PORTD=4; OCR1A=28;//dutty de 59% OCR1B=28;//dutty de 59%
};break; case '3':{ PORTC=0X4F; PORTD=4; OCR1A=35;//dutty de 73% OCR1B=35;//dutty de 73%
};break; case '4':{ PORTC=0X66; PORTD=4; OCR1A=42;//dutty de 87% OCR1B=42;//dutty de 87%
};break; case '5':{ PORTC=0X6D; PORTD=4; OCR1A=48;//dutty de 100% OCR1B=48;//dutty de 100% Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 9 ~ Ing. Zenn Cucho Mendoza
};break; case 'a':{ avanzar();
};break; case 'r':{ retroceder();
};break; case 'i':{ gHorario();
};break; case 'd':{ gAntihorario();
};break; //**********************************
//********************************** case 'P':{ };break; //*************************************
case 'S':{ stop();}break; //APAGADOS
default :{ }break; //APAGADOS } }
Lista de Componentes con sus precios:
2 Motores DC 18v 15 soles c/u 1 Modulo Bluetooh HC-06 esclavo 32 soles Cables para protoboard 2 soles Espadines machos 5 soles 1 L293D 3.50 soles 2 Baterias 9v 5 soles c/u 3 Pilas AA 3.50 soles 1 Atmega8 8 soles 1 protoboard 10 soles 2 Llantas 3 soles Placa de Vidrio 5 soles Pegamento 2 soles 1 Rueda Loca 1.50 soles Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 10 ~ Ing. Zenn Cucho Mendoza
4 tuercas con soporte c/u 1 sol
Parte 2:
Control del LCD mediante el modulo bluetooh/android tab 2
Circuito Esquematico del control del LCD con comunicacin serial.
PB0/ICP1 14 PB1/OC1A 15 PB2/SS/OC1B 16 PB3/MOSI/OC2 17 PB4/MISO 18 PB5/SCK 19 PB6/TOSC1/XTAL1 9 PB7/TOSC2/XTAL2 10 PC6/RESET 1 PD0/RXD 2 PD1/TXD 3 PD2/INT0 4 PD3/INT1 5 PD4/T0/XCK 6 PD5/T1 11 PD6/AIN0 12 PD7/AIN1 13 PC0/ADC0 23 PC1/ADC1 24 PC2/ADC2 25 PC3/ADC3 26 PC4/ADC4/SDA 27 PC5/ADC5/SCL 28 AREF 21 AVCC 20 U1 ATMEGA8 D 7 1 4 D 6 1 3 D 5 1 2 D 4 1 1 D 3 1 0 D 2 9 D 1 8 D 0 7 E 6 R W 5 R S 4 V S S 1 V D D 2 V E E 3 LCD1 LM016L 0.00 RXD RTS TXD CTS Universidad Nacional del Callao Ingeniera Electrnica
if(modo == 0) { if ( (j==0)&&(i == 0) ) { lcd_clrscr(); } if( (dato != '0') && (dato != '1') ) { lcd_gotoxy(i++,j); // UBICACION DE LA COORDENADA DE LA LCD lcd_putc(dato); // ENVIA CARACTERES DATO Universidad Nacional del Callao Ingeniera Electrnica
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 14 ~ Ing. Zenn Cucho Mendoza
Lista de Componentes con sus precios:
1 LCD de 16x2 bits 15 soles Cables para protoboard 2 soles 1 Atmega8 8 soles 1 protoboard 10 soles
4. Diagrama de Flujo:
Parte 1: (la del carrito manejado por bluetooh)
RSI de interrupcin interna
INICIO Configuracion de los puertos Configuracin de USART Configuracion del PWM Habilitamos interrupciones FIN Interrupciones Dato =puntero Dato envio Fin Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 15 ~ Ing. Zenn Cucho Mendoza
Parte 2: (La del LCD manejado por bluetooh)
inicio Configuracion de LCD Mostramos en LCD FIN inicio Dato=(puntero) Incremento puntero
dat o Enva dato Modo= 0 Control del motor Dato=puntero A=avanzar R=retroceder I=izquierda D=derecha
Enviando dato no si Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 16 ~ Ing. Zenn Cucho Mendoza
5. Observaciones:
Uno de los problemas que tuvimos al momento de hacer el proyecto fue la configuracin del reloj interno del atmega8 de 1Mhz que viene ya configurado en el atmega8 a 8Mhz.
Lo solucionamos usando el software del quemador de atmega8 llamado USBfast que nos permite configurar los fuses low del CLK interno del atmega8 de una manera fcil y rpida en comparacin a otros quemadores de atmega8 que conocemos.
Otro de los problemas que tuvimos fue la configuracin del mdulo bluetooh esclavo para sincronizar la tablet con el mdulo bluetooh esclavo HC-06.
Lo solucionamos usando el panel de control de la PC usando los siguientes pasos:
1. Alimentamos el mdulo bluetooh con 5v. 2. Entramos a Panel de Control
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 17 ~ Ing. Zenn Cucho Mendoza
3. Hacemos click en Agregar Dispositivos
4. Hacemos click en buscar
5. Luego de que encuentre la PC al dispositivo bluetooh esclavo hacemos click en el icono siguiente:
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 18 ~ Ing. Zenn Cucho Mendoza
En este caso ya lo configure con el nombre CESAR ya que al comienzo estuvo con el nombre HC-06
6. Luego de hacer click en el icono nos saldr la siguiente ventana.
7. Luego hacemos click en la opcin hardware y despus a propiedades para configurar el mdulo bluetooh.
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 19 ~ Ing. Zenn Cucho Mendoza
8. Luego hacemos click en configuracin de puerto y ah configuramos la velocidad del USART, los bits de datos, los bits de parada, paridad, control de flujo.
Universidad Nacional del Callao Ingeniera Electrnica
Microcontroladores ~ 20 ~ Ing. Zenn Cucho Mendoza
6. Conclusiones:
Parte 1: La primera parte del proyecto le toco a Guzmn Alvitrez Cesar Augusto , desde la implementacin del proyecto y compras de todos los componentes hasta la programacin del carrito y de la aplicacin en android.
En esta parte del proyecto hemos solucionado todos los problemas de la configuracin del bluetooh y configuracin de la aplicacin en android.
En esta parte del proyecto tambin hemos descubierto que al conectar el modulo bluetooh con el atmega8 tiene que ir de la siguiente manera:
TX del atmega8 con el RX del modulo bluetooh RX del atmega8 con el TX del modulo bluetooh
Pero en el caso de la simulacin en Proteus es de la siguiente manera:
RX del atmega8 con el RX del modulo bluetooh TX del atmega8 con el TX del modulo bluetooh
Parte 2: La segunda parte del proyecto le toco a Alvarado Churano Pamela, desde la implementacin del proyecto hasta la programacin del LCD.
En esta parte del proyecto hemos modificado algunas libreras para poder aplicarlo al proyecto de manera que nos ayude a programar mas fcilmente el LCD.