Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% encontró este documento útil (0 votos)
110 vistas41 páginas

Practica 3

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1/ 41

Tecnológico Nacional de México Instituto Tecnológico de

Acapulco

Nombre de la materia: Lenguajes de interfaz

Nombre del maestro:


ING. Sebastián Núñez Cesar Augusto

Nombre del trabajo:


Practica 3

Nombre alumnos Numero control


Cuevas Astudillo Mario Armando 14320102
Santiago Candelero Emilio 13320986
Sánchez Ramírez José 12320836
Jarry Sotelo Orbe 13208512

Horario: 09:00am - 10:00am

Ciclo escolar enero – junio del 2018

Acapulco, gro, 01 junio de 2018


Índice

Introducción. ............................................................................................................ 3

Marco Teórico. ........................................................................................................ 4

Desarrollo de la práctica. ....................................................................................... 18

Resultados, Graficas, Cálculos, Dibujos, Diagramas. ........................................... 28

Conclusiones del Equipo. .........................................Error! Bookmark not defined.

Bibliografía. ........................................................................................................... 35

Anexos y Apéndices. ............................................................................................. 36


Introducción.

La modulación de ancho de pulso (PWM, por sus siglas en inglés) de una señal es
una técnica que logra producir el efecto de una señal analógica sobre una carga, a
partir de la variación de la frecuencia y ciclo de trabajo de una señal digital. El ciclo
de trabajo describe la cantidad de tiempo que la señal está en un estado lógico
alto, como un porcentaje del tiempo total que esta toma para completar un ciclo
completo. La frecuencia determina que tan rápido se completa un ciclo (por
ejemplo: 1000 Hz corresponde a 1000 ciclos en un segundo), y por consiguiente
que tan rápido se cambia entre los estados lógicos alto y bajo. Al cambiar una
señal del estado alto a bajo a una tasa lo suficientemente rápida y con un cierto
ciclo de trabajo, la salida parecerá comportarse como una señal analógica
constante cuanto esta está siendo aplicada a algún dispositivo.

Señales de PWM son utilizadas comúnmente en el control de aplicaciones. Su uso


principal es el control de motores de corriente continua, aunque también pueden
ser utilizadas para controlar válvulas, bombas, sistemas hidráulicos, y algunos
otros dispositivos mecánicos. La frecuencia a la cual la señal de PWM se
generará, dependerá de la aplicación y del tiempo de respuesta del sistema que
está siendo controlado. A continuación, se muestran algunas aplicaciones y sus
respectivas frecuencias:

 Calentar elementos o sistemas con tiempos de respuesta lentos: 10-100 Hz


o superior.
 Motores eléctricos de corriente continua: 5-10 kHz o superior.
 Fuentes de poder o amplificadores de audio: 20-200 kHz o superior
(NATIONAL INSTRUMENTS).

La modulación por ancho de pulso permite asignar cierta duración de tiempo en


alto o en bajo aun dato digital de n bits que se considera la salida de una etapa
procesadora (HERRARA LOZADO,2010).
Marco Teórico.

La modulación por ancho de pulso (también conocida como PWM, por sus siglas
en inglés Pulse Width Modulation) de una señal o fuente de energía es una técnica
en la cual se modifica el ciclo de trabajo de una señal periódica (típicamente se
emplea sobre señales sinusoidales o cuadradas), ya sea para transmitir
información a través de un canal de comunicaciones o para controlar la cantidad
de energía que se envía a una determinada carga.

El ciclo de trabajo de una señal periódica D se define a través del cociente entre el
ancho relativo de su parte positiva W y el período de la señal T, tal como se
muestra en la ecuación 1:

Ecuación 1.

Donde:

D: Es el denominado ciclo de trabajo (típicamente definido en porcentaje).

W: Es el tiempo en que la función es positiva (ancho del pulso).

T: Es el período de la señal.

En la Figura 1, se observan los parámetros T y W que definen a D para una señal


periódica.

Figura 1. Parámetros T y W para una señal periódica.


