Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - servo motor
#1
Drugari kupio sam delove al me kod muci.
Skinuo sam neki kod ali nije za ovaj enkoder a ne znam kako da prepravim.
Motor treba samo da okrene 10 puna kruga kad pritisnem taster .

DC Servo motor 14,8V   2450rpm , enko  800cpr

Osovina 8mm, prečnik motora 50mm, duzina 116mm, optički enkoder 5V A, B kanali, 

Ovaj projekat sam nasao   -  http://www.homofaciens.de/technics-base-...isc_en.htm

 A ovde download   kod     -  http://www.homofaciens.de/download_en.htm#RotaryEncoder


Attached Files Thumbnail(s)

Reply
#2
Evo ovako
tvoj enkoder je HEDS9700D sto znaci da ima 192 ciklusa po jednom krugu rotacije . 192 x 4 = 768 impulsa za punu rotaciju .
iz teksta sa linka koji si ti dao motorom se upravlja signalima step i direction iz racunara.
znaci za jedan pun krug moras da sa direction komandom da zadas smer , pa posle toga sa step komandom da zadas 768 impulsa za jedan krug ili 7680 impulsa za 10 punih rotacija .
Ne preferiram arduino i derivate iz atmela ali verovatno da bi se to moglo da prepravi u kodu da pritiskom na taster odradi 10 punih krugova ,  medjutim nisam siguranda je PID kontrola uradjena kako treba tako da ces verovatno imati greske ( prebacaje u odnosu na zadatu poziciju ).
Ja licno vise volim servo motore ali ako ti ne treba brzina veca od 500 obrtaja u minuti , mislim da ce ti biti mnogo lakse da to odradis sa step motorom .

P.s ako ipak vise volis servo motore evo ti link za korektno odradjen driver za servo motore BLCD i DC ( tvoj motor je DC).
https://www.vbesmens.de/en/positioning-controller.html


Attached Files Thumbnail(s)

Reply
#3
(09-29-2016, 09:46 PM)andrics Wrote: Evo ovako
tvoj enkoder je HEDS9700D sto znaci da ima 192 ciklusa po jednom krugu rotacije . 192 x 4 = 768 impulsa za punu rotaciju .
iz teksta sa linka koji si ti dao motorom se upravlja signalima step i direction iz racunara.
znaci za jedan pun krug moras da sa direction komandom da zadas smer , pa posle toga sa step komandom da zadas 768 impulsa za jedan krug ili 7680 impulsa za 10 punih rotacija .
Ne preferiram arduino i derivate iz atmela ali verovatno da bi se to moglo da prepravi u kodu da pritiskom na taster odradi 10 punih krugova ,  medjutim nisam siguranda je PID kontrola uradjena kako treba tako da ces verovatno imati greske ( prebacaje u odnosu na zadatu poziciju ).
Ja licno vise volim servo motore ali ako ti ne treba brzina veca od 500 obrtaja u minuti , mislim da ce ti biti mnogo lakse da to odradis sa step motorom .

P.s ako ipak vise volis servo motore evo ti link za korektno odradjen driver za servo motore BLCD i DC ( tvoj motor je DC).
https://www.vbesmens.de/en/positioning-controller.html

Hvala na odgovoru Smile

Veceras sam probao neke kodove , menjao , i dosta naucio s obzirom da sam pocetnik .
Probao sam jedan step motor i ovaj sa slike .Bitno da se okrecu , mislio sam da cu da spalim nesto... Smile
Pokusacu nekao da otkucam te komande sutra.
Reply
#4
Probao sam par kodova ali radi bezveze...
Kad otkacim enkoder motor se isto ponasa .
Ne znam da li je problem sto arduino ne moze lepo da ocita enkoder zbog brzine.Menjao sam brzinu motora i isto se ponasa.
Razmisljam da rucno napravim enkoder sa nekoliko polja.

Svaka pomoc dobrodosla.


Attached Files
.rar   ps34controllertest.rar (Size: 1,82 KB / Downloads: 3)
.zip   usb_com_servo_linear-v1_4.zip (Size: 157,76 KB / Downloads: 1)
Reply
#5
(10-02-2016, 10:37 AM)uki122 Wrote: Probao sam par kodova ali radi bezveze...
Kad otkacim enkoder motor se isto ponasa .
Ne znam da li je problem sto arduino ne moze lepo da ocita enkoder zbog brzine.Menjao sam brzinu motora i isto se ponasa.
Razmisljam da rucno napravim enkoder sa nekoliko polja.

Svaka pomoc dobrodosla.


