27
Universidad Nacional del Callao Ingeniería Electrónica UNIVERSIDAD NACIONAL DEL CALLAO FACULTAD DE INGENIERÍA ELECTRICA Y ELECTRÓNICA “Informe del ProyectoAsignatura: Microcontroladores Profesor: Ing. Zenón Cucho Mendoza Microcontroladores ~ 1 ~ Ing. Zenón Cucho Mendoza

Informe Del Proyecto de Microcontroladores

Embed Size (px)

Citation preview

Page 1: Informe Del Proyecto de Microcontroladores

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 090609k Pamela Alvarado Churano 100704k

Microcontroladores ~ 1 ~ Ing. Zenón Cucho Mendoza

Page 2: Informe Del Proyecto de Microcontroladores

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 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.

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

Page 3: Informe Del Proyecto de Microcontroladores

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

Page 4: Informe Del Proyecto de Microcontroladores

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 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 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)

3. Circuito Esquemático:

Microcontroladores ~ 4 ~ Ing. Zenón Cucho Mendoza

Page 5: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

Parte 1:

Circuito esquemático del carrito controlado mediante una tablet con sistema operativo android.

Código 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 variablevolatile char saveDatos[8];//del tipo charvolatile char saveVel[8];

int main(void){

configPuertos();//configuramos puertos

Microcontroladores ~ 5 ~ Ing. Zenón Cucho Mendoza

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

IN12

OUT13

OUT26

OUT311

OUT414

IN27

IN310

IN415

EN11

EN29

VS

8

VSS

16

GND GND

U2

L293D

+5v +9v

ERROR

TXD3

RXD2

CTS8

RTS7

DSR6

DTR4

DCD1

RI9

P1

COMPIM

(+)

Page 6: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

configUSART();//configuramos el USARTconfigPWM();//configuramos el PWMsei();//habilitacion de las interrupcioneswhile(1){};//bucle infinito

}

void configPuertos(void){DDRC=0xFF;//configuramos a todo el puerto c como salidaDDRB|=(1<<DDB1|1<<DDB2|1<<DDB3|1<<DDB4|1<<DDB5|

1<<DDB6);

DDRD|=(1<<DDD2|1<<DDD3|1<<DDD4|1<<DDD5|1<<DDD6);//CONFIGURAMOS COMO SALIDA AL DD2,DD3,DD4

//configuramos a los puertoss 1,2,3,4,5,6 como salidaPORTB&=~(1<<PB3);//configuramos a pb3 como 0PORTB&=~(1<<PB4);//configuramos a pb4 como 0

PORTB&=~(1<<PB5);//configuramos a pb5 como 0PORTB&=~(1<<PB6);//configuramos a pb6 como 0PORTC=0x3f;//configuramos al puerto c inicialmente para que

//nos muestre incialmente el cero

}void stop(void){

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

PORTB&=~(1<<PB5);//cuando inicie pb5=0PORTB&=~(1<<PB6);//cuando inicie pb6=0

}void avanzar(void){// todo este codigopara avanzar

PORTB|=(1<<PB3); //pb3 como 1PORTB&=~(1<<PB4);//pb4 como 0

PORTB|=(1<<PB5);// pb5 como 1PORTB&=~(1<<PB6);//pb6 como 0

PORTD|=(1<<PD3);}void retroceder(void){// todo este codigo para retroceder

PORTB|=(1<<PB4);// pb4 como 1

Microcontroladores ~ 6 ~ Ing. Zenón Cucho Mendoza

Page 7: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

PORTB&=~(1<<PB3);//pb3 como 0

PORTB|=(1<<PB6);//pb6 como 1PORTB&=~(1<<PB5);//pb5 como 0

PORTD|=(1<<PD4);}void gHorario(void){//para hacer un giro horario

PORTB|=(1<<PB3);// pb3 como 1PORTB&=~(1<<PB4);//pb4 como 0

PORTB|=(1<<PB6);// pb6 como 1PORTB&=~(1<<PB5);//pb5 como 0

PORTD|=(1<<PD5);}void gAntihorario(void){// para hacer un giro horario

PORTB|=(1<<PB4);// pb4 como 1PORTB&=~(1<<PB3);//pb3 como 0

PORTB|=(1<<PB5);// pb5 como 1PORTB&=~(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 =...010TCCR1A|=(1<<COM1A1|1<<COM1B1|1<<WGM11);TCCR1B|=(1<<WGM13|1<<WGM12|1<<CS11);ICR1=49;//para una frecuencia de 20khz ICR1=(T*f/prescalador)-1OCR1A=35;OCR1B=35;PORTC=0X4F;PORTD=4;

}

