You are on page 1of 21

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.



Cdigo comentado en C:

#include <avr/io.h> //Declaramos nuestras librerias
#include <avr/interrupt.h>//a usar

void configPuertos(void);
void stop(void);
void avanzar(void);
void retroceder(void);
void gHorario(void);
void gAntihorario(void);
void configPWM(void);
void configUSART(void);

volatile char datoEnvio;// declaramos variable
volatile char saveDatos[8];//del tipo char
volatile char saveVel[8];

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

}
void stop(void){
PORTB&=~(1<<PB3);//cuando inicie pb3=0
PORTB&=~(1<<PB4);//cuando inicie pb4=0

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

Microcontroladores ~ 11 ~ Ing. Zenn Cucho Mendoza


Cdigo comentado en C:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <stdbool.h>
#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<<DDB0|1<<DDB1|1<<DDB2|1<<DDB3|1<<DDB4|1<<DD
B5|1<<DDB6|1<<DDB7);//SALIDA;
}

void conUsart(){
UCSRB|=(1<<RXCIE|0<<TXCIE|1<<RXEN|1<<TXEN);
Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 12 ~ Ing. Zenn Cucho Mendoza

UCSRC|=(1<<URSEL|1<<UCSZ1|1<<UCSZ0);
UBRRL=51;//9600 BAUDIOS PARA 8MHz
}
void enviarUSART(char dat)
{
while(bit_is_clear(UCSRA, UDRE));
UDR = dat;
}

void initLCD(){

lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_gotoxy(0,0);//(x,y) empieca arriba ([0,0)-(15,0)]-[(1,0)-(1,15)]--------
----->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
Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 13 ~ Ing. Zenn Cucho Mendoza

}
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");
}
}
}





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.



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

Universidad Nacional del Callao Ingeniera Electrnica

Microcontroladores ~ 21 ~ Ing. Zenn Cucho Mendoza

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-your-
microcontroller-projects/

You might also like