Descrevemos neste artigo, baseado em documentação da Texas Instruments, como implementar um controle de motor de passo bipolar usando o MSP430F123 além de dois drives de potência UC371A. No site da Revista Saber Eletrônica o leitor encontrará o código fonte para este projeto. Informações adicionais sobre esse projeto podem ser obtidas no Application Report SLAA223 no site da Texas Instruments (www.ti.com).
Motores de passo são empregados numa grande quantidade de equipamentos de consumo, uso industrial, e automotivo. Esses motores operam pela aplicação de sinais de modo seqüencial em bobinas que formam um estator.
Existem diversas tecnologias de construção para os motores de passo, amplamente abordadas em artigos neste site, tais como relutância variável, imã permanente ou híbrida.
A maior vantagem no uso desses motores está no fato de que ele pode ser posicionado de forma precisa pelo controle dos sinais aplicados em sua bobina.
No entanto, dependem do da aplicação, os circuitos de acionamento devem empregar diferentes métodos de controle.
Assim, baseados no fato de que a resistência interna dos enrolamentos são projetadas para a máxima corrente sob uma determina tensão, e o máximo torque é obtido quando essa corrente máxima flui pelos enrolamentos, podemos elaborar um controle considerando ainda algumas características adicionais.
Como os enrolamentos consistem em cargas indutivas, na comutação existe um certo tempo de subida para o sinal até atingir a tensão máxima e com isso a corrente máxima não é alcançada instantaneamente.
Uma forma de se obter um torque maior consiste em se aplicar uma tensão maior apenas durante o tempo em que a corrente sobe até atingir o valor máximo especificado pelo menor.
Para fazer isso sem sobreaquecer o motor e sem destruí-lo é usado um circuito comutador que controla a relação entre a corrente no motor em função dos tempos on e off, até que a potência máxima seja conseguida.
O que esse circuito faz é justamente isso, graças ao uso do microcontrolador MSP430.
Implementação
Na figura 1 temos um diagrama de blocos que representa o Controlador de Motor de Passo usando o MSP430.
Apesar de se poder usar qualquer variante do MSP430, o MSP30F123 foi escolhido por possui uma UART para comunicação serial com um PC.
Temos ainda dois circuitos integrados UC3717A para excitar os motores. Cada um desses circuitos integrados contém uma ponte H capaz de excitar um dos enrolamentos do motor bipolar.
Esses integrados possuem ainda um circuito "chopper" capaz de limitar a corrente máxima que circula pelo enrolamento do motor. Os diodos para amortecer os picos indutivos que são gerados na comutação dos enrolamentos também estão integrados nesses CIs.
Na figura 2 temos a foto do protótipo da Texas Instruments.
O diagrama completo desse controlador é mostrado na figura 3 (a) e (b).
Os pinos que correspondem as portas P2.0 - P2.2 e P3.0 - P3.2 no MSP430 proporcionam os sinais de controle para os dois UC3717A. As chaves S1-S4 fornecem as entradas para o MSP430 para controla o motor de passo.
Como alternativa, o motor de passo pode também ser encontrado por um PC. Um cabo serial pode ser conectado em J3. U3 proporciona o interfaceamento RS-232 necessário a essa comunicação.
O cristal de 32 kHz X1 tem por finalidade fornecer o sinal de clock para a UART do MSP430. O conector J4 fornece um meio de se conectar de modo seguro o motor de passo.
O conector J1 proporciona uma conexão JTAG para a ferramenta de emulação Flash do MSP430.
A alimentação do circuito é feita por um adaptador de +12 V, 1,5 A AC/DC. Existe também na placa um suporte para bateria (B1) que permite alimentar o circuito com uma bateria de 9 V.
Reguladores lineares de + 5 V e +3 V são jumpeados em JP3 e JP4 de modo a se poder medir com facilidade a corrente do sistema e a corrente do motor. Pelo jumper JP1 pode-se monitorar com um osciloscópio os sinais de controle do UC3717A.
Os LEDs D1 e D2 são usados para indicar os modos de operação.
Software
A complexidade maior no controle dos motores de passo está justamente na limitação da corrente dos enrolamentos e o U31\717A contém já esses recursos. Assim, a implementação do software de controle é relativamente simples.
Para operação em modo contínuo, o timer A de 16 bits é configurado no modo UP e a máxima contagem é fixada no registrador TACCR0.
Mudando o valor armazenado em TACCR0 modifica-se a taxa de passo. O período do passo é dado por 1/SMCLK vezes o valor armazenado em TACCR0.
Durante a rotina de serviço de interrupção do timer A0 (ISR), uma tabela de estado é consultada para se verificar qual será o próximo estado dos 6 pinos de saída que controlam os dois UC3717A.
Os pinos são então atualizados e o índice da tabela de estado incrementado. Tabelas diferentes de estado são usadas dependendo do sentido que o motor deve girar e o modo de operação (passo completo ou meio passo).
Na figura 4 temos a seqüência de sinais utilizados pelo controle.
As chaves de S1 a S4 são usadas para controlar a operação do motor. Dependendo da chave que for pressionado a rotina de serviço de interrupção da porta 1 I(ISR) é executada. A porta 1 ISR desabilita as interrupções e habilita as interrupções do timer watchdog (WDT).
Quando habilitado o WDT ISR e executado a cada 2 milissegundos.
Cada vez que isso ocorre, ele verifica o estado das chaves. Se as chaves S1, S3 ou S4 estiverem acionados, uma contagem de 5 interrupções consecutivas é realizada para efeito de anti-repique ou 10 milissegundos e então a operação correspondente à chave acionada é executada.
A chave S2 opera de um modo um pouco diferente. Se S2 for acionada por mais de 10 milissegundos e menos de 1 segundo então o motor comuta do modo contínuo para o modo de passo.
Mantendo S2 fechada por mais de 1 segundo, temos a mudança entre os estados de passo completo e meio passo.
A porta serial de um PC também pode ser usada para controlar o motor de passo. Recebendo um caractere a UART RX ISR entra em funcionamento.
Se um caractere que se casa com a programação for recebido, então a operação correspondente a ele é executada.
No final, a UART RX ISR transmite de volta para o PC o caractere recebido. Isso proporciona o feedback necessário para que o operador saiba que o comando foi executado.