De video toont het bouwproces nochtans is het in snelle beweging en ik zal betrekking hebben op sommige van de meer ingewikkelde dingen hier meer in de diepte.
Dus om te maken ben moet je de volgende onderdelen:
· Een klein vel van acryl
· Een breadboard
· Een Arduino Nano
· Twee continue rotatie Servos
· Twee hobby wielen (ik gebruikte model vliegtuig wielen)
· Een castor wiel
· 9V batterij
· 4.8V oplaadbare batterij (of slechts 4 AA's in het geval van een batterij)
· Twee lichte afhankelijk weerstanden
· Twee 10.000 ohm weerstanden
· Sommige breadboard jumper kabels
· Dubbelzijdige Foam Tape
· Zelfklevend klittenband stippen
· Een aan-/ uitschakelaar (niet noodzakelijk maar handig zou zijn)
U hoeft niet ieder gereedschap voor de bouw maar u de dubbele dubbelzijdige Foam Tape met hete lijm vervangen kon in welk geval u zou moeten een warme lijmpistool.
Nu is het eerste ding dat wellicht verdere uitleg het gebruik van het licht afhankelijke weerstanden. Licht afhankelijk weerstanden (of de LDR) zijn weerstanden waarvan de waarde afhankelijk van de hoeveelheid omgevingslicht verandert, maar hoe kunnen we weerstand met Arduino detecteren? Nou je kunt niet echt, echter kunt u detecteren met behulp van de analoge pinnen, die (in basisgebruik) tussen 0-5V meten kunnen spanningsniveaus. Nu kan u vragen "hoe goed we Converteer weerstand waarden in spanning wijzigingen?", het is simpel, dat we maken een voltage divider. Een spanning divider neemt in een spanning en dan uitgangen een fractie van die spanning evenredig aan de ingangsspanning en de verhouding van de twee waarden van weerstanden gebruikt. De vergelijking die is:
Uitgangsspanning = Ingangsspanning * (R2 / (R1 + R2))
Waar de R1 is de waarde van de eerste weerstand en R2, is de waarde van de tweede.
Het circuit schema voor die ziet er als volgt
Een diagram van dit in onze situatie ziet er een beetje iets dergelijks
Nu dit toch de vraag roept 'maar wat weerstand waarden de LDR heeft?', goede vraag. De minder hoeveelheid omgevingslicht de hoger de weerstand, meer omgevingslicht betekent een lagere weerstand. Nu voor de bijzondere LDR van die ik gebruikte hun weerstand bereik van 200 – 10 kilo-Ohm was, maar dit voor verschillenden verandert dus zorg ervoor dat op te zoeken waar u hen van kocht en proberen te vinden van een gegevensblad of iets van de soort.
In dit geval R1 is nu eigenlijk onze LDR, dus laten we die vergelijking terug te brengen en wat wiskunde-e-magie (wiskundige elektrische magie).
Nu moeten we eerst de kilo-ohm-waarden converteren naar Ohm:
200 kilo-Ohm = 200.000 ohm
10 kilo-Ohm = 10.000 ohm
Dus om te vinden wat is de uitgangsspanning wanneer we in toonhoogte zwart die we in de volgende nummers aansluiten:
5 * (10000 / (200000 + 10000))
De input 5V is want dat is wat we krijgen van de Arduino.
Het bovenstaande geeft 0.24V (afgerond).
Nu vinden we wat de uitgangsspanning is in piek helderheid met behulp van de volgende nummers:
5 * (10000 / (10000 + 10000))
En dit geeft ons 2.5V precies.
Dus dit zijn de spanningswaarden die we gaan krijgen in de analoge pin van de Arduino, maar deze zijn niet de waarden die in het programma zal blijken, "maar waarom?" je kunt je afvragen. De Arduino gebruikt een analoog naar digitale Chip die de analoge spanning in bruikbare digitale gegevens omzet. In tegenstelling tot de digitale pennen op de Arduino, dat een hoog of laag staat 0 alleen kan lezen en 5V de analoge pinnen kunnen lezen van 0-5V en zet dit in een nummerreeks van 0-1023.
Nu met een aantal meer wiskunde-e-magic kunnen we eigenlijk berekenen welke waarden de Arduino zal eigenlijk lezen. Omdat dit een lineaire functie kunnen we de volgende formule gebruiken:
Y = mX + C
Waar; Y = digitale waarde
Waar; m = helling, (stijgen / run), (waarde van digitale / analoge waarde)
Waar; C = Y onderscheppen
Het Y-snijpunt is 0, dus dat ons geeft:
Y = mX
m = 1023 / 5 = 204,6
Daarom:
Digitale waarde = 204,6 * analoge waarde
Dus in het zwart van de worp zal de digitale waarde zijn:
204,6 * 0,24
Dat geeft ongeveer 49.
En in piek helderheid zal zij:
204,6 * 2.5
Dat geeft ongeveer 511.
Nu met twee van deze instellen op twee analoge pennen kunnen we maken twee integer variabelen voor het opslaan van hun waarden twee en doen vergelijkings-operatoren om te zien welke men de laagste waarde, moet de robot in die richting draaien.
____________________________________________________________________________________________________
Nu dat was waarschijnlijk het moeilijkste ding over de hele robot bouwen maar er is één meer ding dat ik wil noemen en het is te doen met met behulp van servos met Arduino.
Er zijn verschillende tutorials en diagrammen op het internet tonen dat u de spanning in de servo tot de rail 5V van de Arduino en de grond van de servo moet aansluiten op de grond van de Arduino, dit is gevaarlijk! Servo's kunnen trekken veel stroom, zal en in de meeste gevallen dat huidige loting meer dan de spanningsregelaar op de Arduino kan leveren, dit zal leiden tot slechte dingen gebeuren. De juiste manier voor het aansluiten van servo's aan uw Arduino is het gebruik van een externe voeding. Bens oorzaak ben ik de continue rotatie servo's van een 4.8V uitgevoerd oplaadbare Ni-Cd accu, dit is ideaal als de servo's goed van 4.8-6V, 6V werken wordt de piek gratis spanning van de accu.
Nu u geneigd worden kan om gewoon haak V + van de accu naar de V + van de servo's en de GND van het pak van de batterij met de GND van de servo's en de signaal-pinnen aan de Arduino, zal ook niet dit werken! Je moet niet vergeten dat elektriciteit voortvloeien uit een 'punt' terug naar zijn oorspronkelijke punt moet, niet aansluiten van de grond van de servo's en pak van de batterij op grond van de Arduino zal niet toestaan dat de elektriciteit te stromen van de signaal-pins.
Hier is een diagram met het juiste circuit
_____________________________________________________________________________________________________
Het combineren van de twee diagrammen die eerder getoonde geeft de volledige circuits die nodig zijn om Ben.
Ik zal niet nu de code uitleggen als het zwaar is toegelicht en vrij veel zelf moet uitleggen.
Code