Leon van der Horst - Projecten

 

 

 

 

RC-ontvanger
Uitlezen van
RC-ontvanger met het besturen van een servo en data op LCD

 


RC-ontvangers geven signalen af die heel makkelijk door een microcontroller uitgelezen kunnen worden en heel simpel aangesloten kunnen worden.

De schakeling voor de Arduino:
Ach, een schakeling is wel een groot woord, het is alleen een kwestie van het direct aansluiten van de plus, min en signaal aansluitingen van het desbetreffende kanaal op de ontvanger naar de Arduino. Plus = +5V van de Arduino, min = GND van de Arduino en signaal = een digitale of analoge pin op de Arduino (in de sketch wordt deze aangesloten op analog 0). Zorg wel dat de ontvanger voeding krijgt, meestal is er een aparte aansluiting op de ontvanger om dit te realiseren  en soms is het een combinatie, bijvoorbeeld kanaal 1 is tevens voedingsaansluiting. In de afbeelding bovenaan deze pagina staat links een ontvanger afgebeeld (is net iets groter dan een 1€ munt!), deze heeft zo'n gecombineerde aansluiting, is makkelijk, dan hoef je maar één kabeltje aan te sluiten indien je juist dat kanaal wil uitlezen.

Hieronder de sketch in de Arduino IDE (Arduino IDE = Arduino Interface Development Environment):

De sketch kun je hier downloaden.

Uitleg bij deze sketch:

De LCD display wordt behandeld in een ander project, klik hier.
De servo aansturing wordt ook in een ander project behandeld (komt nog online).
Blijft over het uitlezen van een RC-ontvanger.
Zoals hierboven al vermeld wordt in deze sketch het signaal van de ontvanger (kanaal 1) aangesloten op analog 0 en wordt gedeclareerd in de sketch als "int RCPort1 = 14;". De duemilanove waarop dit project is gemaakt heeft totaal 14 digitale pinnen, genummerd van 0 t/m 13. Doornummeren geeft de analoge poorten, vandaar dat pin 14 wordt gedeclareerd.

Het daadwerkelijk uitlezen van de ontvanger gebeurd d.m.v. van de functie "pulseIn(RCPort1, HIGH, 20000)".
Deze functie leest een puls op de aangegeven pin (analoog of digitaal maakt niet uit) die hoog (HIGH) of laag (LOW) wordt. In feite wacht de functie totdat de puls van status verandert (terug naar HIGH of LOW, in dit voorbeeld naar LOW). De derde parameter "20000", is een timeout waarde. Als er geen pulse wordt waargenomen binnen deze timeout waarde (milliseconden), dan geeft deze functie de waarde "0" (= nul) terug.
De "pulseIn" functie kan pulsen waarnemen van 10 milliseconden tot aan 3 minuten. Overigens de timeout waarde is een optionele waarde en is niet noodzakelijk op te geven, wel wenselijk.
In deze sketch heb ik wel ingebouwd dat de gemeten puls tussen bepaalde waardes dient te liggen, hier tussen 900 en 2150. Door deze waardes weer te geven op een LCD (kan ook via de Serial Monitor van de Arduino IDE), kun je zelf bij je eigen ontvanger bepalen wat de maximale waarden zijn bij maximale uitslag van de joystick of knuppel op je zender. Doe dan ook de trimmer op de zender in de uiterste stand. Elk merk of type ontvanger in combinatie met de zender kan verschillende waarden geven, hou hier rekening mee met je eigen project.
Dan maak ik gebruik van een zeer sterke functie in de Arduino taal, en wel deze:
"map(RCchannel1, 1000, 2000, 65, 115)". Deze functie schaalt de binnenkomen pulswaarden om naar maximale waarden voor de servo. In dit geval doe ik een beriek van 1000 - 2000 die geschaald wordt naar 65 -115. Voor mijn Walrusklasse onderzeeër schaalmodel mogen de roeren (alle 5!) slechts 25 graden iedere kant op, wat zich vertaald naar 65 - 115, want 90 is de middenpositie.

 

Uitleg bij de hardware:

Er komen in feite geen elektronica componenten aan te pas, alleen draadverbindingen. Toch zijn daar enorme verschillen in met de stekers die fabrikanten van RC-apparatuur gebruiken. Hieronder een overzicht van de meest gebruikte stekers met hun desbetreffende specificaties:

Gelukkig verandert er wel iets in deze wereld, vaak worden servo's (zeker de Futaba variant voor Parallax en Robbe) tegenwoordig uitgevoerd zoals aangegeven is bij de steker van rechtsboven (Futaba).

 

Naar elektronica          Naar projecten          Naar hoofd pagina