Volledig 3D-geprinte tank:bouw een veelzijdig rupsrobotplatform
In de tutorial laat ik je zien hoe ik een supercool radiografisch bestuurbaar rupsvoertuig bouwde, of een robotplatform of een tank, noem maar op. Ik heb dit ding helemaal opnieuw ontworpen zodat het volledig in 3D kan worden geprint, zodat je alles eenvoudig kunt afdrukken en er zelf een kunt bouwen.
Je kunt de volgende video bekijken of de schriftelijke tutorial hieronder lezen.
Overzicht
Mijn doel voor dit project was om een veelzijdig platform te maken dat vele soorten terreinen kan doorkruisen en voor verschillende toepassingen kan worden gebruikt. De beste keuze daarvoor was het gebruik van een continu sporensysteem. De rupsbanden verdelen het gewicht van het voertuig over een groter oppervlak, wat uitstekende grip biedt en de kans verkleint dat u vast komt te zitten in zachte grond, modder of sneeuw.
Het robotplatform rijdt redelijk goed in de modder en het is jammer dat ik niet de kans heb gehad om het op sneeuw te testen. Ik hoop dat ik dat in sommige van mijn toekomstige video's zal doen waarin ik van plan ben een robotarm of een torentje te installeren. Met een robotarm bovenop het platform kunnen we verschillende taken uitvoeren, zoals iets pakken en verplaatsen, of we kunnen er een camera op plaatsen en deze gebruiken voor visuele inspectie, enzovoort. Of we kunnen bijvoorbeeld een geschutskoepel maken die NERF-darts kan afvuren en in combinatie met de eenvoudige maar coole LED-verlichting die ik al op dit platform heb geïnstalleerd, kunnen we er heel leuk mee spelen.
Wat de ophanging betreft, heb ik een Christie-ophangingssysteem gebruikt dat al jaren in tanks wordt gebruikt. Bij deze opstelling heeft elk wegwiel een individuele vering of een veer en een schokdemper.
Hierdoor kan het voertuig soepel over oneffen terrein rijden en obstakels beklimmen, terwijl het contactoppervlak tussen de rupsbanden en het terrein behouden blijft.
Voor het besturen van de 3D-geprinte tank gebruik ik een goedkope commerciële RC-zender die opdrachten naar het platform stuurt.
Op het platform heb ik een geschikte RC-ontvanger staan die de commando's ontvangt en naar een microcontroller stuurt. Het brein van dit platform is een Atmega2560 microcontroller-gebaseerd bord en om alles eenvoudig met elkaar te verbinden heb ik een op maat gemaakte printplaat gemaakt die eenvoudig bovenop het bord kan worden bevestigd.
Niettemin, doe je gordel om, want ik zal je door het hele proces van het bouwen van dit robotplatform leiden, beginnend bij het ontwerp, het 3D-printen, het assembleren, het aansluiten van de elektronische componenten en het programmeren van de microcontroller.
Ontwerp het robotplatform
Ik heb dit robotplatform ontworpen met SOLIDWORKS, dat ook de sponsor is van deze video.
— Gesponsorde sectie —
"Het is vermeldenswaard dat deze toonaangevende en professionele ontwerptools nu beschikbaar zijn voor alle makers tegen een opmerkelijk lage prijs van slechts $ 99 per jaar of $ 9,99 per maand. Dat klopt, 3D ERVAAR SOLIDWORKS for Makers is geweldig voor iedereen die het vak leert, doe-het-zelf-projecten maakt en meer.
Deze aanbieding omvat 3D ERVAAR SOLIDWORKS Professional, de meest gevraagde CAD-tool binnen het aanbod en draait lokaal op uw PC. U kunt bestanden lokaal of in de cloud opslaan met 3D EXPERIENCE-platform.
“xDesign”, browsergebaseerde CAD, u kunt het gebruiken met 3D ERVAAR SOLIDWORKS, of op zichzelf. Het is geweldig om overal, altijd en op elk apparaat te modelleren.
“xShape”, browsergebaseerde freeform CAD die eenvoudig te gebruiken is voor oppervlaktemodellering op elk apparaat.
Met 'Visualize Connected' kunt u eenvoudig afbeeldingen, animaties, interactieve webinhoud en meer van fotokwaliteit maken om indruk te maken op uw publiek.
“NC Shop Floor Programmer”, CAM voor intelligente bewerkingsstrategieën voor 3-assig frezen en draadvonken in een eenvoudig te gebruiken pakket.
Klik op de onderstaande link en je krijgt een speciale korting van 20%, zodat je vandaag nog kunt beginnen met het maken van het beste! Grote dank aan SOLIDWORKS voor het sponsoren en ondersteunen van educatieve inhoud als deze. ”
Koop nu: http://www.solidworks.com/makers20
Meer informatie: https://discover.solidworks.com/3dervaring-solidworks-makers
— Terug naar onderwerp —
Laat me uitleggen hoe ik op het ontwerp van een robotplatform kwam. De eerste invoerparameters voor het ontwerp waren deze RC-schokdempers die ik had en hun afmetingen.
Ik had er acht, wat betekende dat er aan elke kant vier wielen zouden zijn, en ze waren 41 mm lang als ze werden verlengd met een veerweg van 11 mm. Op basis van deze afmetingen wilde ik een wat grotere verticale veerweg voor de wielen krijgen, dus bedacht ik dit mechanisme waarmee ik een verticale veerweg van 16 mm voor de wielen kreeg.
Ik bedoel, ik kan een nog grotere reisafstand krijgen als ik het scharnierpunt van de schokdemper en het rijwiel dichter bij het draaipunt van de rijwiellink breng, maar dan verlies ik de kracht van de veer, of heb ik een sterkere veer nodig om het platform goed vast te houden.
Ik heb een aantal eenvoudige simulaties gedaan met SOLIDWORKS om de reactiekrachten op de veren met verschillende mechanismen te controleren en daarom heb ik voor dit mechanisme gekozen, dat ook een goede algehele compactheid biedt.
Als we het voorwiel van dichterbij bekijken, kunnen we zien hoe dit verbonden is met het tussenwiel, dat zorgt voor dynamische spanning op de baan. Als het rijwiel omhoog gaat, worden de spooromtrekken kleiner en wordt de spanning losser.
Met deze verbinding hier wordt, wanneer dat gebeurt, het tussenwiel naar voren geduwd om de rupsband te spannen. Met deze verbinding kunnen we de baan ook statisch spannen, door deze bout en afstandsmoer aan te passen.
Aan de achterkant hebben we het tandwiel dat uit drie delen bestaat. De askoppeling en het linker- en rechtergedeelte van het tandwiel zijn allemaal met elkaar verbonden met drie M3-bouten.
De belangrijkste afmeting hier op het tandwiel is de toonhoogte, omdat deze moet overeenkomen met de toonhoogte van de baan. De steek is hier 11 mm en ik heb ervoor gekozen dat het tandwiel 12 tanden heeft, waardoor ik een steekdiameter van het tandwiel van ongeveer 42 mm kreeg.
De steek van 11 mm werd feitelijk bepaald door het ontwerp van de rupsschakel. Mijn doel voor de tracklink was om zo compact mogelijk te zijn en met slechts één extra onderdeel of pin te verbinden met de volgende link, en tegelijkertijd sterk genoeg te zijn om met een 3D-printer te worden gemaakt.
Bovendien wilde ik bij het 3D-printen elk gebruik van ondersteuningsmateriaal voor het onderdeel vermijden, wat ik met dit ontwerp ook daadwerkelijk heb weten te bereiken.
Om de rupsschakels met elkaar te verbinden, was ik van plan om pennen met een diameter van 2 mm te gebruiken. Daarom heb ik de ene kant 2 mm gedimensioneerd, zodat deze strak zou passen, en de andere kant 2,3 mm, zodat de rupsschakels vrij konden draaien.
De tandwieltanden gaan hier in deze opening waar de pennen van de rupsschakel zijn gevormd met een diameter van 8,8 mm, terwijl de tandwieldiameter 9,1 mm is om een losse pasvorm te hebben en goed te kunnen werken.
Nadat ik al deze onderdelen had gedefinieerd, heb ik in de montageomgeving een schets gemaakt, een gesloten contour rond het tandwiel, het tussenwiel en de rijwielen.
Vervolgens heb ik deze schets met de SOLIDWORKS Chain Component Pattern-functie gebruikt om alle spoorschakels langs die contour te genereren.
Ik ontwierp de rest van het robotplatform, de basis waar alles met elkaar verbonden is, de zijkanten waar enkele LED's in passen en de bovenkappen, in wat ik een moderne en cool ogende stijl vond. Omdat de totale afmeting van het platform groter is dan die van de meeste 3D-printers, ongeveer 400 mm bij 300 mm, heb ik alle onderdelen in twee secties verdeeld, zodat we ze op vrijwel elke 3D-printer kunnen printen. Ze zijn met elkaar verbonden met enkele beugels en M3-bouten.
Voor het monteren van het hele robotplatform hebben we verschillende M3- en M4-bouten en -moeren nodig, evenals enkele schroefdraadinserts en lagers. Een volledige lijst van alle componenten die nodig zijn voor dit project vindt u hieronder in de montagesectie.
3D-model- en STL-downloadbestanden
Je kunt het 3D-model van dit RC-tank-/robotplatform, evenals de STL-bestanden voor 3D-printen, verkrijgen bij Cults3D.
3D-printen
Om bij het 3D-printen dimensionaal nauwkeurige 3D-geprinte onderdelen te krijgen, moeten we de instellingen Horizontal Expansion en Hole Horizontal Expansion in onze slicing-software gebruiken. Als we deze instellingen standaard laten staan, zijn zowel de buitenafmetingen als de gaten van de print meestal kleiner dan die van het originele model.
Ik heb de horizontale uitzetting ingesteld op 0,02 mm en de horizontale uitzetting van het gat op 0,04 mm. Natuurlijk moet u enkele testafdrukken maken om te zien welke waarden u de beste resultaten opleveren op uw 3D-printer. We hebben nauwkeurige afmetingen van de onderdelen nodig om ze gemakkelijk aan elkaar en met de andere componenten zoals de lagers en de bouten te kunnen monteren.
Bij het 3D-printen van de spoorschakels heb ik een vlot als bouwplaathechting gebruikt, omdat hun contactoppervlak met de bodemplaat een beetje klein is en mogelijk niet goed blijft plakken als de bedhechting op je printer niet zo goed is. Vooral bij het printen van grotere batches is het veiliger om een vlot te gebruiken.
Het assembleren van de 3D-geprinte tank – rupsrobotplatform
Oké, dus hier heb ik alle 3D-geprinte onderdelen voor het robotplatform. Eerlijk gezegd kostte het nogal wat tijd om alles af te drukken.
Het printen van elk van de basissecties duurde bijvoorbeeld ongeveer 22 uur, en het printen van alle 156 tracklinks duurde ongeveer 96 uur. We hebben ongeveer 200 uur nodig om alles te printen. Gelukkig had ik twee 3D-printers, dus het kostte me ongeveer 100 uur.
Onderdelenlijst
Hier is een lijst met componenten die nodig zijn voor het assembleren van dit 3D-geprinte tank-robotplatformproject. De lijst met de elektronische componenten vindt u hieronder in het schakelschemagedeelte van het artikel.
- 8x RC Schokdempers …………………………………….. Amazon / AliExpress
- 8x Veren ……………………………………………………. Amazone / AliExpress
- 40x Kogellagers 624 – 4x13x5mm ………………… Amazon / AliExpress
- M3 inzetstukken met schroefdraad …………………………………….. Amazon / AliExpress
- M3 en M4 bouten en moeren ……………………………. Amazone / AliExpress
Bouten:
M4x40mm – 8 stuks; M4x35mm – 2 stuks; M4x30mm – 8 stuks; M4x25mm – 2 stuks; M3x25mm – 16 stuks; M3x20mm – 8 stuks; M3x16mm – 10 stuks; M3x12/14mm – 32 stuks; M3x10mm – 8 stuks; M3x8mm – 14st
Noten:
M4 – 25 stuks; M3 – 30 stuks
Sluitringen:
M4 – 30 stuks
Openbaarmaking:dit zijn affiliatielinks. Als Amazon Associate verdien ik aan in aanmerking komende aankopen.
Ik begon met het monteren van de basis. Zoals ik al zei, het bestaat uit twee delen die met elkaar verbonden kunnen worden met behulp van enkele beugels en M3-bouten en -moeren.
Voor het vastzetten van de zijbeugels gebruik ik M3, 5 mm lange inzetstukken met schroefdraad die in de zijwand van de basis gaan. Op deze manier is de buitenkant van de muur schoon, zonder bouten en moeren, zodat de rails dichtbij kunnen lopen.
Vervolgens heb ik de beugels voor het bevestigen van de schokdempers op hun plaats vastgezet met behulp van enkele M3-bouten.
Vervolgens installeer ik de lagers waar de arm van het wegwiel zal draaien. De lagers hebben een buitendiameter van 13 mm en een binnendiameter van 4 mm en we hebben er twee nodig voor elk wegwiel.
Als pin gebruik ik een M4-bout met een lengte van 30 mm. We moeten een ring tussen het lager en de arm plaatsen en deze van binnenuit op zijn plaats vastzetten met een zelfborgende moer. We moeten voorzichtig zijn met hoe strak we deze verbinding aandraaien, niet te strak, maar ook niet te los.
Vervolgens kunnen we de schokdemper installeren. We zetten hem op zijn plaats vast met de M1.4-bout die bij de verpakking wordt geleverd.
Ik had die kleine schroevendraaier niet, dus gebruikte ik een tang om de bout vast te draaien. Tot nu toe lijkt het erop dat het mechanisme perfect werkt.
Vervolgens kunnen we het rijwiel aan de onderkant van de arm installeren. Het rijwiel bestaat uit twee delen om bedrukken met steunmateriaal te voorkomen. Misschien kan het als één onderdeel worden afgedrukt, maar ik heb niet geprobeerd hoe het eruit zal komen.
Op deze manier moeten we de twee secties met elkaar verbinden, en ik heb besloten om daarvoor de stalen staven van 2 mm te gebruiken, dezelfde die ik zal gebruiken om de spoorschakels met elkaar te verbinden. Dit is eigenlijk een koperen staaf die wordt gebruikt bij het lassen, die enigszins zacht is en gemakkelijk met een tang op maat kan worden geknipt.
Ik heb voor elk wiel drie stangen met een lengte van ongeveer 23 mm geplaatst en vervolgens ook twee van dezelfde lagers geïnstalleerd die ik eerder aan beide zijden van het wiel gebruikte. Ook hier heb ik, net als voorheen, met behulp van een M4-bout, een ring en een zelfborgende moer het wiel op zijn plaats vastgezet.
Het wiel moet vrij kunnen draaien zonder speling op de as.
Nu hoeven we dit proces alleen nog maar te herhalen voor de andere wielen. Wat het voorwiel betreft, we hebben een iets andere arm met een hendel die voor dynamische spanning op de baan zorgt, maar de installatie is hetzelfde.
Vervolgens kunnen we het mechanisme voor het tussenwiel monteren. Het bestaat uit drie 3D-geprinte onderdelen, enkele bouten en een afstandsmoer.
Voordat we de eerste schakel op zijn plaats vastzetten, moeten we aan de achterkant een zelfborgende M4-moer toevoegen, waarop we later het tussenwiel zullen bevestigen.
Ik gebruik dezelfde koperen staafjes van 2 mm als pinnen voor deze verbindingen. Nu kunnen we bij de tweede schakel aan de kant van het tussenwiel een 15 mm lange M3-afstandsmoer vastzetten met behulp van een M3-bout.
Aan de andere kant plaatsen we een 20 mm lange M3 bout en een moer, die in de afstandsmoer gaat. Met deze opstelling kunnen we nu de afstand tussen het tussenwiel en de wegwielarm aanpassen en zo kunnen we de baan zowel statisch als dynamisch spannen. Dan kunnen we het tussenwiel eenvoudig op zijn plaats vastzetten met een M4-bout, en zo hebben we zowel dit spansysteem als het hele ophangsysteem laten doen.
Oké, dus nu kunnen we het tandwiel monteren en daarvoor moeten we eerst de motor installeren. Ik heb het basisplatform zo ontworpen dat er motoren met een diameter van 37 mm met centrale of offset-as in passen.
We kunnen elke 12V DC-motor installeren met een toerental variërend van 20 tot 1000 tpm, uiteraard afhankelijk van de toepassing van het robotplatform, maar daar zullen we later in de video over praten. De motor wordt op zijn plaats vastgezet met zes M3-bouten.
Om het tandwiel aan de motoras te bevestigen, moeten we eerst de askoppeling voorbereiden of er enkele schroefdraadinserts in installeren.
Vervolgens kunnen we de koppeling op zijn plaats plaatsen en vastzetten met een M3-stiftschroef.
Vervolgens worden de twee delen van het tandwiel geplaatst en vastgezet met drie M3-bouten.
Dus hier hebben we de perronaandrijflijn voltooid en nu is het tijd om wat plezier te hebben met het monteren van de baan. Dat klopt, ik vond het best leuk om de track in elkaar te zetten.
Hier kun je de tracklinks van dichterbij bekijken, zodat we kunnen zien hoe eenvoudig en duidelijk ze zijn.
Ze komen meteen klaar voor gebruik uit de 3D-printer, omdat we geen ondersteuning gebruiken bij het 3D-printen. We hebben alleen pinnen van 2 mm nodig om ze aan te sluiten. Zoals ik al zei, kunnen we ze gemakkelijk verkrijgen uit messing lasstaven van 2 mm.
De buitenste gaten van de schakels zitten goed vast, dus we moeten wat kracht gebruiken om ze in te brengen, maar dat zorgt ervoor dat ze niet loskomen. De binnenste gaten van de schakels zijn los gemonteerd, wat een vrije rotatie tussen de rupsschakels garandeert.
Nu hoeven we alleen nog maar een kopje thee of koffie te zetten en een paar uur lang plezier te hebben van het in elkaar zetten ervan. Je beseft het plezier zodra je er een aantal met elkaar verbindt en ziet hoe cool de track eruit komt. Voor het samenstellen van één spoor hebben we in totaal 78 spoorschakels nodig. Wat betreft de lengte van de hengel hebben we voor elke track ongeveer 3,5 meter nodig, aangezien elke pin ongeveer 43 mm lang moet zijn.
Zodra we de baan gereed hebben, kunnen we deze eenvoudig om het tandwiel, de wielen en het tussenwiel wikkelen en de lus ter plaatse met nog een pin van 2 mm sluiten. We kunnen hier opmerken dat bij 78 spoorschakels de spanning van de baan precies goed is, al beweegt het laatste rijwiel een stukje omhoog.
Dat komt eigenlijk omdat de veer niet sterk genoeg is. Door deze moer op de schokdemper aan te passen kunnen we de veerspanning een klein beetje aanpassen, al was dat ook weer niet genoeg. Daarom heb ik besloten om de originele veer die bij de schokdemper werd geleverd, te vervangen door een sterker exemplaar.
Het vervangen van de veer is vrij eenvoudig, omdat we alleen het ene uiteinde van de schokdemper hoeven los te draaien, de sterkere veer erin moeten steken en de stang opnieuw moeten vastschroeven. De veer die ik had was iets breder dan het origineel, waardoor ik aan de onderkant een M4 ring moest gebruiken. Nu had deze veer genoeg kracht om het wiel op zijn plaats te houden bij het installeren van de rupsbanden met 78 schakels.
Uiteindelijk heb ik de veren van alle schokdempers vervangen, omdat ik besefte dat ze niet sterk genoeg zouden zijn om het gewicht van het hele platform te dragen. Hiermee is het hele aandrijfsysteem van het platform compleet, wat naar mijn mening best goed is gebleken.
Indien nodig kunnen we nu de rupsspanning aanpassen met de afstandsmoer bij het tussenwiel. Het is natuurlijk prima om de baan een beetje los te hebben, zodat deze goed werkt. Het losse bovenste gedeelte van de rupsbanden wordt ondersteund op de schokdemperbeugels.
Ik heb de motor op een stroom aangesloten om te controleren hoe deze werkt. Het leek mij perfect. Het is echt een geweldig gevoel om iets dat je hebt gemaakt met zoveel 3D-geprinte onderdelen in actie te zien.
Uiteraard moeten we dezelfde procedure herhalen om de andere kant te monteren. Als dit klaar is, is het robotplatform voor 80% klaar. Vervolgens ga ik de zijpanelen installeren, die hier vooral voor de visuele uitstraling zijn.
We zetten ze op hun plaats vast met behulp van enkele beugels en M3-bouten. Ga bovenaan naar de afdekkingen die het platform omsluiten. Voor deze video heb ik het op deze manier ontworpen, alleen voor de visuele uitstraling.
Zoals ik eerder al zei, ben ik van plan om in sommige van mijn toekomstige video's een robotarm of een torentje bovenop dit platform toe te voegen, wat betekent dat ik de toppen dan op de juiste manier moet ontwerpen.
Elektronica – Schakelschema van robotplatform
Nu kunnen we verder gaan met de elektronica van dit project. Zoals ik al zei, ik zal een ATmega2560-microcontrollergebaseerd bord gebruiken.
U kunt de benodigde componenten voor dit project verkrijgen via de onderstaande links:
- 2x 12V DC-motor – 50 tot 500 tpm ………. Amazone / AliExpress
- DRV8871 DC-motorbesturing ………….…. Amazon / AliExpress
- Arduino MEGA…………………………….….…..… Amazon / AliExpress
- 3S LiPo-batterij …………………..………….. Amazon / AliExpress
- XT60-connector …………………………..……… Amazon / AliExpress
- FLYSKY RC-zender ……………………. Amazon / AliExpress
Openbaarmaking:dit zijn affiliatielinks. Als Amazon Associate verdien ik aan in aanmerking komende aankopen.
Voor het aandrijven van de twee motoren zal ik twee DRV8871 DC-motordrivers gebruiken, die PWM-besturing en een piekstroom tot 3,6 A ondersteunen. De bedrijfsspanning van de DC-motoren is 12V, en we zullen alles van stroom voorzien met een 3S LiPo-batterij die ongeveer 12V levert. Ik heb ook een 5V-spanningsregelaar meegeleverd, de LM350 IC, om een speciale 5V-voeding te hebben voor ander toekomstig gebruik, bijvoorbeeld om er servomotoren op aan te sluiten. In deze video gebruiken we deze 5V voor het voeden van de RC-ontvanger en enkele LED's.
De LED's die ik voor dit project gebruik zijn eenvoudige 5 mm LED's in witte en rode kleur. Ik heb ze als volgt gerangschikt:
Aan de achterkant hebben we aan elke kant twee rode LED's als achterlichten, en aan de voorkant drie witte LED's aan elke kant als koplampen. Bovendien zijn er zes LED's op de bovenklep als grootlichtverlichting. Om deze LED's goed te laten oplichten, hebben we een geschikt circuit nodig dat weerstanden bevat om de stroom te beperken. Ik heb hun verbindingen zowel parallel als in serie gecombineerd.
Voor de koplampen vooraan gebruik ik bijvoorbeeld twee parallelle lijnen met 12V om de 6 LED's van stroom te voorzien, 3 aan elke kant links en rechts, die in serie zijn geschakeld. Aan de hand van de doorlaatspanning en stroom van de LED's heb ik de vereiste weerstandswaarde voor elke lijn berekend, en dat was in dit geval 150 Ohm. Voor het activeren van de LED's gebruik ik een aantal universele NPN-transistoren met een vermogen van 200 mA.
Als laatste heb ik een eenvoudige spanningsdeler gemaakt die ik ga gebruiken voor het monitoren van de accuspanning. Simpelweg wordt de 12V van de batterij verlaagd tot onder de 5V, zodat ze naar een analoge ingang in de microcontroller kunnen gaan. In het programma kunnen we de waarde terugvertalen naar de werkelijke spanningswaarde en deze van de RC-ontvanger naar de RC-zender sturen, waar we de waarde op het display kunnen zien.
Aangepast PCB-ontwerp
Uiteindelijk had ik behoorlijk wat aansluitingen, dus om rommel te voorkomen moest ik een op maat gemaakte printplaat voor dit project ontwerpen.
De printplaat zal compatibel zijn met het op een ATmega2560-microcontroller gebaseerde bord dat er direct bovenop kan worden gemonteerd.
Ik heb een 3,3V spanningsregelaar meegeleverd en een aansluiting voor een NRF24L01 transceivermodule voor het geval we het platform met die module willen besturen. Ik heb ook een 12V-rail meegeleverd, en 5V- en 6V-rails met digitale pinnenverbindingen die zijn aangebracht om servomotoren erop aan te sluiten. De 6V-rail kan worden gevoed met een externe buck-converter.
Ik heb de printplaat bij PCBWay besteld. Hier kunnen we eenvoudig het Gerber-bestand uploaden, de eigenschappen van onze printplaat kiezen en deze tegen een redelijke prijs bestellen.
Ik heb geen van de standaardeigenschappen gewijzigd, behalve de PCB-kleur, die ik wit heb gekozen. Je kunt de Gerber vinden en downloaden via de PCBWay-projectdeelcommunity, waar je de PCB ook direct kunt bestellen.
U kunt het Gerber-bestand ook hier downloaden:
Niettemin arriveerde na enkele dagen de printplaat. De kwaliteit van de printplaat is geweldig en alles is precies hetzelfde als in het ontwerp.
Het monteren van de printplaat is vrij eenvoudig, omdat alles is gelabeld. Ik begon met het solderen van de pin headers aan de onderkant van de print, voor de ATmega2560 aansluiting en ging daarna verder met de bovenkant. Voor het gemak moeten we eerst de kleinere componenten solderen, zoals de weerstanden en de transistors, en dan de grotere zoals de LED- en stroomconnectoren.
Ik heb voor alle verbindingen pin-headers gebruikt, omdat dit de flexibiliteit geeft om wijzigingen aan te brengen als iets niet goed werkt. Ik heb de connectoren voor de externe buck-converter en zijn rails, evenals de 3,3V-spanningsregelaar, niet gesoldeerd, aangezien ik ze nu toch niet zou gebruiken. Ik vind het echt leuk hoe mooi en schoon deze printplaat eruit kwam met deze witte kleur.
De 3D-geprinte tankconstructie voltooien
Oké, dus eerst zetten we het microcontrollerbord op zijn plaats met een paar M3-bouten, en dan komt daar bovenop de aangepaste printplaat.
Nu is het tijd om de LED's te installeren. Ze worden in het zijpaneel gemonteerd met behulp van deze houders waarin de 5 mm LED's passen. Zoals beschreven in het schema, moeten we elke lijn LED's in serie solderen.
Bij de kathode loopt de zwarte draad en bij de anode de rode draad. Deze draden voeren we door een kleine opening in de zijpanelen die naar de print leiden.
Het LED-houdergedeelte is zo ontworpen dat het goed aansluit op het zijpaneel, zodat het er, zodra het op zijn plaats zit, mooi en strak uitziet.
De grootlicht-LED's zijn rechtstreeks op de bovenste voorkap geplaatst.
Voor het aansluiten van de LED's heb ik XH2,54 mm dupont mannelijke connectoren op de printplaat gesoldeerd, dus ik moest een geschikte dupont vrouwelijke connector op de draden installeren. Voor die tas hebben we een krimptang nodig, maar toen ik dit project maakte, had ik er geen bij.
Ik gebruikte een gewone kleine tang om dat werk te doen, en de verbindingen kwamen er prima uit. Elke LED-lijn moet in de juiste connector gaan die op de printplaat is aangegeven.
Wat de motoren betreft, ik had geen geschikte connectoren, dus heb ik de draden er rechtstreeks aan gesoldeerd. De motoraansluiting gaat in de DRV8871-driverkaart en vervolgens in de printplaat.
Voor de radiocommunicatie gebruik ik de FLYSKY RC zender en ontvanger, die heel betaalbaar zijn en prima werken.
Voor het aansluiten van de ontvanger op de microcontroller kunnen we startdraden gebruiken. De ontvanger communiceert met de microcontroller via een I-BUS en de seriële poort, dus we hebben slechts drie draden nodig, VCC, GND en de signaalpin.
Als we data terug willen sturen van de ontvanger naar de zender, in ons geval voor het monitoren van de batterijspanning, moeten we ook de sensor I-BUS van de ontvanger aansluiten op een andere seriële poort.
Ten slotte kunnen we de LiPo-batterij aansluiten. Afhankelijk van de batterij hebben we een geschikte connector nodig. Deze gaat in de 12V-connector en direct ernaast hebben we een AAN/UIT-connector waarop een schakelaar wordt aangesloten om de stroom van het platform aan en uit te zetten.
Houd er rekening mee dat voordat we het bord van stroom voorzien, we eerst de RC-ontvanger van de stroom moeten halen en de variabele spanning van de LM350 IC met behulp van de trimmer moeten aanpassen naar 5V.
Nu hoeven we alleen nog maar de bovenste achteromslag op zijn plaats te plaatsen, en we zijn klaar met dit project.
Het robotplatform programmeren
Nu moeten we het 3D-geprinte tank-/robotplatform programmeren. Hier is de Arduino-code voor dit robotplatform.
/*
3D Printed Tracked Robot Platform - Arduino Code
by Dejan, www.HowToMechatronics.com
Libraries:
IBusBM: https://github.com/bmellink/IBusBM
*/
#include <IBusBM.h>
#define motorLeft_IN1 4
#define motorLeft_IN2 5
#define motorRight_IN1 6
#define motorRight_IN2 7
IBusBM IBus;
IBusBM IBusSensor;
int ch0, ch1, ch6, ch8 = 0;
int motorSpeed, steeringValue, leftMotorSpeed, rightMotorSpeed = 0;
int ledBlinkPeriod = 50;
int isOn = LOW;
unsigned long time_now = 0;
void setup() {
Serial.begin(115200);
IBus.begin(Serial1, IBUSBM_NOTIMER); // Servo iBUS
IBusSensor.begin(Serial2, IBUSBM_NOTIMER); // Sensor iBUS
IBusSensor.addSensor(IBUSS_INTV); // add voltage sensor
// DC motors control - set them stationary
// Left track
digitalWrite(motorLeft_IN1, LOW); // PWM value
digitalWrite(motorLeft_IN2, LOW); // Forward
// Right track
digitalWrite(motorRight_IN1, LOW); // PWM value
digitalWrite(motorRight_IN2, LOW); // Forward
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
void loop() {
// Reading the data comming from the RC Transmitter
IBus.loop();
// ch0 - left and right; ch1 - forward and backward;
ch0 = IBus.readChannel(0); // ch0 - left and right;
ch1 = IBus.readChannel(1); // ch1 - forward and backward;
ch6 = IBus.readChannel(6); // ch6 - Headlights
ch8 = IBus.readChannel(8); // ch8 - High beam
// convert the incoming date into suitable PWM value
steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) = 70 - 255 so this range from 70 to 255 is used as PWM value
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);
// if PWM is lower than 72, set PWM value to 0
if (leftMotorSpeed < 72) {
leftMotorSpeed = 0;
}
if (rightMotorSpeed < 72) {
rightMotorSpeed = 0;
}
// if right joystick goes up > move forward
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}
// if right joystick goes down > move backward
if (ch1 > 1000 && ch1 < 1420) {
digitalWrite(motorLeft_IN1, LOW); // Direction - Backward
analogWrite(motorLeft_IN2, leftMotorSpeed); // PWM input
digitalWrite(motorRight_IN1, LOW); // Direction - Backward
analogWrite(motorRight_IN2, rightMotorSpeed); // PWM input
}
// if right joystick is in the middle, don't move
if (ch1 > 1420 && ch1 < 1520) {
if (leftMotorSpeed < 75 && rightMotorSpeed < 75) {
digitalWrite(motorLeft_IN1, LOW);
digitalWrite(motorLeft_IN2, LOW);
digitalWrite(motorRight_IN1, LOW);
digitalWrite(motorRight_IN2, LOW);
}
// if right joystick move just left or right, without going up or down, move the tank left or right (only 1 motor move)
else {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}
}
// LEDs control
// Headlights and Taillights LEDs control
if (ch6 > 1500) {
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
}
else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
// High beam LEDs control
if (ch8 == 1500) {
digitalWrite(46, HIGH);
}
// If rocker switch in position 3 (2ooo value) - flasing with the high beam LEDs
else if (ch8 == 2000) {
if (millis() >= time_now + ledBlinkPeriod) {
time_now += ledBlinkPeriod;
if (isOn == HIGH) {
isOn = LOW;
}
else {
isOn = HIGH;
}
digitalWrite(46, isOn);
}
}
else {
digitalWrite(46, LOW);
}
// Monitor the battery voltage
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.00 / 1023.00) * 3.02; // Convert the reading values from 5v to suitable 12V
// Send battery voltage value to transmitter
IBusSensor.loop();
IBusSensor.setSensorMeasurement(1, voltage * 100);
}Code language: PHP (php) Codeoverzicht
Met behulp van de IBusBM-bibliotheek lezen we dus binnenkomende gegevens van de RC-zender.
// Reading the data comming from the RC Transmitter
IBus.loop();
// ch0 - left and right; ch1 - forward and backward;
ch0 = IBus.readChannel(0); // ch0 - left and right;
ch1 = IBus.readChannel(1); // ch1 - forward and backward;
ch6 = IBus.readChannel(6); // ch6 - Headlights
ch8 = IBus.readChannel(8); // ch8 - High beamCode language: JavaScript (javascript) De rechterjoystick, kanalen 0 en 1 worden gebruikt voor het besturen van de beweging van het platform, de twee tuimelschakelaars, kanaal 6 en 8 voor het besturen van de LED's.
We zetten de binnenkomende gegevens om in waarden die geschikt zijn voor PWM-besturing van de DC-motoren, namelijk van 0 tot 255.
// convert the incoming date into suitable PWM value
steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) = 70 - 255 so this range from 70 to 255 is used as PWM value
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);Code language: JavaScript (javascript) We sturen de PWM-waarden naar de stuurprogramma's en de motoren met behulp van de analogWrite()-functie.
// if right joystick goes up > move forward
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}Code language: JavaScript (javascript) Over het algemeen is de code niet zo ingewikkeld omdat het robotplatform zelf geen ingewikkelde functies heeft.
Het testen van de 3D-geprinte robot – Tracked Robot Platform
Zodra we de code hebben geüpload, kunnen we het robotplatform en de RC-zender inschakelen om deze uit te testen. Op het display van de zender kunnen we de LiPo-accuspanning aflezen, evenals de spanning van de ontvanger en de zender.
En daar hebben we het. Met de rechter joystick kunnen we de beweging van het platform besturen. Met de linker tuimelschakelaar bedienen we de LED's van de koplampen en de achterlichten, en met de rechter 3-weg tuimelschakelaar de LED's van het grootlicht. De grootlicht-LED's hebben twee modi:altijd aan en een knippermodus.
We kunnen hier opmerken dat de motoren die ik heb geïnstalleerd eigenlijk een beetje te weinig vermogen hebben voor dit platform.
We kunnen zien dat de joystick bijna bovenaan moet staan voordat de tracks beginnen te bewegen. Bovendien kan ik de baan heel gemakkelijk met mijn hand stoppen. Het veersysteem en de rupsbanden zelf veroorzaken veel spanning en weerstand bij de motoren. Deze motoren hebben een toerental van 888 RPM, wat prima is qua snelheid, maar het zijn de kleinere motoren, met een vermogen van iets minder dan 500 mA.
Dus ik verving ze door mijn andere grotere motoren die ik had, maar ik kreeg eigenlijk bijna dezelfde resultaten. Hoewel dit krachtigere motoren waren, was hun snelheidsvermindering kleiner, of hadden ze een hoger toerental van 1280, en dus kreeg ik dezelfde resultaten.
Eigenlijk zijn ze niet zo slecht. Het robotplatform werkt redelijk goed bij hen.
Om eerlijk te zijn is het erg leuk om met dit ding rond te rijden, vooral als de LED's knipperen en er burn-outs of donuts worden gemaakt.
Het plezier duurde echter niet zo lang, want zodra ik hem mee naar buiten nam, stopte hij heel snel met werken. Het probleem zijn de motoren met te weinig vermogen, dat klopt, maar ook het ontwerp van de rupsschakels. Er kan zich gemakkelijk vuil in ophopen op de plek waar de tanden van het tandwiel komen.
Daarom heb ik ze opnieuw ontworpen, zodat ze aan de andere kant een opening hebben, zodat het vuil er doorheen kan. Ik heb het tandwiel ook iets kleiner gemaakt door het 0,2 mm te verschuiven, zodat het losser op de baan past.
Met deze updates heb ik alles weer in elkaar gezet en het platform kon nu buiten rijden. Hoewel de motoren met te weinig vermogen opnieuw een probleem vormden. Het platform raakte van tijd tot tijd gestapeld en kon niet bergopwaarts. Mijn suggestie zou dus zijn om een motor met niet meer dan 500 RPM te gebruiken, en een sterkere motor met een nominale stroom van minimaal 1A of 2A.
Ik heb het platform eigenlijk met sterkere motoren geprobeerd. Ze waren slechts 20 RPM, wat duidelijk te langzaam was om plezier te hebben en donuts te maken, maar het platform leek nu net een echte tank. Het kan letterlijk overal heen gaan.
De 20 RPM-motoren waren krachtig genoeg om elk obstakel te beklimmen. Ze waren erg traag, maar misschien zijn ze prima voor sommige specifieke toepassingen. Mijn suggestie zou zijn dat we lagere snelheden nodig hebben voor motoren met ongeveer 50 tpm, en voor hogere snelheden ongeveer 500 tpm.
Ik hoop dat je deze video leuk vond en iets nieuws hebt geleerd. Stel gerust een vraag in het opmerkingenveld hieronder en vergeet niet je te abonneren op toekomstige updates en mijn Arduino Projects-collectie te bekijken.
Productieproces
- Breadboard to PCB Part 1 - Making the Simon Says Game
- Buigbare smartphones:sneller op je pad dan je denkt
- China's Customization Machining Parts-technologie wordt sterker
- Voorzorgsmaatregelen voor het machinaal bewerken van precisieonderdelen van koper
- Wat is honen? - Definitie, proces en hulpmiddelen
- Hoe magnesium te TIG-lassen:in 6 eenvoudige stappen
- Tips voor het selecteren van de juiste leverancier van CNC-bewerkingsmachines
- Vier eenvoudige methoden om een deuk in een auto te repareren
- Alles wat u moet weten over mechanische veer
- Wat precisiemachinewerkplaatsen doen:frezen
- Autopilot voor zeilboten (automatisch stuursysteem)