Universidad Nacional del Callao
Ingeniería Electrónica
UNIVERSIDAD NACIONAL DEL CALLAO
FACULTAD DE INGENIERÍA ELECTRICA Y ELECTRÓNICA
Informe del Proyecto
“
Asignatura:
Microcontroladores
Profesor:
Ing. Zenón Cucho Mendoza
Alumnos:
Cesar Guzmán Alvitrez Pamela Alvarado Churano
Microcontroladores
~1~
”
090609k 100704k
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
Informe del Proyecto de Microcontroladores (Carrito Salvavidas) 1. Objetivo
Obtener una base del atmega8 para obtener proyectos aplicativos hacia la rama de control y automatización de la electrónica en complicidad con la robotica. Usar la comunicación serial USART del atmega8 para comunicarnos inalámbricamente 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 energía en el transporte. Usar un LCD de 16x2 para escribir mensajes de texto hacia un lugar donde no llega señal telefónica y enviarlo por bluetooh desde una tablet hacia el LCD 16x2.
2. Descripción del Proyecto:
El proyecto está dividida en 2 partes: a) Control de un carrito En el control del carrito usamos la comunicación serial USART para comunicarnos con el exterior mediante el modulo bluetooh esclavo HC06. 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. También usamos el PWM para controlar la velocidad a la que va el carrito y así no malgastar la batería. Usamos también las interrupciones del atmega8 para habilitar la comunicación serial mediante caracteres ASCCI y asi facilitar la comunicación serial entre el atmega8 y la tablet. Microcontroladores
~2~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
El vector de las interrupciones que usamos para este proyecto es el “USART_RXC_vect”. Aca usaremos los botones de la aplicación “Bluetooh Serial Controller”. A continuación la foto de la aplicación y sus botones:
b) Comunicación 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 comunicación de un LCD usaremos las librerías para inicializar el LCD y configurar el LCD como comunicación serial. Mediante una aplicación llamada “Bluetooth Serial Controller” configuraremos los botones que usaremos en el proyecto pero a la vez también tiene un hyperterminal que nos ayudaran mandar códigos ASCCI y asi comunicarnos con el LCD.
Al mandar un 1 como código ASCCI en el hyperterminal mandaremos al carrito velocidad 1 pero a la vez también mandara el modo 1 del lcd, eso Microcontroladores
~3~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
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 h yperterminal 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 también puedes mandar mensajes escribiendo en el hyperterminal, es decir lo que escribas en la pantalla del hyperterminal de la aplicación en android también saldrá en el LCD.
En la grafica mostramos el lugar de la aplicación en donde escribimos los mensajes:
(En el anexo dejaremos el link donde se descarga la aplicación)
Microcontroladores
~4~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
3. Circuito Esquemático: Parte 1:
Circuito esquemático del carrito controlado mediante una tablet con sistema operativo android.
U1 23 24 25 26 27 28 1
P1 DCD DSR RXD RTS TXD CTS DTR RI
1 6 2 7 3 8 4 9
2 3 4 5 6 11 12 13
PC0/ADC0 PC1/ADC1 PC2/ADC2 PC3/ADC3 PC4/ADC4/SDA PC5/ADC5/SCL PC6/RESET PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK PD5/T1 PD6/AIN0 PD7/AIN1
PB0/ICP1 PB1/OC1A PB2/SS/OC1B PB3/MOSI/OC2 PB4/MISO PB5/SCK PB6/TOSC1/XTAL1 PB7/TOSC2/XTAL2
14 15 16 17 18 19 9 10
(+) +5v
16
AREF AVCC
2 7 1
21 20
IN1 IN2 EN1
VSS
+9v
8 VS OUT1 OUT2
U2 3 6
ATMEGA8 9 10 15
EN2 IN3 IN4
GND
OUT3 GND OUT4
11 14
L293D R O R R E
COMPIM
Código comentado en C:
#include
//Declaramos nuestras librerias #include //a usar void void void void void void void void
configPuertos(void); stop(void); avanzar(void); retroceder(void); gHorario(void); gAntihorario(void); configPWM(void); configUSART(void);
volatile char datoEnvio;// declaramos variable volatile char saveDatos[8];//del tipo char volatile char saveVel[8]; int main(void) { Microcontroladores
~5~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
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<
~6~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
PORTB&=~(1<
~7~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
UCSRC|=(1<
case '5':{
Microcontroladores
};break; PORTC=0X6D; PORTD=4; OCR1A=48;//dutty de 100% OCR1B=48;//dutty de 100% ~8~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
};break; case 'a':{ avanzar();
case 'r':{
};break; retroceder();
case 'i':{
};break; gHorario();
case 'd':{
};break; gAntihorario();
};break; //********************************** //********************************** case 'P':{ };break; //************************************* case 'S':{ stop();}break; default :{ }break;
//APAGADOS
//APAGADOS
} } Lista de Componentes con sus precios:
2 Motores DC 18v 1 Modulo Bluetooh HC-06 esclavo Cables para protoboard Espadines machos 1 L293D 2 Baterias 9v 3 Pilas AA 1 Atmega8 1 protoboard 2 Llantas Placa de Vidrio Pegamento 1 Rueda Loca Microcontroladores
~9~
15 soles c/u 32 soles 2 soles 5 soles 3.50 soles 5 soles c/u 3.50 soles 8 soles 10 soles 3 soles 5 soles 2 soles 1.50 soles Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
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 comunicación serial.
LCD1 LM016L
S D E S D E S W V V V R R E 0.00
1 2 3
4 5 6
0 1 2 3 4 5 6 7 D D D D D D D D 7 8 9 0 1 2 3 4 1 1 1 1 1
U1 14 15 16 17 18 19 9 10
PB0/ICP1
PC0/ADC0
PB1/OC1A
PC1/ADC1
PB2/SS/OC1B
PC2/ADC2
PB3/MOSI/OC2
PC3/ADC3
PB4/MISO
PC4/ADC4/SDA
PB5/SCK
PC5/ADC5/SCL
PB6/TOSC1/XTAL1
PC6/RESET
PB7/TOSC2/XTAL2 PD0/RXD PD1/TXD PD2/INT0 PD3/INT1 PD4/T0/XCK
21 20
PD5/T1 AREF
PD6/AIN0
AVCC
PD7/AIN1
23 24 25 26 27 28 1 2 3 4 5 6 11 12 13
ATMEGA8
RXD TXD RTS CTS
Microcontroladores
~ 10 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
Código comentado en C:
#include #include #include #include #include
"lcdnear.h"
void conPuerto();//configurando puerto void conUsart();//configura comunicacion serial void initLCD();//configura lcd volatile char b[]={}; volatile char dato; uint8_t i=0,l=0,j=0; volatile uint8_t modo = 0;
int main(void) { conPuerto(); conUsart(); initLCD(); sei(); while(1) { //TODO:: Please write your application code }
} void conPuerto(){ DDRB|=(1<
~ 11 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
UCSRC|=(1<en ee x: (x,0);en ee y: (1,y); lcd_puts("INGRESE DATOS:");
//lcd_puts(" "); } ISR(USART_RXC_vect) { dato=UDR; enviarUSART(dato); if(dato == '1') { modo = 1; } else if(dato == '0') { modo = 0; i=0; j=0; } 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 Microcontroladores
~ 12 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
} if(i == 15) { i = 0; j++; if(j == 2) { j = 0; } } } else if(modo == 1) { if(dato == 'a') { lcd_clrscr(); lcd_gotoxy(0,0); lcd_puts("avanzar"); } if(dato == 'r') { lcd_clrscr(); lcd_gotoxy(0,0); lcd_puts("retroceder"); } if(dato == 'i') { lcd_clrscr(); lcd_gotoxy(0,0); lcd_puts("izquierda"); } if(dato == 'd') { lcd_clrscr(); lcd_gotoxy(0,0); lcd_puts("derecha"); } } }
Microcontroladores
~ 13 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
Lista de Componentes con sus precios:
1 LCD de 16x2 bits Cables para protoboard 1 Atmega8 1 protoboard
15 soles 2 soles 8 soles 10 soles
4. Diagrama de Flujo: Parte 1: (la del carrito manejado por bluetooh)
INICIO
Configuracion de los puertos Configuración de USART
Configuracion del PWM
Habilitamos interrupciones
FIN
RSI de interrupción interna Interrupciones
Dato =puntero
Dato envio
Microcontroladores
~ 14 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
Parte 2: (La del LCD manejado por bluetooh)
inicio
Configuracion de LCD Mostramos en LCD
FIN
inicio
no Modo= si
Control del motor
Dato=(puntero) Dato=puntero Incremento puntero
dat
Envía dato
Microcontroladores
~ 15 ~
A=avanzar R=retroceder I=izquierda D=derecha
Enviando dato
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
5. Observaciones:
Uno de los problemas que tuvimos al momento de hacer el proyecto fue la configuración 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 fácil y rápida en comparación a otros quemadores de atmega8 que conocemos. Otro de los problemas que tuvimos fue la configuración del módulo bluetooh esclavo para sincronizar la tablet con el módulo bluetooh esclavo HC-06. Lo solucionamos usando el panel de control de la PC usando los siguientes pasos: 1. Alimentamos el módulo bluetooh con 5v. 2. Entramos a Panel de Control
Microcontroladores
~ 16 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
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:
Microcontroladores
~ 17 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
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 opción hardware y después a propiedades para configurar el módulo bluetooh.
Microcontroladores
~ 18 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
8. Luego hacemos click en configuración de puerto y ahí configuramos la velocidad del USART, los bits de datos, los bits de parada, paridad, control de flujo.
Microcontroladores
~ 19 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
6. Conclusiones:
Parte 1: La primera parte del proyecto le toco a “Guzmán Alvitrez Cesar Augusto” , desde la implementación del proyecto y compras de todos los componentes hasta la programación del carrito y de la aplicación en android. En esta parte del proyecto hemos solucionado todos los problemas de la configuración del bluetooh y configuración de la aplicación en android. En esta parte del proyecto también 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 simulación 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 toc o a “Alvarado Churano Pamela”, desde la implementación del proyecto hasta la programación del LCD.
En esta parte del proyecto hemos modificado algunas librerías para poder aplicarlo al proyecto de manera que nos ayude a programar mas fácilmente el LCD.
7. Anexos: https://play.google.com/store/apps/details?id=mBluetoothSerialController.nomal http://blog.make-a-tronik.com/tutorial-modulo-bluetooth-hc-06-parte-1/ http://curiosidadesford.blogspot.mx/2011/01/modulo-bluetooth-bluetooth-module.html https://github.com/AlfredoPrades/Arduino/blob/master/BluetoothServo/BluetoothServo. ino#L166
Microcontroladores
~ 20 ~
Ing. Zenón Cucho Mendoza
Universidad Nacional del Callao
Ingeniería Electrónica
http://www.youtube.com/watch?v=CHr0w_R9tzw http://electgpl.blogspot.com.ar/2013/01/modulo-bluetooth-hc-06.html http://robots-argentina.com.ar/Comunicacion_InterfazRS232.htm http://murlidharshenoy.wordpress.com/2011/10/26/adding-bluetooth-to-yourmicrocontroller-projects/
Microcontroladores
~ 21 ~
Ing. Zenón Cucho Mendoza