Descrevemos, neste artigo, como implementar um controle para motor de passo usando o microcontrolador 68HC908GP32 da Motorola.

 

O CIRCUITO

A figura 1 mostra o diagrama esquemático do controle para motor de passo baseado no microcontrolador MC68HC908GP32, da Motorola. Este circuito permite controlar a velocidade e o sentido de rotação do motor.

Para controlar o motor são usadas as seguintes entradas:

PULSO: Controla a velocidade. Para cada pulso recebido, o motor dá um passo.

ENDEREÇO: Seleciona o sentido de rotação.

HABILITAÇÃO: Habilita a entrada de pulsos no pino PULSO.

Os motores de passo mais comuns são os de 4 fases, monopolares, que podem ser controlados por uma sequência em onda, em potência ou em meio passo. Este circuito usa a sequência em onda (wave).

Para a etapa de potência foi usado o circuito integrado ULN2803, que possui 8 transistores Darlington (50 V/500 mA) com seus respectivos diodos de proteção contra picos de tensão inversa. Para o desenvolvimento deste circuito foram utilizados motores de média potência. Caso sejam empregados motores de maior potência, será necessário mudar a etapa de potência, colocando dispositivos (amplificadores) de acordo com as necessidades.

 


| Clique na imagem para ampliar |

 

 

 

O PROGRAMA

O programa começa configurando: os pinos de entrada/saída, memória RAM, o timer 1, as interrupções e depois entra no bloco principal. A figura 2 exibe o fluxograma para o controle do motor de passo.

 


| Clique na imagem para ampliar |

 

 

Quando se entra no bloco principal, o programa testa a linha do sinal HABILITAÇÃO. Caso ela se encontre no nível alto, o programa não testa os pulsos recebidos, e sim o pino PULSO. Se ela se encontra no nível baixo, então o programa testa os pulsos recebidos no pino PULSO.

Com o pino PULSO no nível baixo, o programa entra na rotina rotation, onde é testada a linha ENDEREÇO para conhecer o sentido de rotação selecionado. Dependendo do sentido de giro, a variável ponteiro pTable, que controla o acesso à tabela de dados constante é incrementada ou decrementada.

Observe que, quando o ponteiro pTable é incrementado, o programa testa se chegou a 4, ou seja, a última linha constante da tabela mais uma. Se o ponteiro chegou a 4, o programa o recarrega com zero (0). Este mesmo teste é realizado quando o motor gira em sentido contrário. Nesse caso, se testa quando chegou a FFH, ou seja, O menos 1. Caso o ponteiro seja igual a FFH, se recarrega com 3. Assim é controlada a sequência de giro (direita ou esquerda) no motor.

A figura 3 ilustra as sequências mais usadas no manuseio de motores de passo. A tabela 1 (fig. 3) mostra a sequência por onda (wave), empregada neste programa. Esta sequência vai ativando cada bobina em forma sequência. A tabela 2 (fig. 3) mostra a sequência de potência, a qual é utilizada quando se necessita de mais Iorque no motor. Esta sequência ativa duas bobinas ao mesmo tempo, em forma sequencial. Caso seja necessário mudar a sequência do motor, basta muda os dados na tabela Table. Existe uma terceira sequência chamada de "meio passo", a qual permite duplicar a quantidade de passos do motor.

Para acessar tabelas de constantes, como a usada neste programa, a família de microcontroladores 68HC908 possui um registro chamado X. Este registro de 8 bits serve como um offset de deslocamento, quando se executa a instrução de busca na tabela. As seguintes linhas de código executam esta tarefa:

 


| Clique na imagem para ampliar |

 

 

Note que no código anterior é carregado primeiramente o registro X com a variável ponteiro pTable. Depois é executada a instrução LDA Table, X onde se acessa o dado (byte) da tabela etiquetada como Table, mais, o offset (pTable) previamente armazenado no registro X. Assim incrementando ou decrementando a variável usada como offset (pTable) se consegue acessar a tabela e gerar as sequências respectivas para controlar o motor de passo. Este mesmo procedimento é empregado numa grande variedade de aplicações com microcontroladores.

As linhas seguintes de código mostram a tabela de constantes com seus respectivos dados:

Table:

DB $01H

DB $02H

DB $04H

DB $08H

 


 

 

O código pode ser baixado do site: www.sabereletronica.com.br

O arquivo incluído no código para os microcontroladores 68HC908GP $1nclude 'gpgtregs.inc' pode ser baixado do site: www.pemicro.com/ics08/index.html

 


| Clique na imagem para ampliar |