Inhoudsopgave:

UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx! - Ajarnpa
UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx! - Ajarnpa

Video: UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx! - Ajarnpa

Video: UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx! - Ajarnpa
Video: CS50 2013 - Week 9 2024, November
Anonim
Image
Image
UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx!
UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx!
UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx!
UChip - Eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx!

Ik hou echt van de RC-wereld. Het gebruik van een RC-speelgoed geeft je het gevoel dat je iets bijzonders onder controle hebt, ondanks dat het een kleine boot, auto of drone is!

Het is echter niet eenvoudig om uw speelgoed aan te passen en te laten doen wat u wilt. Meestal bent u beperkt tot het gebruik van de standaard zenderinstellingen of de speciaal ontworpen combinaties van schakelaars en knoppen.

Het is best moeilijk om alles te besturen zoals je echt wilt, vooral omdat de RC-wereld een behoorlijk diepe kennis van programmeren op hardwareniveau vereist om er het beste uit te halen.

Ik heb veel platforms en setups geprobeerd, maar het kostte altijd een enorme inspanning om vertrouwd genoeg te raken met de code voordat ik mijn RC-speelgoed echt aanpaste.

Wat ik miste is een simpele schets die ik kon laden met behulp van de Arduino IDE en waarmee ik gemakkelijk de waarden die uit de Radio RX (ontvanger) kwamen, zou kunnen vertalen naar de gewenste Motor/Servo-besturing.

Daarom is dit wat ik heb gemaakt na een beetje met uChip en de Arduino IDE te hebben gespeeld: Een eenvoudige schets om motoren en/of servo's op afstand te bedienen via 2,4 GHz Radio Tx-Rx!

Stuklijst

1 x uChip: Arduino IDE-compatibel bord

1 xTx-Rx Radiosysteem: elk radiosysteem met cPPM-ontvanger is goed (mijn combo is een oude Spectrum DX7 Tx + Orange R614XN cPPM Rx), zorg ervoor dat u de juiste bindingsprocedure volgt om de Tx en Rx te binden.

1 x batterij: batterijen met een hoge ontlaadstroom zijn nodig bij het omgaan met motoren en servo's.

Motoren/Servo's: volgens uw behoeften

Elektronische componenten om de motoren/servo's aan te drijven: eenvoudige weerstanden, MOSFET's en diodes stellen u in staat om het aandrijfdoel te bereiken.

Stap 1: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Sluit de componenten aan elkaar aan zoals beschreven in het schema.

De Rx is rechtstreeks aangesloten op uChipand en heeft geen externe componenten nodig. Als u een andere ontvanger gebruikt, controleer dan of u een niveauverschuiver nodig heeft of niet. Zorg ervoor dat u het cPPM-signaal verbindt met uChip PIN_9 (dit is PORTA19 voor het geval u de code wilt aanpassen aan een ander SAMD21-bord).

De overige bedrading is nodig om de motor en/of de servo aan te drijven. Het bijgevoegde schema vertegenwoordigt het basiscircuit om uChip te beschermen tegen pieken/doorschieten die gewoonlijk optreden bij het aandrijven van inductieve belastingen. Het belangrijkste onderdeel om de uChip-veiligheid te behouden, is de power Zener-diode van 5,1 V (D1 in het schema) die u parallel moet zetten met de VEXT (uChip-pin 16) en GND (uChip-pin 8). Als alternatief kunt u in plaats van de zenerdiode kiezen voor de optionele circuits die worden weergegeven door D2, C1 en C2, die voorkomen dat omgekeerde pieken de uChip-componenten beschadigen.

Je kunt zoveel motoren/servo's aansturen als je nodig hebt door simpelweg het schema te repliceren en de besturingspinnen te wijzigen (je kunt elke pin gebruiken behalve de voedingspinnen (PIN_8 en PIN_16) en de cPPM-pin (PIN_9)). Houd er rekening mee dat, hoewel u slechts één beveiligingscircuit nodig hebt dat wordt weergegeven door de zenerdiode (of de componenten voor het optionele circuit), de elektrische componenten die verband houden met de motor/servo-aansturing net zo vaak moeten worden gerepliceerd als het aantal motoren/ servo's die u wilt besturen.

