Seguir e evitar o robô com base no Arduino: 5 etapas
Seguir e evitar o robô com base no Arduino: 5 etapas
Anonim
Robô de seguimento e evitação leve com base no Arduino
Robô de seguimento e evitação leve com base no Arduino

Este é um projeto simples que segue ou evita a luz.

Fiz esta simulação no Proteus 8.6 pro. Componentes necessários: -1) Arduino uno.

2) 3 LDR.

3) 2 motores de engrenagem CC.4) Um servo.5) Três resistores de 1k.6) uma ponte H l290D7) Um interruptor liga e desliga [para alterar a condição do programa]

8) Battry 9v e 5v

Etapa 1: Código Ardunio

O código do Arduino foi modificado em um litte-bit Data 23 de fevereiro de 2016]

Este código está muito comentado e não quero explicar, mas se você precisar de ajuda, sinta-se à vontade para entrar em contato comigo pelo e-mail ([email protected])

Nota: -Eu uso duas condições neste programa: 1ª para Seguimento de Luz; 2ª para Evitar Luz.

Desde que essas condições sejam satisfeitas, o robô seguirá ou evitará a luz. [Este é o valor mínimo de LDR que eu escolhi. Em luz normal, seu alcance é de 80 a 95, mas conforme sua intensidade aumenta, mais e mais tensões induzidas a acumulam, pois está trabalhando no Princípio do Divisor de Tensão int a = 400; // Valor de tolerância]

Etapa 2: Arquivos Proteus

Para baixar a biblioteca do Arduino nesse link

Etapa 3: Como funciona a ponte H

Como funciona o seu H-bridge
Como funciona o seu H-bridge
Como funciona o seu H-bridge
Como funciona o seu H-bridge

O L293NE / SN754410 é uma ponte H muito básica. Possui duas pontes, uma do lado esquerdo do chip e outra do lado direito, e pode controlar 2 motores. Ele pode conduzir até 1 amp de corrente e operar entre 4,5 V e 36 V. O pequeno motor CC que você está usando neste laboratório pode funcionar com segurança em baixa tensão, portanto, esta ponte H funcionará perfeitamente. A ponte H tem os seguintes pinos e recursos: Pino 1 (1, 2EN) habilita e desabilita nosso motor se ele for HIGH ou LOWPin 2 (1A) é um pino lógico para nosso motor (a entrada é HIGH ou LOW) Pino 3 (1Y) é para um dos terminais do motor Pin 4-5 são para groundPin 6 (2Y) é para o outro terminal do motor Pin 7 (2A) é um pino lógico para o nosso motor (a entrada é ALTA ou BAIXA) Pino 8 (VCC2) é a fonte de alimentação para o nosso motor, deve ser dada a tensão nominal do seu motorPin 9-11 estão desconectados, pois você está usando apenas um motor neste labPin 12-13 são para groundPin 14-15 são desconectadosPin 16 (VCC1) é conectado a 5V. Acima está um diagrama da ponte H e quais pinos fazem o quê em nosso exemplo. Incluído com o diagrama está uma tabela verdade indicando como o motor funcionará de acordo com o estado dos pinos lógicos (que são definidos por nosso Arduino).

Neste projeto, o pino de habilitação se conecta a um pino digital em seu Arduino para que você possa enviá-lo para ALTO ou BAIXO e ligar ou desligar o motor. Os pinos lógicos do motor também são conectados a pinos digitais designados em seu Arduino para que você possa enviá-los HIGH e LOW para que o motor gire em uma direção, ou LOW e HIGH para que ele gire na outra direção. A tensão de alimentação do motor se conecta à fonte de tensão do motor, que geralmente é uma fonte de alimentação externa. Se o seu motor pode funcionar em 5 V e menos de 500 mA, você pode usar a saída de 5 V do Arduino. A maioria dos motores exige uma tensão e um consumo de corrente mais altos do que isso, portanto, você precisará de uma fonte de alimentação externa.

Conecte o motor à ponte H Conecte o motor à ponte H conforme mostrado na 2ª imagem.

Ou, se estiver usando uma fonte de alimentação externa para o Arduino, você pode usar o pino Vin.

Etapa 4: Como funciona o LDR

Agora, a primeira coisa que pode precisar de mais explicações é o uso dos resistores dependentes de luz. Resistores dependentes de luz (ou LDRs) são resistores cujo valor muda dependendo da quantidade de luz ambiente, mas como podemos detectar resistência com o Arduino? Bem, você realmente não pode, no entanto, você pode detectar os níveis de tensão usando os pinos analógicos, que podem medir (em uso básico) entre 0-5V. Agora você pode estar se perguntando "Bem, como convertemos os valores de resistência em mudanças de voltagem?", É simples, fazemos um divisor de voltagem. Um divisor de tensão obtém uma tensão e, em seguida, produz uma fração dessa tensão proporcional à tensão de entrada e à razão dos dois valores dos resistores usados. A equação para a qual é:

Tensão de saída = Tensão de entrada * (R2 / (R1 + R2)) Onde R1 é o valor do primeiro resistor e R2 é o valor do segundo.

Agora, isso ainda levanta a questão “Mas quais valores de resistência o LDR tem?”, Boa pergunta. Quanto menor a quantidade de luz ambiente, maior a resistência, mais luz ambiente significa uma resistência mais baixa. Agora, para os LDRs em particular, usei sua faixa de resistência de 200 - 10 kilo ohms, mas isso muda para diferentes, então certifique-se de verificar onde você os comprou e tente encontrar uma folha de dados ou algo do tipo. caso R1 é na verdade nosso LDR, então vamos trazer de volta essa equação e fazer alguma matemática e mágica (mágica elétrica matemática). Agora, primeiro precisamos converter esses valores de quilo-ohm em ohms: 200 quilo-ohms = 200.000 ohms 10 quilo-ohms = 10.000 ohms. Então, para descobrir qual é a tensão de saída quando estamos no escuro, conectamos os seguintes números: 5 * (10.000 / (200.000 + 10.000)) A entrada é 5V, pois é isso que estamos obtendo do Arduino. O valor acima dá 0,24 V (arredondado). Agora encontramos a tensão de saída no pico de brilho usando os seguintes números: 5 * (10000 / (10000 + 10000)) E isso nos dá 2,5 V exatamente. Então, esses são os valores de tensão que vamos inserir nos pinos analógicos do Arduino, mas não são os valores que serão vistos no programa, "Mas por quê?" você pode perguntar. O Arduino usa um chip analógico para digital que converte a tensão analógica em dados digitais utilizáveis. Ao contrário dos pinos digitais no Arduino, que só podem ler um estado HIGH ou LOW sendo 0 e 5V, os pinos analógicos podem ler de 0-5V e convertê-lo em um intervalo de número de 0-1023. Agora com um pouco mais de math-e-magic. podemos calcular quais valores o Arduino realmente lerá.

Como esta será uma função linear, podemos usar a seguinte fórmula: Y = mX + C Onde; Y = Valor digital onde; m = declive, (subida / corrida), (valor digital / valor analógico) Onde; Interceptação C = YA interceptação Y é 0, de modo que nos dá: Y = mXm = 1023/5 = 204,6 Portanto: Valor digital = 204,6 * Valor analógico Então, em preto como breu, o valor digital será: 204,6 * 0,24 O que dá aproximadamente 49. E no brilho máximo será: 204,6 * 2,5, o que dá aproximadamente 511. Agora, com dois desses configurados em dois pinos analógicos, podemos criar duas variáveis inteiras para armazenar seus valores dois e fazer operadores de comparação para ver qual deles tem o valor mais baixo, girando o robô nessa direção.