- Materiais requisitados
- Conceitos de seguidor de linha
- Explicação do circuito
- Trabalho de robô seguidor de linha usando MSP430
- Diagrama de circuito
- Explicação de programação
O robô seguidor de linha é um dos projetos de robótica populares entre estudantes e iniciantes devido à sua simplicidade. Ele segue uma linha, preta ou branca, dependendo de como você programa seu microcontrolador. Aqui criamos um robô seguidor de linha usando o launchpad MSP430 da Texas Instruments, que segue a linha preta. Se você for novo no launchpad do MSP430, leia nosso Tutorial de introdução ao MSP430.
Materiais requisitados
- MSP430G2 LaunchPad da Texas Instruments
- O módulo de driver de motor L298D
- Fios de conexão
- Módulos de sensor IR
- Chasis, roda, montanha-russa
- Energia IDE
- Fonte de alimentação (3,3v) e 5v-12v
Conceitos de seguidor de linha
O conceito de seguidor de linha está relacionado à luz. Usamos o comportamento da luz na superfície preta e branca. Quando a luz incide sobre uma superfície branca, ela reflete quase totalmente e, no caso de uma superfície negra, a luz é absorvida pela superfície negra. Este comportamento explicado da luz é usado neste robô seguidor de linha.
Neste robô seguidor de linha baseado em MSP430, usamos Transmissores IR e receptores IR também chamados de diodos fotográficos. Eles são usados para enviar e receber luz. IR transmite luzes infravermelhas. Quando os raios infravermelhos incidem sobre a superfície branca, são refletidos de volta e capturados por fotodiodos que geram algumas mudanças de voltagem. Quando a luz infravermelha incide sobre uma superfície preta, a luz é absorvida pela superfície preta e nenhum raio é refletido de volta, portanto, o fotodíodo não recebe luz ou raios. Para saber mais sobre sensores IR, siga o link.
Aqui neste robô seguidor de linha baseado em MSP430, quando o sensor detecta a superfície branca, o MSP obtém 1 como entrada e quando detecta a linha preta o MSP obtém 0 como entrada.
Explicação do circuito
Podemos dividir todo o robô seguidor de linha em várias seções, como seção de sensor, seção de controle e seção de driver.
Seção do sensor: esta seção contém diodos IR, potenciômetro, comparador (Op-Amp) e LEDs. O potenciômetro é usado para definir a tensão de referência em um terminal do comparador e os sensores IR detectam a linha e fornecem uma mudança na tensão no segundo terminal do comparador. Em seguida, o comparador compara as duas tensões e gera um sinal digital na saída. Aqui neste circuito usamos dois comparadores para dois sensores. LM358 é usado como comparador. O LM358 tem dois amplificadores op de baixo ruído embutidos.
Seção de controle: MSP430 Launchpad é usado para controlar todo o processo do robô seguidor de linha. As saídas dos comparadores são conectadas aos pinos digitais P1_3 e P1_4 do Launchpad MPS430. O Launchpad MSP430 lê esses sinais e envia comandos para o circuito do driver para o seguidor da linha de transmissão.
Seção do driver: a seção do driver consiste do driver do motor e dois motores CC. O driver do motor é usado para acionar motores porque o Launchpad MSP430 não fornece tensão e corrente suficientes para o motor. Portanto, adicionamos um circuito de driver de motor para obter tensão e corrente suficientes para o motor. Aqui, usamos o driver L298d para a condução de motores DC. O Launchpad MSP430 envia comandos para este driver de motor e, em seguida, aciona os motores.
Desenvolvemos robôs seguidores de linha usando diferentes microcontroladores:
- Robô seguidor de linha usando o microcontrolador 8051
- Robô seguidor de linha usando Arduino
- Robô seguidor de linha usando Raspberry Pi
- Robô seguidor de linha usando microcontrolador PIC
Trabalho de robô seguidor de linha usando MSP430
Trabalhar com seguidor de linha é muito interessante. O robô seguidor de linha detecta a linha preta usando o sensor e, em seguida, envia o sinal para o Launchpad MSP430. Então, o Launchpad MSP430 aciona o motor de acordo com a saída dos sensores.
Aqui neste projeto, estamos usando dois módulos de sensor IR, nomeadamente sensor esquerdo e sensor direito. Quando os sensores esquerdo e direito detectam branco, o robô avança.
Se o sensor esquerdo vier na linha preta, o robô vire para o lado esquerdo.
Se o sensor correto detectar a linha preta, o robô vire para o lado direito até que ambos os sensores cheguem à superfície branca. Quando a superfície branca chega, o robô começa a se mover para frente novamente.
Se os dois sensores estiverem na linha preta, o robô para.
Diagrama de circuito
O circuito para este Robô Seguidor de Linha MSP430 é muito simples. A saída dos comparadores é conectada diretamente ao pino digital p1_3 e P1_4 do Launchpad do MSP430. E os pinos de entrada do driver do motor IN1, IN2, IN3 e IN4 são conectados no pino digital P1_5, P2_0, P2_1, P2_2 do Launchpad MSP430, respectivamente. Um motor é conectado ao pino de saída do driver do motor OUT1 e OUT2, e outro motor é conectado a OUT3 e OUT4. Aqui, usamos a alimentação de 3,3 V para alimentar todo o circuito, exceto o módulo Motor Driver. Fornecemos 8 V para o módulo driver do motor. O usuário pode usar 5v-12v.
Você também pode construir seu próprio módulo de IR, como eu construí no Perf Board. Abaixo está o circuito para o Módulo IR:
Explicação de programação
O programa completo e o vídeo podem ser encontrados no final deste artigo.
Em um programa, em primeiro lugar, definimos o pino de entrada e saída para sensor e motores. Em seguida, defina algumas macros para a direção do seguidor de linha e, em seguida, escreva uma diretiva para selecionar a saída do sensor
Nota: O sensor pode estar ativo baixo ou alto ativo, portanto, primeiro verifique qual é a saída do sensor e, em seguida, selecione a diretiva comentando ou descomentando activeLowMode . Para HIGH ativo, comente amacro activeLowMode .
#define l_sensor P1_3 #define r_sensor P1_4 pinos internos = {P1_5, P2_0, P2_1, P2_2}; #define forward 0x05 #define left 0x06 #define right 0x09 #define stop 0x00 // # define activeLowMode #ifdef activeLowMode int res = {forward, left, right, stop}; #else int res = {parar, direita, esquerda, frente}; #fim se
Depois disso, na função de configuração , damos direção ao sensor e ao pino do motor. E então, na função de loop , verificamos as entradas e enviamos a saída para o módulo do driver do motor para operar os motores.
void setup () { for (int i = 0; i <4; i ++) pinMode (pins, OUTPUT); pinMode (l_sensor, INPUT); pinMode (r_sensor, INPUT); } void loop () {int sense = (digitalRead (l_sensor) << 1) - digitalRead (r_sensor); para (int i = 0; i <4; i ++) digitalWrite (pinos, (res >> i) & 0x01); }
Existem quatro condições neste seguidor de linha que lemos usando o MSP430 Launchpad. Usamos dois sensores: o sensor esquerdo e o sensor direito.
Condições: saída HIGH ativa
Entrada |
Resultado |
Movimento De robô |
||||
Sensor Esquerdo |
Sensor Direito |
Motor Esquerdo |
Motor Direito |
|||
LS |
RS |
LM1 |
LM2 |
RM1 |
RM2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
Pare |
0 |
1 |
1 |
0 |
0 |
0 |
Vire à direita |
1 |
0 |
0 |
0 |
1 |
0 |
Vire a esquerda |
1 |
1 |
1 |
0 |
1 |
0 |
frente |
O programa é escrito de acordo com as condições da tabela acima. Verifique o código completo e o vídeo de demonstração abaixo.