terça-feira, outubro 06, 2009

Controlando um Servomotor

Como comentei no meu post anterior, um dos meus projetos para o dia das bruxas envolve controlar um motor. Dois empecilhos me impediam de aventurar a controlar um motor: a falta de conhecimento sobre o assunto e o desconhecimento de onde encontrar um motor apropriado.

Felizmente encontrei os posts abaixo na intenet:

Controlando Motor Servo de Parabólica com Arduino
Servomotores de Posição e Rotação

que me apresentaram o servomotor utilizado para controlar a posição de antenas parabólicas.

Estes servomotores são facilmente encontrados em lojas de antenas, por preços não muito assustadores. Comprei um de marca Motorsat por R$23 no centro de Osasco e um de marca Gardiner por R$22 em Santo Amaro. Os dois tem construção semelhante, as fotos abaixo são do Motorsat (clique para ampliar)t:



O modelo da Gardiner tem a parte das engrenagens fechada e um anel de vedação (O-ring) na parte interna da caixa, o que provavelmente o deixa mais robusto para aplicações ao ar livre (como uma antena).

O objetivo deste servomotor é permitir controlar a posição (ângulo) do disco que está no centro da foto da esquerda (que possui um engate onde provavelmente se encaixa a antena parabólica). Para isto ele tem um controlador (na placa que aparece na parte inferior da foto da direita) que aciona o motor. O motor é conectado ao disco através de um conjunto de engrenagens, para que várias voltas do motor correspondam a um pequeno ângulo do disco; isto permite um ajuste fino da posição e aumenta o torque no disco.

Para determinar a posição do disco, um potenciômetro está preso a ele; cada ângulo vai corresponder a uma certa resistência, que é monitorada pelo controle. Em princípio o servomotor permite uma movimentação de 0 a 180 graus; nos meus testes consegui um pouco mais que isto. O modelo da Gardiner tem algum encosto ou trava mecânica que impede a movimentação fora dos limites, o da Motorsat tende a sair girando quando se tenta posicionar fora dos limites. Nos dois casos é melhor respeitar os limites.

O controle da posição é feito através de um sinal PWM enviado no fio branco. Os fios preto e vermelho correspondem a terra e alimentação. Segundo os posts acima, a alimentação e o sinal devem ser de 5 VDC. O sinal de controle deve ter um pulso a cada 20ms (ou seja, 50 pulsos por segundo). A largura deste pulso (o tempo em que o sinal fica em nível alto) determina a posição do disco.



Infelizmente não encontrei nenhuma documentação dos fabricantes. Os valores que observei nos meus testes divergem ligeiramente dos mencionados nos posts acima: 400 uSeg para 0 graus, 1000 uSeg para 90 graus e 1600 para 180 graus. Os dois motores apresentaram posições ligeiramente diferentes para os os mesmos sinais.

No próximo post vou mostrar o meu circuito e software para teste do sevomotor usando um microcontrolador PIC.

4 comentários:

Daniel Grillo disse...

Você conhece o site http://www.roboticasimples.com/ do Rogério Poças.
Acho que ele pode lhe ajudar.

Abraços

Daniel Quadros disse...

Grillo,

Ainda não examinei o site todo, mas o segundo link no artigo é para ele.

[]

Daniel Grillo disse...

Desculpe Xará! Não havia olhado o link.

Tulio Marco disse...

Parabéns pela orientação sobre o servomotor motor sat.
Foi muito didático e resolveu meu problema para utilizar nos projetos de robótica em nova plataforma.

Visite http://www.roboticatulio.com/

Obrigado.

Tulio Marcos