En la Figura 2, se observan algunos ejemplos de señales con sus respectivos
ciclos de trabajo D. La modulación PWM suele implementarse en muchos circuitos
integrados (por ejemplo, en microcontroladores, DSP´s, FPGA´s, entre otros) y sus
aplicaciones están orientadas fundamentalmente al control de: fuentes
conmutadas, velocidad de motores, la posición de un servomotor, elementos
termoeléctricos, interruptores electrónicos (usados para interrumpir una señal bajo
el control de otra), sensores en ambientes ruidosos, conversores D/A, entre otros.

Figura 2. Ejemplos de señales con sus respectivos ciclos de trabajo D.

Aplicación de la técnica PWM en la generación de onda senoidal.

En la Figura 3 se identifica una señal sinusoidal (señal análoga continua en el


tiempo) superpuesta sobre una señal digital (de tipo discreto, pulsante) en la que
puede apreciarse que para valores máximos positivos de la señal seno, el ancho
del puso correspondiente (resaltado en un círculo) es también máximo.
Posteriormente, a medida que la amplitud decrece en el seno también lo hace el
ancho en el pulso correspondiente, situación que continua hasta que el seno
alcanza el nivel más bajo (máximo negativo), el cual queda asociado al menor
valor de ancho de pulso, evento que se repite en el tiempo, verificándose que para
cada valor de señal existe un correspondiente ancho de pulso.

Figura 3. PWM aplicado a una señal Sinusoidal ( Scientia et Technica Año XVII,
No 47, Abril de 2011. Universidad Tecnológica de Pereira).

La construcción típica de un circuito PWM se lleva a cabo mediante un


comparador con dos entradas y una salida. Una de las entradas se conecta a un
oscilador de onda dientes de sierra, mientras que la otra queda disponible para la
señal moduladora. En la salida la frecuencia es generalmente igual a la de la señal
dientes de sierra y el ciclo de trabajo está en función de la portadora.

La principal desventaja que presentan los circuitos PWM es la posibilidad de que


haya interferencias generadas por radiofrecuencia. Estas pueden minimizarse
ubicando el controlador cerca de la carga y realizando un filtrado de la fuente de
alimentación.
Figura 4 señal de onda cuadrada de amplitud acotada (,) mostrando el ciclo de
trabajo D.

Aplicaciones.

En la actualidad existen muchos circuitos integrados en los que se implementa la


modulación PWM, además de otros muy particulares para lograr circuitos
funcionales que puedan controlar fuentes conmutadas, controles de motores,
controles de elementos termoeléctricos, choppers para sensores en ambientes
ruidosos y algunas otras aplicaciones. Se distinguen por fabricar este tipo de
integradas compañías como Texas Instruments, National Semiconductor, Maxim, y
algunas otras más.

La modulación por ancho de pulsos es una técnica utilizada para regular la


velocidad de giro de los motores eléctricos de inducción o asíncronos. Mantiene el
par motor constante y no supone un desaprovechamiento de la energía eléctrica.
Se utiliza tanto en corriente continua como en alterna, como su nombre lo indica,
al controlar: un momento alto (encendido o alimentado) y un momento bajo
(apagado o desconectado), controlado normalmente por relès (baja frecuencia) o
MOSFET o tiristores (alta frecuencia).

Otros sistemas para regular la velocidad modifican la tensión eléctrica, con lo que
disminuye el par motor; o interponen una resistencia eléctrica, con lo que se pierde
energía en forma de calor en esta resistencia.

Otra forma de regular el giro del motor es variando el tiempo entre pulsos de
duración constante, lo que se llama modulación por frecuencia de pulsos.

En los motores de corriente alterna también se puede utilizar la variación de


frecuencia. La modulación por ancho de pulsos también se usa para controlar
servomotores, los cuales modifican su posición de acuerdo al ancho del pulso
enviado cada un cierto período que depende de cada servo motor. Esta
información puede ser enviada utilizando un microprocesador como el Z80, o un
microcontrolador (por ejemplo, un PIC 16F877A, 16F1827, 18F4550, etc. de la
empresa Microchip), o un microcontrolador de hardware libre como es Arduino.
Otra aplicación es enviar información de manera analógica. Es útil para
comunicarse de forma analógica con sistemas digitales.

Para un sistema digital, es relativamente fácil medir cuánto dura una onda
cuadrada. Sin embargo, si no se tiene un conversor analógico digital no se puede
obtener información de un valor analógico, ya que sólo se puede detectar si hay
una determinada tensión, 0 o 5 voltios por ejemplo (valores digitales de 0 y 1), con
una cierta tolerancia, pero no puede medirse un valor analógico. Sin embargo, el
PWM en conjunción con un oscilador digital, un contador y una puerta AND como
puerta de paso, podrían fácilmente implementar un ADC (Wikipedia).

Microcontrolador PICF18F450.

Principales características del Pic 18F4550.

 Microcontrolador con módulo USB 2.0. Soporta Low speed 1.5Mb/s y full
speed 12Mb/s.
 1kB de memoria de doble acceso vía USB
 35 pines I/O disponibles
 Memoria de programa flash de 32 kB
 RAM de 2048 Bytes
 EEPROM de datos de 256 Bytes
 Velocidad de la CPU 12 MIPS
 Oscilador externo de dos modos hasta 48 MHz
 Oscilador interno selecionable entre 8 frecuencias desde 31kHz hasta
8MHz
 Oscilador secundario con Timer 1 de hasta 32kHz
 Opciones de oscilador dual permiten que la velocidad de la CPU y del
módulo USB sean diferentes
 ADC de 10 bits y 13 canales
 Tecnología nanoWatt que brinda características y funciones de bajo
consumo y ahorro de energía
 Voltaje de operación 4.2V a 5.5V
 4 Timer(desde Timer0 a Timer3). Uno de 8 bits y 3 de 16 bits
 2 módulos de captura/comparación/PWM
 EUSART, SPP, SPI, I²C.
 20 fuentes de interrupciones (3 externas)
 Resistencias de pull-ups en el puerto B programables
 Función del pin MCLR opcional
 Brown-out Reset de valor programable
 Power-on Reset
 Power-up Timer y Oscillator Start-up Timer
 Soporta 100,000 ciclos de borrado/escritura en memoria flash
 Soporta 1,000,000 ciclos de borrado/escritura en memoria EEPROM
 Retención de datos mayor a 40 años
 Protección de código y datos programable
 Encapsulado DIP de 40 pines
Tabla comparativa de características principales del PiC18F4550.

Estructura Interna del Pic.

Dentro del datasheet del dispositivo podemos encontrar un diagrama de bloques


que nos explica la arquitectura interna que tiene el Pic 18F4550.
Estructura interna del PiC18F4550.
Organización de la memoria.

La memoria del Pic se divide en: Memoria RAM de datos, memoria de programa,
memoria EEprom de datos, la pila y memoria de configuración.

Memoria de datos.

Cuenta con una memoria de RAM de datos de 2048 bytes, (8 de los bancos de
256 bytes). También cuenta con 160 bytes dedicados a los SFR's(Registros de
función especial) los cuales se encuentran en la parte alta del banco 15. Como se
puede ver en la imagen la memoria RAM de datos se compone por GPR's o
registros de propósito general y SFR's o registros de función especial. Es la
encargada de almacenar datos de forma temporal durante la ejecución del
programa.
Memoria de datos del PiC18F4550.

Para acceder a un Byte de la memoria de datos en primer lugar seleccionaremos


el banco mediante el BSR(Bank Selector Register) y a continuación se disecciona
el byte dentro del banco.
Como acceder a la Memoria de datos del PiC18F4550.

Memoria de programa.

El Pic 18F4550 cuenta con una memoria de programa de 32K (32768 bytes). Es
una memoria tipo Flash. Esta memoria es la que se encarga de almacenar las
instrucciones, constantes y datos. La podemos escribir o leer con un programador
externo o en ejecución.

Memoria EEprom de datos.

Es una memoria no volatil en la que se almacenan los datos en ausencia de


tensión.

