Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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
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
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.
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.
Véase figura 14
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
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.
#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){
} 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);
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