ivan o segundo motor pode ser desativado,o pot tambem tudo esta no setup .ou seja além de ser divisor ele pode ser considerado como maquina de fazer engrenagem e roda direitinho.
estou usando o pic16f876 com o cristal de 4m vou mudar para o de 20 para aumentar a velocidade dos motores pois achei muito baixa e se os motores perderem o passoai posso alterar a velocidade no setupe ou melhorar a fonte
ontem fazendo testes notei que a rotina de divisão e multiplicação pisou na bola (falhou) e a distribuição de erro não aconteceu corretamente estou estudando o problema parece coisa do compilador ,vou tentar com outro de outra firma para ver se resolve se não vou reescrever a rotina sem usar a divisão do compilador
Algumas sugestões:
- Não fazer cálculos complexos no momento de comandar os motores. Uma vez que os parâmetros foram definidos, os cálculos são feitos logo em seguida, inclusive os de compensação do resto. Na hora de acionar os motores o processameno é restrito ao necessário apenas para a movimentação do motor, no máximo atualizar o display. Usar assembly também é mehor nesse tipo de aplicação, que requer eficiência com os poucos recursos (CPU, memória, ...).
-O fato do motor perder passo, devido a perda de torque, pode ocorrer em decorrência do modo de ligar os diodos de proteção. Se estiverem em paralelo com cada enrolamento, há bastante perda de torque mesmo. Eu liguei em anti-paralelo com os transistores TIP122, para protegê-los apenas (acho que se usar um zener de 80V fica melhor ainda). E o torque em velocidades mais altas melhora sensivelmente, mas como a velocidade me atende, então tá bom... O ideal mesmo é partir para PWM ou algo tipo o Linestepper se a idéia é velocidade alta...
-Ainda sobre a questão do motor perder torque, o divisor de acionamento direto não possui PWM e portanto a velocidade seria baixa mesmo. Mas, se for aumentar muito a velocidade, é melhor acoplar um par L297/L298. Acho que a idéia básica aqui é um divisor conceitualmente simples, acredito que se começar a sofisticar muito, é melhor partir logo para um CNC, que já faz todas as contas em precisão bem elevada (32 ou 64 bits), comanda vários eixos de maneira coordenada, tem chaves de fim de curso, coordenadas on-line, sistema operacional de tempo real (só o RT-Linux!!!), etc.
-Dependendo do método empregado, acho que uma máquina de fazer engrenagens deveria ter 3 e não 2 motores (eixos). Seu fosse me aventurar em fazer tal máquina, pelo menos usaria um PIC bem parrudo em termos de processamento (clock), I/O e memória RAM. Ou até outra arquitetura de processador (ARM, ATMega, ...). Existe um binômio em programação em que: Tempo x Espaço = Constante. Que significa: se voce tem um certo espaço de memória o e um certo tempo necessário de processamento, para diminuir o tempo de processamento da mesma tarefa voce precisará de mais memória. Obviamente, que para um mesmo processador e clock.
-Numa aplicação dessa, onde se espera maior precisão, operação em ambiente "agressivo" (lubrificantes, calor, umidade,...) e repetibilidade, um potenciometro é analógico e sujeito a desgates e erros inclusive na conversão A/D (fonte deve ser +estável,...). É bom destacar que o conversor A/D do PIC requer fontes extremamente estáveis e reguladas. Sugiro usar um knob com encoder, que gera uma quantidade de pulsos previsível por volta e inclusive gera um sinal digital.