Omdat ik minimaal 2 motoren en 2 servo's wilde aansturen, heb ik een kleine print gemaakt die de beschreven schakeling heeft geïmplementeerd en die je op de foto kunt zien. Het eerste prototype werd echter gemaakt op een proto-board met behulp van vliegende draden.

Je hebt dus geen soldeer- / PCB-ontwerpvaardigheden nodig om dit eenvoudige project te implementeren:)

Stap 2: Programmeren

Programmeren
Programmeren

Hier is de magie! Dit is waar dingen interessant worden.

Als je het circuit hebt gebouwd dat in het vorige schema is beschreven, kun je eenvoudig de schets " DriveMotorAndServo.ino " laden en alles zou moeten werken.

Bekijk de code en controleer hoe het werkt.

In het begin zijn er maar weinig #define die worden gebruikt om te definiëren:

- de nummerkanalen van de Rx (6Ch met de Orange 614XN)

- de pinnen waar motoren/servo's aan vast zitten

- Max en min gebruikt voor de servo en motoren

- Max en min gebruikt voor het bereik van radiokanalen

Dan is er de sectie voor het declareren van variabelen waar de variabelen voor motoren/servo's worden gedeclareerd.

Als u meer dan één motor en één servo bestuurt zoals beschreven in het vorige schema, moet u de schets wijzigen en de code toevoegen voor de extra motoren/servo's die u hebt aangesloten. U moet zoveel Servo, servo_value en motor_value toevoegen als zoveel servo's/motoren die u gebruikt.

Binnen de sectie voor de declaratie van variabelen zijn er ook enkele vluchtige variabelen die worden gebruikt voor de Capture Compare van het cPPM-signaal. WIJZIG DEZE VARIABELEN NIET!

Wat u vervolgens moet doen, is de functie loop(). Hier kunt u beslissen welk gebruik u wilt maken van de waarde van de inkomende kanalen.

In mijn geval heb ik de inkomende waarde rechtstreeks op de motor en servo aangesloten, maar u bent meer dan welkom om deze aan uw behoeften aan te passen! In de video en afbeeldingen die in deze tutorial zijn gelinkt, heb ik 2 motoren en 2 servo's aangesloten, maar er kunnen 3, 4, 5, … tot de maximaal beschikbare vrije pinnen zijn (13 in het geval van uChip).

U kunt de vastgelegde kanaalwaarde vinden in de ch[index] array, waarvan de “index” van 0 tot NUM_CH - 1 gaat. Elk kanaal komt overeen met een stick/schakelaar/knop op uw radio. Het is aan jou om te begrijpen wat-is-wat:)

Ten slotte heb ik enkele foutopsporingsfuncties geïmplementeerd om het gemakkelijker te maken te begrijpen wat er gebeurt. Geef commentaar op / verwijder commentaar op de #define DEBUG om de kanaalwaarde op de native SerialUSB af te drukken.

TIP: Er is meer code onder de functie loop(). Dit deel van de code is nodig om uChip-stroompinnen in te stellen, de onderbrekingen te verwerken die worden gegenereerd door de functie voor het vergelijken van vastleggen, de timers en het debuggen in te stellen. Als je je dapper genoeg voelt om met registers te spelen, voel je vrij om het aan te passen!

Bewerken: schets bijgewerkt, een bug in de mapping-functie verholpen.

Stap 3: Speel, rijd, race, vlieg

Image
Image

Zorg ervoor dat u het Tx- en Rx-systeem correct verbindt. Zet hem aan en sluit de batterij aan. Controleer of alles werkt. U kunt de functionaliteiten uitbreiden of de functie van elk kanaal naar wens wijzigen, want nu heeft u de volledige controle over uw toekomstige RC-model.

Bouw nu uw aangepaste RC-model!

P. S.: aangezien inbinden nogal saai kan zijn, ben ik van plan binnenkort een schets uit te brengen waarmee je je Tx-Rx-systeem kunt binden zonder dat je dit handmatig hoeft te doen. Blijf op de hoogte voor updates!

Aanbevolen: