En robotarm er et av de mest tilfredsstillende prosjektene du kan bygge selv – den kombinerer mekanikk, elektronikk og programmering i ett produkt du faktisk kan se bevege seg. I denne guiden bygger vi en enkel robotarm med tre til fire ledd, styrt av servomotorer, og går gjennom alt fra mekanisk design til de første stegene mot invers kinematikk.
Hva du trenger
- 3–4 servomotorer (SG90 til lette ledd, MG996R for base/skulder som må tåle mer belastning)
- Arduino Uno eller Nano
- 3–4 potentiometre (10 kΩ) til manuell styring
- Ekstern strømforsyning, 5V/2A (servoer bør ikke strømforsynes fra Arduino direkte)
- Breadboard og jumperkabler
- 3D-printede armdeler (STL-filer finnes gratis, eller design egne)
- Skruer, muttere og eventuelt kulelager til leddene
- USB-kabel til Arduino
Du finner servomotorer, Arduino-kort og relevant elektronikk i kategoriene motorer og elektronikk hos RoboNordic, dersom du trenger å fylle på lageret.
Servo-typer – hvilken skal du velge?
Ikke alle servoer er like. For en robotarm er det tre faktorer som betyr mest: dreiemoment (torque), hastighet og presisjon.
- SG90 (mikroservo) – billig og lett, men svakt dreiemoment (~1,8 kg·cm). Passer til gripeklo eller håndledd.
- MG996R – metallgir, høyere dreiemoment (~10 kg·cm), godt egnet til base og skulder som må løfte resten av armen.
- Digitale servoer – jevnere respons og bedre holdekraft, men koster mer og trekker mer strøm i stillestående posisjon.
Tips: Beregn dreiemomentet du trenger ved å multiplisere vekten av armsegmentet med avstanden fra leddet (momentarm). Undervurder aldri belastningen på basen – den bærer vekten av alle leddene over seg.
Mekanisk design og oppbygning
En typisk robotarm med 3 frihetsgrader (DOF) består av base, skulder, albue og eventuelt en gripeklo. Følg disse stegene for å sette sammen strukturen:
- Monter basemotoren i et stabilt understell – gjerne med en bunnplate som gir motvekt.
- Fest skulderservoen vinkelrett på basen slik at armen kan bevege seg opp/ned.
- Koble albueleddet til skulderarmen med en servobrakett (horn-adapter).
- Installer gripeklo eller endeeffektor på ytterste ledd.
- Sjekk at alle ledd beveger seg fritt uten mekanisk kollisjon før du strammer alle skruer permanent.
Her kommer 3D-printede deler virkelig til sin rett. Med en 3D-printer kan du designe skreddersydde servobraketter, arm-segmenter og gripekloer i PLA eller PETG. PETG tåler mer mekanisk stress og er å foretrekke i ledd som utsettes for gjentatt bevegelse.
Tips: Print servofester med 100 % infill i selve festepunktene – det er ofte her plasten svikter først under belastning.
Elektronikk og kobling
Servoer trekker mye strøm ved oppstart og under belastning, spesielt MG996R. Koble derfor servoenes strømforsyning til en ekstern 5V-kilde, ikke Arduinoens 5V-pin, men sørg for at all GND deler samme referanse (felles jord).
Potentiometer-kontroll – manuell styring
Før du automatiserer bevegelser er det lurt å styre armen manuelt med potentiometre. Dette gir umiddelbar tilbakemelding på hvordan hvert ledd oppfører seg, og er uvurderlig for kalibrering.
Koble hvert potentiometer med ytterpinnene til 5V og GND, og senterpinnen (wiperen) til en analog inngang på Arduino. Koden under leser av potentiometeret og oversetter verdien til en servovinkel:
#include <Servo.h>
Servo servoBase;
void setup() {
servoBase.attach(9);
}
void loop() {
int potVerdi = analogRead(A0);
int vinkel = map(potVerdi, 0, 1023, 0, 180);
servoBase.write(vinkel);
delay(15);
}
Gjenta dette for hvert ledd med separate potentiometre og digitale PWM-pinner. Servo-biblioteket (arduino.cc/reference/en/libraries/servo) håndterer PWM-signalet automatisk, så du slipper å styre pulsbredden manuelt.
Tips: Legg inn en liten dødsone (f.eks. ±3 på potmeterverdien) før du oppdaterer servoen. Det reduserer skjelving når potmeteret står nær en terskelverdi.
Fra manuell til automatisk – intro til invers kinematikk
Når armen fungerer manuelt, er neste steg å styre endepunktet i rommet i stedet for hvert ledd separat – dette kalles invers kinematikk (IK). I stedet for å si «sett skulderen til 45°, albuen til 90°», vil du si «flytt gripekloen til koordinat (x, y)» og la programmet regne ut nødvendige vinkler.
For en enkel arm med to ledd i et plan kan du bruke cosinussetningen til å finne vinklene basert på lengden på hvert armsegment (L1 og L2) og ønsket posisjon (x, y):
θ2 = acos((x² + y² − L1² − L2²) / (2 · L1 · L2))
θ1 = atan2(y, x) − atan2(L2·sin(θ2), L1 + L2·cos(θ2))
Dette er kun starten – med flere frihetsgrader (3D-bevegelse, håndleddsrotasjon) blir matematikken raskt mer kompleks, og mange velger da ferdige IK-biblioteker eller Denavit-Hartenberg-notasjon for å systematisere beregningene. Det er et naturlig neste steg når du har fått den grunnleggende armen til å fungere stabilt.
Vanlige feil
- Strømforsyning fra Arduino: Å drive flere servoer direkte fra Arduinoens 5V-pin er den vanligste årsaken til at kortet resetter seg selv under bevegelse.
- Manglende felles jord: Glemmer man å koble GND mellom Arduino og ekstern strømforsyning, får servoene ustabile eller tilfeldige signaler.
- For svakt dreiemoment i basen: Undervurdering av vekten armen skal bære fører til at servoen «henger» eller ikke når ønsket vinkel.
- Mekanisk kollisjon mellom ledd: Test bevegelsesomfanget fysisk før du limer eller skrur fast permanent.
- Ingen kalibrering av servogrenser: Servoer har ofte litt avvik fra 0–180°. Test og juster med
write()før du stoler blindt på matematiske beregninger.
Tips: Merk hver servo med hvilket ledd og hvilken pin den er koblet til – det sparer mye frustrasjon når du skal feilsøke senere.
Veien videre
Med en fungerende robotarm styrt av potentiometre har du et solid fundament. Neste skritt kan være å legge til en joystick-kontroller, programmere forhåndsdefinerte bevegelsessekvenser, eller dykke dypere inn i invers kinematikk for jevnere, mer naturlige bevegelser. Uansett hvilken retning du velger, er det verdt å bygge videre gradvis og teste hvert ledd grundig underveis.
Kilder: Arduino Servo Library-dokumentasjon (arduino.cc), datablad for SG90 og MG996R servomotorer, generell robotikklitteratur om invers kinematikk for planare manipulatorer.
All kode fra denne guiden – kompilert og klar til bruk – ligger i det åpne repoet vårt: robonordic-prosjekter/robotikk/robotarm-servo


