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.
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.
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:
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