Stap 1: Instellen
2. upload code aan Arduino (het is op de laatste pagina)
3. Zorg ervoor dat u krijgt een goed signaal
U zult een R/C radio transmitter(Tx) en receiver(Rx) paar, dat is het duurste onderdeel van het project, maar kan worden gebruikt voor elke toekomstige project hebt waarbij R/C. Ik ging met een 6-kanaals FM-systeem, maar ik heb een 27mHz AM zender/ontvanger getest en het werkt net zo goed. De schoonheid van de Arduino is dat als u aanpassen van de deadband of de motor-snelheid turn-on wilt, (in tegenstelling tot commerciële ESC) het allemaal makkelijk veranderd in de Arduino IDE.
Zodra u hebt uw radio, alles wat je hoeft te doen is de code uploaden naar je Arduino, sluit de 2 kanalen dat u gebruik wilt maken van uw radioontvanger in Digital pin 2 en 3 van de Arduino (dit zijn de 2 externe interrupt-pinnen op de Arduino) en u bent klaar om te bepalen wat je wilt. Hebt u niet een slagman pack voor de ontvanger, kunt u de jumper draden uitvoeren vanaf de Arduino + 5v en GND aan de R/C receiever voor macht, hoeft u alleen te leveren een enkellijns met GND en + 5v (het is niet nodig voor het aandrijven van elk kanaal).
Het uploaden van de code met behulp van de Aruino IDE (mij ben using voorstelling 0016 op Ubuntu).
Ik begon door het beheersen van de 3 LED's met 1 kanaal op een breadboard. Ik aangesloten een rode LED als Forward (digitale pin 9), een gele LED voor Reverse (digitale pin 5) en een groene LED voor neutrale (digitale pin 12). Dit kunt u aanpassen van de code aan de noden van uw radiosysteem. Hebt u vloeiende 0-100% PWM-controle van beide LED's en het neutraal lampje zal oplichten wanneer de control stick is gecentreerd. Indien nodig, kunt u de deadband verbreden voor neutraal, maar doen zal verhogen de snelheid turn-on (die begint bij 0% wordt dus dat zou waarschijnlijk wenselijk). Zie foto's.
----------------------------------------
De code heeft 4 PWM outputs voor motorische controle:
kanaal 1 = vooruit Arduino digitale pin 9
kanaal 1 omgekeerde Arduino digitale pin 5 =
kanaal 2 = vooruit Arduino digitale pin 10
kanaal 2 Reverse = Arduino digitale pin 6
2 uitgangen voor neutrale indicatorlampjes:
kanaal 1 = digital pin 12
2-kanaals digitale pin 13 =
De 2 ingangen van de R/C ontvanger moeten gaan naar:
kanaal 1 = digital pin 2
2-kanaals digitale pin 3 =
---------------------------------------
Als u geïnteresseerd bent om te zien uw lezingen, zet uw seriële Monitor in de Arduino IDE (ingesteld op 9600bps) en kunt u de werkelijke real-time pulse lezingen voor elk kanaal, moeten ze lezen:
volledige vooruit = 2000 (2 milliseconden)
Midden = 1500 (1,5 ms)
volledige omgekeerde = 1000 (1 ms)
Deze lezingen weerspiegelen het aantal microseconden die het signaal van de pols van de R/C ontvanger blijft hoog (of op 5v). Het typische Servo-signaal dat afkomstig is van een R/C-ontvanger is een puls waarvan de lengte van ongeveer 1 varieert ms aan 2 ms met 1,5 ms wordt neutraal (dit moet ook het standpunt dat de control stick keert terug naar wanneer u laten gaan). De zender de positie van de control stick leest en verzendt dat pulslengte over eens elke 20milliseconds. Dus het constant voor een nauwkeurige besturing bijgewerkt wordt (voor meer info, opzoeken PPM op wikipedia). Als u de zender control stick naar voren duwen, moet de lezing gaan tot 2000, druk je het achterwaarts dat het moet afdalen naar 1000. U kunt ook een voltage meter op dit punt om te zien dat digitale Pins 5, 6, 9 en 10 van 0-5v afhankelijk van de positie van de stokken van de controle op de zender van de R/C zullen worden gewijzigd.
Als u de zorg om te weten, de code gebruikt van de Arduino 2 externe interrupts te vangen wanneer de Rx signaal pin verandert Staten (gaat van hoog naar laag of vice versa), wanneer het aan het begin van elk signaal, roept de interrupt-functie die de digitale staat van de pin leest en als hoog, het registreert de microseconden waarde op de Arduino systeem timer0. Het retourneert vervolgens aan de lus totdat de pin laag gaat, waarna het wordt afgetrokken van de waarde van de eerder opgenomen microseconde uit de nieuwe huidige microseconde waarde om te bepalen hoe lang de pols bleef hoog (die vertelt ons de positie van de zender control stick). Het doet dat vervolgens over en echt snel.
Ik heb de waarden belemmerd bij het 600-2400 in de code van de Arduino zaken eenvoudig te houden. Zodra het ontvangt het signaal en het bedwingt, het wordt deze waarde proportioneel liggen tussen 0 en 511, waar 255 neutraal zal worden toegewezen. De code wordt dan bepaald wanneer de waarde verandert en wordt een functie gebruikt om te bepalen van de juiste 0-255 PWM waarde in de juiste richting en elke richting heeft zijn eigen PWM-uitgang pin om te controleren de H-brug.
Op een zijnota:
Om dingen makkelijker, bouwde ik een Arduino gebaseerde breakout board met behulp van Radio Shack perf-bestuur, een 28pin DIP socket, een 16mhz oscillator en een beetje van draad. Ik voegde ook een aantal vrouwelijke-headers op zodanige wijze dat ik mijn ontvanger van de R/C direct op het bord breakout kunt aansluiten. Voor veilige verbindingen tijdens het maaien van gras, voegde ik-schroefaansluiting op elke uitgang Pins en elk van de 6 kanalen van de ontvanger. Het heeft ook een ingebouwde in 5v regulator voor het aandrijven van zowel de Atmega168 uit de Arduino en de ontvanger van de R/C (die krijgt energie wanneer u het aansluit op de breakout-bord). Je route dus gewoon jumper draden van de kanalen die u wilt gebruiken op de ontvanger, de Atmega digitale pennen 2 en 3. Ik voegde ook 2 LED-lampjes die moeilijk zijn bedraad aan de digitale pennen 12 en 13 voor de neutrale lichten voor elk kanaal, zodat ik kan gemakkelijk zien wanneer ik in neutraal.
Aangezien deze bot een Tank steer setup met 1 aandrijfmotor op elk wiel is, is de codering heel eenvoudig waar de linker stick bestuurt de linker motor en de juiste stick controleert de juiste motor. Zowel stokken vooruit betekent grasmaaier gaat ongecompliceerd, beide achteruit en het gaat in omgekeerde richting. Als u de links naar voren en de recht achteruit duwt, doet het een nul-Draai cirkel. Aangezien u veronderstellen kunt, is maaien van het gras nu echt leuk.