Está en la página 1de 9

UNIVERSIDAD DEL VALLE - FACULTAD DE INGENIERÍA

ESCUELA DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA


PROGRAMA ACADÉMICO DE TECNOLOGÍA EN ELECTRÓNICA

Laboratorio I microcontroladores II
Laboratorio de modulación PWM
Profesor Sebastián correa
Nicolas Arturo Valencia López 1866186, Oscar Andrés Camacho Montoya 1866223, Cristóbal Moreno Montoya
1866175, Santiago González Morales ,1958473-2710, Juan David Arcila 1968073

reanuda la ejecución del programa. Las interrupciones HW


I.RESUMEN:
son generadas por los dispositivos periféricos habilitando
En este laboratorio se pondrán a prueba los conocimientos una señal del CPU
previos vistos en clase para la construcción y simulación de un (llamada IRQ del inglés «interrupt request») para solicitar
sistema de control de velocidad en el cual se modula a través de atención del mismo.
un PWM modulando su ancho de pulso para medir la velocidad Todos los dispositivos que deseen comunicarse con el
de 2 motores en DC y simular el funcionamiento de un tacómetro procesador por medio de interrupciones deben tener asignada
donde se puede visualizar los RPMs de los motores. una línea única capaz de avisar al CPU cuando le requiere para
realizar una operación. Esta línea se denomina IRQ.
II.OBJETIVOS: Las IRQ son líneas que llegan al controlador de interrupciones,
⮚ Construir un sistema de control de RPMs un componente de hardware dedicado a la gestión de las
interrupciones, y que está integrado en la MCU. Figura 1
⮚ Implementar los conocimientos adquiridos en clase por
medio del diseño y construcción del circuito
⮚ Visualizar el cambio de velocidad a través de una LCD

III.LISTA DE MATERIALES

● Microcontrolador PIC18F4550
● Placa entrenadora o montaje que permita
desarrollar la práctica
● Etapa de potencia para un motor en DC
● Encoder para medir las RPM’s de un motor
● LCD
● Potenciómetro . Figura 1
● PicKit
● Equipo de computo para desarrollar la práctica PWM
● Fuente de voltaje El PWM, Pulse Width Modulation o Modulación por Ancho de
● Generador de funciones Pulsos, sirve para variar la energía recibida por un dispositivo
electrónico variando rápidamente la energía que este recibe,
cambiando entre apagado y encendido. Una variación en el
IV. INTRODUCCIÓN PWM produce un cambio en el Duty Cycle. . Figura 2

La electrónica ha avanzado mucho, casi todo lo que se construía


hace unos años se realizaba mediante un grupo de circuitos
integrados conectados entre sí (compuertas lógicas) hoy se
puede llegar al mismo resultado con tan solo un
microcontrolador y unos sensores.
El microcontrolador que se usa para el laboratorio es el
pic18f4550 el cual nos permite programar en lenguaje c++
ensamblador y se desea diseñar y montar la simulación de un
.
sistema de control de velocidad visualizado mediante la LCD su
respectivas RPMs de cada motor.
Figura 2
Conversión ADC
V.FUNDAMENTO TEÓRICO
Un convertidor analógico a digital (ADC) es un dispositivo que
Interrupciones:
convierte una señal analógica variable en el tiempo a una
Una interrupción es una suspensión temporal de la ejecución
representación de números digitales de la amplitud de esa señal.
de un proceso, para pasar a ejecutar una subrutina de servicio
Casi todas las señales físicas del mundo real son analógicas en
de interrupción, la cual, por lo general, no forma parte del
la naturaleza. Figura 3
programa. Una vez finalizada dicha subrutina, se
receptor para transmitir y recibir en ambas direcciones.
Figura 5

