22 de out de 2011

Controle de Servomotores

Olá, hoje vamos conhecer mais um componente interessante e muito utilizado na eletrônica e sistemas de controle, chamado Servomotor.




Servomotores são dispositivos eletromecânicos em que seu eixo se desloca em um movimento máximo de 180°, operando em malha fechada, ou seja, recebe um sinal de controle que indica a posição desejada e atua no eixo principal até que a posição informada seja alcançada, mantendo-se nesta posição até que o sinal de controle se altere novamente, caso seu curso seja alterado mecanicamente o sistema de malha fechada garante seu retorno a posição estabelecida pelo sinal de controle.
O controle de servomotores é feito através do sistema PPM (Modulação por posição de pulso), ou seja, deve se garantir um pulso que vária entre 1 e 2 milissegundos (podendo variar de fabricante para fabricante) repetindo se a cada 20ms, sendo que:


  •  1 ms       Corresponde à posição do braço do servo todo a esquerda ou 0º 
  •  1,5 ms    É o que chamamos de posição central do servo ou 90º
  •   2ms       Corresponde à posição do braço do servo todo a direita ou 180º

Este sinal pode ser gerado facilmente através do emprego de microcontroladores, e é isto que vamos ver neste post, como implementar o controle de servomotores com o microcontrolador PIC18F4550.



Interfaceamento com o microcontrolador:



Para que seja criado o sinal de controle dos servos, que por padrão tem uma frequência de 50Hz, poderíamos utilizar um dos 2 módulos PWM internos do PIC, porém como a frequência do PWM é muito baixa(50Hz), teríamos que alterar nosso clock principal para aproximadamente 500KHz para que o módulo interno de PWM conseguisse atingir a frequência desejada, o que reduziria drasticamente o desempenho do resto do programa, ou seja seria muito pouco eficaz, outra maneira de se gerar este pulso é utilizando o TMR0 para criar este PWM, este TMR é ajustado para estourar a cada 100us incrementando uma variável intitulada Top_Value, e a cada estouro é feita a comparação desta variável às variáveis de controle de canal, por exemplo, Top_Value1, neste caso referenciada ao sinal de controle do servo 1, conectado ao pino PORTC1, a quantidade de servos que pode ser controlada depende apenas da quantidade de pinos de I/O disponíveis.



 
Pinagem:


Cada fabricante possui seu padrão de pinagem, abaixo podemos observar alguns dos mais comuns encontrados no mercado, neste exemplo estamos utilizando o servo da marca Tower Pro, modelo 9G que segue o mesmo padrão da JR.



 
Como pode ver, o controle de servos é uma tarefa simples e que trás muitas vantagens, pois nos abre a possibilidade de criarmos movimentos com certa precisão e torque razoável, dependendo da marca e modelo escolhido. 




O projeto foi baseado na idéia de Ronald Willem Besinga.


 Grande abraço e bons projetos!

Nenhum comentário:

Postar um comentário