Ed
há 2 anos
Para variar o Duty Cycle do PWM de cada uma das larguras de pulso, é necessário utilizar a função PWM do microcontrolador. O trecho do programa pode variar de acordo com o modelo do microcontrolador utilizado. Segue um exemplo de código em linguagem C para variar o Duty Cycle do PWM em 25%, 50%, 75% e 100%: ``` #include #include int main(void) { // Configuração do PWM TCCR1A |= (1 << COM1A1) | (1 << WGM11); // Configuração do modo PWM TCCR1B |= (1 << WGM13) | (1 << WGM12) | (1 << CS11); // Configuração do prescaler OCR1A = 0; // Inicializa o Duty Cycle em 0% while (1) { OCR1A = 64; // Duty Cycle em 25% _delay_ms(1000); OCR1A = 128; // Duty Cycle em 50% _delay_ms(1000); OCR1A = 192; // Duty Cycle em 75% _delay_ms(1000); OCR1A = 255; // Duty Cycle em 100% _delay_ms(1000); } return 0; } ``` Esse código utiliza o Timer/Counter1 do microcontrolador para gerar o sinal PWM. O prescaler é configurado para dividir o clock do microcontrolador por 8, o que resulta em uma frequência de PWM de 976,6 Hz (16 MHz / 8 / 256). O Duty Cycle é variado alterando o valor do registrador OCR1A, que controla a largura do pulso do sinal PWM. Um exemplo de aplicação do PWM é o controle de velocidade de um motor DC. O Duty Cycle do PWM é proporcional à velocidade do motor, ou seja, quanto maior o Duty Cycle, maior a velocidade do motor. O Prescaler é um divisor de frequência que é utilizado para reduzir a frequência do clock do microcontrolador. Isso é útil em aplicações que exigem uma frequência menor do que a frequência do clock do microcontrolador. A escolha do valor do prescaler depende da aplicação e da frequência desejada. Quanto maior o valor do prescaler, menor será a frequência do clock e menor será a frequência do PWM.
Mais perguntas desse material