void configUSART(void){UCSRB|=(1<<RXCIE|1<<TXCIE|1<<RXEN|1<<TXEN);

Microcontroladores ~ 7 ~ Ing. Zenón Cucho Mendoza

Page 8: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

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%

Microcontroladores ~ 8 ~ Ing. Zenón Cucho Mendoza

Page 9: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

};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/u1 Modulo Bluetooh HC-06 esclavo 32 solesCables para protoboard 2 solesEspadines machos 5 soles1 L293D 3.50 soles2 Baterias 9v 5 soles c/u3 Pilas AA 3.50 soles1 Atmega8 8 soles1 protoboard 10 soles2 Llantas 3 solesPlaca de Vidrio 5 solesPegamento 2 soles1 Rueda Loca 1.50 soles

Microcontroladores ~ 9 ~ Ing. Zenón Cucho Mendoza

Page 10: Informe Del Proyecto de Microcontroladores

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.

Microcontroladores ~ 10 ~ Ing. Zenón Cucho Mendoza

PB0/ICP114

PB1/OC1A15

PB2/SS/OC1B16

PB3/MOSI/OC217

PB4/MISO18

PB5/SCK19

PB6/TOSC1/XTAL19

PB7/TOSC2/XTAL210

PC6/RESET1

PD0/RXD2

PD1/TXD3

PD2/INT04

PD3/INT15

PD4/T0/XCK6

PD5/T111

PD6/AIN012

PD7/AIN113

PC0/ADC023

PC1/ADC124

PC2/ADC225

PC3/ADC326

PC4/ADC4/SDA27

PC5/ADC5/SCL28

AREF21

AVCC20

U1

ATMEGA8

D7

14D

613

D5

12D

411

D3

10D

29

D1

8D

07

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD1LM016L

0.00

RXD

RTS

TXD

CTS

Page 11: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

Código comentado en C:

#include <avr/io.h>#include <avr/interrupt.h>#include <util/delay.h>#include <stdbool.h>#include "lcdnear.h"

void conPuerto();//configurando puertovoid conUsart();//configura comunicacion serialvoid 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<<DDB5|1<<DDB6|1<<DDB7);//SALIDA;}

void conUsart(){UCSRB|=(1<<RXCIE|0<<TXCIE|1<<RXEN|1<<TXEN);

Microcontroladores ~ 11 ~ Ing. Zenón Cucho Mendoza

Page 12: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

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

Microcontroladores ~ 12 ~ Ing. Zenón Cucho Mendoza

Page 13: Informe Del Proyecto de Microcontroladores

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

Page 14: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

Lista de Componentes con sus precios:

1 LCD de 16x2 bits 15 solesCables para protoboard 2 soles1 Atmega8 8 soles1 protoboard 10 soles

4. Diagrama de Flujo:

Parte 1: (la del carrito manejado por bluetooh)

RSI de interrupción interna

Microcontroladores ~ 14 ~ Ing. Zenón Cucho Mendoza

INICIO

Configuracion de los puertos

Configuración de USART

Configuracion del PWM

Habilitamos interrupciones

FIN

Interrupciones

Dato =puntero

Dato envio

Fin

Page 15: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

Parte 2: (La del LCD manejado por bluetooh)

Microcontroladores ~ 15 ~ Ing. Zenón Cucho Mendoza

inicio

Configuracion de LCD

Mostramos en LCD

FIN

inicio

Dato=(puntero)

Incremento puntero

dato

Envía dato

Modo=

Control del motor

Dato=puntero

A=avanzarR=retrocederI=izquierdaD=derecha

Enviando dato

no

si

Page 16: Informe Del Proyecto de Microcontroladores

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

Page 17: Informe Del Proyecto de Microcontroladores

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

Page 18: Informe Del Proyecto de Microcontroladores

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

Page 19: Informe Del Proyecto de Microcontroladores

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

Page 20: Informe Del Proyecto de Microcontroladores

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 bluetoohRX 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 bluetoohTX del atmega8 con el TX del modulo bluetooh

Parte 2:La segunda parte del proyecto le toco 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.nomalhttp://blog.make-a-tronik.com/tutorial-modulo-bluetooth-hc-06-parte-1/http://curiosidadesford.blogspot.mx/2011/01/modulo-bluetooth-bluetooth-module.htmlhttps://github.com/AlfredoPrades/Arduino/blob/master/BluetoothServo/BluetoothServo.ino#L166

Microcontroladores ~ 20 ~ Ing. Zenón Cucho Mendoza

Page 21: Informe Del Proyecto de Microcontroladores

Universidad Nacional del Callao Ingeniería Electrónica

http://www.youtube.com/watch?v=CHr0w_R9tzwhttp://electgpl.blogspot.com.ar/2013/01/modulo-bluetooth-hc-06.htmlhttp://robots-argentina.com.ar/Comunicacion_InterfazRS232.htmhttp://murlidharshenoy.wordpress.com/2011/10/26/adding-bluetooth-to-your-microcontroller-projects/

Microcontroladores ~ 21 ~ Ing. Zenón Cucho Mendoza