Cuatro SFR son usados para la escritura y lectura de la EEPROM:

 EECON1 y EECON2(controlan el acceso a los datos de la memoria


EEPROM).
 EEDATA y EEADR (ordenan la escritura/lectura y la dirección).
La pila o Stack.

Es un bloque de memoria RAM independiente de 31 palabras de 21 bits en la cual


se almacena de una forma temporal el valor del Contador de Programa (Program
Counter) cuando se produce una llamada a subrutina o interrupción.

Memoria de configuración.

Es un bloque de memoria situado a partir de la posición 30000H en la memoria de


programa donde se almacenan: Bits de configuración. Contenidos en 12 bytes de
memoria flash donde se almacenan varias opciones de configuración: opciones
del oscilador, reset, watchdog, circuiteria de depuración y programación... Estos
bits pueden ser modificados. Registros de identificación. Contienen información
del modelo y revisión del dispositivo. Son registros de lectura

Ciclo máquina y ciclo de instrucción.

En el Pic 18F4550 la mayoría de las instrucciones también se ejecutan en un solo


ciclo máquina.
Instrucciones del PiC18F4550.

El ciclo de instrucción.

Un ciclo de instrucción comprende cuatro ciclos Q(desde Q1 hasta Q4), tal y como
se puede apreciar en la imagen.

En la captura también se puede observar el esquemático del proceso Pipeline el


cual es un sistema que nos permite ejecutar una instrucción (acceso a la memoria
de datos), mientras se lee de la memoria de programa la siguiente instrucción.
Ciclo de instrucción del PiC18F4550 (TodoElectrodo).
Desarrollo de la práctica.
Materiales:

1. Software MikroC.
2. Software PICKIt2.
3. Tarjeta de desarrollo Miuva.
4. Software Proteus 8.

Software para la práctica.

De inmediato después de instalar los softwares correspondientes, procedemos a


realizar los siguientes ejercicios.

Ejercicio No.1: Se trata de conectar un diodo led que recibe una señal modulada
por ancho de pulso.
Para realizar dicho ejercicio, Se simulará en el software Proteus 8 profesional. Le
damos clic y ejecutamos como administrador.

 Se crea un nuevo proyecto. Se le asigna el nombre y la ruta donde se


guardará.

Creación de un nuevo proyecto en Proteus 8.

El siguiente paso es explorar las herramientas del software Proteus 8.

Exploración de herramientas en el software Proteus 8.


Para insertar el microcontrolador PIC18F450 y las herramientas que se ocuparan,

le damos clic en la P de Pick devices.

Inserción del microcontrolador PIC18F450 y herramientas para el desarrollo del


ejercicio 1.

Se procede a conectar el microcontrolador con la resistencia delimitadora y su


respetivo led y su entrada y salida.
Led que recibe una señal modulada por ancho de pulso (PWM).

Ahora para que nuestra simulación funcione, nos dirigimos a mikroC e ingresamos
la solución para conectar un diodo led que recibe una señal modulada por ancho
de pulso.

 Para conectar un led que recibe una señal modulada por ancho de pulso se
procede a asignar un contador, se define la variable donde se va a guardar
el máximo de la señal. Se definen los puertos digitales que se utilizaran,
posiciones de salidas del puerto B, Se fija la frecuencia de PWM, al
inicializar el objeto de tipo señal y comienza la señal. Para repetir la
transición de la señal se ocupa un ciclo while que es encargado de
incrementar el contador, se comprueba si se llegó al máximo la señal, si es
el caso se reinicia y se define el valor de la señal.
Solución del ejercicio 1.

Nos dirigirnos a Proteus 8 y le asignamos la dirección del código de MikroC.Para


realizar la simulación le damos clic en ejecutar.
Asignación del código para la simulación de la práctica.

Ejecución de la simulación del ejercicio 1 y efectivamente se prende un led que


recibe una señal modulada por un ancho de pulso.
Ejercicio No.2: Generar una señal pwm que alterne entre aumentar de 0 a 255 y
disminuir de 255.

Para realizar el siguiente ejercicio no se modifica el diseño en Proteus 8. Se


procede a modificar el código en MikroC.

 Para conectar un led que recibe una señal modulada por ancho de pulso
