Problém řízení krokového motoru

Toto fórum je věnováno sekci ELEKTRONIKA na webu Sakul World.

Moderátor: Spolupracovníci

  • Advertisement

Problém řízení krokového motoru

Příspěvekod ulitej » čtv 17. říj 2019 18:16:46

Dobrý den Lukáši , případně i jiný čtenáři .
Potřeboval bych konsultovat funkci samostatně řízeného Driveru A4988 pomocí jednoduchého "ino" souboru nahraného samozřejmě v arduinu. V čem mám problém - no v souboru INO né to funguje naprosto bezproblémově .
Narazil jsem ovšem na takový to problém . Při přivedení napájení +5V na arduino (jak pomocí USB , nebo přímo na příslušný PIN Arduina) se začne osa krokového motorku jakoby "klepat" a sem tam někam pohybovat. Toto klepání dle mě ustane jakmile si arduino "přelouská" nahrané ino a začne od této chvíle naprosto přesně vykonávat to co je naprogramované.
Je zajímavé , že pokud je ovšem v Arduinu nahrán FW pro CNC tak toto "klepání" se neprojevuje a ovládací příkazy fungují tak jak mají. Zkoumal jsem i nějaké video a pokud se člověk zaměří na tento jev tak ho tam také mívají. Driver je zapojen klasicky řídící piny 3 a 4 , propojené piny SLEEP a RESET a napájení jak Driveru a motorku je jasné.
Tak nemáte nějaký hlubší informace k této problematice?
Uživatelský avatar
ulitej
Pokročilý
Pokročilý
 
Příspěvky: 112
Registrován: ned 13. led 2019 13:34:31

Re: Problém řízení krokového motoru

Příspěvekod Sakul » čtv 17. říj 2019 18:53:02

Hoď sem prosím schéma jak to máš zapojené a případně ten program pro procesor. Mrknu na to a uvidíme. Toto by to rozhodně nemělo dělat a nikdy jsem se s tím nesetkal a to jsem už pár konstrukcí s krokáčema dělal.
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Problém řízení krokového motoru

Příspěvekod ulitej » čtv 17. říj 2019 21:31:41

Ahoj Lukáši , dnes už se k tomu nedostanu , zítra jedeme s manželkou na hobby veletrh pořádaný v PVA tak pak hodím schéma , video a ino ahoj a díky .
PS překvapila mě SZ a omlouvám se za špatné zařazení příspěvku , vycházel jsem , že by to mohlo být téma společné s tvým popisem v kapitole číslo 9 o elektronice. Případně toto celé můžeš smáznout.
Uživatelský avatar
ulitej
Pokročilý
Pokročilý
 
Příspěvky: 112
Registrován: ned 13. led 2019 13:34:31

Re: Problém řízení krokového motoru

Příspěvekod ulitej » pát 18. říj 2019 7:44:10

Tak tady je video , v čase 4:09 připojuje USB a následuje ten cukavý pohyb , je to sice na driver 8825 , ale to asi nemá význam
https://www.youtube.com/watch?v=V2AywTy9_nk

zapojení je třeba tady , dle mě ta klasika
https://www.makerguides.com/drv8825-ste ... -tutorial/

a nyní to ino z mého arduia ,dle mě jasné a jednoduché:
---------------------------------------------------------------------
/* Simple Stepper Motor Control Exaple Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
*/

// defines pins numbers
const int stepPin = 3;
const int dirPin = 4;

void setup() {
// Sets the two pins as Outputs
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
}
void loop() {
digitalWrite(dirPin,HIGH); // Enables the motor to move in a particular direction
// Makes 200 pulses for making one full cycle rotation
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000); // One second delay

digitalWrite(dirPin,LOW); //Changes the rotations direction
// Makes 400 pulses for making two full cycle rotation
for(int x = 0; x < 400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000);
}
----------------------------------------------------------------------------------------
tak uvidíš Lukáši jestli tě něco trkne ahoj
Uživatelský avatar
ulitej
Pokročilý
Pokročilý
 
Příspěvky: 112
Registrován: ned 13. led 2019 13:34:31

Re: Problém řízení krokového motoru

