Você está na página 1de 2

Controlador de motor de passo com PIC 12C508 025

C. Tavernier www.tavernier-c.com
Quando no estamos usando um motor de passo para obter um posicionamento preciso de um elemento de um rob, podemos usar este como um motor de trao, em vez dos tradicionais servos modificados. Nesse caso, no h necessidade de contar os passos que o motor d, uma vez que o que queremos que este gire de uma forma contnua numa direo ou em outra. Existem vrias solues para controlar um motor, onde algumas so apresentadas nesta edio: usando um circuito integrado especifico para controle de motores de passo, usando um ou mais sadas de uma porta de um microcontrolador previamente programado, ou construir um circuito de controle baseado em circuito integrados lgicos convencionais. Contudo, estas solues esto longe de ser perfeitas quando se pretende utilizar um motor de passo como motor de trao. Todos eles precisam gerar pulsos de uma forma contnua enquanto quisermos que o motor rode, mesmo que seja necessrio implementar um oscilador programvel, ou usar recursos do microcontrolador principal do rob. Decidimos ento sugerir uma outra soluo para controlar este motor de passo de modo que ele gire numa direo ou em outra, recorrendo a simples sinais lgicos. Como os motores de propulso em robs so usados habitualmente aos pares, vamos disponibilizar um controlador duplo, adaptando um circuito integrado bastante comum de modo a realizar uma outra tarefa diferente. Uma vez que um motor de passo, quando usado para trao, no precisa ser preciso em termos do posicionamento, e tambm no que diz respeito preciso dos passos, os modelos simples com um nico plo so adequados. Assim, o nosso circuito foi projetado para usar este tipo de motores. Isto permite controlarmos o motor atravs de duas entradas lgicas TTL ou CMOS. Quando estas duas entradas (L e R) esto no nvel lgico alto (ou em aberto) o motor
41

fica parado, mas em modo travado, dado que estamos falando de um motor de passo. Quando a entrada L vai para o nvel lgico zero, o motor roda numa direo, enquanto que se a entrada R for para o nvel lgico zero ele roda na outra direo. Se ambas as entradas estiverem no nvel lgico zero, a entrada R tem prioridade, de forma que o motor roda nessa direo. A velocidade de rotao do motor fixa, mas, como estamos fornecendo a listagem com o cdigo fonte do software usado nesta aplicao, muito simples o leitor alterar isto se no estiver ao seu agrado, ou mesmo para incluir a possibilidade de ajuste de velocidade externo, caso seja necessrio. O circuito da parte inteligente do nosso controlador apresentado na Figura 1, e como pode ver este usa um microcontrolador PIC12C508 da Microchip. Neste caso, configurado para usar o gerador de relgio interno e o modo de reset do circuito, no precisando de qualquer componente externo para essas funes, de forma que todas as linhas das portas esto disponveis. As portas paralelas GP2 e GP3 so usadas como entradas, e como GP2 no tem resistncias pull-up internas, isto implementado por R1. As portas paralelas GP0, GP1, GP4 e GP5 so usadas como sadas para gerar os pulsos de controle para o motor. Estes podem ser amplificados por dois tipos de estgios de potncia, dependendo do tipo e do nmero de motores a controlar; daqui a alguns instantes vamos dar uma olhada nesses circuitos. O 12C508 precisa ser alimentado com uma tenso de 5 V, derivada da alimentao do motor atravs de um regulador de trs pinos (IC2). Se o controlador for apenas para um motor, ou se o motor a controlar precisar mais de 500 mA por enrolamento, pode ser usado o estgio de potncia apresentado na Figura 2. Este utiliza transistores bipolares convencionais que, dadas as suas caractersticas, so capazes de comutar correntes at 3 A. Os diodos D1 a D8 limitam os eventuais picos de corrente gerados pela comutao da alimentao dos enrolamentos do motor,

protegendo desse modo os transistores. Contudo, se o motor usado precisar menos de 500 mA, e mais importante, se precisar controlar dois motores deste tipo, existe uma soluo elegante e engenhosa, apresentada na Figura 3. Esta usa um circuito integrado excitador ULN2803, usado geralmente para excitar rels, e que inclui oito transistores Darlington de mdia potncia mais os respectivos diodos de proteo. Assim, este circuito integrado capaz de controlar qualquer tipo de motor passo-a-passo de plo simples, desde que a tenso no exceda os 50 V e a corrente por enrolamento seja inferior a 500 mA. Adicionalmente, como o ULN2803 possui oito estgios idnticos, pode ser usado com dois controladores como o que se pode ver na Figura 1, e, neste caso, controlar dois motores de propulso para rob: um na esquerda e outro na direita, designados por MA e MB na figura. Construir uma ou outra destas verses muito simples. O PIC12C508 precisa ser programado com o arquivo objeto do programa, que voc pode encontrar no site da Elektor, ou ento no site do autor (www.tavernier-c.com). Se voc construir o amplificador de potncia com transistor, tenha em mente que T1-T4 no precisam de dissipador de calor desde que a corrente consumida pelo motor no
1
IC2 7805
C2 47 16V C1 10n C3 220n C4 470 25V

+U

R1 10k

IC1

1 GP0 7 6 GP0 GP1

L R

5 4

GP1 GP2/T0CK GP3/MCLR GP4/OSC2 GP5/OSC1 8

3 2

GP4 GP5

12C508
070302 - 11

+U

3
D8

+U

BD679
R1 GP0 1k

T4

D1 R2 GP1 1k D2

L2 10
D7

L1

MA
O1 18 17 16 15 14 13 12 11 L6 L3 O2 O3 O4 O5 O6 O7 O8

M
L4

BD679

T3

GP0A GP1A
L2 L1

1 2 3 4 5 6 7 8

I1 I2 I3 I4 I5 I6 I7 I8 VEE 9

+U M

GP4A GP5A GP0B GP1B GP4B GP5B

IC1

+U M

D1...D8 = 1N4004

M1
L3

M
L4

ULN2803

D6

L5

BD679
R3 GP4 1k

T2

MB
L7

M
L8

D3 R4 GP5 1k D4

BD679

T1

D5

070302 - 12

070302 - 13

Tabela 1. Programao da durao do passo, atravs da alterao da constante usada no programa. Constante binria de passo
10010010 10010011 10010100 10010101 10010110 10010111

Durao
1 ms 2 ms 4 ms 8 ms 16 ms 32 ms

exceda o 1 A. Caso contrrio, parafuse-os a uma pequena chapa de alumnio com alguns cm2 de rea. Para simplificar

a construo mecnica, esta pode ser comum aos quatro transistores, mas neste caso vai precisar usar uma mica isoladora entre o alumnio e os transistores. Se voc construir a verso baseada no ULN2803, no existem precaues especiais, alm de no exceder a corrente mxima permitida de 500 mA. Como estamos fornecendo a listagem completa do software programado no PIC12C508, o leitor pode efetuar as modificaes que achar necessrias. Se voc no est familiarizado com o assembler do PIC, aqui ficam os detalhes que precisa para a alterao mais importante que possa querer fazer: alterar a velocidade dos pulsos de controle do motor, e assim, alterar a

sua velocidade de rotao. A palavra de controle pode ser encontrada na Tabela 1. Para fazer isto, voc apenas precisa alterar a constante binria na linha: MOVLW B10010101

Mesmo por cima da linha que contm OPTION na listagem do cdigo fonte. Com o valor original, a durao de um passo de 8 ms, mas a tabela acima indica que constante deve usar de acordo com a durao de passo que pretende.
(070302-1) Artigo original: PIC12C508 Stepper Motor Controller July/August 2007

42

Você também pode gostar