que alterne entre aumentar de 0 a 255 y disminuir de 255. Se procede a
asignar un contador, se define la variable donde se va a guardar el máximo
de la señal. Se define una variable para guardar la dirección. Se definen los
puertos digitales que se utilizaran, posiciones de salidas del puerto B, Se
fija la frecuencia de PWM, al inicializar el objeto de tipo señal y comienza la
señal. Para repetir la transición de la señal se ocupa un ciclo while en
donde se define 2 condiciones en donde la frecuencia sube de 0 a 255 sino
baja 255 a 0.

Solución del Ejercicio 2.


Ejecución de la simulación del ejercicio 3.2 y efectivamente se prende un led en
donde se alterna entre 0 a 255 y 255 a 0.

Ejercicio No.3: Generar una señal pwm que, dependiendo del valor recibido en un
pin, a través de un switch, genere las siguientes salidas:

A. Aumente de 0 a 255 y luego vaya a cero y repita el proceso infinitivamente,


a menos que cambie de valor en el switch.
B. O disminuya de 255 a 0 y luego vuelva a 255 y vuelva a disminuir a cero y
repita el proceso infinitivamente, a menos que cambie el valor del switch.

Para solucionar este ejercicio se le agrega el switch en Proteus 8. Y queda de la


siguiente manera.
Led que recibe una señal modulada que, dependiendo del valor recibido en un pin,
a través de un switch.

Ahora para que nuestra simulación funcione, nos dirigimos a mikroC e ingresamos
la solución para generar una señal modulada que, dependiendo del valor recibido
en un pin, a través de un switch.

 Para conectar un led que recibe una señal modulada por ancho de pulso
dependiendo del valor del switch, aumente de 0 a 255 y luego vaya a cero y
repita el proceso infinitivamente, a menos que cambie de valor en el switch.
O disminuya de 255 a 0 y luego vuelva a 255 y vuelva a disminuir a cero y
repita el proceso infinitivamente, a menos que cambie el valor del switch.
Se procede a asignar un contador, se define la variable donde se va a
guardar el máximo de la señal. Se definen los puertos digitales que se
utilizaran, posiciones de salidas del puerto B, Se fija la frecuencia de PWM,
al inicializar el objeto de tipo señal y comienza la señal. Para repetir la
transición de la señal se ocupa un ciclo while en donde se definen
condiciones en donde si está leyendo un valor positivo en el pin se
incrementa, se comprueba si llego al tamaño máximo, si es así se reinicia el
contador hasta llegar a 0. Si llega al mínimo, si es así se reinicia el contador
hasta llegar a 255.
Solución del ejercicio 3.
Resultados, Graficas, Cálculos, Dibujos, Diagramas.

Estructura interna del PIC18F4550


Ejercicio No.1: Se trata de conectar un diodo led que recibe una señal modulada
por ancho de pulso.

Led que recibe una señal modulada por ancho de pulso (PWM).

Código para la Solución del ejercicio 1.


Ejecución de la solución del ejercicio 1.

Ejercicio No.2: Generar una señal pwm que alterne entre aumentar de 0 a 255 y
disminuir de 255.

Led que recibe una señal modulada por ancho de pulso que alterne entre
aumentar de 0 a 255 y disminuir de 255.
Solución del ejercicio 2.

Ejecución de la simulación del ejercicio 2 y efectivamente se prende un led en


donde se alterna entre 0 a 255 y 255 a 0.

Ejercicio No.3: Generar una señal pwm que, dependiendo del valor recibido en un
pin, a través de un switch, genere las siguientes salidas:

A. Aumente de 0 a 255 y luego vaya a cero y repita el proceso infinitivamente,


a menos que cambie de valor en el switch.
B. O disminuya de 255 a 0 y luego vuelva a 255 y vuelva a disminuir a cero y
repita el proceso infinitivamente, a menos que cambie el valor del switch.
Led que recibe una señal modulada que, dependiendo del valor recibido en un pin,
a través de un switch.

Solución del ejercicio 3.


