Limitação dos pinos digitais: Como supera-la
Até agora vimos como acionar motores usando 4 saídas digitais para cada motor unipolar. Isso traz um problema, que é o número de saídas digitais limitadas do Arduino Uno.
Usando 4 saídas digitais para controle de cada motor, e mais duas entradas digitais para indicar a direção. Temos 6 pinos digitais por motor, e o Arduino tem 14 pinos digitais, que podem ser configurados como saída, e mais 6 pinos analógicos, que também podem ser configurados como saída digital, totalizando assim; 20 pinos digitais.
Como uma fresadora CNC tem pelo menos 3 motores, os eixos X, Y, Z e pode ter eventualmente um quarto motor para girar a peça obra. Só a configuração mínima consumiria 18 pinos digitais. Teoricamente ainda sobrariam 2 para outras funções eventuais de uma CNC; como ligar a ferramenta, ou a refrigeração.
Mas isso é na teoria, na prática é mais difícil, pois parâmetros da CNC tem que ser exibidos em algum lugar, e para isso é necessário usar o comando: Serial.print(valor,formato). E quando esse comando é usado os pinos digitais 0 e 1 não podem ser usados como entrada e saída de dados. Então na prática temos só 18 pinos digitais, ou seja 3 motores unipolares e olhe lá.
O jeito é usar uma técnica de lógica digital, chamada; - decodificador. Construiremos um decodificador que transformará dois sinais digitais combinados em 4 sinais digitais em uma ordem pré-determinada.
Por exemplo;
Pino 8 (Low) e Pino 9 (High) => Decodificador => Saída 1(High), Saída 2(Low), Saída 3(Low) e Saída 4(Low)
Pino 8 (High) e Pino 9 (High) => Decodificador => Saída 1(Low), Saída 2(High), Saída 3(Low) e Saída 4(Low)
Pino 8 (High) e Pino 9 (Low) => Decodificador => Saída 1(Low), Saída 2(Low), Saída 3(High) e Saída 4(Low)
Pino 8 (Low) e Pino 9 (Low) => Decodificador => Saída 1(Low), Saída 2(Low), Saída 3(Low) e Saída 4(High)
Decodificador; vamos a ele.
O decodificador consiste na combinação de portas [E] (And) e portas [Não] (Not), de maneira tal que um circuito integrado com 6 portas [E], o 74HC08 tenha as saídas de pelo menos 4 portas, como a tabela mostrada acima.
As entradas em cada porta [E] serão ajustadas por portas [Não] constantes de um circuito integrado 74HC04, afim de produzir entradas adequadas a cada porta [E] usada.
Daqui para a frente é melhor ver o circuito para cada passo do motor.
Observe que os sinais altos enviados pelo Arduino chegam a 4 portas [E] do 74HC08, sendo que alguns são tratados pelas portas [Não] do 74HC04, produzindo a sequência adequada de saídas para o ULN2803 acionar o motor de passo.
Nesta montagem os LEDs vermelhos mostram as bobinas, e consequentemente, os passos acionados, indicam a velocidade do motor, e o sentido de rotação. Os LEDs verdes indicam o sentido comandado pelos botões. Naturalmente, esses LEDs são dispensáveis para o funcionamento do motor, só servem para indicação.
Observe que foram usados para acionamento e controle do motor apenas 4 sinais digitais, dois de entrada e dois de saída, e um sinal analógico para controle de velocidade. Neste caso o sinal analógico foi provido por um potenciômetro de 10 KOhm.
Para ligar outros motores basta montar o mesmo circuito usando outras portas digitais e analógica.





Nenhum comentário:
Postar um comentário