O PWM, em palavras simples, altera a tensão de saída em um pino especificado no qual é aplicado, variando o ciclo de trabalho da forma de onda de saída. A frequência e o ciclo de trabalho do sinal PWM podem ser facilmente variados usando temporizadores do microcontrolador 8051. A figura abaixo irá esclarecê-lo sobre os sinais PWM e o ciclo de trabalho. O ciclo de trabalho do sinal original varia no diagrama abaixo.
O que exatamente é o ciclo de trabalho?
Controle de velocidade do motor com microcontrolador 8051 – Requisitos do projeto
- Microcontrolador 8051(89c51 ou 89c52)
- Cristal (11,0592 MHz)
- Capacitores 2 (33pf)
- Botões de pressão 9
- Motor DC – Ventilador (motor de brinquedo pequeno)
- Fonte de alimentação (5v)
- L293D (driver de motor CC)
Agora, como gerar esses atrasos usando temporizadores do microcontrolador 8051(89c51,89c52)? Existem dois temporizadores no microcontrolador 89c51, Timer-0 e Timer-1. Você pode usá-los para fins de atraso ou para contar um evento, etc. Você pode usar esses temporizadores em quatro modos. Estou usando-os no modo de 16 bits. Para saber mais sobre temporizadores, seus modos e inicialização siga o tutorial
- 8051(89c52,89c51) Temporizadores de microcontrole
8051(89c52,89c51) são microcontroladores de 8 bits. Mas você pode usar seus temporizadores como 16 bits. Para carregar valores de 16 bits em temporizadores você usa dois registros THx e TLx associados aos temporizadores. Onde THx representa Timer High Byte e TLx representa Timer Low Byte (Nota x é 0 ou 1 dependendo do timer que você deseja usar). Aqui estou usando o Timer-0, então usarei os registros TH0 e TL0.
Minha base de ciclo de trabalho é 200 us, o que significa que em 100 us o ciclo de trabalho será de 50%. Ciclo de trabalho de 50% significa que os sinais positivos e negativos têm o mesmo comprimento (tempo). Você pode ver duas ondas senoidais (digitais) com ciclos de trabalho de 50% e 75% na figura do lado esquerdo. Observe a diferença entre as duas ondas.
Calculei o atraso para 00, 20 us, 40 us, 100 us, 160 us, 180 us, 500 us, 800 us e 100 us e carreguei os valores obtidos pelo resultado nos registradores TH0 e TL0. As fórmulas para calcular o atraso são fornecidas abaixo com um exemplo.
Você pode calcular valores dos registros TH0 e TL0 para atrasos de 00, 20 us, 40 us, 100 us, 160 us, 180 us, 500 us, 800 us e 100 us usando a fórmula fornecida no lado direito. Calculei os valores usando a mesma fórmula.
O PWM é gerado no pino nº 0 da porta 1. O pino nº 0 da Porta 1 está conectado ao L293D. Para alternar entre diferentes ciclos de trabalho, usei botões de pressão. Cada botão corresponde a PWM de diferentes ciclos de trabalho. Um total de 9 botões são usados no projeto. Oito estão conectados à Porta 2 e o Nono está conectado à Porta 0, pino nº 7. Aplique 5 V nos pinos 40 e 31 do microcontrolador. Pino de aterramento nº 20. Conecte o cristal (11,0592 MHz) aos pinos 18 e 19 do microcontrolador. Conecte os capacitores em paralelo ao cristal. |
Cálculo de atraso para microcontrolador 8051(89c51,89c52).
|
Driver de motor L293d com diagrama de circuito do microcontrolador 89c51
Motorista L293D
- Pinagem e funcionamento do L293D
Na parte do código, incluí primeiro o arquivo de cabeçalho reg51.h. Este arquivo de cabeçalho deve ser incluído em todo código de projeto que será compilado no compilador keil. Alguns bits únicos são inicializados. Esses bits representam botões e pinos de saída Pwm. Na função principal, primeiro cada porta é inicializada como entrada ou saída.
A instrução TMOD=0x01 está inicializando o Timer-0 no modo de 16 bits. Não entendo pegue o tutorial.
- Registros de temporizador do microcontrolador 89c51
A instrução If-else alterna entre diferentes ciclos de trabalho, dependendo do botão pressionado. Em declarações de botão Pwm_B_20=P2^1, 20 representa o ciclo de trabalho correspondente ao botão. Como na declaração Pwm_B_60=P2^4, 60 representa o tempo máximo de 60 us ou ciclo de trabalho de 30%. Atrasos superiores a 200 us significam ciclo de trabalho de 100%.
Desculpe pela má qualidade do vídeo