Kada bi objasnio za koju namenu je taj motor , mozda bih mogao da ti pomognem . Servo motor driveri nisu jednostavni sklopovi , mislim da je to malo preveliki zalogaj za pocetak . Ne verujem da je problem encoder , na web strani je napisano da je max stepping  frequency 16 khz to znaci da ,bez problema, moze da gura tvoj motor do 1200 RPM .  U svakom slucaju objasni namenu pa mozemo da probamo da razradimo sklop koji bi ti odgovarao . Ja imam hrpu 2 ampera step motor drivera , arduino ready , mogu da ti poklonim par komada za igranje . Upravljanje tim driverima je jednostavno sa bilo kojim arduinom . Mislim da je to pouzdanije resenje a tebe . Zakacio sam ti arduino source , razmisli jos jednom .


Attached Files Thumbnail(s)


.zip   a4988.ino.zip (Size: 561 bytes / Downloads: 8)
Reply
#6
I ja isto predlazem da se fokusiras za pocetak na step motore, servo motori su posebna prica i dosta slozenija od stepera.
Reply
#7
Osmislio sam sklop koji vezuje vezice koncem i napravio sam prototip .
Ali to je napravljeno sa motorom iz srafilice i prekidac pedala.
To radi solidno ali hocu da je usavrsim.
Taj jedan (servo , steper) treba da okrece glavnu osovinu preko zucastog kaisa .
Glavna osovina ima ruku koja mota oko vezice konac.
Glavna osovina treba da se okrene 10x i da stane u pocetni polozaj sa najvecom greskom 5 stepeni .
I treba da blokira osovinu.
Da bi posle toga RC servo (180 stepeni) mogao da dovrsi postupak .
Ali za sad me muci samo ovaj motor koji okrece glavnu osovinu.
Kupicu driver nije uopste problem ...

Imam dva step motora sa  po 4 izvoda .


Attached Files Thumbnail(s)

Reply
#8
Uki udri ti na step motore , zajebi servo za to sto radis . Vecina step motor na trzistu ima rezoluciju, u full stepp rezimu, od 1.8 stepeni ( 200 koraka za pun krug) , sto znaci da za jedan impuls na stepping pinu kontrolera imas pomeraj od 1.8 stepeni . Naravno sve se to menja sa microsteppingom tako da sa 1/16 (3200 koraka za pun krug ) stepa imas rezoluciju od 0.1125 stepeni za svaki stepping impuls . Druga prednost je holding torque ( sila drzanja ) je znatno veca kod step motora. Svi moderni driveri imaju mogucnost microsteppinga , ai driveri su jeftini . U svakom slucaju ponudio sam ti par drivera za igranje , pa ti odluci sta i kako dalje .
Te motore sa slika ne prepoznajem i nisam siguran da li bi ti zavrsio posao , ali imas na kupujem prdajem par prodavaca koji nude zanimljive step motore .
http://www.kupujemprodajem.com/Step-moto...-oglas.htm
Rotaciju mozes preko kaisnika GT2 da prenese na osovinu ili direktno preko neke spojnice .
Imam i GT2 kaisnike da ti poklonim Wink
Reply
#9
(10-02-2016, 03:26 PM)andrics Wrote: Uki udri ti na step motore , zajebi servo za to sto radis . Vecina step motor na trzistu ima rezoluciju, u full stepp rezimu, od 1.8  stepeni ( 200 koraka za pun krug) , sto znaci da za jedan impuls na stepping pinu kontrolera imas pomeraj od 1.8 stepeni . Naravno sve se to menja sa microsteppingom tako da sa 1/16 (3200 koraka za pun krug ) stepa imas rezoluciju od 0.1125 stepeni za svaki  stepping impuls . Druga prednost je holding torque ( sila drzanja ) je znatno veca kod step motora. Svi moderni driveri imaju mogucnost microsteppinga , ai driveri su jeftini . U svakom slucaju ponudio sam ti par drivera za igranje , pa ti odluci sta i kako dalje .
Te motore sa slika ne prepoznajem i nisam siguran da li bi ti zavrsio posao , ali imas na kupujem prdajem par prodavaca koji nude zanimljive step motore .
http://www.kupujemprodajem.com/Step-moto...-oglas.htm
Rotaciju  mozes preko kaisnika GT2 da prenese na osovinu ili direktno preko neke spojnice .
Imam i GT2 kaisnike da ti poklonim Wink

Moram sa step motorima od servo nema vajda ,a mislio sam da su prostiji za upravljanje . Smile
Ovaj veci motor sam kacio na driver l298 sa slike ,i greje driver oko 40-50 stepeni i to na napajanje od 5v.
Koji driver da kupim , sta preporucujes? Lako cu da kupim motor ako ovaj ne zavrsava poso.
Motor ce raditi sa minimalnim opterecenjem.
Ma necu da mi poklanjas , dovoljno je sto me savetujes. Big Grin
Hvala ti.
Reply
#10
Normalno je da se motor greje jer tstalno tece prevelika struja koju verovatno nisi podesio . struja se podesava u odnosu na parametre motora .
evo ovakav sam ti nudio Smile
http://www.kupujemprodajem.com/Arduino-A...-oglas.htm
zupcasti kais
http://www.kupujemprodajem.com/Zupcasti-...-oglas.htm
zupcasta remenica
http://www.kupujemprodajem.com/Remenica-...-oglas.htm

Da me ne shvate pogresno administratori , ja nisam prodavac sa kupujem prodajem , ne znam ko je . Ako se to kosi sa pravilima foruma molim da obrisu linkove .
Reply
#11
Nasao sam kod za onaj veci steper motor ,namestio 10 kruga .
Sad radi na 12v i jedva mlak hladnjak na l298.
Kako sad da stavim lock/hold na par seknde?
I da namestim sve to da kad pritisnem taster da odradi i stane?








int inA1 = 2; // input 1 of the stepper
int inA2 = 4; // input 2 of the stepper
int inB1 = 6; // input 3 of the stepper
int inB2 = 7; // input 4 of the stepper

int stepDelay = 3; // Delay between steps in milliseconds



void setup() {                
  pinMode(inA1, OUTPUT);     
  pinMode(inA2, OUTPUT);     
  pinMode(inB1, OUTPUT);     
  pinMode(inB2, OUTPUT);     
}

void step1() {
  digitalWrite(inA1, LOW);   
  digitalWrite(inA2, HIGH);   
  digitalWrite(inB1, HIGH);   
  digitalWrite(inB2, LOW);   
  delay(stepDelay);
  
}
void step2() {
  digitalWrite(inA1, LOW);   
  digitalWrite(inA2, HIGH);   
  digitalWrite(inB1, LOW);   
  digitalWrite(inB2, HIGH);   
  delay(stepDelay);
}
void step3() {
  digitalWrite(inA1, HIGH);   
  digitalWrite(inA2, LOW);   
  digitalWrite(inB1, LOW);   
  digitalWrite(inB2, HIGH);   
  delay(stepDelay);
}
void step4() {
  digitalWrite(inA1, HIGH);   
  digitalWrite(inA2, LOW);   
  digitalWrite(inB1, HIGH);   
  digitalWrite(inB2, LOW);   
  delay(stepDelay);
}
void stopMotor() {
  digitalWrite(inA1, LOW);   
  digitalWrite(inA2, LOW);   
  digitalWrite(inB1, LOW);   
  digitalWrite(inB2, LOW);   
}


// the loop routine runs over and over again forever:
void loop() {
  for (int i=0; i<=11; i++){ 
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
  }

 
 stopMotor ();
delay (3000) ;




  }
Reply
#12
Uspeo sam da iskombinujem kod da pali na taser.
Sad kad pritisnem taster odradi jednom i stane dok ne pritisnem opet. Big Grin





int inA1 = 2; // input 1 of the stepper
int inA2 = 3; // input 2 of the stepper
int inB1 = 6; // input 3 of the stepper
int inB2 = 9; // input 4 of the stepper

int stepDelay = 3; // Delay between steps in milliseconds

int buttonPin;


void setup() {                
  
  
  buttonPin = 12 ; //whatever pin your button is plugged into
  pinMode(buttonPin, INPUT_PULLUP);
 
  
  pinMode(inA1, OUTPUT);     
  pinMode(inA2, OUTPUT);     
  pinMode(inB1, OUTPUT);     
  pinMode(inB2, OUTPUT);     
}

void step1() {
  digitalWrite(inA1, LOW);   
  digitalWrite(inA2, HIGH);   
  digitalWrite(inB1, HIGH);   
  digitalWrite(inB2, LOW);   
  delay(stepDelay);
  
}
void step2() {
  digitalWrite(inA1, LOW);   
  digitalWrite(inA2, HIGH);   
  digitalWrite(inB1, LOW);   
  digitalWrite(inB2, HIGH);   
  delay(stepDelay);
}
void step3() {
  digitalWrite(inA1, HIGH);   
  digitalWrite(inA2, LOW);   
  digitalWrite(inB1, LOW);   
  digitalWrite(inB2, HIGH);   
  delay(stepDelay);
}
void step4() {
  digitalWrite(inA1, HIGH);   
  digitalWrite(inA2, LOW);   
  digitalWrite(inB1, HIGH);   
  digitalWrite(inB2, LOW);   
  delay(stepDelay);
}
void stopMotor() {
  digitalWrite(inA1, LOW);   
  digitalWrite(inA2, LOW);   
  digitalWrite(inB1, LOW);   
  digitalWrite(inB2, LOW);   




}




void loop () 

{

  
 if(digitalRead(buttonPin) == LOW)
   
   
   { 
    
    for (int i=0; i<=11; i++){                                    

    
    step1(); 
    step2();
    step3();
    step4();
    step1(); 
    step2();
    step3();
    step4();
     
     }

 
 stopMotor ();
delay (3000) ;
  }
}
Reply
#13
Kako da prepravim (stopmotor) da bude hold/lock na par seknde?
Reply
#14
(10-03-2016, 08:00 PM)uki122 Wrote: Kako da prepravim (stopmotor) da bude hold/lock na par seknde?

Šta ti je to ?
Misliš li na redukciju struje na 50% od maksimalne dok motor miruje u ukočenom stanju ?

Pozz
Reply
#15
Mislio sam , kako da ukocim osovinu motora na par sekunde.
Da ne moze da se okrece.
Reply
#16
Vrlo lako ..

Svaki step motor drajver ima tri linije za kontrolu:

- STEP - broj impulsa - koraka
- DIR - na koju stranu
- ENABLE - dozvola proticanja struje kroz namotaje

E pa upravo pomoću tog ENA (Enable) ulaza
Imaš mogućnosti :

- Ako ena aktiviraš svo vreme dok šalješ STEP impulse (preko koda koji pišeš), kada moto stane osovina neće biti ukočena.
- Ako ENA aktiviraš hardverski ( stalno ootvoren optokapler) čim motor stane biće stalno ukočen sve do sledećih STEP impulsa.

- Ako ENA aktiviraš (preko koda koji pišeš) pre prvog STEP impulsa, a deaktiviraš posle zadnjeg STEP impulsa sa željenom DELAY funkcijom
dobićeš to što želiš.

Pozz
Reply
#17
Imam dva enable pina na l298 , valjda je tako?

Jel mozes da prepravis kod ?
Stvarno ne znam kako to da uradim.
Reply
#18
L298 nije driver za step motore . on nema opciju automatske regulacije struje , tako da nije bas srecno resenje . To sto zoves hold ces postici tako sto ne koristis funkciju stopMotor (); vec ostavis poslednje stanje koje si zadao komandama . Motor ce ostati u zadnjem polozaju ali ce teci stalna struja kroz njega koju moze da da tvoj ispravljac.
Reply
#19
Uki,

L298 je samo dupli H-most koji ne može raditi bez translatora.
L298 se može povezati direktno na mikrokontroler, arduino i slično i pisati translatorne sekvence ali to je besmisleno,
i u tom slučaju ti moraš pisati sekvence ( kao što si već nešto radio),
a kroz namotaje motora protiče maksimalna struja čiki iznos je: U napajanja/ Otpor namotaja

Mnogo lakše i bolje je vezati L298 sa L297 koji je u stvari translator.
Na taj način ćeš imati te tri linije za upravljanje koje sam ti opisao.
Ne pišeš više sekvencu za sekvencom, već samo broj imuplsa koliko želiš koraka, kojom brzinom želiš (pauza izmedju impulsa)
Impulsi treba da budu tipično 10uS, a pauza po potrebi.

Pored pojednostavljenog interfejsa L297 će omogućiti i PWM regulaciju struje kroz motor.
Motor se tako manje greje, brži je itd ...

Imaš na internetu puno šema - proguglaj ; stepper driver L297 + L298

***
To je jedna varijanta, a drzga je što ti je već rekao Andrić, jeftini gotovi drajver i sa
STEP/DIR/ENA ulazom - ima na Kupujem prodajem za oko 10 eura maksimalno.

***
Ja koristim Microchip mikrokontrolere, - Arduino ne koristim !

Pozz
Reply
#20
Video sam da nema vajda.
Otkucao sam kod i ubacio da zadrzi 1 sekundu pa da otkoci.
Ali ugreje driver posle par ponavljanja...

Jel odgovara ovaj driver ?

http://www.kupujemprodajem.com/TB6600-4-...d=58923573
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)