Inhoudsopgave:

Goedkope Arduino Combat Robot Control - Ajarnpa
Goedkope Arduino Combat Robot Control - Ajarnpa

Video: Goedkope Arduino Combat Robot Control - Ajarnpa

Video: Goedkope Arduino Combat Robot Control - Ajarnpa
Video: Arduino DIY Battle Bots: To the Death! 2024, November
Anonim
Goedkope Arduino Combat Robotbesturing
Goedkope Arduino Combat Robotbesturing
Goedkope Arduino Combat Robotbesturing
Goedkope Arduino Combat Robotbesturing
Goedkope Arduino Combat Robotbesturing
Goedkope Arduino Combat Robotbesturing

De heropleving van Battlebots in de Verenigde Staten en Robot Wars in het Verenigd Koninkrijk heeft mijn liefde voor gevechtsrobotica weer aangewakkerd. Dus ik vond een lokale groep botbouwers en dook er meteen in.

We vechten op de Britse mierenweegschaal (150 gram gewichtslimiet) en ik realiseerde me al snel de traditionele manier om een bot te bouwen met RC-uitrusting: een dure RC-zender, een omvangrijke of dure ontvanger en ESC's (elektronische snelheidsregelaars) die magische dozen zijn die veel meer stroom aankan dan nodig is voor een bot van deze omvang.

Nadat ik Arduino in het verleden had gebruikt, wilde ik proberen de dingen anders te doen en mezelf een doel stellen van een Arduino-systeem dat een legaal gevechtssignaal kan ontvangen en twee aandrijfmotoren kan besturen voor ongeveer USD $ 5 (de helft van de kosten van een goedkope ESC)

Om dit doel te helpen bereiken, heb ik deze RC-auto opnieuw gemixt, waardoor het gewicht / de kosten van de ontvanger zijn verlaagd en 4 PWM-signalen zijn gegenereerd om een goedkope h-bridge-chip te laten werken

Deze instructable zal zich richten op het Arduino-besturingssysteem, maar ik zal aanvullende informatie toevoegen om nieuwe mensen te helpen hun eerste bot te bouwen

Vrijwaring:

Zelfs op kleine schaal kan het bouwen/vechten van gevechtsrobots gevaarlijk zijn, ondernemen op eigen risico

Stap 1: Wat je nodig hebt

Materialen:

Voor het besturingssysteem:

  • 1x Arduino pro mini 5v (USD $ 1,70)
  • 1x nRF24L01-module ($ 1,14)
  • 1x 3.3v regelmodule ($ 0,32)
  • 1x dubbele h-bridge module* ($0,90)

Voor de rest van een basiswigbot:

  • 2x micro-reductiemotoren** (goedkope versie, betrouwbare versie)
  • 1x 2s lithium-polymeerbatterij
  • 1x balanslader
  • 1x lipo-oplaadzak
  • 1x schakelaar
  • 1x batterijconnector
  • misc wire (ik gebruikte wat Arduino jumperdraden die ik had liggen)
  • kleine schroeven
  • (optioneel) epoxy
  • (optioneel) Aluminium (uit een frisdrankblikje)
  • (optioneel) extra LED's

Voor een basiscontroller:

  • 1x Arduino pro mini 5v
  • 1x nRF24L01-module
  • 1x 3.3v regelmodule
  • 1x Arduino-joystick

Gereedschap:

  • Schroevendraaier
  • Soldeerbout
  • Tang
  • 3D-printer (optioneel, maar het maakt het leven gemakkelijker)

*als je naar h-bridge-modules kijkt, zoek dan een module met alle 4 signaalingangen naast elkaar, dit maakt het later gemakkelijker om aan de Arduino te bevestigen

**bekijk de laatste stap voor enkele tips over het kiezen van motorsnelheden

Stap 2: Print een chassis

Een chassis afdrukken
Een chassis afdrukken

Kijk voordat je aan de slag gaat met het besturingssysteem eerst naar het ontwerp van de te bouwen bot. Het is altijd het beste om een bot vanaf het wapen te ontwerpen. Voor een beginner raad ik aan te beginnen met een basiswig, ze zijn ontworpen om robuust te zijn en tegenstanders uit de weg te duwen, wat betekent dat je minder snel wordt vernietigd in je eerste gevecht, en het is gemakkelijker om gevoel te krijgen voor het rijden als je niet geen zorgen te maken over een actief wapen.

Ik heb een wigbot ontworpen: "Slightly Crude", die zowel gepantserd als ongepantserd in de strijd is getest. Het is een goede eerste bot, makkelijk te printen en in elkaar te zetten met 8 schroeven. Bekijk het op Thingiverse voor een ander topontwerp

Als je geen 3D-printer hebt, probeer dan een lokale bibliotheek, hackerspace of makerspace

Het toevoegen van extra bepantsering is eenvoudig vers van de printer te doen, schuur zowel de wig als het frisdrankblik aluminium met een grof schuurpapier, borstel eventueel schuurstof weg, breng epoxy aan op zowel het plastic als het aluminium, houd samen met klemmen of elastiekjes voor 12-24 uur

Ik heb momenteel geen openbaar wielontwerp omdat ik rubberen banden van een educatieve robotica-kit heb gebruikt over 3D-geprinte hubs. In de komende weken zal ik een naaf ontwerpen die O-ringen zal gebruiken voor grip. Zodra de wielen klaar zijn, zal ik deze pagina en de Thingiverse-pagina bijwerken

Stap 3: Bereid de H-brug voor

Bereid de H-brug voor
Bereid de H-brug voor

Verschillende h-bridge-motordrivers zijn er in verschillende opstellingen, maar de module die in de eerste lijst is gekoppeld, wordt geleverd met 2 klemmenblokken als uitgang. Deze klemmenblokken zijn zwaar en omvangrijk, dus u kunt ze het beste verwijderen.

De eenvoudigste manier om dit te doen, is door beide pads tegelijkertijd te verwarmen met een soldeerbout en de blokjes er voorzichtig uit te wrikken met een tang.

Bepaal voordat u verder gaat of u de motoren in uw opstelling wilt kunnen verwisselen. Als dat het geval is, kunnen Arduino-startkabels in de uitgang van de module worden gesoldeerd, waarna de tegenovergestelde kabel aan de motor kan worden gesoldeerd, waardoor ze indien nodig kunnen worden verwijderd.

Stap 4: Bedrading van de modules

Bedrading van de modules
Bedrading van de modules
Bedrading van de modules
Bedrading van de modules
Bedrading van de modules
Bedrading van de modules

De bedrading van de modules kan op 3 verschillende manieren worden gedaan, daarom is de ontwerpstap van cruciaal belang. Wapenkeuze heeft invloed op de vorm van de bot en de keuze van de bedrading.

de 3 keuzes zijn:

  1. Losse draden (licht van gewicht maar kwetsbaarder) (afbeelding 1)
  2. Perfboard (zwaarder dan 1 maar robuuster met een grotere footprint) (afbeelding 2)
  3. Aangepaste printplaat (zwaarder dan 1, maar robuust met een kleine voetafdruk) bordontwerp bevestigd (afbeelding 3)

ongeacht de gemaakte keuze, de daadwerkelijke aansluitingen zijn hetzelfde.

Voer de volgende aansluitingen twee keer uit (één keer voor de controller en één keer voor de ontvanger)

nRF24L01 (pin nummering afbeelding 4**):

  • Pin 1 -> GND
  • Pin 2 -> uit pin van 3.3v module
  • Pin 3 -> Arduino pin 9
  • Pin 4 -> Arduino pin 10
  • Pin 5 -> Arduino pin 13
  • Pin 6 -> Arduino pin 11
  • Pin 7 -> Arduino-pin 12

3.3v-module:

  • Vin-pin -> Vcc*
  • Uit pin -> pin 2 nRF (zoals hierboven)
  • GND-pin -> GND

Arduino:

  • Pinnen 9-13 -> verbinding maken met nRF zoals hierboven
  • Rauw -> Vcc*
  • GND -> GND

Voer de volgende verbindingen één keer uit om onderscheid te maken tussen controller en ontvanger:

Voor de controleur:

Joystick:

  • +5v -> Arduino 5v
  • vrx -> Arduino-pin A2
  • vry -> Arduino-pin A3
  • GND -> GND

Voor de ontvanger:

h-brug module:

  • Vcc ->Vcc*
  • B-IB -> Arduino-pin 2
  • B-IA -> Arduino-pin 3
  • A-IB -> Arduino-pin 4
  • A-IA -> Arduino-pin 5
  • GND -> GND

Dit gaat het gemakkelijkst door de pinnen voor Vcc en GND te vervangen door draad, vervolgens het bord ondersteboven te draaien en de pinnen rechtstreeks in de Arduino te solderen, dit vereenvoudigt het solderen en creëert een veilige bevestiging voor de motordriver

*Om een gevechtsrobot legaal te laten zijn, moet een isolatiepunt (schakelaar of verwijderbare link) worden toegevoegd tussen de batterij en het circuit. Dit betekent dat de plus van de batterij op een schakelaar moet worden aangesloten en vervolgens de schakelaar op Vcc

** afbeelding van https://arduino-info.wikispaces.com/Nrf24L01-2.4GHz-HowTo wat een geweldige bron is voor de nRF24L01-module

Stap 5: De controller instellen

De controller instellen
De controller instellen

Zodra alles is aangesloten, is het tijd voor een code.

Beginnend met de controller zijn enkele potentiometerwaarden nodig om ervoor te zorgen dat de exacte aangesloten joystick werkt met de verzendende code.

Laad de "joystickTestVals2"-code in. Deze code wordt gebruikt om de potentiometerwaarden te lezen en ze via serieel weer te geven

Met de code actief en een serieel venster open, begin met kijken naar de "UP" -waarde, duw de joystick volledig naar voren, de "UP" -waarde zal waarschijnlijk tussen een paar grote getallen springen, kies de kleinste van de waarden die u ziet, trek er 10 van af (dit zorgt ervoor dat de stick volledig wordt ingedrukt om volledige kracht te geven) en noteer het als "Up Max", laat de joystick terugveren naar het midden. Kies nu de grootste waarde die u ziet, tel er 20 bij op en noteer deze als "UpRestMax". Herhaal het proces door de stick naar beneden te duwen en het optellen/aftrekken om te keren en de waarden op te nemen als "UpMin" en "UpRestMin"

Herhaal het hele proces opnieuw voor links en rechts, beginnend door de stick naar rechts te duwen, opnemen van "SideMax" en vervolgens "SideRestMax" terwijl het terugveert en naar links duwen om "SideMin" en "SideRestMin" op te nemen

Deze waarden zijn super belangrijk, vooral alle waarden die het woord "Rest" bevatten. deze waarden creëren de "dode zone" in het midden van de stick zodat de bot niet beweegt wanneer de stick in het midden rust, zorg ervoor dat wanneer de stick gecentreerd is de waarden tussen "restMin" en "restMax" vallen voor beide assen

Stap 6: Coderen

Code
Code
Code
Code

De gegeven code doet alles voor een standaard wedge-bot met een structuur om ook een wapen-pwm-waarde te kunnen verzenden.

Benodigde bibliotheken:

  • nRF24L01 Bibliotheek vanaf hier: GitHub
  • Software PWM vanaf hier: Google Code

Stel uw regelaar in:

open de txMix-code en verander de stick-limietwaarden naar de waarden die u in de laatste stap hebt genoteerd. Dit zorgt ervoor dat de code correct reageert op uw joystick (Afbeelding 1)

Pas pijp aan:

Om ervoor te zorgen dat u niemand anders stoort op uw evenement, moet u de radiopijp vervangen. Dit is in feite een identificatie en de ontvanger zal alleen reageren op signalen van de juiste pijp, dus zorg ervoor dat je de pijp in beide codes in hetzelfde verandert.

In afbeelding zijn 2 hexadecimale cijfers van de pijp gemarkeerd. Dit zijn de twee cijfers die moeten worden gewijzigd om de pijp aan te passen. Verander "E1" in een andere 2-cijferige hexadecimale waarde en noteer deze zodat u deze gemakkelijk kunt vergelijken met de pijpen van de tegenstander tijdens een evenement

Uploaden:

  • txMix naar de controller
  • ontvangen naar de ontvangermodule

Verlopen van de code:

txMix:

De code leest in de joystickpositie als een "UP"-waarde en een "side" -waarde. deze waarden worden beperkt op basis van de opgegeven maximale waarde om ervoor te zorgen dat het volledige vermogen wordt gegeven bij de maximale stickpositie.

Deze waarden worden vervolgens gecontroleerd om er zeker van te zijn dat de stick uit de neutrale positie is bewogen, als er geen nullen worden verzonden.

De waarden worden vervolgens afzonderlijk gemengd in twee variabelen, één voor het linker motortoerental en één voor het rechter motortoerental. In deze variabelen wordt een negatieve waarde gebruikt om aan te geven dat de motor achteruit rijdt omdat dit het mengen vereenvoudigt.

De linker- en rechtersnelheidswaarden worden vervolgens gescheiden in vier waarden pwm-waarden, één voor elk: motor rechts vooruit, motor links vooruit, motor rechts achteruit, motor links achteruit.

De vier pwm-waarden worden vervolgens naar de ontvanger gestuurd.

ontvangen:

Ontvangt eenvoudig signalen van de controller, controleert of het signaal geen pwm-waarden bevat voor vooruit en achteruit op een enkele motor en past vervolgens de pwm toe.

De ontvanger schakelt ook de motoren uit als er geen signaal wordt ontvangen van de controller

Stap 7: Alles aan elkaar vastschroeven

Alles aan elkaar schroeven
Alles aan elkaar schroeven
Alles aan elkaar vastschroeven
Alles aan elkaar vastschroeven
Alles aan elkaar schroeven
Alles aan elkaar schroeven

Soldeer connectoren aan de motoren of soldeer de motoren direct aan de h-brug. (Ik geef de voorkeur aan connectoren zodat ik de stekkers eenvoudig kan verwisselen als ik de motoren verkeerd heb aangesloten)

