Вы находитесь на странице: 1из 8

UNIVERSIDAD TCNICA DEL NORTE

FACULTAD DE INGENIERA EN CIENCIAS APLICADAS

CIERCOM

SISTEMAS MICROPROCESADOS

CARTAGENA EDUARDO 2013/07/12

I.

TEMA Modulacin por ancho de pulso PWM

II.

OBJETIVOS GENERAL

Comprender el funcionamiento de un sistema PWM utilizando el micro controlador Atmega 164 ESPECIFICOS Realizar un programa en CODEVISION AVR mediante el cual podamos visualizar diferentes ondas diferenciando el ancho de pulso que estas poseen Comprender el funcionamiento y la programacin en el micro del sistema PWM

Determinar si la teora satisface a la prctica mediante la conexin de los elementos electrnicos que se utilizaran para el funcionamiento del circuito. Utilizar programa software Proteus para comprobar de una manera ms detallada el funcionamiento del circuito. Aprender un poco ms de la materia, de una forma ms didctica a travs de la realizacin de prcticas en las cuales podamos comprender la parte terica de una mejor manera.

Obtener las conclusiones.

III.

MARCO TERICO

MODULACIN POR ANCHO DE PULSO PWM La modulacin por ancho de pulso, transforma un seal en un tren de pulsos con dos posibles valores de amplitud, cero o un nivel de tensin definido. La modulacin se realiza mediante la variacin del ciclo de trabajo para un periodo constante. Este tipo de modulacin es muy utilizada en el control de la velocidad de motores DC, aunque tambin cuenta con otras utilidades como el control de intensidad de luz de dispositivos como los LEDs, transmisin de informacin entre otras.

La tcnica de PWM de seal cuadrada, bsicamente genera una seal de tipo cuadrada de frecuencia fija, a la cual se le vara el ancho de pulso de nivel positivo, es decir se vara el tiempo en alto de la seal y por ende cambia su ciclo de trabajo. De esta manera se logra controlar la velocidad de giro del motor. Una de las ventajas de utilizar esta tcnica para el control de la velocidad de un motor DC es que el motor no pierde sus propiedades de par y velocidad FORMULAS TIMER 0 Duty cycle (ciclo til del reloj) DC= N*(0CR0A+1)/F_CPC(frecuencia del CPU) PERIODO= (N*256/F_CPU) DUTY CYCLE = ((OCROA+1)/256)*100%

TIMERS DE 16 BITS (T1,T3) TOP= F_CPU/2N(50) PERIODO= (N*TOPE)/F_CPU Duty cycle= (N* OCR1A)/F_CPU OCR1AH = 8BITS OCR1AL = 8BITS

Seal PWM para diferentes ciclos de trabajo

IV.

DESARROLLO

#include <mega164a.h> // Declare your global variables here void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsizeCLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif PORTA=0x00; DDRA=0x00; PORTB=0x00; DDRB=0x00; PORTC=0x00; DDRC=0x00; DDRD=0x20; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; TCCR1A=0x82; TCCR1B=0x1A; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00;

OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; ASSR=0x00; TCCR2A=0x00; TCCR2B=0x00; TCNT2=0x00; OCR2A=0x00; OCR2B=0x00; EICRA=0x00; EIMSK=0x00; PCICR=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00; // Timer/Counter 1 Interrupt(s) initialization TIMSK1=0x00; // Timer/Counter 2 Interrupt(s) initialization TIMSK2=0x00; UCSR0B=0x00; UCSR1B=0x00; ACSR=0x80; ADCSRB=0x00; DIDR1=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; while (1) { ICR1H=0b10011100; ICR1L=0b001000000;

// el valor tope de conteo nivel alto // el valor tope de conteo nivel bajo

switch( PINA)

{ case 0: OCR1AH=0b00000000; OCR1AL=0b00000000; break; case 1: OCR1AH=0b00010011; OCR1AL=0b10001000; break; case 2: OCR1AH=0b00100111; OCR1AL=0b00010000; break; case 3: OCR1AH=0b00111010; OCR1AL=0b10011000; break; case 4: //10000= 10011100010000 //registro temporal de 8 bits para almacenar el byte alto //registro temporal de 8 bits para almacenar el byte alto //registro temporal de 8 bits para almacenar el byte alto //registro temporal de 8 bits para almacenar el byte bajo

//5000= 1001110001000 //registro temporal de 8 bits para almacenar el byte alto //registro temporal de 8 bits para almacenar el byte alto

//15000= 11101010011000 //registro temporal de 8 bits para almacenar el byte alto //registro temporal de 8 bits para almacenar el byte alto

//20000= 100111000100000 OCR1AH=0b010011101; //registro temporal de 8 bits para almacenar el byte alto OCR1AL=0b00100000; //registro temporal de 8 bits para almacenar el byte alto break; case 5: //25 000= 110000110101000 OCR1AH=0b011000011; //registro temporal de 8 bits para almacenar el byte alto OCR1AL=0b10101000; //registro temporal de 8 bits para almacenar el byte alto break; case 6: //30 000= 111010100110000 OCR1AH=0b01110101; //registro temporal de 8 bits para almacenar el byte alto OCR1AL=0b00110000; //registro temporal de 8 bits para almacenar el byte alto break; case 7: OCR1AH=0b10001000 OCR1AL=0b10111000; break; } } } //35 000= 1000100010111000 //registro temporal de 8 bits para almacenar el byte alto //registro temporal de 8 bits para almacenar el byte alto

V.

DIAGRAMAS CIRCUITALES

VI.

CONCLUSIONES

Verificamos el correcto funcionamiento de la modulacin por ancho de pulso Se pudo entender la manera de utilizar los PWM y comprobar su funcionamiento Gracias al programa PROTEUS se pudo comprobar el buen funcionamiento del circuito. Este tipo de modulacin es muy utilizada en el control de la velocidad de motores DC, aunque tambin cuenta con otras utilidades como el control de intensidad de luz de dispositivos como los LEDs, transmisin de informacin entre otras.

Вам также может понравиться