Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DIY Mars Perseverance Rover Replica - op Arduino gebaseerd project

In deze tutorial laat ik je zien hoe ik een replica van de Mars Perseverance Rover heb gebouwd. Natuurlijk, geïnspireerd door de echte rover die momenteel Mars aan het verkennen is, heb ik deze rover zo ontworpen dat iedereen die van deze technologie houdt, studenten, makers, mechatronica of robotica-enthousiastelingen, enzovoort, gemakkelijk de instructies in deze video kan volgen en bouwen hun eigen Mars Rover.

Je kunt de volgende video bekijken of de schriftelijke tutorial hieronder lezen.

Overzicht

Laten we eens kijken naar de belangrijkste kenmerken van deze rover. Het maakt gebruik van een rocker-bogie-ophanging waardoor de rover soepel kan rijden op oneffen terrein en obstakels kan beklimmen, zoals rotsen, die tot twee keer de diameter van het wiel zijn, terwijl alle zes de wielen altijd in contact blijven met de grond. Elk wiel heeft een onafhankelijke gelijkstroommotor die de rover vooruit of achteruit drijft.

De vier hoekwielen hebben individuele stuurservomotoren. Om de rover efficiënt te sturen en het slippen van de banden bij het rijden in een bocht te voorkomen, implementeren we de stuurgeometrie van Ackermann. Met deze geometrie kunnen we de snelheid en hoek van elk wiel berekenen, afhankelijk van de draaicirkel.

Dit betekent dat bij het draaien de binnenste stuurwielen een grotere hoek zullen hebben in vergelijking met de buitenste wielen. Tegelijkertijd zullen de binnenste wielen lagere snelheden hebben in vergelijking met de buitenste wielen.

Voor het besturen van de rover gebruik ik een goedkope commerciële RC-zender die commando's naar de rover stuurt. Bij de rover heb ik een geschikte RC-ontvanger die de commando's ontvangt en naar een Arduino-bord stuurt. Ja, het brein van deze Marsrover is eigenlijk een Arduino MEGA-bord en om alles gemakkelijk met elkaar te verbinden heb ik een aangepaste PCB gemaakt die eenvoudig bovenop het Arduino MEGA-bord kan worden bevestigd.

De rover beschikt ook over een FPV-camera in de camera-eenheid. Het wordt bestuurd met behulp van een stappenmotor en een servomotor en ik ontvang de realtime video op een smartphone.

Ik zou hier willen opmerken dat veel van de onderdelen eigenlijk niet functioneel zijn, of dat ze aanwezig zijn om het uiterlijk van de echte rover te evenaren. Ook ontbreekt de robotarm, maar ik ben van plan om de arm te maken en in toekomstige video's meer functies aan deze rover toe te voegen.

Desalniettemin, laat me je nu door het bouwproces leiden, te beginnen met het ontwerpen van de rover, het aansluiten van de elektronische componenten en het programmeren van het Arduino-bord.

DIY Mars Rover 3D-model

Ik heb deze Marsrover ontworpen met behulp van 3D EXPERIENCE Solidworks, de sponsor van deze video.

3DEXPERIECE Solidworks is een versie van Solidworks met cloudmogelijkheden die we krijgen via het 3DEXPERIECE-platform. Hier werkt alles via de cloud, zodat jij of iemand van je team altijd en overal ter wereld toegang heeft tot de gegevens of de modellen. Het 3DEXPERIECE-platform bevat ook veel handige apps voor productiviteit en gegevensbeheer.

De app Projectplanning is bijvoorbeeld een geweldige manier om uw taken te organiseren, deadlines in te stellen en uw voortgang bij te houden. Met de 3D Markup-app kun je de modellen bekijken, verkennen en aantekeningen maken vanaf elk apparaat, zoals een notebook, tablet of zelfs een smartphone.

Er is ook een aparte, cloudgebaseerde 3D-modeler genaamd SOLIDWORKS xDesign, die in uw browser wordt uitgevoerd. Het kan in combinatie met Solidworks of op zichzelf worden gebruikt en is geweldig voor modellering, overal, altijd en op elk apparaat.

