3 osý manipulátor bez PC

Odpovědět
melsoft
Příspěvky: 366
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: 283
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 444 x
tarvisio
Příspěvky: 283
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.
tarvisio
Příspěvky: 283
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.
tarvisio
Příspěvky: 283
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: 366
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: 283
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 249 x
tarvisio
Příspěvky: 283
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ů.
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

1. 10. 2014, 8:12

jeykey píše: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ů.

Děkuji za pomoc. Už vše funguje, jsem happy :D
Jdu tvořit dále to zařízení ...
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

3. 10. 2014, 10:12

Věděl by si mi poradit proč mi to na několik tlačítek pouští různé programy, které tam mám předvolené ?
Na každé tlačítko mám jiný pohyb, ale tlačítka mi někdy zablbnou a udělají program z druhého tlačítka.

Vstupy mám jako INPUT a taky nastaveny na HIGH.


Zde je schéma zapojení.
schema_tlacitka.jpg

Děkuji za pomoc.
Naposledy upravil(a) tarvisio dne 4. 10. 2014, 10:26, celkem upraveno 2 x.
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

4. 10. 2014, 10:25

tarvisio píše:Věděl by si mi poradit proč mi to na několik tlačítek pouští různé programy, které tam mám předvolené ?
Na každé tlačítko mám jiný pohyb, ale tlačítka mi někdy zablbnou a udělají program z druhého tlačítka.

Vstupy mám jako INPUT a taky nastaveny na HIGH.

Zde je schéma zapojení.



Děkuji za pomoc.
Myslím že to mám vyřešeno, byl problém v UNO.
tarvisio
Příspěvky: 283
Registrován: 25. 10. 2013, 3:11

15. 10. 2014, 2:19

Ahoj jeykey,

chci se zeptat proč je tam potřeba použít knihovnu accelstepper ?
Ono to takhle nebude spolehlivě fungovat ?

Ja to nyní už používám ten program. Vrtá mi to na tom malém soustruhu díly. Pohyby chodí zatím v pohodě.
Program trvá asi 23 sekund. Díly se mění ručně a potom se program spouští tlačítkem cca každých 10 sekund znova. Stává se mi, že mi program zahapruje a zastaví se a pak se znova rozjete, ale jakoby se celý posune v jedné ose o několik mm a pak mi to narazí, protože to přijede rychloposuvem dál něž by mělo. Musím restartovat, najet znovu výchozí polohy. Stává se mi to ca každých 200 ks když to vrtá v kuse.

Je to napojeno na arduino Mega, myslíš že kdyby tam bylo Due tak by problém mohl zmizet, protože je to výkonější ?
Odpovědět

Zpět na „roboti a manipulatory“