Robotarm med bipolär stepper (6 / 6 steg)

Steg 6: Full master kontrollera koden



Fullständiga koden för robotarm ingår nedan.

Vi hade några problem med koden som vi använde, men eftersom vi hade också lite problem med spänning kraften, som förklaras i steg 5, vi hade svårt att sortering genom större delen av det hela. Det bör noteras att denna del av koden inte innehåller koden för sensorn.

< pre >< pre > #ifndef _stepLib_h_ < br > #define _stepLib_h_
#include "Arduino.h"
definiera vår stepper klass
klass stepMotor {
offentlig:
stepMotor (byte stepPin, byte dirPin); vår stepper objekt med variabler stepPin och dirPin
void steg (unsigned int stepFreq); vår stegmotor funktion som tar som en ingång vår stegmotor frekvens
privat:
osignerade långa _time; aktuell tid
osignerade långa _lastStepTime; tid som vi äntligen klev
osignerade långa _stepPeriod; tid mellan en halv period - det är samma som våra delay(X) del 1
byte _stepPin;
byte _dirPin;
booleska _stepCycle; definierar om vi är på hög eller låg sidan av vår steg cykel
};
#endif
#include "Arduino.h"
#include "stepLib.h"
används för att förklara vår motor och initierar det
stepMotor::stepMotor (byte stepPin, byte dirPin) {
_stepPin = stepPin;
_dirPin = dirPin;
definiera våra digitala pins som utdata
pinMode (_stepPin, produktionen);
pinMode (_dirPin, produktionen);
initiera våra digitala pins till låg
digitalWrite (_stepPin, låg);
digitalWrite (_dirPin, låg);
_stepCycle = false; Detta håller reda på vilka slutet av steg cykeln finns vi på: hög eller låg
}
funktionen ansvarig för att driva våra digitala pins hög/låg på rätt frekvens
input är kliva frekvensen
void stepMotor::step (unsigned int stepFreq) {
_time = micros(); få aktuell tid
_stepPeriod = 1000000 / stepFreq; få våra steg period (i micro-sekunder) från användaren tanke steg ofta; Vi förlorar lite av noggrannhet här eftersom vi har definierat _stepPeriod som en osignerad länge i stället för en flottör, men det är ok...
om rätt mängd tid har passerat, låt oss gå vidare och gå vidare till nästa hälften av våra steg cykel
om (_time > = _lastStepTime + _stepPeriod) {
digitalWrite (_stepPin, _stepCycle == true); en kompakt sätt att skriva antingen hög/låg till våra steg stift baserat på vart vi är på vår steg cykel
_stepCycle =! _stepCycle; då vänds helt enkelt våra Boolean
_lastStepTime = _time; Uppdatera tiden vi senast klev
}
}
#include "stepLib.h"
Ange ett konstant värde benämn stepPin och tilldela värde 8 - detta värde ändras inte under vår kod
Detta förutsätter digital stift 8 av din Arduino är ansluten till steg-ingången på din drivrutin
#define stepPin 9
Ange ett konstant värde benämn dirPin och tilldela värde 8 - detta värde ändras inte under vår kod
Detta förutsätter digital stift 9 av din Arduino är ansluten till steg-ingången på din drivrutin
#define dirPin 8
initiera ett nytt objekt i vårt stepMotor bibliotek heter reglaget
Vi är i huvudsak att förklara att vi vill lägga till en stegmotor som heter reglaget som har våra definierade stepPin och dirPin
stepMotor reglaget (stepPin, dirPin);
Setup() loop, den Arduino enda går genom detta en gång
void setup() {
}
loop() loop, Arduino kontinuerligt går igenom detta så snabbt som möjligt
void loop() {
Slider.Step(50); steg vår motor på en viss frekvens (Hz)
}
#include "stepLib.h"
definiera våra steg pins
# definiera sliderStep 9
# definiera panStep 11
# definiera tiltStep 7
definiera vår riktning pins
# definiera sliderDir 8
# definiera panDir 10
# definiera tiltDir 6
initiera ett nytt objekt i vårt stepMotor bibliotek heter reglaget
Vi är i huvudsak att förklara att vi vill lägga till en stegmotor som heter reglaget som har våra definierade stepPin och dirPin
stepMotor reglaget (sliderStep, sliderDir);
stepMotor pan (panStep, panDir);
stepMotor tilt (tiltStep, tiltDir);
Setup() loop, den Arduino enda går genom detta en gång
void setup() {
}
loop() loop, Arduino kontinuerligt går igenom detta så snabbt som möjligt
void loop() {
Slider.Step(50); steg vår motor på en viss frekvens (Hz)
Pan.Step(10); steg vår motor på en viss frekvens (Hz)
Tilt.Step(100); steg vår motor på en viss frekvens (Hz)
}
#ifndef _stepLib_h_
#define _stepLib_h_
#include "Arduino.h"
definiera vår stepper klass
klass stepMotor {
offentlig:
stepMotor (byte stepPin, byte dirPin); vår stepper objekt med variabler stepPin och dirPin
void steg (unsigned int stepFreq); vår stegmotor funktion som tar som en ingång vår stegmotor frekvens
void setDir(boolean dir); funktion som tillåter oss att sätta våra rotationsriktning
privat:
osignerade långa _time; aktuell tid
osignerade långa _lastStepTime; tid som vi äntligen klev
osignerade långa _stepPeriod; tid mellan en halv period - det är samma som våra delay(X) del 1
byte _stepPin;
byte _dirPin;
booleska _stepCycle; definierar om vi är på hög eller låg sidan av vår steg cykel
};
#endif
#include "Arduino.h"
#include "stepLib.h"
används för att förklara vår motor och initierar det
stepMotor::stepMotor (byte stepPin, byte dirPin) {
_stepPin = stepPin;
_dirPin = dirPin;
definiera våra digitala pins som utdata
pinMode (_stepPin, produktionen);
pinMode (_dirPin, produktionen);
initiera våra digitala pins till låg
digitalWrite (_stepPin, låg);
digitalWrite (_dirPin, låg);
_stepCycle = false; Detta håller reda på vilka slutet av steg cykeln finns vi på: hög eller låg
}
funktionen ansvarig för att driva våra digitala pins hög/låg på rätt frekvens
input är kliva frekvensen
void stepMotor::step (unsigned int stepFreq) {
_time = micros(); få aktuell tid
_stepPeriod = 1000000 / stepFreq; få våra steg period (i micro-sekunder) från användaren tanke steg ofta; Vi förlorar lite av noggrannhet här eftersom vi har definierat _stepPeriod som en osignerad länge i stället för en flottör, men det är ok...
om rätt mängd tid har passerat, låt oss gå vidare och gå vidare till nästa hälften av våra steg cykel
om (_time > = _lastStepTime + _stepPeriod) {
digitalWrite (_stepPin, _stepCycle == true); en kompakt sätt att skriva antingen hög/låg till våra steg stift baserat på vart vi är på vår steg cykel
_stepCycle =! _stepCycle; då vänds helt enkelt våra Boolean
_lastStepTime = _time; Uppdatera tiden vi senast klev
}
}
ges en boolesk användarindata, Ställ in vår färdriktning på den ingången
void stepMotor::setDir(boolean dir) {
digitalWrite (_dirPin, dir);
}
#include "stepLib.h"
definiera våra steg pins
# definiera sliderStep 9
# definiera panStep 11
# definiera tiltStep 7
definiera vår riktning pins
# definiera sliderDir 8
# definiera panDir 10
# definiera tiltDir 6
definiera de stift som vi har lagt våra N.O. knappar
#define Knapp1 2
#define button2 3
vår motor steg frekvenser
int sliderFreq = 300;
int panFreq = 10;
int tiltFreq = 100;
initiera ett nytt objekt i vårt stepMotor bibliotek heter reglaget
Vi är i huvudsak att förklara att vi vill lägga till en stegmotor som heter reglaget som har våra definierade stepPin och dirPin
stepMotor reglaget (sliderStep, sliderDir);
stepMotor pan (panStep, panDir);
stepMotor tilt (tiltStep, tiltDir);
Setup() loop, den Arduino enda går genom detta en gång
void setup() {
definiera våra knappen pins som input pullup typ - se http://arduino.cc/en/Tutorial/DigitalPins#.Uyphr4WN7q4
pinMode (Knapp1, INPUT_PULLUP);
pinMode (button2, INPUT_PULLUP);
}
loop() loop, Arduino kontinuerligt går igenom detta så snabbt som möjligt
void loop() {
om (digitalRead(button1) == låg & & digitalRead(button2) == hög) {/ / om Knapp1 trycks och button2 är inte intryckt
slider.setDir(true);
pan.setDir(true);
tilt.setDir(true);
} else om (digitalRead(button1) == hög & & digitalRead(button2) == låg) {/ / om btton1 inte är intryckt och button2 trycks
slider.setDir(false);
pan.setDir(false);
tilt.setDir(false);
}
om (digitalRead(button1) == låg || digitalRead(button2) == låg) {/ / om antingen knappen trycks
Slider.Step(sliderFreq); steg vår motor på en viss frekvens (Hz)
Pan.Step(panFreq); steg vår motor på en viss frekvens (Hz)
Tilt.Step(tiltFreq); steg vår motor på en viss frekvens (Hz)
}
om (digitalRead(button1) == låg & & digitalRead(button2) == låg) {/ / om båda knapparna trycks ihop
sliderFreq += 10.
panFreq += 10.
tiltFreq += 10.
Delay(10); fördröja en kort medan annars knappen dubbla pressar orsaker vår frekvens att öka alltför snabbt (vi måste göra det möjligt för användaren att släpp knapparna)
}
}
#include "stepLib.h"
definiera våra steg pins
# definiera sliderStep 9
# definiera panStep 11
# definiera tiltStep 7
definiera vår riktning pins
# definiera sliderDir 8
# definiera panDir 10
# definiera tiltDir 6
definiera de stift som vi har lagt våra N.O. knappar
#define Knapp1 2
#define button2 3
definiera våra joystick stift; Observera vi använder analog pins, inte digital
#define LRjoystickPin 27 / / vänster-höger styrspak
#define UDjoystickPin 28 / / upp-/ joystick
vår motor steg frekvenser
int sliderFreq = 50;
int panFreq = 300;
int tiltFreq = 100;
andra variabler
byte Dödband = 50; storleken på Dödband, från joystick neutral position, där vi antar vi läser 0
unsigned int LRjoyValue = 0;
unsigned int UDjoyValue = 0;
initiera ett nytt objekt i vårt stepMotor bibliotek heter reglaget
Vi är i huvudsak att förklara att vi vill lägga till en stegmotor som heter reglaget som har våra definierade stepPin och dirPin
stepMotor reglaget (sliderStep, sliderDir);
stepMotor pan (panStep, panDir);
stepMotor tilt (tiltStep, tiltDir);
Setup() loop, den Arduino enda går genom detta en gång
void setup() {
definiera våra knappen pins som input pullup typ - se http://arduino.cc/en/Tutorial/DigitalPins#.Uyphr4WN7q4
pinMode (Knapp1, INPUT_PULLUP);
pinMode (button2, INPUT_PULLUP);
pinMode (LRjoystickPin, indata);
pinMode (UDjoystickPin, indata);
}
loop() loop, Arduino kontinuerligt går igenom detta så snabbt som möjligt
void loop() {
Läs våra joystick värderingar och lagra dem
LRjoyValue = analogRead(LRjoystickPin); fungerar precis som digitalRead, men för analoga pins
UDjoyValue = analogRead(UDjoystickPin); fungerar precis som digitalRead, men för analoga pins
styra våra pan med LR joystick
om (LRjoyValue > 512 + Dödband) {/ / joystick är utanför Dödband, flytta höger
pan.setDir(true);
Pan.Step(panFreq);
} else om (LRjoyValue < 512 - Dödband) {/ / joystick är utanför Dödband, flytta vänster
pan.setDir(false);
Pan.Step(panFreq);
}
styra våra tilt med UD joystick
om (UDjoyValue > 512 + Dödband) {/ / joystick är utanför Dödband, flytta upp
tilt.setDir(true);
Tilt.Step(panFreq);
} else om (UDjoyValue < 512 - Dödband) {/ / joystick är utanför Dödband, flytta ner
tilt.setDir(false);
Tilt.Step(panFreq);
}
styra våra reglaget stepper med två knappar, precis som vi gjorde tidigare
om (digitalRead(button1) == låg & & digitalRead(button2) == hög) {/ / om Knapp1 trycks och button2 är inte intryckt
slider.setDir(true);
} else om (digitalRead(button1) == hög & & digitalRead(button2) == låg) {/ / om btton1 inte är intryckt och button2 trycks
slider.setDir(false);
}
om (digitalRead(button1) == låg || digitalRead(button2) == låg) {/ / om antingen knappen trycks
Slider.Step(sliderFreq); steg vår motor på en viss frekvens (Hz)
}
}