Desalniettemin is waarschijnlijk het meest opwindende nieuws voor velen van jullie hier dat er vanaf de tweede helft van dit jaar een makerversie van 3DEXPERIECE Solidworks zal zijn die je voor slechts $ 99 per jaar kunt krijgen. Grote dank aan Solidworks voor het sponsoren van dit soort educatieve content.

Als je wilt weten of SOLIDWORKS en het 3DEXPERIENCE-platform voor jou kunnen werken, kijk dan op de volgende links hieronder.

Probeer 3DEXPERIENCE gratis met mijn speciale link: www.solidworks.com/HTMTryNow

Meer informatie over 3DEXPERIENCE SOLIDWORKS: www.solidworks.com/HTMLearnMore

3DEXPERIENCE SOLIDWORKS voor makers:www.solidworks.com/htm

Oké, laten we teruggaan naar het model en uitleggen hoe ik de rover heb ontworpen. Mijn doel was om deze rover zo dicht mogelijk bij de echte Mars Perseverance Rover te laten lijken. Op de officiële NASA-website staat een 3D-model van de Mars Perseverance Rover, dus ik heb het gedownload en geopend in Blender.

Ik heb 3 foto's gemaakt van het voor-, boven- en zijaanzicht van de rover en deze geïmporteerd in Solidworks. Ik wilde dat de wielen een diameter van 130 mm zouden hebben, dus ik heb de foto's geschaald volgens deze afmeting.

Vanaf hier heb ik alle belangrijke afmetingen genomen, zoals de breedte, lengte, hoogte, afstand tussen de wielen, afmetingen voor de ophanging van de tuimelaar, enzovoort.

Volgens deze afmetingen en de DC-motoren en servo's die ik van plan was te gebruiken, heb ik de rover-onderdelen zo ontworpen dat ze gemakkelijk in 3D kunnen worden geprint en geassembleerd, terwijl ik probeer het uiterlijk zo dicht mogelijk bij het origineel te houden.

Voor de rocker-bogie-ophanging gebruik ik 20 mm ronde aluminium profielen, terwijl ik voor het basisframe 20 mm T-slot aluminium profielen gebruik.

U kunt dit 3D-model vinden en downloaden, en het ook verkennen in uw browser op Thangs.

En hier zijn de STL-bestanden die nodig zijn voor 3D-printen:

3D-printen van de Mars Rover Replica-onderdelen

Voor het 3D-printen van de onderdelen heb ik zowel mijn oude Creality CR-10 als de nieuwe CR-10 V3 3D-printer gebruikt. Als je de wielen wilt printen met flexibel materiaal, heb je zeker een printer met direct extruder nodig, net als de CR-10 V3.

Beide 3D-printers bieden een geweldige afdrukkwaliteit en zijn relatief betaalbaar. Als je geïnteresseerd bent, zijn hier links naar hen zodat je ze kunt bekijken:

  • Creality CR-10…… Amazon / Banggood
  • Creality CR-10 V3…… Amazon / Banggood / AliExpress

Zie ook: Beste budgetoscilloscopen voor beginners en makers – 2021-update

Bij het 3D-printen van de onderdelen is het belangrijk om de functie Horizontale Uitbreiding in uw snijsoftware te gebruiken. Ik heb een waarde van -0,1 mm gebruikt. Deze functie compenseert de uitzetting van het filament tijdens het printen.

Indien niet gebruikt, bijvoorbeeld als het onderdeel een gat heeft met een diameter van 20 mm, zal het gat van het daadwerkelijke 3D-geprinte onderdeel ongeveer 19,8 mm zijn en kunnen we het niet monteren.

Niettemin, hier zijn alle 3D-geprinte onderdelen.

Om eerlijk te zijn is het een beetje gek hoeveel prints er zijn, maar het is de enige manier om het unieke uiterlijk van de rover te krijgen. U kunt de afdruktijd echter halveren als u ervoor kiest om alleen de functionele delen van deze rover af te drukken.

Onderdelenlijst voor de DIY Mars Rover

Hier is een lijst met componenten die nodig zijn voor het monteren van deze DIY Mars Rover. De lijst voor de elektronische componenten vindt u hieronder in het gedeelte met het schakelschema van het artikel.

  • T-slot aluminium profielen 20x20mm ………..AmazonBanggood  / AliExpress
  • T-gleuf profiel hoekbeugels ……………..… AmazonBanggood  / AliExpress
  • Aluminium Ronde Buis 20mm ………………. Amazon /  AliExpress
  • Rod End Joint 8mm ……………………………….. Amazon / Banggood / AliExpress
  • 8 x  Lager 608RS – 8x22x7mm ……..…… AmazonBanggood  / AliExpress
  • 8 x Lager 626RS – 6x19x6mm ………….… AmazonBanggood  / AliExpress
  • 5 x lager 625RS – 5x16x5mm …………… AmazonBanggood  / AliExpress
  • M3 bouten diverse lengtes ………………………… AmazonBanggood  / AliExpress
  • 4 x Servohoorns …………………………………………. Amazon / Banggood / AliExpress

We hebben ook verschillende lengtes M4-, M5- en M6-bouten nodig. U kunt de volledige lijst met benodigde bouten en moeren hieronder bekijken.

Je kunt de bouten en moeren ook krijgen bij je plaatselijke ijzerhandel.

De Rover in elkaar zetten

Oké, nu kunnen we beginnen met het in elkaar zetten van de rover. Eerst moeten we de aluminium profielen voorbereiden. Ik gebruikte een metalen handzaag om ze op maat te zagen.

We hebben 10 T-gleufprofielen nodig voor de basis en 8 ronde profielen voor de rocker-bogie-ophanging met de volgende afmetingen.

Voor het monteren van het T-gleufprofielen frame gebruiken we een geschikte T-gleuf hoekbeugels en enkele bouten en moeren. Zodra we de bovenste en onderste frames klaar hebben, kunnen we de basis voltooien door de 3D-geprinte delen van de tuimelverbinding aan de zijkanten en enkele 3D-geprinte beugels aan de voor- en achterkant te plaatsen. Om ze op hun plaats te bevestigen, hebben we M3-bouten en T-sleufmoeren nodig.

Voor de tuimelaars heb ik M5 bouten en moeren gebruikt. De afstand van het voorprofiel tot de tuimelaar moet 134 mm zijn.

De ophanging van de Rocker-bogie monteren

Vervolgens kunnen we de hoofdlagers voor de rocker-bogie-ophanging op hun plaats plaatsen. Dan hebben we de tuimelaaras die met een M8-bout aan de basis wordt bevestigd.

De as heeft een gleuf waar we een M8-moer kunnen plaatsen die wordt gebruikt om hem aan de basis te bevestigen. Het gat van de as is 7,5 mm zodat we een strakke verbinding hebben tussen de bout en de as. Op deze manier versterken we de 3D-geprinte as, aangezien de bout zelf een deel van het gewicht van de rover zal dragen. Dit is het meest belaste onderdeel van het geheel, aangezien het hele gewicht van de rover wordt ondersteund door de tuimelas. De manier waarop we de onderdelen printen is erg belangrijk voor hun sterkte.

Ik heb deze schacht aanvankelijk op de gemakkelijkere manier afgedrukt, waar geen ondersteunend materiaal nodig is, maar de afdruk mislukte.

Op deze manier werkt de hoofdspanningskracht op de lagen die niet zo sterk zijn, maar als we het onderdeel zijwaarts printen, waar de spanningskracht op de muurcontouren inwerkt, zal het onderdeel veel sterker zijn en zal het niet falen.

Desalniettemin gaan we nu verder met het monteren van de rocker-bogie-ophanging samen met de wielgewrichten en de motorsteunen, en later zullen we deze sub-assembly aan de rocker-assen bevestigen.

De gaten van de onderdelen waar de 20 mm ronde profielen komen, zijn zo gedimensioneerd dat ze goed passen, dus in sommige gevallen moeten we een rasp of schuurpapier gebruiken om ze passend te maken.

Om deze onderdelen goed te monteren, moeten we op precieze locaties gaten in de ronde profielen maken. Hiervoor markeren we eerst een rechte lijn op het profiel.

Vervolgens kunnen we het profiel in het 3D-geprinte onderdeel invoegen met de markeringslijn door het gat van het onderdeel. Vervolgens kunnen we aan beide zijden van dat onderdeel de locaties markeren waar we het profiel moeten boren.

Aan de andere kant van het profiel moeten we dezelfde procedure herhalen.

Ik heb de gaten geboord met een boor van 2,5 mm en vervolgens heb ik met een M3-bout een draad in het profiel gemaakt die we zullen gebruiken voor het vastzetten van de onderdelen.

Het aluminium profiel is zachter dan de bout, dus het is gemakkelijk om de schroefdraad met de bout zelf te maken. Het volgen van deze methode voor het boren van de gaten is erg belangrijk, zodat aan het einde alle onderdelen worden gepositioneerd zoals ze zouden moeten zijn ten opzichte van elkaar.

Voor het draaistelgewricht gebruiken we ook twee lagers en een M8-bout.

Zodra we de rocker-bogie-ophanging hebben voltooid, kunnen we doorgaan met het monteren van de stuurwielverbindingen. Het stuurwielverbindingsdeel bestaat uit twee aan elkaar vastgeschroefde delen.

Voor de eigenlijke verbinding of de verbinding tussen het servo-montagedeel en het DC-motormontagedeel gebruiken we twee lagers en een M6-bout.

Aan de bovenzijde of de kop van de bout moeten we een servohoorn bevestigen en dat doen we met behulp van deze 3D geprinte koppeling en enkele M3 bouten.

De koppeling heeft een zeshoekige gleuf waardoor de servobeweging wordt overgebracht naar de bout. Aan de onderkant kunnen we het andere deel van de verbinding vastschroeven.

Deze verbinding borgen we met een M6 moer. Dit voltooit de stuurverbinding, hoewel ik later zal beseffen dat we eigenlijk nog een M6-moer aan de onderkant moeten toevoegen en aan de andere moer moeten vastdraaien.

We moeten dit doen omdat de beweging van de servo wordt overgebracht naar het montagedeel van de gelijkstroommotor met behulp van de moer zelf, en als het niet wordt vastgedraaid met een andere moer, wordt het hele gewricht losgeschroefd.

Dezelfde procedure geldt voor de andere hoekverbinding. We weten dat we alles goed hebben aangesloten als we dit geheel op een vlakke ondergrond plaatsen en alle drie de motorsteunen plat liggen of allemaal evenwijdig aan elkaar zijn.

Natuurlijk gebruiken we dezelfde methode voor het monteren van de andere kant. We kunnen hier echter opmerken dat hoewel sommige onderdelen er identiek uitzien, het niet dezelfde onderdelen zijn, maar in werkelijkheid gespiegeld zijn.

Vervolgens moeten we deze subassemblages op de tuimelaarassen op het basisframe of het chassis plaatsen. Voordat we dat echter doen, moeten we wat messing inzetstukken met schroefdraad in de as plaatsen.

Met behulp van een soldeerbout kunnen we ze gemakkelijk op hun plaats plaatsen, en zo krijgen we goede en betrouwbare draadgaten voor het vastzetten van de ophangingssubeenheid. Daarvoor hebben we vier M4-bouten nodig.

Als we ze aan beide kanten hebben gemonteerd, merken we dat het chassis vrij valt of draait. We missen dus eigenlijk iets om de rocker-bogie-ophanging goed te laten werken, en dat is het differentieel.

Met het differentieel zijn de twee tuimelaars met elkaar en met het roverchassis verbonden. Met deze configuratie, wanneer de ene kant draait, draait de andere in de tegenovergestelde richting, waardoor ongeveer gelijk wielcontact wordt verkregen.

Het chassis heeft een gemiddelde hellingshoek van beide rockers.

Hier zijn alle onderdelen die nodig zijn voor het monteren van het differentieel.

Omdat de differentiële balk vrij lang is, heb ik hem gemaakt uit drie stukken die aan elkaar zijn vastgeschroefd, zodat we ze zelfs op kleinere 3D-printers in 3D kunnen printen. De differentieelstang zal in het midden van het chassis draaien met een verbinding gemaakt van twee lagers en een M8-bout.

Om het differentieel met de rocker te verbinden, hebben we een kogelgewricht met stangkop nodig. Ik gebruik een M8-kogelgewricht en we hebben ook een M8-draadstang met een lengte van 50 mm nodig. De draadstang gaat in een 3D-geprint onderdeel dat aan de ene kant een M8-moer heeft en aan de andere kant in het kogelgewricht van het staafuiteinde.

Hier moeten we de afstand tussen de 3D-geprinte differentiële schakel en het uiteinde van de stang aanpassen, die ongeveer 20 mm moet zijn om het chassis horizontaal te houden. Voor het verbinden van de differentieelverbinding met de tuimelhendel gebruiken we twee lagers en een M5-bout.

We herhalen deze procedure ook voor de andere kant en hiermee is onze rocker-bogie-ophanging voltooid. Wanneer de ene kant omhoog gaat, gaat de andere omlaag en vice versa.

Dit zorgt ervoor dat alle wielen altijd in contact zijn met de grond. Het chassis gaat maar de helft van de beweging van het been, of het chassis heeft een gemiddelde hellingshoek van beide rockers.

Zie ook:Arduino Robotarm en Mecanum Wheels Platform Automatische bediening

Montage van de motoren voor Mars Rover

Goed, dan kunnen we verder gaan met het installeren van de gelijkstroommotoren. De motoren die ik gebruik hebben een diameter van 37 mm, werken op 12 V en hebben een versnellingsbak met een output van 50 RPM.

Hoewel ik me later realiseerde dat 50 RPM een beetje te veel is voor deze rover, zou ik willen voorstellen om 20 of 10 RPM-versies te kiezen.

Voor het bevestigen van de wielen aan de motoren heb ik deze askoppelingen gemaakt.

Hier moeten we M3-schroefdraadinzetstukken installeren die zullen worden gebruikt om de koppeling aan de as te bevestigen, en ook M4-moeren om het wiel aan de koppeling te bevestigen. Bij het plaatsen van de moeren moeten we ook wat lijm toevoegen zodat ze stevig op hun plaats blijven, of in plaats daarvan gebruik maken van inzetstukken met schroefdraad.

Vervolgens kunnen we de wielen bevestigen. De wielen bestaan ​​uit twee delen. De ene is het wiel dat ik heb geprint met flexibel filament, maar dat hoeft niet, en de andere is de rand die is bedrukt met normaal PLA.

De velg heeft sleuven die in het wiel passen en zo wordt de kracht van de motor op het wiel overgebracht. We kunnen enkele druppels lijm toevoegen aan de sleuven om ze beter vast te zetten. Ten slotte kunnen we de wielen met 4 M4-bouten aan de askoppelingen of de gelijkstroommotoren bevestigen.

Oké, dus nu kunnen we stuurservomotoren installeren. Ik gebruik digitale servo's met hoog koppel met een koppel van 25 kgcm en een bedrijfsspanning van 4,8 tot 6,8 V. Om de servo's op hun plaats te bevestigen, gebruiken we vier M3-bouten die in de M3-schroefdraadinzetstukken in het 3D-geprinte deel van de servomontage gaan.

De camera-unit monteren

Vervolgens kunnen we de camera-eenheid monteren. Voor het pannen van de camera heb ik besloten om een ​​NEMA 17 stappenmotor te gebruiken, maar je kunt dit hier wijzigen voor elk ander type motor.

De motorbeweging wordt overgebracht naar het bovenste gedeelte met behulp van een M5-draadstang die met een 3D-geprinte askoppeling met de motor is verbonden, en aan de andere kant gebruiken we een lager en twee moeren om de draadstang aan het bewegende element te bevestigen. Voor het kantelen van de camera gebruik ik een servo die dezelfde is als degene die we gebruiken voor de stuurwielen.

Veel van de onderdelen hier op de camera-eenheid zijn niet functioneel en ze zijn aanwezig om het uiterlijk van de echte rover te evenaren. Voor het monteren van deze onderdelen hebben we verschillende M3-bouten en enkele inzetstukken met schroefdraad nodig.

