Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INGENIERÍA MECATRÓNICA
MICONTROLADORES Y MICROPROCESADORES
NIVEL: 7mo
TÍTULO:
CONTROL DE VELOCIDAD DE UN MOTOR DC
AUTORES:
ALVARADO ELIZABETH
TORRES BRYAN
LATACUNGA
2019
1. TEMA
2. OBJETIVOS
Controlar la velocidad de un motor DC mediante una aplicación Android a través de una conexión
bluetooth y un microcontrolador PIC16f877a.
Establecer mediante lenguaje C los parámetros necesarios para el envío de datos mediante comunicación
RS232 hacia el módulo HC-05.
Realizar el envío de datos desde el dispositivo Android para el control de velocidad de un motor mediante
PWM.
3. MARCO TEÓRICO
3.1. PIC16F877A
Esta potente (ejecución de instrucciones de 200 nanosegundos) pero fácil de programar (solo 35
instrucciones de una sola palabra) El microcontrolador CMOS FLASH de 8 bits incluye la potente
arquitectura PIC® de Microchip en un paquete de 40 y es compatible con PIC16C5X, PIC12CXXX y
PIC16C7X dispositivos. El PIC16F877A cuenta con 256 bytes de memoria de datos EEPROM, auto
programación, un ICD, 2 comparadores, 8 canales de convertidor analógico a digital (A / D) de 10 bits, 2
funciones de captura / comparación / PWM, el puerto serie síncrono puede se configurará como Interfaz de
periféricos en serie de 3 hilos (SPI ™) o como un bus de circuito integrado de 2 hilos (I²C ™) y un
Transmisor de receptor asíncrono universal (USART). [1]
Fig. 1. Pines de un PIC16F8777A
Dispositivo que puede configurarse tanto como Master que como Slave. Es ligeramente más complicado
de colocar en modo comandos y requiere una cierta manera de arrancado, concretamente requiere que el pin
KEY, esté en HIGH cuando encendemos el módulo. Funciona a 3,3 V. Por las pruebas hechas y los tutoriales
en principio no es necesario usar un divisor de tensión y los pines son tolerantes a 5V, pero hacerlo bajo vuestra
responsabilidad. [3]
Name = HC-05
Password = 1234
Baud rate in communication mode = 9600
Baud rate in AT/Command mode = 38400
Es un framework creado inicialmente por el MIT (Instituto tecnológico de Massachusetts) y fué cogido por google,
para que cualquier persona con interés pueda crearse su propia aplicación móvil, ya sea para su empresa, para su
casa o por otros intereses. [4]
Fig. 3. MIT APP INVENTOR
Para crear una aplicación con app inventor hay que realizar tres pasos:
Tabla 1
Materiales y equipos
Fuente de
alimentación D.C Se usa para abastecer de voltaje al
1
circuito. 5v y 9 v para el motor
5. Procedimiento
Realizar el respectivo código para la programación del Microcontrolador
#include <16F877A.h>
#device adc=10//bits
#fuses HS,NOWDT
#use delay (CLOCK=20M)
#define lcd_rs_pin pin_b0
#define lcd_rw_pin pin_b1
#define lcd_enable_pin pin_b2
#define lcd_data4 pin_b4
#define lcd_data5 pin_b5
#define lcd_data6 pin_b6
#define lcd_data7 pin_b7
#include <lcd.c>
int16 x, ys, i=0, j=0, m, k,l,n; //se ve 1024
float y, y1;
void uno()
{
set_adc_channel(0);//Defino el canal AN0
x=read_adc();//Lectura del canal AN0
set_adc_channel(5);
ys=read_adc();
y=(100.0*x)/1023.0;
y1=(10000.0/1023.0)*ys;
lcd_gotoxy(1,1);
m=y;
printf(lcd_putc,"Veloc=%Ld porciento",m);// l=long
lcd_gotoxy(2,2);
printf(lcd_putc,"Giro=Izquierda");//
delay_ms(200);
}
#INT_EXT
interr()
{
uno();
}
void main()
{
setup_adc_ports(0);//Activa los ADCs
setup_adc(ADC_CLOCK_INTERNAL);//Reloj interno
lcd_init();
set_tris_d(1);//entrada del puerto b
//Definir las interrupciones
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT); //Definir como se van a activar, siempre de alto a bajo
ext_int_edge(H_TO_L);//Apagar todo el puerto
while(true)
{
if(input(Pin_d0)==1)
{
uno();
}
while(input(Pin_d0)==0)
{
for(i=m;i>0;i--)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Veloc=%Ld",i);// l=long
lcd_gotoxy(2,2);
printf(lcd_putc,"Giro=Izquierda");//
delay_ms(90);
lcd_init();
}
for(j=0;j<m;j++)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"Veloc=%Ld",j);// l=long
lcd_gotoxy(2,2);
printf(lcd_putc,"Giro=Derecha");//
delay_ms(90);
lcd_init();
}
}
}
}
Realizar la aplicación Android en MIT App Inventor 2
6. ESQUEMA DE CONEXIÓN
Fig. 4. Esquema de conexión.
7. ANÁLISIS DE RESULTADOS
Como se puede apreciar, los valores mostrados por los sensores están en valores enteros, debido a que la
función de concatenado no acepta valores en tipo float. La incorporación de los diez botones de control de
velocidad debido a que el envío de datos se da por caracteres Ascii, pero en cada uno de los botones yace
una activación del ancho de pulso distinto uno de otro entre los botones.
8. CONCLUSIONES
Se han establecido las conexiones necesarias para el funcionamiento del módulo HC-05 y su conexión
con el microcontrolador usando comunicación RS232.
Se ha realizado el envío de datos mediante botones para el control del PWM mediante casos del 0 al 9,
los cuales alterarán el ancho de pulso y por ende la velocidad del motor.
9. RECOMENDACIONES
Se debe tener en cuenta que el envío y recepción de datos se da mediante cadenas de texto, lo cual llega
a dificultar el manejo datos que incluyan decimales.
Cuando se envían mayor cantidad de datos desde el microcontrolador, el tratamiento de los mismos se
debe hacer mediante concatenado para establecer valores en forma de lista a ser separada una vez
recibida.