Si está leyendo un valor positivo se incrementa en el pin. Se comprueba si llego al
mínimo, si es el caso se reinicia hasta llegar al 255.

Si está leyendo un valor positivo se incrementa en el pin. Se comprueba si llego al


máximo, si es el caso se reinicia hasta llegar al 0.
Conclusión

Continuando con las prácticas, usamos nuevamente el Proteus 8 para diseñar un


nuevo sistema para que empleando el microcontrolador pic18f4550 se generara
una señal modulada por ancho de pulso (o PWM). A diferencia de otras prácticas,
trabajábamos únicamente con un resultado 0 o 1 (apagado/encendido), y en esta
práctica vimos que aumentaba el voltaje del led.

Fue sin dudas muy compleja de entender esta práctica, ya que, aun teniendo los
códigos y el diseño para realizar los 3 ejercicios, me era difícil comprender a que
se refería con las señales moduladas. Con exactitud cuándo se finalizaron los
ejercicios no lograba entender cuál era el resultado deseado, revisando tras varios
intentos pude entender cuáles eran los resultados que se esperaban, esto se logró
a demás por ver tutoriales en los que no empleaban el miuva, pero no se limitaba
a usar solo un led, sino, también un pequeño motor, los resultados fueron que el
led aumentaba la intensidad de su brillo a medida que se presionaba un botón de
pulsación y el motor aumentaba la velocidad de sus giros.

Al igual que en las prácticas 1 y 2, era importante que después de compilar el


código se asignara el archivo .hex al microcontrolador pic18f4550 que teníamos en
nuestro sistema de proteus, en donde al correrlo debía darnos como resultado que
el led incrementara su pulso desde el valor 0 (mas bajo) hasta el 255 (valor mas
alto) y una vez alcanzado este valor se reiniciara.
Bibliografía.

1. NATIONAL INSTRUMENTS (2017). ¿Qué es una señal modulada por


ancho de pulso (PWM) y para que es utilizarla? Recuperado el día
30/02/2017 de
http://digital.ni.com/public.nsf/allkb/AA1BDEA4AA224E3E86257CE4007075
27.
2. TODO ELECTODO (2013). PIC 18F4550. Recuperado el día 15/02/2013
de http://todoelectrodo.blogspot.mx/2013/02/pic-18f4550.html.
3. Scientia et Technica (2017). GENERACIÓN DE SEÑALES SENOIDALES
MEDIANTE PWM Y FILTROS ACTIVOS DE SEGUNDO ORDEN.
Recuperado el día 17/04/11 de 551-331-1-PB.pdf
Anexos y Apéndices.

PIC 18F4550.

PIC 18F4550 en Proteus 8.


Mikro C pro for Pic.

PICkit 2.

PICkit 2.
Tarjeta Miuva.

Código empleado en la practica 3.

Ejercicio 1.

int duty=0;

int maximo=255;

void main() {

ADCON1 =0x0f;

CMCON=0x07;

TRISB=0x00;

LATB=0x00;

PWM1_Init(500);

PWM1_Start();
while(1){

duty++;

if(duty>=maximo)duty=0;

PWM1_Set_Duty(duty);

Delay_ms(15); }}

Ejercicio 2.

int duty=0;

int maximo=255;

int piv=0;

void main() {

ADCON1 =0x0f;

CMCON=0x07;

TRISB=0x00;

LATB=0x00;

PWM1_Init(500);

PWM1_Start();

while(1){

if(piv==0)

duty++;

else duty--;

if(duty>=maximo)piv=1;

if(duty<=0)piv=0;

PWM1_Set_Duty(duty);
Delay_ms(15);

Ejercicio 3

int duty=0;

int maximo=255;

void main() {

ADCON1 =0x0f;

CMCON=0x07;

TRISB=0x00;

LATB=0x00;

Trisa.f0=1;

PWM1_Init(500);

PWM1_Start();

while(1){

if(Button(&PORTA,0,20,1)){

duty++;

if(duty>=maximo)duty=0;

}else{

duty--;
if(duty<=0)duty=maximo;

PWM1_Set_Duty(duty);

Delay_ms(15);

También podría gustarte