3 osý manipulátor bez PC

Odpovědět
melsoft
Příspěvky: 346
Registrován: 25. 1. 2012, 5:41

30. 9. 2014, 5:59

jeykey píše:to: melsoft

upozorňuju, že program sem netestoval na motorech, takže sem ani nepřenastavoval žádný hodnoty, doladění je na Tobě
valce.txt
Moc děkuju ale bohužel takhle to nechodí. Procedura stepper.run() je volaná "málo často" tudíž motor se pohybuje rychlostí 1 krok za sekundu (asi ty pauzy = delay(1000) a tudíž je to nepoužitelné. Taky se to spouští bez ohledu na stav tlačítka. Pomoc, jsem ztracen! Půjde ten accel.stepper na tohle vůbec použít?
tarvisio
Příspěvky: 247
Registrován: 25. 10. 2013, 3:11

30. 9. 2014, 7:15

Je možno změnit v tom programu prodlevu mezi jednotlivými řádky ?

Jsou například tyto příkazy na jednu osu a je dlouhá doba mezi jednotlivými řádky když se provádí program.

moveX(40, 3.7);
moveX(80, 3.1);
moveX(40, 3.7);
moveX(0, 3.7);

Je to způsobeny tím Serial.print ?
Když začíná vykonávat jeden řádek tak blikne TX.
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

30. 9. 2014, 7:46

tarvisio píše:Je možno změnit v tom programu prodlevu mezi jednotlivými řádky ?

Jsou například tyto příkazy na jednu osu a je dlouhá doba mezi jednotlivými řádky když se provádí program.

moveX(40, 3.7);
moveX(80, 3.1);
moveX(40, 3.7);
moveX(0, 3.7);

Je to způsobeny tím Serial.print ?
Když začíná vykonávat jeden řádek tak blikne TX.
print to nedělá, to mělo smysl jen když je za každým krokem, takhle je to nepodstatný, možná zkrátit náběh motoru, ten má vliv na dýlku posledního kroku a může to vypadat jako pauza,.
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

30. 9. 2014, 7:47

to: melsoft

co takhle?
valce.txt
(1.86 KiB) Staženo 285 x
Uživatelský avatar
kutil_tim
Příspěvky: 1461
Registrován: 11. 1. 2010, 1:23
Bydliště: Vsetín

30. 9. 2014, 7:56

to se bojíš tam dát pauzu třeba tak ?

int spocni = 10;


moveX(40, 3.7);
delay(spocni);
moveX(80, 3.1);
delay(spocni);
moveX(40, 3.7);
delay(spocni);
moveX(0, 3.7);
http://katalog.tuny.cz [url]http://katalog.tuny.cz[/url]
tarvisio
Příspěvky: 247
Registrován: 25. 10. 2013, 3:11

30. 9. 2014, 7:58

kutil_tim píše:to se bojíš tam dát pauzu třeba tak ?

int spocni = 10;


moveX(40, 3.7);
delay(spocni);
moveX(80, 3.1);
delay(spocni);
moveX(40, 3.7);
delay(spocni);
moveX(0, 3.7);
Je to pěkný, ale já tam pauzu nepotřebuji. Mám jí tam už tak dost protože to dlouho čeká mezi řádky.
Uživatelský avatar
kutil_tim
Příspěvky: 1461
Registrován: 11. 1. 2010, 1:23
Bydliště: Vsetín

30. 9. 2014, 8:09

zkrátit že by tu ?

// functions
void moveX(float posun, float rychlost) {
Serial.println("pohyb na ose X zahajen");
int Current = 1;
float Bx = Xcounter - posun;
Bx = Bx * (-1);
int Ot = Bx * (kroku_na_otacku_X / stoupani_sroubu_X);
int zrychleni = 400; // tady se mění zrychlení motoru při rozjezdu (počet kroků na plnou rychlost)
float maxDelay = 700; // tady se mění prudkost náběhu motoru (když dělá velký rázy, zvýší se číslo)
float Ost = 1 / (kroku_na_otacku_X / stoupani_sroubu_X);
rotate(Ot, rychlost, DIR_X_PIN, STEP_X_PIN, Current, zrychleni, maxDelay, Ost);
}
http://katalog.tuny.cz [url]http://katalog.tuny.cz[/url]
tarvisio
Příspěvky: 247
Registrován: 25. 10. 2013, 3:11

30. 9. 2014, 8:18

kutil_tim píše:zkrátit že by tu ?

// functions
void moveX(float posun, float rychlost) {
Serial.println("pohyb na ose X zahajen");
int Current = 1;
float Bx = Xcounter - posun;
Bx = Bx * (-1);
int Ot = Bx * (kroku_na_otacku_X / stoupani_sroubu_X);
int zrychleni = 400; // tady se mění zrychlení motoru při rozjezdu (počet kroků na plnou rychlost)
float maxDelay = 700; // tady se mění prudkost náběhu motoru (když dělá velký rázy, zvýší se číslo)
float Ost = 1 / (kroku_na_otacku_X / stoupani_sroubu_X);
rotate(Ot, rychlost, DIR_X_PIN, STEP_X_PIN, Current, zrychleni, maxDelay, Ost);
}
Zkoušel jsem, bohužel to nepomohlo.
Uživatelský avatar
kutil_tim
Příspěvky: 1461
Registrován: 11. 1. 2010, 1:23
Bydliště: Vsetín

30. 9. 2014, 8:27

a co toto ?
if (view == 1) Serial.println(Ost); //pokud je cosi pravda vypiš

delay(1000);// spočni sekundu a pak

toč
//rotate a specific number of steps - (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
http://katalog.tuny.cz [url]http://katalog.tuny.cz[/url]
tarvisio
Příspěvky: 247
Registrován: 25. 10. 2013, 3:11

30. 9. 2014, 8:29

kutil_tim píše:a co toto ?
if (view == 1) Serial.println(Ost); //pokud je cosi pravda
delay(1000);//tak spočni sekundu a pak

toč
//rotate a specific number of steps - (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger

To je ono ! Super, díky moc !
melsoft
Příspěvky: 346
Registrován: 25. 1. 2012, 5:41

30. 9. 2014, 9:11

Tak teď je to "much better". Jen jsem ještě překopal toto:

if (status_L_S = 1){
for (int i = 0; i<=long_repeats; i++){
stepper.setSpeed(long_speed);
stepper.setCurrentPosition(0);
stepper.moveTo(16000);
while (stepper.currentPosition()!=16000){
stepper.run();
}}
delay(long_pause);
}


na toto:

if (status_L_S = 1){
for (int i = 0; i<=long_repeats; i++){
stepper.setSpeed(long_speed);
stepper.setCurrentPosition(0);
stepper.moveTo(16000);
while (stepper.currentPosition()!=16000){
stepper.run();
}
delay(long_pause);
}

}

neb to nedělalo pauzy mezi protáčením v cyklu a trochu jsem poladil rychlosti a už to fiští. Ještě si musím ten status vyčíst z přepínačů a bude hotovo.

Díky moc jeykey, jsi génius!!!
tarvisio
Příspěvky: 247
Registrován: 25. 10. 2013, 3:11

1. 10. 2014, 6:50

Nevěděl bys co je v programu špatně že to na základě příkazů jezdí jinak ?
První řádek příkazu to udělá správně, ale pak se to zamotá a jezdí jinak. Jak kdyby přičítalo k tomu prvnímu.

Popřehazoval jsem směry motorů aby mi to jezdilo správně, jinak nic.
Vím že tam byl nastavený absolutní systém, ale ten teď neposlouchá.

Děkuji za pomoc.

Poslední funkční program:
manipulator 2.txt
(8.24 KiB) Staženo 93 x
Uživatelský avatar
kutil_tim
Příspěvky: 1461
Registrován: 11. 1. 2010, 1:23
Bydliště: Vsetín

1. 10. 2014, 7:52

Já v kódu vidím 1. celkem zásadní chybu.
Ale je to duševní výplod jeykey tak mu to nebudu kazit.
http://katalog.tuny.cz [url]http://katalog.tuny.cz[/url]
tarvisio
Příspěvky: 247
Registrován: 25. 10. 2013, 3:11

1. 10. 2014, 12:21

Toš to je škoda :)
Ja myslím že už mi tam vše chodí podle mých představ, jen si to počítá nyní jak chce a pak to i jezdí jak chce :D
jeykey
Příspěvky: 114
Registrován: 25. 8. 2014, 8:02

1. 10. 2014, 7:07

jak si přehazoval ty směry otáček tak tam zůstalo starý počítání
if (dir == LOW) Ost = Ost*(-1);

musíš přepsat na:

if (dir == HIGH) Ost = Ost*(-1);

klidně to předělej kutile Time, já tak trochu nestíhám, tak to vždycky dodělávám narychlo s hromadou jiných věcí
Tarvisio jestli to máš už v nějaký koncový podobě, tak bychom tam měli použít knihovnu accelstepper a doladit to do finálový podoby, bez těch evolučních zbytků.
Odpovědět

Zpět na „roboti a manipulatory“