Příspěvekod Sakul » pát 18. říj 2019 14:04:48

Tak jsem na to kouknul a je tam hned několik problémů jak ve schématu, tak v programu. V podstatě všechno špatně.
U driveru chybí řízení, takže tento vstup plave ve vzduchu což může být i ten problém. Dále chybí PullDown odpor pro MS1 (M0), takže třeba DRV8825 by v tom zapojení dělal pěknou prasečinu. Dál, to zapojení SLEEP a RESET je taky dost divné. Takhle zapojené jsem to nikdy neviděl. Normálně se ty piny jen propojí a nikam dál se již nepřipojují.
Jak má vypadat správné zapojení pro driver se můžeš podívat třeba v mém schématu pro řízení 3D tiskárny:
http://www.sakul.cz/images/stranky/imag ... a_v1.1.png
Hlavně si tam všimni zapojení rezistorů R1 R2 u driveru E0 (třeba). Ty jsou pro bezproblémový chod driveru klíčové. Jinak z toho schématu není úplně patrné, že vstup EMABLE, je také řízen z procesoru a ten odpor R2 ho drží ve vypnutém stavu, dokud nenaběhne procesor, aby mohl převzít jeho řízení.

V příloze přikládám 2 mé testovací firmwery pro řízení krokáče a pak finální program pro řízení dvířek kurníku. Chci upozornit, že jsem byl línej a ty programy jsou napsané špatně a například pokud by měl ovládat více jak jeden motor, tak by samozřejmě nefungoval a dokonce by nefungoval ani tehdy pokud by měl současně ještě při chodu blikat blbou Ledkou. Jde o to, že v hlavním programu se nesmí za žádných okolností vyskytovat funkce:
delayMicroseconds nebo delay. Tyto funkce jsou akceptovatelné jen a pouze ve smyčce setup.
Problém je že snad ve všech tutoriálech je používají, což však funguje jen v tom daném tutoriálu, ale nelze to použít pak ve finálním programu. Tam se funkce pro řízení krokáčů musí napsat zcela jinak.
Jinak tyto tutoriály na YouToube jsou strašný peklo, pač to většinou dělal lidi co o tom nemaj sebemenší páru a je to jen kopie nějaké kopie tutoriálu, která cestou dost zdegradovala a od originálu už je nerozeznatelná. Vždy je potřeba hledat kvalitní obsah, což zrovna toto video fakt není. Už tam chybí jen tavná pistole, která by tomu možná dodala nějakou váhu a funkčnost.
Přílohy
Firmware krokáč.zip
Zde několik ukázek programů a pak finální program pro otvírání dvířek kurníku.
(15.1 KiB) 356 krát
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Problém řízení krokového motoru

Příspěvekod ulitej » pát 18. říj 2019 17:59:15

Ahoj a dík , budu studovat , pousmál jsem se slovu kurník - protože asi před rokem jsem kolegovi v práci vyráběl malý DPS na relátka pro ty dvířka kurníku a za rok to odnesla jedna slepičí hlavička......
No a teď k těm driverům , nakoupil jsem právě ty 4988 co používáš a docela jsem nechápal že na těch všelijakých videích ten PIN ENABLE nikde není použit . Takže teď mám volny jeden motorek tak nemusím na stůl brát ten CNC výtvor (kde zatím třetí motor chybí) a pokusím se pomocí drátového sena a tvého přiloženého FW zlepšit funkci driveru a trochu promazat mozkové závity.
Mockrát dík za komunikaci.
Uživatelský avatar
ulitej
Pokročilý
Pokročilý
 
Příspěvky: 112
Registrován: ned 13. led 2019 13:34:31

Re: Problém řízení krokového motoru

Příspěvekod ulitej » pát 18. říj 2019 20:09:34

Ahoj v testu 1 je toto
pinMode(ENABLE,OUTPUT); // Nastavení výstupu ENABLE (není nutno pokud je klema na driveru)

v komentáři tím myslíš že na PIN ENABLE je přivedeno napětí +5V přes odpor 10 k jako je na schématu tvého CNC řídícího výrobku ? Nebo je tam ještě jiná propojka?
Snad jsem to napsal aby se to pochopilo , prostě psaný text je vždy horší než slovní popsání v reálném čase.
Uživatelský avatar
ulitej
Pokročilý
Pokročilý
 
Příspěvky: 112
Registrován: ned 13. led 2019 13:34:31

Re: Problém řízení krokového motoru

Příspěvekod Sakul » pát 18. říj 2019 21:06:13

Zapoj to podle toho schématu. Tedy s tím odporem. Pokud bys pin ENABLE spojil trvale s GND bude driver neustále aktivní a při zapnutí ti může rušení na pinech Step a DIR udělat právě to cukání motoru. Pokud je ENABLE připojeno k +5V bude driver zablokován a motor zcela odpojen od výkonu, takže se nemá šanci nijak hejbat.
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Problém řízení krokového motoru

Příspěvekod ulitej » sob 19. říj 2019 17:50:28

Tak sobotní učení dle tvých rad bylo užitečné . Možná jsem i trochu pochopil funkci pinu ENABLE na driveru vůči pinu 10 na Arduinu. Takže motor v tuto chvíli již necuká takže vše se zdá být na dobré cestě.

Protože ovšem znám jen pár věcí kolem arduina tak jsem zase narazil a to na toto.
máš tam toto
void step(boolean dir,int steps,int rychlost){ // Funkce ovládání motoru (směr otáček, počet kroků, rychlost otáček)

a jsem zase v koncích , zase do teďka jsem myslel že všechny "int" a jejich názvy a hodnoty se definují na začátku před void setup a ty tady je použiješ bez definování. Toto se pokusím zjistit v týdnu od kolegy v práci jak to tedy je.
A také jsem si uvědomil , že v tomto případě arduino nemusí mít definovanou rychlost komunikace - dyť vlastně s ničím nekomunikuje no prostě základy a jen základy.
Mockrát děkuji za to , že jsem se dostal s motorkem až do tohoto funkčního stádia. :D
Uživatelský avatar
ulitej
Pokročilý
Pokročilý
 
Příspěvky: 112
Registrován: ned 13. led 2019 13:34:31

Re: Problém řízení krokového motoru

Příspěvekod Sakul » sob 19. říj 2019 21:02:07

Int je definování proměnné, stejně tak i boolean a další typy.
V tom kódu jsou použity lokální proměnné přímo ve funkci. Tedy:
boolean dir
int steps
int rychlost

Následně se ve smyčce loop volá funkce step a současně se předávají parametry jako je směr otáčení boolean dir, počet kroků int steps a rychlost int rychlost no a tyto parametry se zapíší do výše jmenovaných proměnných, které jsou však pouze lokální a jsou platné pouze pro funkci step.

V programu je možno definovat například globální proměnné (to jsou ty o kterých píšeš) a ty jsou platné v celém programu. Ale někdy je lepší použít proměnnou lokální jako v tomto případě, ale tu nelze volat z jiné funkce než té ve které byla definována.

Pokud se chceš programováním zabývat podrobněji na netu je spousty návodů, bohužel dost z nich je nepoužitelných, ale díky obrovskému rozšíření Arduna je toho opravdu hodně a na nějaké jednodušší projekty je to velice intuitivní a jednoduché programování.
INFO:
Sakul WORLD: www.sakul.cz/
Sakul YouTube: www.youtube.com/user/sakulraider

Možnost příspěvku (Donate):
Patreon: https://www.patreon.com/sakul
PayPal: SakulRaider@seznam.cz
BU: 670100-2208863541/6210
Uživatelský avatar
Sakul
Administrátor
Administrátor
 
Příspěvky: 1745
Věk: 43
Registrován: úte 30. bře 2010 18:13:08

Re: Problém řízení krokového motoru

Příspěvekod Aznoh » čtv 24. říj 2019 20:06:33

Já tomu moc nerozumím tak debatu sleduji pouze z zpovzdálí a chytám informace. :D
Uživatelský avatar
Aznoh
Začátečník
Začátečník
 
Příspěvky: 36
Věk: 48
Registrován: stř 16. led 2019 23:01:30
Bydliště: Častolky


Zpět na Elektronika


  • Advertisement

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 8 návštevníků