Indholdsfortegnelse:

Let følge og undgå robot baseret på Arduino: 5 trin
Let følge og undgå robot baseret på Arduino: 5 trin

Video: Let følge og undgå robot baseret på Arduino: 5 trin

Video: Let følge og undgå robot baseret på Arduino: 5 trin
Video: Bitcoin (BTC) News Today / Bitcoin (BTC) Price Prediction / Bitcoin (BTC) Technical Analysis 2024, Juli
Anonim
Let følge og undgå robot baseret på Arduino
Let følge og undgå robot baseret på Arduino

Dette er et simpelt projekt, der følger eller Undgå lys.

Jeg lavede denne simulering i Proteus 8.6 pro. Påkrævede komponenter: -1) Arduino uno.

2) 3 LDR.

3) 2 DC gearmotorer.4) En servo.5) Tre 1k modstande.6) en H-Bridge l290D7) En tænd- og slukkontakt [til ændring af programtilstand]

8) 9v og 5v Battry

Trin 1: Ardunio -kode

Arduino -koden er ændret en lille bit dato 23. februar 2016]

Denne kode er stærkt kommenteret, jeg vil ikke forklare, men hvis du har brug for hjælp, kan du kontakte mig på ([email protected])

Bemærk: -Jeg bruger to betingelser i dette program 1. for Light Following. 2. for at undgå lys.

