[Arduino] Linefollower su fotorezistoriais: 5 žingsniai

[Arduino] Linefollower su fotorezistoriais: 5 žingsniai

Turinys:

Anonim

Įvadas:

Sveiki!

Aš pastatiau linijinio sekimo robotą, kuris galėjo būti naudojamas įvairiais būdais, ir kai kuriuos žingsnius apibendrinau savo projektą.

Visų pirma jums reikia visų šių dalių:

Dalių sąrašas

-Robot rėmelis

- Du ratai

- Du DC varikliai

-Mini duona

-Dvi LED

- Du fotorezistoriai

- Du 56k rezistoriai

- Du 330 rezistoriai

- Kai kurie laidai

-Diodai (jei jie dar neįtraukti į variklio valdiklį)

-Motoriaus valdiklis (i naudojamas L298)

- Didelė duona

- Trys 1,5 V baterija

-Arduino UNO

Prekės:

1 žingsnis: Roboto rėmelis

Dalių sąrašas:

-Robot rėmelis

- Du ratai

- Du DC varikliai

Kaip:

Aš naudoju seną roboto rėmą su dviem ratais, kuriuos valdė du nuolatinės srovės varikliai, bet jūs taip pat galite naudoti lygiavertį sprendimą.

2 veiksmas: jutiklis Ir + fotorezistorius

Dalių sąrašas:

-Mini duona

-Dvi LED

- Du fotorezistoriai

- Du 56k rezistoriai

- Du 330 rezistoriai

- Kai kurie laidai

Kaip:

Apskaičiuokite atstumą tarp dviejų lašų porų ir fotorezistorių, remiantis juostos pločiu.

Pastatykite fotorezistorius ir ledus, kaip parodyta paveikslėliuose.

Prijunkite lempas prie dviejų 330 omų rezistorių ir supakuokite aplink jį nespalvotą juostą, kad būtų išvengta bet kokių trukdžių fotorezistoriams

Įdėkite mini kepimo plokštę į apatinę rėmo dalį.

3 žingsnis: variklio valdiklis

Dalių sąrašas:

- Kai kurie laidai

-Diodai (jei jie dar neįtraukti į variklio valdiklį)

-Motoriaus valdiklis

- Didelė duona

- Trys 1,5 V baterijos

Jutiklių surinkimas:

Įkiškite tilto A įvesties kaiščius ant Arduino 11 ir 12 kaiščių.

Įkiškite tilto B įvesties kaiščius Arduino 6 ir 5 kaiščiuose.

Sujunkite kai kuriuos diodus, jei reikia, kiekvieno tilto išvesties kaiščius.

Prijunkite loginę maitinimo įtampą (Vss) į 5V Arduino ir sujunkite variklio valdiklio pagrindą su arduino gnd.

Prijunkite maitinimo įtampą (Vs) prie 3 AA baterijų.

4 žingsnis: „Arduino“ programavimas

Dalių sąrašas:

-Arduino UNO

- Kai kurie laidai

Naudokite šį kodą:

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 skirtumas = 0;

int RoL (int A, int B)

{

jei (A> B)

grąžinti 1;

jei (B> A)

grąžinti 2;

jei (A = B)

grąža 0;

}

void Sekite (int val, int speedMax)

{

jei (val == 2)

{

SpeedMotor_A = speedMax;

SpeedMotor_B = 0;

}

jei (val == 1)

{

SpeedMotor_A = 0;

SpeedMotor_B = speedMax;

}

}

int Perkelti (int dir)

{

jei (dir == 0)

{

analoginis raštas (PinMotorA_1, SpeedMotor_A);

analoginis raštas (PinMotorB_1, SpeedMotor_B);

}

jei (dir == 1)

{

analoginis raštas (PinMotorA_2, SpeedMotor_A);

analoginis raštas (PinMotorB_2, SpeedMotor_B);

}

}

int calcDiff ()

{

ValSens_A = analoginis (PinSens_A);

ValSens_B = analoginis (PinSens_B);

jei (ValSens_A> ValSens_B)

{

int diff = ValSens_A - ValSens_B;

grąžos skirtumas;

}

jei (ValSens_A <ValSens_B)

{

int diff = ValSens_B - ValSens_A;

grąžos skirtumas;

}

}

negaliojantis Debug ()

{

Serial.print (Ris);

Serial.print ("");

Serial.print (ValSens_A);

Serial.print ("");

Serial.print (ValSens_B);

Serial.println ("");

}

negaliojantis nustatymas ()

{

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);

}

tuščia kilpa ()

{

jei (skirtumas == 0)

{

skirtumas = 1;

}

ValSens_A = analoginis (PinSens_A);

ValSens_B = analoginis (PinSens_B) +150; // naudokite kintamąjį skaičių, kad subalansuotų jutiklius

Ris = RoL (ValSens_A, ValSens_B);

Sekite (Ris, 100);

Perkelti (0);

Debug ();

};

5 veiksmas

Galiausiai išbandykite savo konfigūraciją, kad galėtumėte pasiekti geriausių rezultatų.