K

 
 
   
GRUPO
 
INTRODUÇÃO

OBJECTIVOS
   
HARDWARE
 
SOFTWARE
 
TESTES

ANEXOS

  
 
SOFTWARE
 
 
Discussão das Opções do Projecto de Software
 
 

Pensou-se em duas possibilidades para o funcionamento do robot. Uma era usar as interrupções externas nos sensores, que, quando acionadas, fariam o robot mudar a direccção, ficando, assim, o temporizador como programa principal, em loop. A outra hipótese, que foi a que adoptámos, era ter como programa principal a leitura dos sensores, em loop, e usar um temporizador com uma interrupção interna.

O temporizador serve para controlar o tempo do sinal PWM, que é enviado para o L293D para definir a velocidade de ambos os motores. os sensores têm a função de corrigir a trajectória do robot, obrigando este a virar para um dos lados.

 
 
Fluxograma


 
 
Comentário ao Código
 
 

O código tem duas partes importantes, a parte da leitura dos sensores e a parte da contagem do tempo para o sinal PWM.

A primeira parte encontra-se em loop e faz a leitura constante dos sensores, o que dará indicação da direção a tomar para uma possível correcção da trajectória. Em caso de mudança de direcção, escolheu-se que uma das rodas continue a marcha enquanto a outra é parada, para facilitar a viragem.

A segunda parte do código é a rotina de serviço à interrupção do timer. O espaço de tempo definido é de 100 interrupções, em que ao definir 0 para os motores estes estão parados e ao definir 100 estes estão à velocidade máxima. Definimos o valor 50 para a velocidade de andamento do robot, podendo esta ser posteriormente afinada. Para o funcionamento da rotina do PWM é calculado o valor actual do número de interrupções [0 - 100]; desse valor é subtraído o número de interrupções escolhido para cada motor [50]. No caso da diferença ser menor que 0, o motor é accionado, um dos motores do robot estará em marcha, caso contrário o motor é parado. Isto é feito para ambos os motores.