Se Steg
Relaterade Ämnen

Bipolära Stepper Motor

jag hade några stegmotorer från trasiga HP skrivare, hårddisk och andra elektroniska apparater, så jag tänkte att det vore bra att få dem att fungera.i början började jag med uni-polär stegmotor (5,6 tråd) med ATMEGA8 MCU och ULN2003 drivrutin och de...

Robotarm med servomotorer

en del av min PhD forskning på NYU-Poly innebär förutsäga energiförbrukning i robotsystem, så jag behövde ett robotsystem att arbeta med som forskningsplattform att validera resultaten. Så jag övertygad om min grupp kompisar i min klass mekatronik i...

Bipolära Stepper Motor Driver

Att experimentera bipolär stepper motor med Arduino, många man kommer att använda L293 motor sköld, tyvärr jag inte kan hitta en, jag försökte bygga från alternativa delar, lyckligtvis har vi fortfarande Google Gud att uppfylla vår önskan, jag fick g...

Styra en robotarm med Microsoft Kinect!

Robotar är snabbt på att bli mer integrerade i våra dagliga liv. De rena våra golv, göra vårt kaffe och används även för telepresence. Eftersom de blir så viktigt för samhället, varför inte ge våra robotic kamrater gåvan av vision?I detta instructabl...

ROBOTARM med USB PC-gränssnitt (plus hur man monterar)

