Controle de motor de passo com PIC16F628A usando compilador XC8





Um pouco de teoria

Os motores de passo são amplamente difundidos no mundo da eletrônica / mecatrônica / microrobótica. Sua precisão, aliada a sua força (torque) fazem deste motor um excelente “posicionador”. Este tipo de motor está presente em impressoras, pequenos CNC’s, plotter's, impressoras 3D, etc. Além destes os motores de passo também são muito utilizados em pequenos e médios robôs. Alguns dos robôs que publiquei na Revista Mecatrônica Fácil, da saudosa Editora Saber, como o ADR-2ADR-3 e o robô Desenhista,  utilizaram motores de passo para se locomover.

Para operar um motor de passo, é preciso “ligar” e “desligar” suas bobinas em uma sequência correta (chaveamento). A frequência com que estas bobinas são “chaveadas” determinará a velocidade de giro do motor e a sequência de chaveamento o sentido do giro. Veja a tabela abaixo, nela descrevo a sequência para operar um motor de passo de cinco/seis fios (duas bobinas independentes)


Tabela - sequencia de chaveamento

Sequencia de passos - Full Step
1
2
3
4
...1...
Bobina 1
1
1
0
0
1
Bobina 2
0
0
1
1
0
Bobina 3
1
0
0
1
1
Bobina 4
0
1
1
0
0

Os valores iguais a “1” equivalem à bobina ligada e os valores iguais a “0” equivalem à bobina desligada. A analise da tabela é feita do “passo 1” para o “passo 4”. A partir desse ponto a operação é repetida para manter o motor em funcionamento. Lembrando que a maioria dos motores necessitam de um total de "x" passos para uma volta completa, determinados pelo fabricante. Quanto mais passos para uma volta o motor necessitar, mais preciso o mesmo será.

Obs.: Vale salientar que cada passo equivale a um valor em graus. Para saber quantos graus cada passo vale, basta dividir a quantidade total de passos para uma volta completa por 360°. Quanto menor for o resultado, maior a precisão do motor.

Para fazer o motor girar em sentido contrário, basta fazer a analise inversa na tabela. O primeiro passo será o de número “4” e o último o de número “1”. Esta operação é repetida até conseguirmos o número de voltas ou posição desejada.

Infelizmente não existe uma padronização entre os fabricantes de motores de passo que nos permita através de um código de cores identificar as ligações de suas bobinas internamente. Para isso é necessário que, de posse de um multímetro na posição de leitura de resistências, você faça uma analise de seu motor. A figura abaixo demonstra como isso deve ser feito.




Agora que já falamos sobre a teoria, você apenas precisará criar um projeto no MPLABX e adicionar ao mesmo os arquivos do pacote abaixo. O programa foi ricamente comentado para ajudá-lo a compreender o seu "funcionamento".


Configuração da placa e montagem

Para essa experiência você precisará ligar uma placa módulo para controle de motor de passo com driver ULN2003 como a apresentada na figura abaixo. Ela é facilmente encontrada no Mercado Livre e a um preço muito bom (geralmente comercializada com o motor).


Abra o jumper JP1 da placa e mantenha fechados os jumpers JP2 e JP3. Ligue 2 fios tipo jumper entre o +5VDC da placa PE-PIC16F628A e o +5V da placa módulo e o mesmo com relação ao GND. Na placa PE-PIC16F628A o +5VDC e GND para conexões externas estão em JP4 (2 pontos - direita - para +5VDC e 2 pontos - esquerda - para GND).

Obs.: A dica para ligação dos +5VDC na placa só serve se seu módulo/motor for a versão de 5VDC. Se sua versão for a de 12VDC você deverá providenciar uma fonte externa compatível com a tensão e corrente requeridas pelo seu motor.

Conecte, utilizando fios do tipo jumper, os pontos RB4 a IN1, RB5 a IN2,, RB6 a IN3 e RB7 a IN4. Eventualmente você precisará inverter as conexões físicas entre IN2 e IN3, caso o motor insista em girar apenas para um lado ou não girar. Isso é feito nos fios de conexão entre a placa PE-PIC16F628A e a placa módulo.


Funcionamento

Após realizar a gravação você poderá controlador o motor de duas maneiras:
  1. através das chaves S1 e S2;
  2. através de um programa terminal rodando em seu PC.
Mantendo pressionado a chave S1 o motor girará em um sentido (default anti-horário) e ao manter S2 pressionado o motor girará em sentido horário.

Se o caractere "A" for enviado, o motor gira em sentido anti-horário e só para ao receber o caractere "S". Ao receber o caractere "H" o motor gira em sentido horário e só para ao receber o caractere "S" também. Como pode notar, temos na experiência duas maneiras de operar o motor.

Dependendo de como as ligações entre as placas foram feitas os sentidos poderão parecer invertidos. Neste caso você tem duas opções:
  1. inverter os fios de conexão entre as placas;
  2. inverter o sentido de giro no programa.
Divirta-se!!!

Downloads

- Pacote com arquivos para esta experiência.

 



Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.