LusoRobótica - Robótica em Português

Electrónica => Electrónica Geral => Tópico iniciado por: c3dr1c em 12 de Fevereiro de 2013, 22:00

Título: 5 phases - stepper motor driver
Enviado por: c3dr1c em 12 de Fevereiro de 2013, 22:00
Boas pessoal.

Decidi utilizar o meu motor de 5 phases num projecto futuro que tenho idealizado, mas nao encontro nenhum IC por ai à venda para o controlar.

Portanto decidi fazer o meu driver utilizando logica digital mas parece-me que  estou a ir por um caminho que envolve utilizar muitas portas logicas. Alguem me consegue dar uma ajuda para simplificar o circuito ou ir por outro caminho?

O circuito base é este:
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi48.tinypic.com%2F20f6w5x.jpg&hash=c59b89be029d5d87afc2b5bff8aef0f029a435e1)

Portanto preciso de 10 saida digitais do micro, mas como isso é so perder recursos quero reduzir para apenas 2 saidas (CLK, DIR). Então para half-step temos a sequencia na tabela abaixo. Como sao apenas 10 "estados" diferentes podemos simplificar/reduzir as saidas digitais para 4.
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi50.tinypic.com%2Fdwuufc.jpg&hash=ce6bb135885e7d2694a1dc74fb66037dcb37c285)

E aqui está o circuito. Dentro do rectangulo vermelho está a simplificação e dentro do verde um contador de 4 bits com clock sincrono, utilizando flip-flops JK. Mas este contador so conta numa direcção, tenho portanto de alterar o contador para poder inverter a direcção de contagem e criar uma condição para quando for 1001 fazer no "estado" seguinte clear, mas isso faço depois... Agora, será que dá para simplificar o circuito?
Outra coisa que me lembrei, será que devo acrecentar uma porta OR a cada AND de 3 entradas, para igualar os tempos de propagação?
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi50.tinypic.com%2F2w5u42w.png&hash=935ba504565ae1b4e2b544c3c59e2d0dc65c4fcf)

Cumps
Título: Re: 5 phases - stepper motor driver
Enviado por: senso em 12 de Fevereiro de 2013, 23:38
Usa um micro para tratar da lógica.
Título: Re: 5 phases - stepper motor driver
Enviado por: c3dr1c em 13 de Fevereiro de 2013, 23:21
Pois realmente é a melhor solução e aproveito e treino mais um pouco de avr-gcc...

Mas nao sei por onde começar, alguem me da uma dica? Bem tambem ainda nao meti a cabeça a pensar...


Preciso de 3 input's: CLK, DIR, EN
Preciso de 10 output's: A, B, C, D, E, F, G, H, I, e J
Basicamente tenho uma sequência de "ligar/desligar os output's" a cumprir, que tanto pode decorrer em ambos os sentidos. A sequência avança para a "linha de estados" seguinte sempre que o CLK muda do estado 0 para 1. Caso DIR=0 -> CW, caso DIR=1 -> CCW

A minha primeira impressão é criar a sequencia, mas como faço isso? Crio várias linhas em que cada linha liga e desliga os output's? Faço um contador e trabalho a partir dele? Tou mesmo à nora.

Se fosse labview criava um contador decimal de numeros inteiros e sempre que o numero actual do contador for divisivel por 2 liga um output. Assim ja conseguia ligar e desligar o output uma vez sim, outra vez nao, outra vez sim, etc... Basta alterar o numero por qual é divisivel para definir a frequencia com que se liga o output. Mas isto nao é labview :P


Título: Re: 5 phases - stepper motor driver
Enviado por: senso em 13 de Fevereiro de 2013, 23:24
E podes fazer precisamente o mesmo em C.
Ou fazes uma máquina de estados com switch/case, ou com um monte de if's ou arrays a fazer de look up tables.
Título: Re: 5 phases - stepper motor driver
Enviado por: c3dr1c em 16 de Fevereiro de 2013, 14:29
Será algo deste genero o ponto de partida?

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fi50.tinypic.com%2Fivb8s0.png&hash=ad663958f21ffabd15f93d5fe75a17d7a3902104)