[Arduino] Linefollower z fotorezystorami: 5 kroków

[Arduino] Linefollower z fotorezystorami: 5 kroków

Spisu treści:

Anonim

Intro:

Witaj!

Zbudowałem robota linefollower, który można wykorzystać na wiele różnych sposobów, i podsumowałem mój projekt w kilku krokach.

Na początek potrzebne są tylko następujące części:

Lista części

-Robot ramki

-Dwa koła

- Dwa silniki prądu stałego

-Miniak do chleba

-Dwa diody LED

-Dwa fotorezystory

-Dwie 56k rezystorów

- Dwa 330 rezystorów

-Niektóre druty

-Diodes (jeśli nie są jeszcze dołączone do sterownika silnika)

- Sterownik silnika (użyłem L298)

-Duża deska do krojenia chleba

-Trzy akumulator 1,5V

-Arduino UNO

Kieszonkowe dzieci:

Krok 1: Rama robota

Lista części:

-Robot ramki

-Dwa koła

- Dwa silniki prądu stałego

Jak:

Użyłem starej ramy robota z dwoma kołami sterowanymi przez dwa silniki prądu stałego, ale można również użyć równoważnego rozwiązania.

Krok 2: Czujnik Ir + fotorezystor

Lista części:

-Miniak do chleba

-Dwa diody LED

-Dwa fotorezystory

-Dwie 56k rezystorów

- Dwa 330 rezystorów

-Niektóre druty

Jak:

Oblicz odległość między dwiema parami diod i fotorezystorów w oparciu o szerokość taśmy.

Ustaw fotorezystory i diody led jak na zdjęciach.

Podłącz diody do dwóch rezystorów 330 omów i umieść wokół nich nieprzezroczystą taśmę, aby zapobiec zakłóceniom fotorezystorów

Umieść mini deskę do krojenia chleba w dolnej części ramy.

Krok 3: Sterownik silnika

Lista części:

-Niektóre druty

-Diodes (jeśli nie są jeszcze dołączone do sterownika silnika)

- Sterownik silnika

-Duża deska do krojenia chleba

-Trzy baterie 1,5 v

Montaż czujników:

Podłącz piny wejściowe mostka A na stykach 11 i 12 Arduino.

Podłącz piny wejściowe mostka B na stykach 6 i 5 Arduino.

Połącz z niektórymi diodami styki wyjściowe każdego mostka do silników, jeśli to konieczne.

Podłącz logiczne napięcie zasilania (Vss) do 5 V Arduino i podłącz masę sterownika silnika do GND arduino.

Podłącz napięcie zasilania (Vs) do 3 baterii AA.

Krok 4: Programowanie Arduino

Lista części:

-Arduino UNO

-Niektóre druty

Użyj tego kodu:

int PinSens_A = A5;

int PinSens_B = A4;

int ValSens_A = 0;

int ValSens_B = 0;

int Ris;

int PinMotorA_1 = 10;

int PinMotorA_2 = 11;

int PinMotorB_1 = 5;

int PinMotorB_2 = 6;

int SpeedMotor_A;

int SpeedMotor_B;

int różnica = 0;

int RoL (int A, int B)

{

jeśli (A> B)

powrót 1;

jeśli (B> A)

return 2;

jeśli (A = B)

powrót 0;

}

void Follow (int val, int speedMax)

{

if (val == 2)

{

SpeedMotor_A = speedMax;

SpeedMotor_B = 0;

}

if (val == 1)

{

SpeedMotor_A = 0;

SpeedMotor_B = speedMax;

}

}

int Move (int dir)

{

if (katalog == 0)

{

analogWrite (PinMotorA_1, SpeedMotor_A);

analogWrite (PinMotorB_1, SpeedMotor_B);

}

if (katalog == 1)

{

analogWrite (PinMotorA_2, SpeedMotor_A);

analogWrite (PinMotorB_2, SpeedMotor_B);

}

}

int calcDiff ()

{

ValSens_A = analogRead (PinSens_A);

ValSens_B = analogRead (PinSens_B);

if (ValSens_A> ValSens_B)

{

int diff = ValSens_A - ValSens_B;

zwróć diff;

}

if (ValSens_A <ValSens_B)

{

int diff = ValSens_B - ValSens_A;

zwróć diff;

}

}

void Debug ()

{

Serial.print (Ris);

Serial.print ("");

Serial.print (ValSens_A);

Serial.print ("");

Serial.print (ValSens_B);

Serial.println ("");

}

void setup ()

{

Serial.begin (9600);

pinMode (PinMotorA_1, OUTPUT);

pinMode (PinMotorA_2, OUTPUT);

pinMode (PinMotorB_1, OUTPUT);

pinMode (PinMotorB_2, OUTPUT);

pinMode (PinSens_A, INPUT);

pinMode (PinSens_B, INPUT);

}

void loop ()

{

jeśli (różnica == 0)

{

różnica = 1;

}

ValSens_A = analogRead (PinSens_A);

ValSens_B = analogRead (PinSens_B) +150; // użyj numeru zmiennej do zrównoważenia czujników

Ris = RoL (ValSens_A, ValSens_B);

Follow (Ris, 100);

Przenieś (0);

Odpluskwić();

};

Krok 5: Testowanie

Na koniec przetestuj konfigurację, aby uzyskać najlepszą wydajność.