Figura 5
Etapa de potencia
Figura 3 se representa un esquema de la etapa de potencia de un motor
TIMERS DC cuyo objetivo es la generación de una señal modulada en
El timer es un objeto que tiene como funcionalidad ejecutar una anchura de pulso (señal PWM en lo sucesivo, um(t)) que
función o bloque de código cada cierto tiempo. Esto tiene se corresponde con la señal de control discreta uk generada por
muchas aplicaciones ya que no depende de la acción por parte un sistema de control digital.
del usuario para ejecutar cierto código. Por ejemplo, podemos La implementación hardware consiste en un puente en H de
hacer que nuestro programa chequee una tabla de una base de dispositivos MOSFET. En el Apéndice
datos y muestre la información actualizada en pantalla cada A continuación se detalla el funcionamiento de los MOSFET.
minuto. También se puede hacer que cuente tiempo. O quizá El puente en H tiene dos cargas importantes: la del motor DC
hasta reproduzca una animación. Figura 4 cuyas ecuaciones se recogen en la ¿¿Sección ?? y la de un filtro
paso bajo cuya finalidad es servir de sensor de la corriente
eléctrica en el motor. En este escrito no se estudia este filtro. La
carga del motor es fundamentalmente inductiva.
Llamaremos Zona Z+ al periodo de tiempo en que los
MOSFETs A1 y A2 se encuentren en su
región ´óhmica y los MOSFETs B1 y B2 se encuentren
en su región de corte, y Zona Z− al periodo
de tiempo en que los MOSFET,s B1 y B2 se encuentren en su
región ´óhmica y los MOSFET,s A1 y
Figura 3 A2 se encuentren en su región de corte.
Protocolo RS232 En las Figuras 2.2 y 2.3 se representan las corrientes que
El protocolo RS-232 de 55 años de edad, es el método por circulan por el puente en H cuando los
defecto para hablar con los dispositivos Alicat. Además de RS- MOSFET se encuentran en las zonas Z
232, puede configurar su instrumento con protocolos RS-485, + y Z Figura 6
Profibus, ModBus RTU, DeviceNet y Ethernet IP. Sin embargo,
para la mayoría de nuestros clientes, el estándar de
comunicación RS-232C seguirá siendo el método ideal para
ordenar y leer los dispositivos Alicat.
Una de las principales razones por las que el RS-232 ha
sobrevivido durante más de cinco décadas es que se trata de una
señal útil, pero de bajo nivel y rudimentaria, con unas directrices
operativas bastante flexibles. En 1962, la única aplicación del
estándar de comunicación RS-232 era la conexión de máquinas
de escribir electromecánicas y sus ordenadores anfitriones
centrales/módems, comúnmente conocidos como sistemas de Figura 7
“teletipo” Figura 4. Pantalla LCD 20x4
La pantalla LCD 20x4 (conocido también como display LCD
20x4) es un dispositivo que permite la presentación de
caracteres alfanuméricos y otros símbolos en un formato de
20 caracteres por línea, en 4 líneas. Es compatible con el
controlador Hitachi HD44780. Figura 8

Figura 4
UART Figura 8
UART significa transmisor-receptor asíncrono universal y
define un protocolo o un conjunto de reglas, para
intercambiar datos en serie entre dos dispositivos. El UART CONVERSOR USB A SERIAL RS232 UART TTL
es muy simple y solo utiliza dos cables entre el transmisor y CP2102
Con este dispositivo convertidor de USB a UART o USART TIMERS
puedes conectar tu microcontrolador con puerto UART a la El timer es un objeto que tiene como funcionalidad ejecutar una
computadora sin necesidad del MAX232 aunque lo puedes función o bloque de código cada cierto tiempo. Esto tiene muchas
añadir para que maneje niveles del protocolo RS232. aplicaciones ya que no depende de la acción por parte del usuario
Ideal para aplicaciones con puerto serial entre PC y para ejecutar cierto código. Por ejemplo, podemos hacer que
microcontroladores, arduinos, módulos. Acepta niveles 3.3V ó nuestro programa chequee una tabla de una base de datos y
5 Voltios, Permite Energizar circuitos externos ya que tiene muestre la información actualizada en pantalla cada minuto.
salidas de 3.3V y 5V. Figura 9 También se puede hacer que cuente tiempo. O quizá hasta
reproduzca una animación. Véase en el diagrama de flujo.
Figura10 y Figura 12
Véase el diagrama Figura11
1. diagrama de flujo

Figura 9

VI.DEFINICIÓN Y DIAGRAMAS

Ciclos repetitivos o bucles:


Son estructuras de control de programación, en donde
muchas veces se puede indicar el número mínimo de
iteraciones que se va a realizar. Está disponible en casi
todos los lenguajes de programación. Estos ciclos
permiten ejecutar una o varias líneas de código de forma Figura10
iterativa, conociendo un valor inicial y otro valor final,
además determina el tamaño del paso entre cada "giro" o 2.Diagramas de circuitos proteus
iteración del ciclo.
Estos ciclos están estructurados en 3 partes:
1) Inicialización: Sólo se utiliza la primera vez que entra
al ciclo, se utiliza generalmente para iniciar un contador,
de debe colocar el valor que interese eso va a depender
del caso generalmente se inicializa en cero.
2) Condición: Es la pregunta que se hace para realizar las
acciones que están dentro de la repetición, si se cumple
la condición se ejecutarán las instrucciones dentro del
código.
3) Incremento: Es el cómo, o paso o la cantidad a
incrementar o decrementar el contador en cada
repetición.

POLLING
Polling o sondeo en computación hace referencia a una Figura11
operación de consulta constante, generalmente hacia un
dispositivo de hardware, para crear una actividad sincrónica 3.Diagrama de conexiones
sin el uso de interrupciones, aunque también puede suceder lo
mismo para recursos de software.

Esto, aplicado a programación puede ser visto como una pobre


implementación en búsqueda del sincronismo de procesos. Por
ejemplo, se podría consultar constantemente un directorio del
sistema de archivos para indicarle al usuario cuándo llegan
nuevos contenidos a la misma. Sin embargo, estas constantes
consultas degradará el rendimiento del equipo y
probablemente sería mejor implementar la solución por otro
medio, en particular, pidiéndole al sistema operativo que
informe de transferencias a ese directorio en particular.

VII.CÓDIGO EXPLICADO
Figura12
Para la elaboración del proyecto se realizaron pasos a seguir
para llegar a la solución del laboratorio como tal.

1.Entendimiento de la librería del PWN.


Explica la parte de la librería, ella se encarga de cambiar la
señal análoga que envía el potenciómetro a una señal digital,
donde es más precisa, facilitando así la solución del
laboratorio. Véase figura 14, figura 15 y figura 16

Véase figura 14

figura 16 Como se verá aquí el código de las librerías que


se utilizó para el control del potenciómetro. Véase figura
17

figura 15

figura 17
2.Potenciómetro y Lcd.
Se inicializa el pwn y la lcd, dándole sus correspondientes
pines de salida para el manejo del potenciómetro y la lcd, para
así visualizar la lcd.
También se tiene en cuenta las variables a utilizar en el código
o posibles variables que se podrían utilizar. Véase figura 18,
figura 19 y figura 20.

figura 18

figura 19 figura 20.

3.POLLYN
No es que sea malo programar por medio del pollyn, pero su
déficit está que como está dentro del while, para así realizar del for, para hacer este método se realiza unos cálculos
su inicialización y un continuo y refresco de los datos, lo matemáticos, pero en nuestro caso usamos una aplicación
malo de este método es que no es tan exacto como hacerlo para facilitar el procedimiento. Véase en la figura 23
por interrupciones. Véase en la figura 21.

Véase en la figura 23
Se inicia la interrupción a un nanosegundo(1ns),ya que así se
toma valores más exacto al momento de calcular los rpm, ya
que a un segundo(1s) era mucho tiempo para su toma exacta
del conteo rpm. Véase en la figura 24
figura 21.
Como se verá se creó un ciclo for,cuya función es que
realizar un conteo, donde ese conteo que realice se va tener
en cuenta para refrescar los datos a tomar e imprimir,, ya que
sin este for, cada vez que el sensor detecta una señal, pues va
contarla, pero va a contar a tiempo real, y en este caso no nos
sirve , ya que daría unos variables muy exageradas, pero esto
se da también por usar el método pollyn, entonces el ciclo
for nos ayuda a controlar el tiempo de conteo, después se una
una fórmula de contar rpm, que este caso es rpm1, donde se
cuenta las vueltas (controladas por el for), y lo multiplicamos
por 60(que es tiempo de refresco que tenemos en lo datos, Véase en la figura 24
cada minuto que son 60 segundos ), y después se divide por se crea una variable para introducir la fórmula del conteo
20 (que son los números de huecos que tiene la rueda), de esa rpm, como se verá aquí ya se divide por 15 y no por 60, ya
forma se da por medio de pollyn. Véase en la figura 22 que los datos ya se están refrescando a 1ns y no 1s entonces
se divide los 60 por 4 dándonos un valor de 15, donde se le
pone un deleya para su espera de refresco y se pone otro
delay para reiniciar el conteo de las pulsaciones, se refresque
cada segundo los datos a tiempos más exactos.

Se Anexa lo que es Código en General

#include "PWM_LIBRERIA.h"
// Lcd pinout settings
sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D4 at RD4_bit;

// Pin direction
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD7_bit;
sbit LCD_D6_Direction at TRISD6_bit;
figura 22
sbit LCD_D5_Direction at TRISD5_bit;
3.Interrupciones
sbit LCD_D4_Direction at TRISD4_bit;
Por este método es más exacto ya que no se encuentra dentro
char aux1=0, aux2=100, aux[20]=" ";
int s1=0, s2=0, estado=0; PWM_Comenzar();
long int conver1=0, conver2=0, cont1=0, cont2=0;
long int pulsos=0,rpm1=0,rpm2=0, tiempo=0, mili=0; while(1){

void Interrupt(){ //COMENTAR INTERRUPCIÓN Y


DESCOMENTAR ESTO PARA POLLING
if(TMR0IF_bit){ //El timer de 1s /*for(tiempo=0; tiempo<=1000; tiempo++){
TMR0IF_bit = 0; //limpiar bandera
TMR0H = 0x67; if(RA4_bit == 1){
TMR0L = 0x69; cont1++;
//código de VILLALIPO while(RA4_bit == 1){
if(RB1_bit == 1 && estado == 1){ delay_ms(1);
cont1++; tiempo++;
estado=0; };
} }
if(RB1_bit == 0 && estado == 0){ delay_ms(1);
estado=1; }
} rpm1 = cont1*60;
*/
rpm1 = cont1*60;
cont1 = 0; conver1 = ADC_Read(0);
} s1 = 0.097751 * conver1;

} conver2 = ADC_Read(1);
s2 = 0.097751 * conver2;
void main() {
sprintf(aux,"S1:%3d",s1);
ADCON1 = 12; LCD_Out(1,1,aux);

TRISA0_bit = 1; sprintf(aux,"S2:%3d",s2);
TRISA1_bit = 1; LCD_Out(3,1,aux);
TRISB2_bit = 1;
TRISB3_bit = 1; sprintf(aux,"Cont1:%3d",cont1);
TRISB4_bit = 1; LCD_Out(1,8,aux);

TRISA4_bit = 1; sprintf(aux,"Cont2:%3d",cont2);
TRISC = 0; LCD_Out(3,8,aux);

//interrupciones sprintf(aux,"RPM1:%4d",rpm1);
INT1IE_bit = 1; LCD_Out(2,1,aux);
INT1IF_bit = 0;
//INT0IE_bit = 1; sprintf(aux,"RPM2:%4d",rpm2);
//INT0IF_bit = 0; LCD_Out(4,1,aux);
PEIE_bit = 1;
GIE_bit = 1; PWM1_Duty(s1);
INTEDG1_bit = 1; PWM2_Duty(s2);

//cont1 = 0; //PARA EL POLLING


//timer0 }
T0CON = 0x86; }
TMR0H = 0x67;
TMR0L = 0x69;
VIII. CONCLUSIONES
● En esta práctica de laboratorio se da solución al
TMR0IE_bit = 1; laboratorio Propuesto y se da uso de los conceptos
visto en clase en el cual Se ve la importancia del uso
LCD_Init(); de métodos de programación, por ejemplo: polling,
LCD_Cmd(12); timer, interrupción y ciclos repetidos y análisis previo
LCD_Cmd(1); de la etapa de potencia en el cual se usan mosfet para
amplificar su potencia y el manejo de su pulso PWM.
ADC_Init(); ● Se logró con éxito la visualización de las
revoluciones por minutos (RPMs) en una pantalla
PWM1_Iniciar(2000); LDC en la se usa para simular el tacómetro de un
PWM1_Duty(70); vehículo por ejemplo un carro o moto donde se sensa
PWM2_Iniciar(2000); constantemente su respectiva velocidad.
PWM2_Duty(70);
Bibliografía
https://drive.google.com/file/d/1JiB3F71_ItGG0ylIuXP-
Lijz0ULYIo2u/view

https://www.youtube.com

https://controlautomaticoeducacion.com/microcontroladores-
pic/medidor-de-velocidad-de-un-motor-dc-con-pic/

https://es.wikipedia.org/wiki/Wikipedia:Portada

También podría gustarte