Bom dia!

Pessoal to com uma dúvida em relação como criar uma rotina de servo motor para o microcontrolador AT89S52, no momento eu sei que tenho que trabalhar com o Timer e utilizarei o MODO 1 com 2 registradores de 8 bits o TH0 E O TL0 utilizando o modo de 16 bits, o calculo de tempo e funcionamento desse registrador eu compreendi. Só que não consigo imaginar como encaixar isso para o servo e não consegui encontrar algo que me auxiliasse nessa dúvida, não quero o código todo mas um help de como desenvolver.

Pois tenho o seguinte projeto simples e existente no mercado, esteira separadora de metais e ametais.

O servo será a pá seletora que no inicio da programação assumirá a posição 0 e se eu acionar o sensor indutivo ele irá mudar para 180.

Essa parte imagino como faço, utilizando a estrutura if/else o maior problema é como configura essa criança, até onde sei devo utilizar o Timer e com ele consigo trabalhar tranquilamente, dai eu preciso de uma luz.

Quem puder ajudar agradeço!!!

Exibições: 448

Responder esta

Respostas a este tópico

Vc pode fazer com apenas 1 timer e uma variável  para contar.

Aih na rotina de interrupção vc monta o sinal.

Vamos imaginar que a variavel pulso é o contador,  largura e' a programação de saida (se maior maior a largura), a saida é seu sinal de saida e máximo é a largura total, o o numero de contagens que dá um ciclo completo.

Na no timer vc faz:

{pulso++; // Incrementa o contador

if (pulso==maximo) {saida =0; pulso=0;} // Se chegou no maximo zera o contador e o sinal.

if (pulso>=largura) saida=1; // Se chegou na largura desejada joga pra 1 o sinal.

}

Posso ter sido meio simplista no exemplo, faltar detalhes, invertido o sinal, etc, mas basicamente é isso.

Pow cara obrigado já me deu uma luz (:

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço