Descrição

O objectivo do projecto é contruir um carrinho que de forma autonoma, deverá ser capaz de seguir uma linha reflectora (de infra-vermelhos), colocada sobre um fundo negro.


Detector de linha - sensor infravermelho

Com 2 sensores infravermelhos montados um ao lado do outro, poder-se-ia detectar a presença de uma linha reflectora, verficando o estado de ambos num dado instante, por exemplo, com ambos os sensores sobre a linha o seu estado seria ON (ligado), e com qualquer deles, ou ambos fora da linha no pior caso, o seu estado seria OFF (desligado, ou sem reflexão). Claro que poderiam ser usados mais sensores com os mais variados arranjos.

2 IR sensors

No caso presente, o carro contém apenas um emissor-receptor de infravermelhos, que formará o conjunto sensor de posição relativamente á linha que deverá seguir. Agora a detecção simples ON-OFF não é suficiente e a posição na linha será detectada conforme a quantidade de luz por ela reflectida, captada pelo receptor de infravermelhos, cujo valor será posteriormente convertido para o seu equivalente digital, através de um ADC de 8 bits. Teremos portanto 256 níveis distintos (2^8) como resultado da conversão.

1 IR sensor

Se o resultado da conversão for perto de 0 (zero), isso significa que o carro se encontra por cima da área preta da pista, não reflectora, e por isso deve virar á direita, procurando recolocar-se em cima da linha reflectora. De forma inversa, se o resultado da conversão for perto de 256, isso significa que o carro se encontra posicionado completamente por cima da área reflectora e pode vir a perder o contacto com a linha se a ultrapassar para o seu lado direito, e por isso deve virar á esquerda, procurando posicionar-se mais sobre o limite esquerdo da linha reflectora. Precisamente quando o carro se encontra no meio termo, isto é, aproximadamente no limite esquerdo da linha, tendo por isso a linha reflectora mais sobre a sua direita e a área escura da pista á sua esquerda, teremos o meio termo da reflexão e o valor do ADC andará em torno dos 128.
O ADC deverá ser ligado ao porto P2 do microcontrolador.


Detector de obstáculos - 2 switchs

Com 2 comutadores de pressão (switch) colocados na frente do carro, pretende-se detectar o choque do carro com obstáculos que sejam colocados no seu trajecto. Quando pelo menos um dos switch é accionado, e o carro deverá ser capaz de se desviar do obstáculo e retomar a pista. Dependendo de ter sido accionado o switch da esquerda, da direita, ou ambos, pode saber-se a posição do obstáculo em relação ao carro.
Quando um switch é accionado dá-se uma transição descendente do sinal presente no pino do microcontrolador ao qual está ligado o switch, produzindo uma interrupção externa. Como os switch são componentes mecânicos deve ser necessário realizar o deboucing por software para que não haja ocorrência de falsas detecções.
Os switchs de detecção de obstáculos deverão ser ligados aos pinos INT0 e INT1 do microcontrolador.


Direcção - motor servo

Para controlo da direcção do carro, usa-se um motor servo, dos que são usados em radiomodelismo (de resto, o chassis do carro usado é de um modelo originalmente destinado ao radiomodelismo). O controlo deste tipo de motores é feito por duração de largura pulso (PWM). Com uma periodicidade de 20ms, um pulso positivo com duração de 1ms (dutty cycle de 5%) a 2ms (dutty cycle de 10%), define a posição que o motor servo deve assumir. Nos extremos, se o pulso positivo tiver duração de 1ms, o motor fica rodado o máximo á esquerda, e se for de 2ms fica o máximo á direita. Para o motor se colocar na posição central, que permitirá ao carro deslocar-se em frente, a duração positiva do pulso terá que se a intermédia, ou seja, 1,5ms. Claro que valores intermédios poderão ser definidos, e com isso conseguem-se diferentes ângulos de viragem. Os valores efectivos podem diferir dos aqui apresentados, dependendo do motor servo usado, e por isso há que estudar o seu datasheet para obter o seu correcto funcionamento, pois podem ser necessários pequenos ajustes a estes valores.
O pino do microcontrolador onde deverá estar presente o sinal PWM de controlo de direcção é o P1.1

Servo PWM


Tracção - motor DC

Para controlo da velocidade do carro, usa-se um motor DC. Um tradicional motor DC é tipicamente demasiado rotativo para que se consiga o desejável controlo do carro, por isso recorre-se a um motor servo modificado, ao qual é retirada a electrónica de controlo de posição, e também tem que se modificar uma das rodas dentadas para que o motor possa rodar livremente. Esta opção foi tomada porque o sistema de rodas dentadas que um motor servo inclui produz uma rotação final muito mais lenta do que original do motor DC que o constitui.

Naturalmente, existem no comércio motores DC já preparados para produzir baixas rotações, mas não são tão baratos como a solução apresentada, embora tenham um torque muito mais elevado. Claro que com as necessárias adaptações podem ser usados para o propósito do projecto.
O motor DC que se apresenta a seguir, inclui um sistema de rodas dentadas que produz 200rpm quando alimentado com 12v.

DC motor

O controlo da velocidade de rotação do motor DC é feito por PWM (modulação por largura de pulso). O sinal PWM terá uma frequência de 1KHz e a variação do dutty cycle do sinal entre 0% e 100% fará correspondentemente variar a velocidade do carro de 0 ao seu máximo. Há que referir no entanto, que dependendo do motor, só um factor de trabalho (dutty cycle) acima dos 10%...20% conseguirá produzir o arranque do motor, sendo que abaixo disso, este simplesmente não funciona (bom... talvez arranque se lhe for dada "uma mãozinha").
O pino do microcontrolador onde estará presente o sinal PWM de controlo de velocidade é o P1.0

Como se pretende que o carro possa andar de marcha atrás, o motor deverá ser reversível, e para controlo do sentido de rotação do motor DC, o pino do microcontrolador responsável por esse controlo será o P1.2 sendo que se DIR=1 o carro segue em frente e se DIR=0 o carro faz marcha atrás.