Soldeer de positieve kabel van de batterijconnector naar de middelste pin van de schakelaar en een van de buitenste pinnen op de schakelaar naar de Vcc van de aangesloten modules.

Soldeer de negatieve kabel van de batterijconnector naar de GND van de aangesloten modules.

(Optioneel) voeg extra LED's toe tussen Vcc en GND. Alle gevechtsrobots hebben een lampje nodig dat brandt terwijl het systeem stroom heeft, afhankelijk van de componenten heeft dit systeem LED's op de Arduino, de 3.3v-module en de h-brug, dus zolang ten minste één hiervan zichtbaar is van buiten de zowel aan deze regel is voldaan. Extra LED's kunnen worden gebruikt om er zeker van te zijn dat aan deze regel wordt voldaan en om het uiterlijk aan te passen

Slightly Crude is eenvoudig aan elkaar te schroeven, bout eerst de motorsteunen op hun plaats, voeg de elektronica toe en schroef vervolgens het deksel op zijn plaats, een kleine hoeveelheid klittenband helpt de schakelaar op het deksel te houden

U kunt de controller ontwerpen en afdrukken. Voor het testen heb ik de bijgevoegde controller gebruikt die is aangepast van de BB8 V3-controller van James Bruton

Stap 8: Een woord over de regels voor robotgevechten

Een woord over regels voor robotgevechten
Een woord over regels voor robotgevechten

Verschillende landen, staten en groepen organiseren robotgevechten met verschillende regels.

Ik heb dit systeem gemaakt en dit geschreven om zo algemeen mogelijk te zijn en tegelijkertijd de belangrijkste regels die betrekking hebben op RC-systemen te volgen (met name moet het systeem 2,4 GHz digitaal zijn en een batterij-isolatiepunt hebben). Om dit systeem uit te voeren en/of uw eigen eerste bot te ontwerpen, kunt u het beste contact opnemen met uw lokale groep en een kopie van hun regels krijgen.

De regels die uw lokale groep hanteert, zijn absoluut, geloof mijn woord niet in deze instructable boven de regels van uw groep.

Aangezien dit Arduino-systeem nieuw is voor de gemeenschap, zal je hoogstwaarschijnlijk worden gevraagd om het te laten testen voordat je het op een evenement gebruikt. Ik heb dit systeem herhaaldelijk getest tegen standaard RC-apparatuur en tegen zichzelf zonder enige interferentieproblemen, dus het zou elke test moeten doorstaan, maar de organisatoren van je lokale evenement hebben het laatste woord, respecteren hun beslissing. Als ze het gebruik ervan afwijzen, vraag dan of er een leenbot is waarmee je kunt vechten, of vraag om opheldering over waarom het is afgewezen en probeer het probleem voor het volgende evenement op te lossen

Stap 9: Aanvullende informatie over motoren

Aanvullende informatie over motoren
Aanvullende informatie over motoren

De micro-reductiemotoren die in de mierenklasse worden gebruikt, hebben een groot aantal snelheden en zijn ofwel gemarkeerd met RPM of overbrengingsverhouding. Hieronder volgt een ruwe conversie.

De meeste bots gebruiken motoren tussen 75:1 en 30:1 (met enkele uitzonderingen die 10:1 gebruiken). Bots met grote draaiende wapens kunnen profiteren van langzamere 75:1 motoren omdat de lagere snelheid meer controle mogelijk maakt. Wendbare wedges, lifters en flippers zijn het beste op 30:1 in de handen van een ervaren coureur. Ik raad 50:1 motoren in een wig aan voor de eerste paar gevechten, gewoon om aan het systeem te wennen en te rijden

  • 12V 2000 RPM (of 6V 1000 RPM) -> 30:1
  • 6V 300 RPM -> 50:1

Stap 10: Updates en verbeteringen

Het is een paar jaar geleden dat ik dit 'ible' heb gepost en ik heb veel geleerd over dit systeem, dus het is tijd om ze hier bij te werken. Het belangrijkste is de keuze van de componenten, de originele componenten werkten relatief goed, maar zouden soms falen tijdens gevechten. De 2 grote daders zijn de H-Bridge en de nrf24l01-module, omdat ik de absoluut goedkoopste onderdelen heb gekozen die ik kon vinden. Deze kunnen worden opgelost door:

  • De 0,5A H-brug upgraden naar een 1,5A H-brug, zoals deze: 1,5A H-brug
  • Upgraden van de nrf24l01-module naar een volledig SMD-ontwerp: Open smart NRF24l01

Samen met de nieuwe component-upgrades heb ik een aantal nieuwe PCB's ontworpen die helpen de RX te comprimeren en meer functies aan de TX toe te voegen

Ik heb ook een aantal codewijzigingen op komst, dus houd deze in de gaten

Aanbevolen: