[Arduino] Linefollower med fotoresistorer: 5 trin

[Arduino] Linefollower med fotoresistorer: 5 trin

Indholdsfortegnelse:

Anonim

Intro:

Hej!

Jeg byggede en linefollower robot, der kunne bruges på mange forskellige måder, og jeg opsummerede mit projekt i nogle trin.

Til at begynde med er alt, hvad du behøver, følgende dele:

Liste over dele

-Robot ramme

-Tv hjul

-Tv DC-motorer

-Mini brødbræt

-Two leds

-Two fotoresistorer

-Two 56k modstande

-Two 330 modstande

-Som tråd

-Dioder (hvis ikke allerede inkluderet i motorstyringen)

-Motor controller (jeg brugte L298)

-Meget brødbræt

-Tr. 1,5 V batteri

-Arduino UNO

forsyninger:

Trin 1: Robotramme

Liste over dele:

-Robot ramme

-Tv hjul

-Tv DC-motorer

Hvordan:

Jeg brugte en gammel robot ramme med to hjul beordret af to DC motorer, men du kan også bruge en tilsvarende løsning.

Trin 2: Sensor Ir + Photoresistor

Liste over dele:

-Mini brødbræt

-Two leds

-Two fotoresistorer

-Two 56k modstande

-Two 330 modstande

-Som tråd

Hvordan:

Beregn afstanden mellem de to par lysdioder og fotoresistorer baseret på båndets bredde.

Placer fotoresistorer og lysdioder som vist i billederne.

Tilslut lysdioder til to modstande på 330 ohm og læg lidt trasparent tape rundt om det for at forhindre interferens med fotoresistorerne

Placer mini brødbrættet i den nederste del af rammen.

Trin 3: Motor Controller

Liste over dele:

-Som tråd

-Dioder (hvis ikke allerede inkluderet i motorstyringen)

-Motor controller

-Meget brødbræt

-Tre 1,5 V batterier

Sensorer Montering:

Sæt indgangsstifterne på bro A på stifter 11 og 12 i Arduino.

Sæt indgangsstifterne på bro B på stifter 6 og 5 i Arduino.

Forbind med nogle dioder outputstifterne på hver bro til motorer, hvis det er nødvendigt.

Forbind den logiske forsyningsspænding (Vss) til 5v af Arduino og tilslut motorens jordforbindelse til arduino.

Tilslut forsyningsspændingen (Vs) til 3 AA batterier.

Trin 4: Programmering Arduino

Liste over dele:

-Arduino UNO

-Som tråd

Brug denne kode:

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

int RoL (int A, int B)

{

hvis (A> B)

returnere 1;

hvis (B> A)

returnere 2;

hvis (A = B)

returnere 0;

}

void Følg (int val, int speedMax)

{

hvis (val == 2)

{

SpeedMotor_A = speedMax;

SpeedMotor_B = 0;

}

hvis (val == 1)

{

SpeedMotor_A = 0;

SpeedMotor_B = speedMax;

}

}

int Flytte (int dir)

{

hvis (dir == 0)

{

analogWrite (PinMotorA_1, SpeedMotor_A);

analogWrite (PinMotorB_1, SpeedMotor_B);

}

hvis (dir == 1)

{

analogWrite (PinMotorA_2, SpeedMotor_A);

analogWrite (PinMotorB_2, SpeedMotor_B);

}

}

int calcDiff ()

{

ValSens_A = analogRead (PinSens_A);

ValSens_B = analogRead (PinSens_B);

hvis (ValSens_A> ValSens_B)

{

int diff = ValSens_A - ValSens_B;

return diff;

}

hvis (ValSens_A <ValSens_B)

{

int diff = ValSens_B - ValSens_A;

return 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 ()

{

hvis (forskel == 0)

{

forskel = 1;

}

ValSens_A = analogRead (PinSens_A);

ValSens_B = analogRead (PinSens_B) +150; // brug et variabelt tal for at afbalancere sensorerne

Ris = RoL (ValSens_A, ValSens_B);

Følg (Ris, 100);

Træk (0);

Fejlfinde();

};

Trin 5: Testning

Endelig teste din konfiguration for den bedste ydeevne.