Controle PWM com PIC

Na edição passada, o leitor conheceu o assemblador da Microchip (http://www.microchip.com) e também demonstramos como construir um pequeno gravador experimental para o PIC 16F84. Nesta edição, veremos o "clock" do PIC, seu "reset" e seu "ser de instruções. Como exemplo prático faremos um controle "PWM" para motores DC.

 


| Clique na imagem para ampliar |

 

 

Nota: O artigo é de 2003

 

 

O OSCILADOR DO PIC

O oscilador ou "clock" do PIC16F84 pode ser configurado de quatro maneiras distintas, dependendo do uso. Esta configuração é feita via "software" e é aceita pelo microcontrolador durante sua gravação. O "clock" determinará a velocidade de operação do microcontrolador. Atualmente, o PIC16F84 é distribuído com "clock’s" de 4 MHz,10 MHz e 20 MHz. Devemos escolher a frequência máxima de operação do microcontrolador de acordo com as tarefas que o mesmo irá executar. Na grande maioria dos projetos a versão de 4 MHz é suficiente. A figura 1 mostra os modos possíveis de oscilação.

 


| Clique na imagem para ampliar |

 

 

- Oscilador RC — O microcontrolador PIC pode oscilar com o uso de uma rede RC. Nesta configuração, a velocidade de operação do PIC não é grande e também não é muito precisa, mas para executar tarefas que não envolvam precisão de "clock" e não necessitem de grande velocidade de operação, esta opção é a mais simples e pode ser utilizada.

- Oscilador LP — Esta opção permite ao PIC utilizar um cristal de baixa potência. Sua operação e configuração são iguais ao modo XT.

- Oscilador XT — Nesta opção, o PIC utiliza um cristal comum para realizar seu "clock". Esta configuração é a mais empregada, sendo necessário apenas um cristal e dois capacitores cerâmicos ligados ao PIC.

- Oscilador HS — A configuração HS deve ser utilizada com cristais ou ressonadores de alta frequência. Geralmente, "clock’s" maiores que 8 MHz utilizam esta configuração.

- Oscilador externo — Também podemos utilizar um oscilador externo. Neste caso, o sinal de "clock" é inserido no pino OSC1/CLKIN. O pino OSC2/CLKOUT deve ficar aberto (sem conexão).

Na tabela 1 temos um demonstrativo das frequências de "clock" alcançadas para as configurações LP/XT/HS. Vale salientar que o PIC divide o "clock" internamente por 4. Por exemplo, com um cristal de 4 MHz o PIC terá um tempo de 1 microssegundo para cada ciclo de máquina. Apesar desta divisão, a velocidade ainda é muito grande se comparada a outros microcontroladores, pois a maioria das instruções consome apenas um ciclo de máquina.

 


| Clique na imagem para ampliar |

 

 

RESET

O PIC possui internamente circuitos que controlam o que chamamos de "Power-on reset". Basicamente, isso significa que o microcontrolador necessita de poucos (ou nenhum) componentes externos para realizar o "startup". Sempre que ligarmos um circuito com o PIC, ele aguardará que a tensão se estabilize para iniciar qualquer processamento. Isso evita que o microcontrolador trave logo no início e também economiza espaço no PCB (placa).

O leitor necessita apenas de um único componente para realizar o "reset" do microcontrolador durante o "startup": um resistor de 330 ohms ligado ao VCC. O leitor poderá também inserir uma chave para "reset" manual no PIC, ligada ao "terra". Veja a figura 2.

 


 

 

Agora que o leitor conhece o "clock" e também o "reset" do PIC, poderá entender melhor os circuitos apresentados até aqui em nossa série. Note a simplicidade do circuito da figura 3. Ele utiliza pouquíssimos componentes: um cristal de 4MHz, dois capacitores cerâmicos de 33pF e um resistor de 330 ohms. Esta configuração será adotada na maioria dos nossos exercícios.


 

 

 

ALIMENTAÇÃO

A alimentação do PIC pode ser feita com voltagens de 2 volts a 5 volts. Podemos adotar o padrão TTL para circuitos fixos (alimentação com fontes) com a alimentação variando de +1- 10% de 5 volts.

As tensões de 2,0 volts a 3,0 volts (2 pilhas) são utilizadas em equipamentos portáteis de baixo consumo, porém o "clock" do PIC não deverá ultrapassar 100 kHz para melhorar o consumo, que será da ordem de 20 µA. No caso da necessidade de um "clock" maior como, por exemplo, 4 MHz, o uso de baterias recarregáveis é recomendável.

 

SET DE INSTRUÇÕES

O set de instruções do PIC é pequeno, mas muito poderoso. Ele é composto por 35 instruções. Estas são comuns na família Microchip, o que permite uma fácil adaptação para outros microcontroladores PIC. Os "opcode's" são formados por 14 bits, o que permite ao microcontrolador ler em um único ciclo de máquina a maioria das instruções de programa, permitindo um aumento significativo na velocidade de processamento e também na redução do espaço de memória a ser utilizado pelo programa. Na tabela 2 temos o "set" de instruções, devidamente comentado.

 


| Clique na imagem para ampliar |

 

 

Para um melhor entendimento da tabela, utilize a seguinte notação:

- (f) - Endereço do registrador

- (d) - "1" para resultado em (f) ou "0" para resultado em (w)

- (b) - bit a ser modificado

- (k) - valor (1 byte) em binário, octal, hexadecimal ou ASCII

- "C"- bit carry no registro Status

- "Z" — bit zero no registro Status

- "DC" — bit carry/borrow no registro Status

 

OUTROS COMPILADORES

Existem disponíveis no mercado compiladores da linguagem "C" dedicados ao microcontrolador PIC. Alguns são distribuídos na Internet para testes gratuitamente. Caso o leitor queira conhecer um destes, acesse a página da empresa Hi-Tech Soft, http://www.htsoft.com/products/pic/index.html, que oferece o compilador "PICC". Não falaremos agora sobre o uso deste compilador. Deixaremos isso para edições futuras. Porém, o leitor que se sentir mais à vontade com a linguagem "C" poderá realizar seus próprios testes.

 

 

EXEMPLO PRÁTICO

Nesta edição, nosso exemplo prático é a construção de um controle PWM (Pulse Width Modulation), tipo "Controle Polaridade/ Intensidade" no controle de um pequeno motor CC.

Um controle PWM permite variar a velocidade de um motor através de pulsos. O "tempo" deste pulso determinará a velocidade do motor. Quanto maior for a duração de T1 e menor a duração de T2, maior será a velocidade. Quanto menor a duração de T1 e maior a duração de T2, menor será a velocidade. Vale salientar que os pulsos têm sempre o valor máximo da tensão aplicada (menos as quedas no circuito), proporcionando assim alto torque, mesmo em baixas velocidades. Veja a figura 4.

 


| Clique na imagem para ampliar |

 

 

Sendo assim, notamos que este método de controle é o ideal para aplicações de motores CC na tração de pequenos robôs, robôs manipuladores (braços mecânicos), etc.

Nas edições 5 e 6 de Mecatrônica Fácil, o autor Newton C. Braga, descreveu em duas matérias o controle de potência linear e o controle tipo PWM. Acreditamos que uma leitura desses artigos trará mais informações ao leitor, permitindo um maior "aprofundamento" da teoria que aplicaremos aqui, na prática com o microcontrolador PIC.

 

 

CIRCUITO PRÁTICO


| Clique na imagem para ampliar |

 

 

O circuito da figura 5 poderá ser montado em um "pront-o-board" para testes, conforme ilustra a figura 6.


 

 

 


| Clique na imagem para ampliar |

 

 

Reveja atentamente as ligações para evitar danos aos componentes, principalmente ao PIC. O transistor poderá esquentar um pouco, dependendo do motor utilizado. O uso de um "radiador" de calor pode ser necessário nestes casos.

Os botões BT1 e BT2 permitem o controle da velocidade. Ao se pressionar BT1, o motor aumentará de velocidade até seu limite máximo. BT2 permite reduzir esta velocidade. O programa então reduzirá gradativamente a velocidade do motor até o limite mínimo. Os tempos mínimos e máximos para os tempos deste circuito PWM são 10 ms a 70 ms aproximadamente.

A alimentação do circuito deve ser separada. O microcontrolador precisa de 5 volts. Para o motor, a alimentação deve estar de acordo com o tipo utilizado. Lembrando que um circuito PWM, além dos motores, geram interferências magnéticas muito fortes e microcontroladores são sensíveis a estas interferências. Separar a alimentação ajudará a impedir os efeitos destas interferências.

Se preferir, o leitor poderá utilizar também um suporte com 4 pilhas, associado com um diodo retificador, conforme a figura 7 para fazer os 5 volts para a alimentação do PIC. Porém, neste caso será necessário mais um suporte (4 pilhas) para a alimentação do motor. Lembre-se apenas de ligar ambos os fios "pretos" dos suportes ao "pront-o-board".

 


 

 

 


 

 

 

O PROGRAMA

O programa foi desenvolvido em "assembler" e compilado no MPASM Microchip (http://www.microchip.com). Para gravá-lo, o leitor poderá utilizar o projeto do gravador publicado na edição n° 7 de Mecatrônica Fácil ou qualquer outro que disponha, para microcontroladores PIC. Através do set de instruções presentes nesta edição, o leitor poderá estudar e compreender melhor o funcionamento deste programa. O código fonte foi comentado, demonstrando o funcionamento do programa.

 

 

CONCLUSÃO

O microcontrolador PIC 16F84, apesar de "pequeno", demonstra grandes possibilidades. Já podemos controlar cargas como LEDs e agora um pequeno motor. Nas próximas edições veremos mais alguns detalhes deste "pequeno grande notável" e mais circuitos práticos para uso em automação/ mecatrônica. Até lá!

 

 

 

NO YOUTUBE


NOSSO PODCAST