Ik zal hier echter ook een echte FPV-camera installeren. Ik heb er een custom houder voor gemaakt zodat ik hem op de behuizing van de camera unit kan monteren. De camera is van bovenaf goed bereikbaar en sluiten we af met een snap-fit ​​klepje. Hier is het uiteindelijke uiterlijk van de camera-eenheid.

Ik heb deze hele camera-subconstructie in de rechtervoorhoek van het chassis gemonteerd.

Op dit punt kunnen we doorgaan met het assembleren van de rest van de 3D-geprinte onderdelen, die eigenlijk niet functioneel zijn, maar alleen om het uiterlijk van de echte rover te evenaren, of de elektronische componenten aansluiten en de rover laten werken. Ik besloot eerst alle 3D-geprinte onderdelen in elkaar te zetten en daarna de elektronica te doen.

De rest van de rover in elkaar zetten

Zoals ik al zei, de volgende onderdelen zijn alleen bedoeld om het uiterlijk van de rover te matchen, dus ik zal niet in detail treden hoe je ze moet monteren. Vanuit het 3D-model kunt u zien hoe alles moet worden aangesloten.

Ik heb echt veel tijd gestoken in het ontwerpen van deze onderdelen, met aandacht voor details zodat alles er goed uitziet.

Deze onderdelen zijn ook vrij groot en het kost wat tijd om ze in 3D te printen.

Hier is een kort overzicht van hoe ik ze heb geïnstalleerd.

De laatste twee bovenste panelen in het midden van de rover zijn ontworpen om in de rover te klikken.

Ze zullen in feite fungeren als een kap die gemakkelijk kan worden verwijderd, aangezien de elektronische componenten zich in dit gebied bevinden.

De houder voor elektronische componenten is gemaakt van twee 3D-geprinte onderdelen die aan elkaar zijn vastgeschroefd en gaat naar het onderste frame van het chassis.

Elektronica

Goed, nu kunnen we verder met de elektronica. Eerst moeten we meten hoeveel draad we nodig hebben voor elke motor. Ik heb de draden rechtstreeks op de motoren gesoldeerd omdat ik geen goede motorconnectoren had. Ik heb krimpkous gebruikt om de connectoren te isoleren.

Met behulp van enkele kabelbinders kunnen we de draden geleiden en schoon houden.

Voor de servomotoren kunnen we servoverlengdraden gebruiken om de draden naar het elektronicacompartiment te verlengen. Het elektronica-montagegedeelte heeft sleuven waar we de draden doorheen kunnen leiden om in het midden van de rover te komen.

Over het algemeen denk ik dat de bedrading er redelijk schoon uitkwam met de draden achter de zichtbare delen.

Zie ook:SCARA-robot | Hoe u uw eigen op Arduino gebaseerde robot kunt bouwen

DIY Mars Rover-circuitdiagram

Laten we nu eens kijken naar het schakelschema van deze rover en kijken hoe alles moet worden aangesloten.

U kunt de componenten die nodig zijn voor dit project verkrijgen via de onderstaande links:

  • DC Motor 12V 37mm …….……………….…
  • Digitale servo 25kg ………………………….
  • DRV8871 DC-motorstuurprogramma ……………….
  • Stappenmotor – NEMA 17………………
  • A4988 Stepper Driver………………..…..…
  • Arduino MEGA…………………….…..………
  • DC-DC Buck-converter ………………….
  • 3S LiPo-batterij ……………………..………….. 
  • XT60-connector …………………………… 
  • FLYSKY RC-zender …………………..
  • FPV-camera en videozender …. Amazon / Banggood / AliExpress
  • FPV-ontvanger naar keuze

Voor het aandrijven van de zes DC-motoren gebruiken we zes DRV8871 DC-motordrivers die PWM-besturing en tot 3,6 A piekstroom ondersteunen. De bedrijfsspanning van de DC-motoren is 12V, met een nominale stroom van 1A en een blokkeerstroom van 3A. Voor het aandrijven van de rover gebruik ik een 3S LiPo-batterij die ongeveer 12V levert.

De servo's daarentegen hebben 4,8 tot 6,8 V nodig, dus daarom hebben we een DC-naar-DC-converter nodig die de 12V naar 6V zal converteren. De converter moet ongeveer 8A stroom aankunnen, aangezien de servo's die we gebruiken behoorlijk krachtig zijn en een blokkeerstroom van ongeveer 2A hebben. Voor het aandrijven van de stappenmotor van de camera unit kunnen we een A4988 of DR8825 stappenmotor gebruiken. Met behulp van twee weerstanden kunnen we een eenvoudige spanningsdeler maken waardoor we de batterijspanning kunnen bewaken.

De RC-ontvanger wordt gevoed met de 6 volt afkomstig van de buck-converter, en de FPV-camera en de videozender worden gevoed met de 12V van de batterij.

Aangepaste PCB

Om de elektronische componenten georganiseerd te houden, heb ik een aangepaste PCB ontworpen voor deze doe-het-zelf Mars-rover.

Deze PCB zal in feite fungeren als een Arduino MEGA-schild, omdat we hem rechtstreeks op het Arduino MEGA-bord kunnen aansluiten. In addition to the motor drivers, I included a 3.3V voltage regulator and a dedicated NRF24L01 connection in case you want to control the rover using that module, as well as connections for an DHT22 sensor, compass, I2C, serial communication, 12V, 5V, 3.3V and GND connections. Actually, I futureproofed this PCB for upgrading the rover’s functionalities.

I ordered the PCB from PCBWay. Here we can simply upload the Gerber file, choose the properties of our PCB, and order it at a reasonable price.

I didn’t change any of the default properties except for the PCB color which I chose to be blue in order to match with the Arduino board. You download the Gerber file here below, or from the PCBWay projects sharing community through which you can also directly order the PCB.

Here’s you can download the Gerber file for this DIY Mars Rover PCB:

Nevertheless, after several days the PCB arrived. The quality of the PCB is great, and everything is exactly the same as in the design.

Assembling the PCB is pretty straight forward as everything is labeled. I started with soldering the pin headers at the bottom of the PCB, for the Arduino MEGA connection and then continued with top side. I actually used pin headers for all connections, because it gives flexibility to make changes if something doesn’t work properly. I didn’t solder the 3.3V voltage regulator as well as some free Arduino pins, as I wasn’t going to use them now anyway.

Once finished with the PCB assembly I secured the Arduino board to the electronics mount part using two bolts and added the PCB to it.

Then I connected each motor to their drivers and put them in place in the PCB. The servos go in their appropriate servo pins, as well as the stepper driver for which I used one jumper for selecting 1/8th stepping resolution.

For the radio communication I’m using the FLYSKY RC transmitter and receiver which are really affordable and work great.

For connecting the receiver to the Arduino, we can use servo extension cables as we need three wires, VCC, GND and the Signal pin. The receiver communicates with the Arduino through an I-BUS and the serial port. If we want to send data back from the receiver to the transmitter, in our case for monitoring battery voltage, we also need to connect the sensor I-BUS of the receiver to another Arduino serial port.

The buck convertor is secured in place using two bolts, and for securing the LiPo battery I’m using two rubber bands so in that way I can easily remove the battery for charging.

The power switch goes in the back right panel of the rover. I used 20-gauge wires for these connections as the current flow through them might get up to several amps when the rover is fully engaged. Make sure you double check your connections with these wires because if you connect something wrong you might fire up things.

Lastly, we can connect the FPV camera to a 12V power supply and connect video signal wire to the video transmitter which also needs to be powered with 12V. With this we are done with the electronics.

We can put back the cover panels in place and we are done with this DIY Mars Rover. Actually, we are almost done, as we need to give life to this machine now, or program the Arduino.

Programming the DIY Mars Rover – Arduino Code

Here you can download the Arduino code for this DIY Mars Rover project:

Code overview

So, using the IBusBM library we read incoming data from the RC Transmitter.

