Hemgjord robotarm med hjälp av standarddelar använder Arduino och en bearbetning GUI (15 / 17 steg)

Steg 15: Arduino kod



Låt oss titta på några av element av Arduino skiss innan du börjar försöka använda det för att flytta armen.

Först är hur vi berätta skissen parametrarna för servon, eftersom vi använder mini Maestro biblioteket. Jag gjorde detta genom att ställa in en mängd strukturer, ställa in parametrarna för arm servo (linjerna 31-43 av skiss

struct maestro_parameters {
servo_channel, namn, min, max, hem, hastighet, accel och neutral kommer
direkt från min-maestro kanal fliken Inställningar så det är en bra
idé att ta en skärmdump och skriva ut den.
int servo_channel;
char servo_name [20].
int servo_min;
int servo_max;
int servo_home;
int servo_speed;
int servo_accel;
int servo_neutral;
De nästa två variablerna som krävs för Arduino kartläggning funktionen. Vi kommer att mappning av grader till
mikrosekunder. fromLow motsvarar till servo_min och och fromHigh motsvarar
servo_max.
Om vi använder axeln som exempel om din servo_min värde är 672 mikrosekunder,
som skulle motsvara +180 grader och din servo_max värde är 2248 mikrosekunder
som motsvarar-180 grader värdena fromLow och fromHigh skulle vara +180
och-180 grader respektive
int servo_fromLow;
int servo_fromHigh;
De nästa två variablerna används till att ställa de servo begränsningarna. I, annat
ord max tillåtna resa för varje servon
int servo_constLow;
int servo_constHigh;
} servo [6].

Särskilda värden för servon ställs vid linjer 66-71. För min arm skulle detta vara:

servo [0] = (maestro_parameters) {0, "Base", 1064, 1663, 1366, 0, 0, 1504, -90, 90,-80, 80};
servo [1] = (maestro_parameters) {1, "axeln", 672, 2248, 2040, 40, 0, 2040,-180, 180, -10, 180};
servo [2] = (maestro_parameters) {2, "armbågar", 928, 1872, 1738, 10, 0, 1505, 180,-180,-160, 45};
servo [3] = (maestro_parameters) {3, "Wrist_Pitch", 928, 2128, 928, 10, 0, 1500, 0, 0, 180 180};
servo [4] = (maestro_parameters) {6, "Wrist_Rotate", 608, 2448, 1500, 40, 0, 1500, 90, -90, -90, 90};
servo [5] = (maestro_parameters) {7, "Gripper", 1312, 1792, 1358, 7, 0, 1500, 10-0, 0, 10};

Låt oss tala om kartläggning funktionen i några sekunder. I allmänhet är kartfunktioner av följande form:

servoPosMs = 4 * karta (servoPosDeg, servo [servoNum] .servo_fromLow, servo [servoNum] .servo_fromHigh,
servo [servoNum] .servo_min, servo[servoNum].servo_max);

För referens måste vi multiplicera resultatvärdet mappning med 4 eftersom mini Maestro biblioteket fungerar förväntar sig värden i steg om 1/4 mikrosekund. Vad jag fann var att kartläggning funktionen var felaktiga för axel och armbåge servo växellådor, var det iväg med ett par grader vilket orsakade felaktigheter i positionering servo armen. Vad sår jag upp gör är att skapa min egen linjär regression kurvor för dessa servon och bädda in dem i kurvan. Detta gjordes i skisser moveServo() funktion.

Låt oss ta en titt på denna funktion:

void moveServo() {
Begränsa funktionen gränserna servo rörelse så du inte överväxel arm in i placerar du
vill inte
servoPosDeg = begränsa (servoPosDeg, servo [servoNum] .servo_constLow, servo[servoNum].servo_constHigh);

Mini Maestro värdena i 1/4 ms så du måste multiplicera med 4.
IF(servoNum == 1) {
servoPosMs = 4*(4.4406*servoPosDeg+1491.1);
} annat if(servoNum == 2) {
servoPosMs = 4*(-2.4208*servoPosDeg+1436.2);
} annat {
servoPosMs = 4 * karta (servoPosDeg, servo [servoNum] .servo_fromLow, servo [servoNum] .servo_fromHigh,
servo [servoNum] .servo_min, servo[servoNum].servo_max);
}

Serial.println(servoPosDeg);

setSpeed berättar hur snabbt du vill att flytta, servo servo
Ange mål berättar servo var att flytta
maestro.setSpeed((uint8_t) servo [servoNum] .servo_channel, (uint16_t) servo[servoNum].servo_speed);
maestro.setTarget((uint8_t) servo [servoNum] .servo_channel, (uint16_t) servoPosMs);

While loopen är här för att berätta skissen vänta tills servo har flyttat innan
sänder ett klart budskap
While(Maestro.getMovingState() == 1) {
Serial.println ("rörlig Servo").
};

Serial.Print ("Position är:");
Serial.println (maestro.getPosition(servo[servoNum].servo_channel));

Serial.println ("gjort");

{} < p > Serial.println ("gjort"); < /p >< p >} < /p >

I bokförda skissen har jag kommenterat ut raderna för linjär regression. Du kommer att behöva kontrollera om du behöver det eller inte. I grund och botten säga servo att flytta till de + 90 eller -90 (beroende på servo) och se om det verkligen är i 90 grader. Om du känner dig som om detta inte är tillfredsställande använda Maestro Control center för att flytta servo till 0, 90 180 grader (se figur), kopiera mikrosekund värdena och använda MS Excel för att göra en linjär trendlinje (se till att du säger det att Visa ekvationen.

För att testa skissen, läsa skiss till Arduino. När du är klar laddar öppen seriella kommando fönster och skicka kommandon till arm i följande form:

servoNum, mål grader

Exempel,

0, 25 då slå returtangenten

Detta flyttar bas servo till vänster med 25 grader.

Som Sammanfattning:

Servo Num Servo
0 Base
1 axel
2 armbåge
3 handleden Pitch
4 handled rotera
6 gripdon
Se Steg
Relaterade Ämnen

Kör motorn med android använder arduino och bluetooth

Hej vänner! Detta är min första instructable någonsin och idag jag ska visa dig hur man kör 2 motorer med android använder arduino och en billigt Bluetooth-modul. Detta projekt kan vara till stor hjälp för dig att bygga robotar som kan kontrolleras a...

Dataintrång min RC bil använder Arduino och Android Smart Phone

Har en gammal leksaksbil? Jag hackade min använder Arduino och en H bro krets för att kontrollera motorerna, brukade min Sony Z1 Android telefon styra med de senaste 1Sheeld jag fick från kicken.Jag tänkte att använda gyroskop sensorn i att driva det...

Utveckla ett ATtiny firefly projekt använder Arduino och det är IDE

Jag såg nyligen ett intressant projekt av Karl Lunt som används en ATtiny13 för att efterlikna en firefly (http://www.seanet.com/~karllunt/fireflyLED.html). Detta i sig, är verkligen inte unik, men det fick mig att tänka om en av mina tidiga microcon...

Hem automationssystem använder Arduino och SIM900 GSM modul

Hej du! Som jag har nästan avslutat mina studier på Lunds tekniska högskola, jag var tvungen att göra ett examensarbete och min tanke var att göra en häpnadsväckande sak (jag vet att det roliga: D) att visa alla att jag är en bra prototyp maker och j...

Snabba kontroll av dc-motor från laptop använder arduino och bearbetning

Hej allaJag är Gustaf raja. Jag skulle här vilja dela varvtalsreglering av dc-motor från datorn genom att använda arduino och bearbetning programvara. i detta projekt bearbetning programvara köra ett enkelt programfönster på datorn. baserat på positi...

Mätning av avstånd (och mer) enhet använder Arduino och GPS

i min tidigare Instructable, visade jag hur du få grundläggande uppgifter från en bärbar GPS, Holux M-1000 och konvertera UTC till lokal tid. I morse (Nov. 3: e), slutade i sommartid. Jag vände på enheten när jag vaknade upp i morse för att se om tid...

Blinkande lampor använder Arduino och LumiGeek

jag använde Arduino UNO kombinerat med tre LumiGeek sköldar för att köra belysning. LumiGeek har ägnat sköldar för att stödja 1 Watts RGB lysdioder som kräver konstant ström, adresserbara RGB LED Strip och icke-påverkbara RGB LED Strip.Steg 1: 1 Watt...

Experiment på skoj: Morsealfabetet Encrypter använder Arduino och Smartphone!

Tja, Hallå där alla!! Hur mår du, killar? Jag hoppas alla är ok och på gott humör. Idag vill jag dela med er alla om ett enkelt experiment som jag gjorde under min lediga tid. Det kallas Morsealfabetet encrypter. Flödet av detta experiment skulle var...

Ultrasonic Mapmaker använder Arduino och MatLab

Vision är en av de mest spännande sinnen du kan utrusta på din robot. Förmågan att uppfatta hinder kan en robot att göra ett välgrundat beslut om ytterligare förflyttningar.Det är dock också inte de enklaste sinnena att genomföra några skäl. För det...

SONAR system använder Arduino och Android

I detta projekt jag guidar dig hur du gör din egen Android app som kan kommunicera med Arduino via Bluetooth.Arduino använder en Ultrasonic sensor och en servomotor för att få avståndet på olika position och dessa värden som överförs till vår Android...

TV KONTROLLERBAR fjärrdatorn MP3 spelare använder ARDUINO och bearbetning

Hej var och en. här visar jag min projekt TV kontrollerbar fjärrdatorn MP3 spelare med bearbetning programvara och arduino ombord. Denna projektidé är baserad på att kontrollera datorn med TV-fjärrkontrollen. I detta projekt skapade jag egna MP3-spel...

DIY navigeringsenhet för blinda personer som använder Arduino och Android smart phone

I detta projekt du kan täcka dina ögon och låta din smartphone navigera dig för att undvika hinder, ansökan är främst en DIY navigeringsenhet för blinda.Jag visste att 1Sheeld håller på att lansera en ny text till tal sköld, och så jag kontaktade dem...

Twinkle Twinkle använder Arduino och Summer; Den enklaste handledningen

Hej beslutsfattare,Kan spela våra favorit barndom rim "Twinkle Twinkle Little Stars" på vår favorit styrelse Arduino!Steg 1: Hur fungerar det?Pulse bredd Modulation, eller PWM, är en teknik för att få analog resultat med digitala hjälpmedel. Dig...

Hur du använder Arduino och en RF 433 Long Range

Jag bara förklara hur jag har använder 433 MHz RF fjärrsamtal sändaren / mottagaren par och en arduino installera det på min rc bil för en fyrverkeripjäs tändning, lampa, pan tilt kamera systeme...Steg 1: MATERIAL du behöver1 ARDUINO UNO1 433 MHz RF...

Mind-kontrollerade trafikljus använder Arduino och MindFlex

Hej alla, detta är min första instructable. Idag kommer jag visa dig hur man gör en enkel trafikljus kontrolleras av dina hjärnvågor med hjälp av EEGEN leksaken MindFlex. Detta är en mycket enkel och grundläggande projekt, men användningsområdena Min...

Hemautomation använder Arduino och Bluetooth

Den "Home Automation System"(HAS) koncept har funnits i många år. Termerna "Smarta hem", "Intelligenta hem" följde och har använts för att införa begreppet nätverk apparater och apparater i husetHem automationssystem är en pr...

RC wifi bil Robot kamera använder Arduino och openWRT

En wifi bil baserad på Arduinogenom att stämma openWRTMål: DIY en trådlös bil baserad på Arduino. Genom att kontrollera bilen, vi kan se andra saker på fjärrplatsen, eller kan övervaka säkerheten.Effekt av bild:Princip:l borsta openWRT in trådlös rou...

KOMMUNIKATION mellan blinda och DÖVA använder ARDUINO och 1SHEELD

Hej är detta min första instructables! Spänne upp!Steg 1: PROJEKTDESIGNVi har våra problem uppgav så nu är dags att designa en lösning för detta problem och lösningen är enligt nedan...Steg 2: målMed projektet designen som anges är målen för projekte...

Control servo använder arduino och rock band gitarr

detta är min första Instructable ingen otäck comentsHur jag gjorde ett programSteg 1: koppla in allt ansluter arduino kabel och rock band gitarr mottagaren till USB-portarna och den andra sidan av kabeln till arduinoledsen om detta förvirrade någon e...