här är en video av robotarm med USB PC-gränssnitt och hur man monterar det......

PIR-SENSOR med ARDUINO aktivera STEPPER MOTOR

AKTIVERA STEPPER MOTOR MED RÖRELSESENSORSteg 1: PIR med ARDUINO aktiverat STEPPER MOTORHej denna instactable att rotera stepper motor förord och bakåt när pir läsa några rörelse.Steg 2: Del kräver1-ARDUINO UNO2-PIR(HUMAN MOTION SENSOR)3-L293D (MOTOR...

Interaktiva sökvägen följande robotarm med pfodApp

IntroduktionDetta instructable är en förlängning av Remote styrda robotarm med hjälp av pfodApp kan du interaktivt program en komplex bana för din robotarm och sedan har armen igenom den angivna sökvägen.Bara installera senaste pfodParser bibliotek o...

Bygga robotarm med Makeblock delar

Jag bygga bara en robotarm med Makeblock delar, ovanstående är den snyggare utseende och fungerande video.Steg 1: ProduktstrukturBill av mekaniska delar:Beam0808-136 x 3Beam0808-184 x 11Beam0824-016 V2.1 x 2Beam0824-032 V2.1 x 3Beam0824-096 V2.1 x 3B...

Min nionde projekt: Robotarm med Joystick sköld

Även om det är bra kontrollera robotarm med dator eller mobiltelefon, tror jag att använda joystick är också cool, så jag har köpt en joystick sköld och göra ett nytt projekt. Denna joystick sköld är kompatibel med Arduino. Det stöder också Nokia 511...

Hemgjord robotarm med hjälp av standarddelar använder Arduino och en bearbetning GUI

Jag nyligen pensionerad och saker jag lovat mig själv var att när jag slutar jag skulle slutföra alla de projekt som jag hade sprungit runt i mitt huvud sedan jag var tonåring. Det är omkring 50 år eller så av projekt. På den tiden fanns det inga mik...

Bygga en 5-axlig robotarm med Arduino och DynamixShield

I detta instructable jag kommer att visa dig hur du snabbt och enkelt skapa en 5-axlig robotarm med kommersiella off-the-shelf komponenter och kontrollera den med en Arduino med en DynamixShield. DynamixShield är ett nytt tillägg för antingen Arduino...

Kontroll robotarm med handskar, Android-telefon och Arduino

Idag har vi nästan 2 tekniker för att spela med robotarm, antingen genom knappar till exempel som på spelet sköld eller använda handskar som inkluderar sensorer. Ännu, dag ska jag visa dig en ny teknik med hjälp av endast din Android-telefon och Ardu...

Rörlig robotarm med PHIRO + Arduino

Vi är tillbaka med en annan tutorial att visa dig hur du sätter PHIRO Pro till en cool mobil robotarm som kan plocka och placera saker! Liknar våra tidigare PHIRO Arduino färgsensor instructable, vi kommer att använda Pocket koden på en Android-telef...

Bygga robotarm med 3DP +Arduino(用3DP+Arduino製作機械手臂)

Detta är en 5-axlig robotarm, jag gjorde det med 3D skrivare & Arduino.Du kan följa nedan steg för att hämta resursen och göra den.Förbereda saker:1.MG995 servo x 52. SONY Joystick x13. Arduino x1.Steg 1: Se Demo FilmDu kan se Demo Film. Med hjälp av...

Lever med Arduino och L298N H-bryggan för bipolära Stepper motorstyrning

Ovanstående modul är en L298N dotter styrelsen jag köpte av Amazon för en vecka sedan, och att få det att fungera har varit en ganska frustrerande resa som slutligen ser någon resolution i dag. Detta var en viktig orsak jag trodde jag skulle sätta ih...

BT mobila Ctrl stammen robotarm med String

Stammen robotarm är en konst i moderna robotteknik. Det kan kan snurra och fungerar som konstnärliga. Alla robotics inspirerad är inspirerade av levande saker, i denna ordning bålen robotics inspirerad av elefant och orm. Här försöker jag göra det me...

Styra en robotarm med Arduino, 1Sheeld och en Android Smart Phone

I denna artikel vi visar dig hur du använder smart 1Sheeld och din Android phone sensorer (orientering & närhet sensorer) till kontroll en Robotic beväpna trådlöst.Kort om 1Sheeld:http://1sheeld.com/Steg 1: Våra verktyg 1 - robotarm (bilda din egen d...

Hitta bipolär Stepper Motor spole par

det är ett riktigt enkelt sätt att räkna ut vilka två uppsättningar av wired är ihopkopplade på en bipolär stegmotor. Få en LED, och hålla anoden och katoden till någon av motorns två elektriska anslutningar (respektive). Slå motoraxeln och se om det...

Kontrollera ArmLinkLibrary-master robotarm med Arm länk programvara

Vill vara cool som Simone Giertz men ArmLinkSerial n't vet var du ska börja?InterbotiX Arm länk programvaran ger ett enkelt gränssnitt för GlobalArm.h -kompatibel robotarmar. Med denna programvara kan du styra robotarm via en mängd rörelse lägen inkl...