// Reading the data comming from the RC Transmitter
  IBus.loop();
  ch0 = IBus.readChannel(0);
  ch1 = IBus.readChannel(1);
  ch2 = IBus.readChannel(2);
  ch3 = IBus.readChannel(3);
  ch6 = IBus.readChannel(6);Code language: Arduino (arduino)

Then we convert these values into a turning radius to right value, turning radius to left value and rover speed from 0 to 100%.

// Convertign the incoming data
  // Steering right
  if (ch0 > 1515) {
    r = map(ch0, 1515, 2000, 1400, 600); // turining radius from 1400mm to 600mm
  }
  // Steering left
  else if (ch0 < 1485) {
    r = map(ch0, 1485, 1000, 1400, 600); // turining radius from 600mm to 1400mm
  }
  // Rover speed in % from 0 to 100
  s = map(ch2, 1000, 2000, 0, 100); // rover speed from 0% to 100%Code language: Arduino (arduino)

We use the turning radius “r” value for calculating the steering wheels angles as well as the speed of the wheels.

void calculateMotorsSpeed() {
  // if no steering, all wheels speed is the same - straight move
  if (ch0 > 1485 && ch0 < 1515) {
    speed1 = speed2 = speed3 = s;
  }
  // when steering, wheels speed depend on the turning radius value
  else {
    // Outer wheels, furthest wheels from turning point, have max speed
    // Due to the rover geometry, all three outer wheels should rotate almost with the same speed. They differe only 1% so we asume they are the same.
    speed1 = s;
    // Inner front and back wheels are closer to the turing point and have lower speeds compared to the outer speeds
    speed2 = s * sqrt(pow(d3, 2) + pow((r - d1), 2)) / (r + d4);
    // Inner middle wheel is closest to the turning point, has the lowest speed
    speed3 = s * (r - d4) / (r + d4);
  }

  // speed value from 0 to 100% to PWM value from 0 to 255
  speed1PWM = map(round(speed1), 0, 100, 0, 255);
  speed2PWM = map(round(speed2), 0, 100, 0, 255);
  speed3PWM = map(round(speed3), 0, 100, 0, 255);
}

void calculateServoAngle() {
  // Calculate the angle for each servo for the input turning radius "r"
  thetaInnerFront = round((atan((d3 / (r + d1)))) * 180 / PI);
  thetaInnerBack = round((atan((d2 / (r + d1)))) * 180 / PI);
  thetaOuterFront = round((atan((d3 / (r - d1)))) * 180 / PI);
  thetaOuterBack = round((atan((d2 / (r - d1)))) * 180 / PI);
}Code language: Arduino (arduino)

As I mentioned earlier, we are using the Ackerman steering geometry for calculating them. These values are then used for controlling the servos using the ServoEasing library which provides smoother servo movements.

// Servo motors
    servoW1.startEaseTo(97 - thetaOuterFront);
    servoW3.startEaseTo(97 + thetaOuterBack);
    servoW4.startEaseTo(94 - thetaInnerFront);
    servoW6.startEaseTo(96 + thetaInnerBack);Code language: Arduino (arduino)

For controlling the DC motors using the analogWrite() function which actually sends PWM signal to the DC motor drivers.

// Motor Wheel 1 - Left Front
      analogWrite(motorW1_IN1, speed2PWM);   // PWM value
      digitalWrite(motorW1_IN2, LOW); // ForwardCode language: Arduino (arduino)

Overall, the code is not that complicated as the rover itself doesn’t have complicated functions. However, I do plan in future videos to add more functions to this rover, like GPS navigation, various sensors, robotic arm, soil collecting mechanism and so on.

I hope you enjoyed this project and learned something new. Feel free to ask any question in the comments section below and check my Arduino Projects Collection.


Productieproces

  1. Rover
  2. Audiofrequentiedetector
  3. Tech-TicTacToe
  4. DIY voltmeter met Arduino en een Nokia 5110-display
  5. Arduino Countdown Timer
  6. RC Porsche Car (Arduino Project)
  7. Slimme energiemonitor op basis van Arduino
  8. DIY-idee met RFID
  9. Arduino kleurdetectie
  10. DIY Arduino Hoogtemeetmachine
  11. DIY Arduino-gebaseerde pulsinductie metaaldetector