Ben - en ljus följande set av brödunderläggen Arduino Robot
Videon visar byggprocessen men det är i snabb rörelse och jag kommer att omfatta några av de mer komplicerade sakerna här mer ingående.
Så för att göra ben måste följande komponenter:
· En liten skiva av akryl
· En skärbräda
· En Arduino Nano
· Två kontinuerlig Rotation servon
· Två hobby hjul (jag använde modell flygplan hjul)
· Ett hjul hjul
· 9V batteri
· 4.8V uppladdningsbart batteri (eller bara 4 AA i ett batteri fall)
· Två ljus beroende motstånd
· Två 10 000 ohm motstånd
· Några bakbord startkablar
· Dubbelhäftande skumtejp
· Självhäftande kardborrband prickar
· Strömbrytare (inte nödvändigt men skulle vara händig)
Du behöver inte några verktyg för att bygga men du skulle kunna ersätta den dubbelhäftande skumtejp med varmt lim i vilket fall du skulle behöva en varm limpistol.
Nu är det första som kan behöva ytterligare förklaring användning av ljus beroende motstånden. Lätta beroende motstånd (eller LDR'S) är motstånd vars värde ändras beroende på hur mycket omgivande ljus, men hur kan vi upptäcka motstånd med Arduino? Väl du inte egentligen, men du kan upptäcka spänningsnivåer med analoga stiften, som kan mäta (i grundläggande användning) mellan 0-5V. Nu kanske du frågar "hur vi konverterar Motståndsvärden till spänningsändringar?", det är enkelt, vi gör en spänningsavdelare. En spänningsavdelare tar i en spänning och matar sedan ut en bråkdel av denna spänning proportionell mot inspänningen och förhållandet mellan de två värdena av motstånd används. Ekvationen som är:
Utspänning = inspänning * (R2 / (R1 + R2))
Där R1 är värdet av den första motstånd och R2 är värdet av andra.
Kretsen Schematisk som ser ut så här
Ett diagram över detta i vår situation ser lite ut så här
Nu detta fortfarande väcker frågan "men vad Motståndsvärden LDR har?", bra fråga. Den mindre mängden omgivande ljus desto högre motstånd, mer ambient ljus innebär en lägre motstånd. Nu för det särskilda LDR jag använde deras motstånd var från 200 – 10 kilo ohm, men detta ändras för olika sådana så se till att titta upp var du köpt dem från och försöka hitta ett datablad eller något sådant.
Nu i detta fall R1 är faktiskt våra LDR, så låt oss ta tillbaka den ekvationen och göra lite matte-e-magi (matematiska elektriska magi).
Nu behöver vi först konvertera dessa kilo ohm värden ohm:
200 kilo-ohm = 200 000 ohm
10 kilo-ohm = 10 000 ohm
Så för att hitta vad är den tillverkade spänningen när vi är i pitch black vi koppla in följande nummer:
5 * (10000 / (200000 + 10000))
Indata är 5V eftersom det är vad vi får från Arduino.
Ovanstående ger 0.24V (avrundat).
Nu hittar vi vad utspänningen är i maximala ljusstyrkan med hjälp av följande nummer:
5 * (10000 / (10000 + 10000))
Och detta ger oss 2.5V exakt.
Så detta är spänningsvärden som vi kommer att få in den Arduino analoga stift, men dessa är inte de värden som kommer att ses i programmet, "men varför?" kan du fråga. Arduino använder en Analog till Digital Chip som omvandlar analoga spänningen till användbara digital data. Till skillnad från digitala stiften på Arduino som kan bara läsa en hög eller låg stat är 0 och 5V analoga stiften kan läsa från 0-5V och omvandla detta till ett antal antal 0-1023.
Nu med några mer matematik-e-magin kan vi faktiskt beräkna vilka värden Arduino faktiskt kommer att läsa. Eftersom detta kommer att vara en linjär funktion kan vi använda följande formel:
Y = mX + C
Där; Y = digitalt värde
Där; m = lutning, (stiga / kör), (digital värde / analog värde)
Där; C = Y axeln
Skärningspunkt med Y är 0 så det ger oss:
Y = mX
m = 1023 / 5 = 204.6
Därför:
Digitala värde = 204.6 * analoga värde
Så i pitch black kommer att digital värdet vara:
204.6 * 0,24
Vilket ger cirka 49.
Och maximala ljusstyrkan blir det:
204.6 * 2,5
Vilket ger cirka 511.
Nu med två av dessa som inrättats på två analoga stift kan vi skapa två heltal variabler för att lagra deras värden två och göra jämförelseoperatorer för att se vilket som har det lägsta värdet, vrida roboten i den riktningen.
____________________________________________________________________________________________________
Nu var det förmodligen det mest komplexa med hela roboten bygga men det finns bara en sak som jag skulle vilja nämna och det är för att göra med att använda servon med Arduino.
Det finns flera tutorials och diagram på internet visar att du måste ansluta spänningen i upp till 5 v järnväg av Arduino och marken av servo servo till marken av Arduino, detta är farligt! Servon kan dra mycket ström, och i de flesta fall den nuvarande dragningen kommer att vara mer än spänningsregulatorn på Arduino kan leverera, detta kommer att leda till dåliga saker händer. Det korrekta sättet att ansluta servon till din Arduino är att använda en extern strömkälla. I Bens orsak jag kör kontinuerlig rotation servon av en 4.8V laddningsbara Ni-Cd batteri, detta är perfekt som servon fungerar väl från 4,8-6V, 6V är peak laddningsspänningen i batteriet.
Nu du kan frestas att bara koppla in V + på batteriet till den V + för servon och GND batteripaketet till GND av servon och signal stiften till Arduino, fungerar detta inte heller! Du måste komma ihåg att elbehov att flöda från en "punkt" tillbaka till sin ursprungliga punkt, inte ansluta marken i servon och batteripack den Arduino marken kommer inte att tillåta El att flöda från signal stiften.
Här är ett diagram som visar korrekt kretsen
_____________________________________________________________________________________________________
Kombinera de två diagrammen visas tidigare ger komplett kretsarna krävs för att göra Ben.
Nu kommer inte jag förklara koden eftersom det är tungt, kommenterade och ganska mycket bör förklara sig själv.
Koden