Está en la página 1de 5

PWM EN

introduccin

MSP430G2553

Modulacin por ancho de pulso (PWM) Modulacin por ancho de pulso (PWM) (pulse width modulation) de una seal o fuente de energa es una tcnica en la que se modifica el ciclo de trabajo (D) de una seal peridica (una sinusoidal o cuadrada), ya sea para transmitir informacin a travs de un canal de comunicaciones o para controlar la cantidad de energa que se enva a una carga.

El ciclo de trabajo de una seal peridica es el ancho relativo de su parte positiva en relacin con el perodo. Expresado matemticamente: D: es el ciclo de trabajo. : es el tiempo en que la funcin es positiva (ancho del pulso). T: es el perodo de la funcin.

La construccin tpica 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 seal moduladora. En la salida la frecuencia es generalmente igual a la de la seal dientes de sierra, y el ciclo de trabajo est en funcin de la portadora. Algunos parmetros importantes de un PWM son: La relacin de amplitudes entre la seal portadora y la moduladora, siendo recomendable que la ltima no supere el valor pico de la portadora y est centrada en el valor medio de sta. La relacin de frecuencias, donde en general se recomienda que la relacin entre la frecuencia de la portadora y la de seal sea de 10 a 1. 1,1

blog.utp.edu.co/.../Modulacin-por-ancho-de-pulso-PWM-y-cambio-de-...

Cmo funciona La funcin PWM requiere de un circuito en el cual hay distintas partes bien diferenciadas entre s. El comparador es lo que se convierte en el nexo, contando con una salida y un total de dos entradas distintas. A la hora de configurarlo tenemos que tener en cuenta que una de las dos entradas se centra en dar espacio a la seal del modulador. Por su lado, la segunda entrada tiene que estar vinculada con un oscilador de tipo de dientes de sierra para que la funcin se pueda llevar a cabo con xito. La seal que proporciona el oscilador con dientes es lo que determina la salida de la frecuencia. Es un sistema que ha dado buenas demostraciones de funcionar, convirtindose en un recurso muy utilizado en cuanto a la disponibilidad de recursos energticos.

Para qu sirve Tenemos que tener en cuenta distintos factores a la hora de hablar de los usos prcticos de la funcin PWM. Con el paso de los aos y desde que la PWM entrara en vigor, las placas madre contaron con sensores de temperatura, consultables desde la bios del equipo. A partir de ese momento se impuso reducir el ruido de la CPU, haciendo que el ordenador reaccionara de distintas maneras en base al contexto. Si por ejemplo, estamos utilizando el equipo con el objetivo de descargar archivos, como demos de videojuegos, realmente el ordenador no necesita una potencia superior a la mnima. En estos casos la CPU no se calienta, no necesita el ventilador y se debe evitar gastar energa de forma innecesaria. Cuando montamos un ordenador que deba poder ofrecer un rendimiento de primer nivel, pensamos en incluir la mayor potencia de ventilacin, para que en situaciones crticas estos ventiladores puedan funcionar a toda mquina con el objetivo de evitar problemas en el equipo. Pero esta configuracin se desaprovecha en momentos como en el ejemplo citado de la descarga de archivos. En estas situaciones no es necesario que el ventilador gire a toda velocidad, sino que se puede mantener en los niveles mnimos. La funcin PWM es una manera de regularlo. Para perfeccionar esto se le aadi un cable adicional que manda una seal de la velocidad a la que est funcionando el ventilador. La placa base se encarga de regular la velocidad a la que debe ir el ventilador en cada momento. Si el equipo se calienta mucho, le dice con una seal que debe trabajar ms. Para ello hay que configurar el ordenador desde la bios siempre pensando en obtener los menores ndices de ruido.2, 2

Para que la funcin PWM tenga ms sentido y sea ms completa, existen accesorios que se encargan de llevar esa seal a otros ventiladores que tambin se puedan beneficiar de ella. El objetivo comn es mejorar lo mximo posible el rendimiento de estos equipos.

http://www.ibertronica.es/blog/refrigeracion/funcion-pwm/

PWM EN

MSP430G2553

Ver ficha tcnica del chip que est utilizando. Lea el perifrico: Seccin Timer_A3 (TA0, TA1) bajo ShortForm Descripcin. Es mucho ms til para aprender a leer la ficha tcnica y otros documentos a continuacin, hacer preguntas especficas de uno en uno. // El siguiente cdigo con errores
#include <msp430g2553.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; P1DIR |= 0x0C; output P1SEL |= 0x0C; options P2DIR |= 0x02; P2SEL |= 0x02; CCR0 = 1000-1; CCTL1 = OUTMOD_7; CCTL2 = OUTMOD_7; CCR1 = 10; CCR2 = 500; TACTL = TASSEL_2 + MC_1;

// Stop WDT // P1.2/TA0.1 and P1.3 // P1.2 and P1.3 TA1/2 // P2.1/TA1.1 output // P2.1 options // PWM Period // CCR1 reset/set // CCR1 reset/set // CCR1 PWM duty cycle // SMCLK, up mode

_BIS_SR(CPUOFF); // Enter LPM0 } However this did not generate a PWM signal on P2.1. Am I missing something? Thank you.

El cdigo correcto es:


#include <msp430.h> unsigned int value=0; int _system_pre_init(void) { /* Insert your low-level initializations here */ /* Disable Watchdog timer to prevent reset during */ /* long variable initialization sequences. */ WDTCTL = WDTPW | WDTHOLD; /*==================================*/ /* Choose if segment initialization */ /* should be done or not. */ /* Return: 0 to omit initialization */ /* 1 to run initialization */ /*==================================*/ return 1; } int main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 = CALBC1_16MHZ; // Set range (CALBC1_1MHZ) DCOCTL = CALDCO_16MHZ; //(CALDCO_1MHZ) SMLK set to 150KHz? BCSCTL2 &= ~(DIVS_3); // SMCLK = DCO = 1MHz P1SEL |= BIT5; //ADC Input pin P1.5 /* Configure ADC Channel */ ADC10CTL1 = INCH_5 + ADC10DIV_3 ; // Channel 5, ADC10CLK/4 ADC10CTL0 = SREF_0 + ADC10SHT_3 + ADC10ON + ADC10IE; //Vcc & Vss as reference ADC10AE0 |= BIT5; //P1.5 ADC option __enable_interrupt(); // Enable interrupts. //TA0CCTL1 = OUTMOD_0 + OUT; P1DIR |= 0x0C; // P1.2 and P1.3 output P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options P2DIR |= 0x0C; P2SEL |= 0x0C; TA0CCR0 =160-1; // PWM Period/2 TA0CCR1 = 79-1; // CCR1 PWM duty cycle //TA0CCR2 = 120-1; TA0CCTL1 = OUTMOD_6; // CCR1 toggle/set TA0CTL = TASSEL_2 + MC_3 + TACLR + ID_0; // SMCLK, up-down mode TA1CCR0 = 160-1; // PWM Period/2 TA1CCR1 = 81-1; // CCR1 PWM duty cycle //TA1CCR2 = 120-1; TA1CCTL1 = OUTMOD_2; // CCR1 toggle/set TA1CTL = TASSEL_2 + MC_3 + TACLR + ID_0; // SMCLK, up-down mode while(1) { __delay_cycles(1000); // Wait for ADC Ref to settle ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start __bis_SR_register(CPUOFF + GIE); // LPM0 with interrupts enabled value = ADC10MEM; } } // ADC10 interrupt service routine #pragma vector=ADC10_VECTOR __interrupt void ADC10_ISR (void) { __bic_SR_register_on_exit(CPUOFF); // Return to active mode }

Fuente
1

blog.utp.edu.co/.../Modulacin-por-ancho-de-pulso-PWM-y-cambio-de-... http://www.ibertronica.es/blog/refrigeracion/funcion-pwm/