Depois de conhecer um pouco sobre o PIC e corrigir alguns problemas com os sensores (sem alterar o hardware), começamos a trabalhar com o código.
Boa parte do código foi criado pelo nosso professor, já que não temos noção de Microcontroladores, então só precisamos pensar em que lógica utilizar para leitura dos sensores.
Por exemplo, como são três sensosores, se o sensor do meio detectar preto (5 Volts) e os demais detectar branco (0 Volts) ambos os motores devem girar para frente e o carrinho irá andar em linha reta.
Tendo isso na cabeça, montamos as oito possibilidades em uma tabela verdade:
Sensor Esquerdo | Sensor Meio | Sensor Direito | Motor Esquerdo | Motor Direito |
0 | 0 | 0 | PARADO | PARADO |
0 | 0 | 1 | INVERTE | NORMAL |
0 | 1 | 0 | NORMAL | NORMAL |
0 | 1 | 1 | PARADO | NORMAL |
1 | 0 | 0 | NORMAL | INVERTE |
1 | 0 | 1 | PARADO | PARADO |
1 | 1 | 0 | NORMAL | PARADO |
1 | 1 | 1 | INVERTE | FRENTE |
A tabela foi criada pensando em qual seria a melhor situação para o carrinho agir na pista, levando em conta todas as voltas, loops e falhas.
Está situação foi inserida no código em forma de Switch e dentro dele haviam duas funções:
liga_motor_d(); //liga motor direito
liga_motor_e(); //liga motor esquerdoDentro dessas funções é informado o Duty que é mais ou menos o tempo em que o período da onde do PWM estará ativada, então deve-se respeitar os seguintes casos:
liga_motor_d(91); //NORMAL
liga_motor_d(93); //PARADO
liga_motor_d(96); //INVERTE
liga_motor_e(91); //INVERTE
liga_motor_e(93); //PARADO
liga_motor_e(96); //NORMAL
Com isto, é possível montar o código tendo como base a tabela verdade.
Todo o código pode ser visto no link abaixo.
Nenhum comentário:
Postar um comentário