For så vidt disse betingelser er opfyldt, vil Robot følge eller undgå lys. [Dette er minimumsværdi for LDR, som jeg vælger. I normalt lys er dens rækkevidde 80 til 95, men efterhånden som dens intensitet stiger, øges flere og flere spændinger, da det arbejder på princippet om spændingsdeler int a = 400; // Tolaranceværdi]

Trin 2: Proteus -filer

For Arduino Library download fra dette link

Trin 3: Sådan fungerer din H-bro

Sådan fungerer din H-bro
Sådan fungerer din H-bro
Sådan fungerer din H-bro
Sådan fungerer din H-bro

L293NE/SN754410 er en meget grundlæggende H-bro. Den har to broer, en på venstre side af chippen og en til højre, og kan styre 2 motorer. Den kan køre op til 1 amp strøm og fungere mellem 4,5V og 36V. Den lille DC-motor, du bruger i dette laboratorium, kan køre sikkert af en lav spænding, så denne H-bro fungerer fint. H-broen har følgende stifter og funktioner: Pin 1 (1, 2EN) aktiverer og deaktiverer vores motor, uanset om den giver HIGH eller LOW Pin 2 (1A) er en logisk pin til vores motor (input er enten HIGH eller LOW) Pin 3 (1Y) er for en af motorterminalerne Pin 4-5 er for jord Pin 6 (2Y) er for den anden motorterminal Pin 7 (2A) er en logisk pin til vores motor (input er enten HIGH eller LOW) Pin 8 (VCC2) er strømforsyningen til vores motor, skal denne gives i forhold til den nominelle spænding på din motor Pin 9-11 er ikke tilsluttet, da du kun bruger en motor i dette laboratorium Pin 12-13 er til jord Pin 14-15 er ikke tilsluttet Pin 16 (VCC1) er forbundet til 5V. Over er et diagram over H-broen, og hvilke ben gør hvad i vores eksempel. Inkluderet i diagrammet er en sandhedstabel, der angiver, hvordan motoren vil fungere i henhold til tilstanden af de logiske stifter (som er indstillet af vores Arduino).

I dette projekt tilsluttes aktiveringsnålen til en digital pin på din Arduino, så du kan sende den enten HØJ eller LAV og tænde eller slukke motoren. Motorlogikstifterne er også forbundet med udpegede digitale ben på din Arduino, så du kan sende den HØJ og LAV for at få motoren til at dreje i den ene retning, eller LAV og HØJ for at få den til at dreje i den anden retning. Motorforsyningsspændingen tilsluttes motorens spændingskilde, som normalt er en ekstern strømforsyning. Hvis din motor kan køre på 5V og mindre end 500mA, kan du bruge Arduinos 5V -udgang. De fleste motorer kræver en højere spænding og højere strømforbrug end dette, så du skal bruge en ekstern strømforsyning.

Tilslut motoren til H-broen Tilslut motoren til H-broen som vist på billedet i det andet billede.

Eller hvis du bruger en ekstern strømforsyning til Arduino, kan du bruge Vin -stiften.

Trin 4: Sådan fungerer LDR

Nu er det første, der kan have brug for yderligere forklaring, brugen af de lysafhængige modstande. Lysafhængige modstande (eller LDR’er) er modstande, hvis værdi ændres afhængigt af mængden af omgivende lys, men hvordan kan vi detektere modstand med Arduino? Nå, du kan ikke rigtig, men du kan registrere spændingsniveauer ved hjælp af de analoge ben, som kan måle (ved grundlæggende brug) mellem 0-5V. Nu spørger du måske "Nå, hvordan konverterer vi modstandsværdier til spændingsændringer?", Det er enkelt, vi laver en spændingsdeler. En spændingsdeler indtager en spænding og udsender derefter en brøkdel af den spænding, der er proportional med indgangsspændingen og forholdet mellem de to værdier af modstande, der bruges. Ligningen, som er:

Udgangsspænding = Indgangsspænding * (R2 / (R1 + R2)) Hvor R1 er værdien af den første modstand og R2 er værdien af den anden.

Nu stiller dette stadig spørgsmålet "Men hvilke modstandsværdier har LDR?", Godt spørgsmål. Jo mindre mængde omgivende lys jo højere modstand, mere omgivende lys betyder en lavere modstand. Nu for de særlige LDR'er brugte jeg deres modstandsområde fra 200 - 10 kilo ohm, men dette ændrer sig for forskellige, så sørg for at slå op, hvor du købte dem fra, og prøv at finde et datablad eller noget lignende. Nu i dette tilfælde R1 er faktisk vores LDR, så lad os bringe denne ligning tilbage og lave matematik-e-magi (matematisk elektrisk magi). Nu skal vi først konvertere disse kilo ohm værdier til ohm: 200 kilo-ohm = 200, 000 ohm 10 kilo-ohm = 10, 000 ohmSå for at finde ud af, hvad udgangsspændingen er, når vi er i sort, tilslutter vi følgende tal: 5 * (10000 / (200000 + 10000)) Indgangen er 5V, da det er det, vi får fra Arduino. Ovenstående giver 0,24V (afrundet). Nu finder vi, hvad udgangsspændingen er i højeste lysstyrke ved at bruge følgende tal: 5 * (10000 / (10000 + 10000)) Og dette giver os præcis 2,5V. Så det er spændingsværdierne, som vi kommer til at få ind i Arduino's analoge ben, men det er ikke de værdier, der vil blive set i programmet, "Men hvorfor?" kan du spørge. Arduino bruger en analog til digital chip, der konverterer den analoge spænding til brugbare digitale data. I modsætning til de digitale ben på Arduino, der kun kan aflæse en HIGH eller LOW-tilstand, der er 0 og 5V, kan de analoge ben læse fra 0-5V og konvertere dette til et talinterval på 0-1023. Nu med mere matematik-e-magi. vi kan faktisk beregne, hvilke værdier Arduino rent faktisk vil læse.

Fordi dette vil være en lineær funktion, kan vi bruge følgende formel: Y = mX + C Hvor; Y = Digital ValueWhere; m = hældning, (stigning / løb), (digital værdi / analog værdi) Hvor; C = Y intercept Y -interceptet er 0, så det giver os: Y = mXm = 1023 /5 = 204,6 Derfor: Digital værdi = 204,6 * Analog værdi Så i pitch black vil den digitale værdi være: 204,6 * 0,24 Hvilket giver cirka 49. Og i maksimal lysstyrke vil det være: 204,6 * 2,5 Hvilket giver cirka 511. Nu med to af disse opsat på to analoge ben kan vi oprette to heltalsvariabler for at gemme deres værdier to og lave sammenligningsoperatorer for at se, hvilken der har den laveste værdi, dreje robotten i den retning.

Anbefalede: