Accel Stepper - krokac - rada

Uživatelský avatar
jrt
Příspěvky: 1741
Registrován: 17 úno 2013, 17:13

Re: Accel Stepper - krokac - rada

Příspěvek od jrt » 02 lis 2020, 20:14

DavidO píše:
02 lis 2020, 19:26
To je diuný, Arduino toho zvládne... a vloni jsi měl něco velmi podobnýho se dvěma krokáčema a poťákem a šlo to, ne?
Ale bez akcelerace a i tak to čtení a přepočet poťáků chvilku trvá.
Jak se chová to nestíhání? Škube to, nebo co?
Škube chrastí a hlavně jak se přejde do toho brzdícího režimu, tak nejdřív zrychlí a pak se teprv zastaví (tedy s tvým kódem nezastaví, ale s mým ano). Ještě si plánuju dát jedno kolečko před spaním. Třeba se mi to povede.
jrt
jederobot.cz, hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

DavidO
Příspěvky: 956
Registrován: 01 kvě 2013, 21:27

Re: Accel Stepper - krokac - rada

Příspěvek od DavidO » 02 lis 2020, 23:06

Divný, divný. Nezdržujou ti to nějaký výpisy přes seriák? Nebo nemáš nějak divně nastavený mikrokrokování? Teď jsem si jen tak nechal přepočítat celej rozsah 0-1023 a bylo to pár desítek ms celkem, tak to ten přepočet jedné hodnoty přece nemůže hrát nějak podstatnou roli.

Ještě mě teď napadlo, že kdyby nebylo nutné, aby to bylo úplně přesně, tak by se to dalo trochu zjednodušit, protože když se dělí 1023 a pak násobí 4000, tak to je skoro jako vynásobit 4, že to nemusí být ve floatech, ale stačila by celá čísla (chyba max 1 v rozsahu 4000), a pak taky že zastavit je skoro stejný, jako jet rychlostí 0:

Kód: Vybrat vše

void loop()
{
  unsigned int pozadovanaRychlost;  // požadovaná rychlost 0..1023
  bool spinac = digitalRead(spinac_PIN);  // stav spínače (rovnou ho přečteme)
  digitalWrite(led_PIN,spinac==SPINAC_JEDEME);  // LED bude svítit, když motor má jet a nesvítit, když nemá jet
  if(spinac == SPINAC_JEDEME) {  // spínač je v poloze "jedeme" - motor má jet
    pozadovanaRychlost = analogRead(SPEED_PIN);  // přečíst polohu potenciometru (0 až 1023)
  } else {
    pozadovanaRychlost = 0;  // chceme zastavit, takže 0
  }
  stepper1.setSpeed(pozadovanaRychlost * 4);  // nastavit rychlost motoru
  stepper1.runSpeed();  // nechat motor točit (s nulou stojí)
}
Čili celkově tam je za běžného provozu jedno digitální + jedno analogové čtení, zápis na pin, dva shifty doleva a zbytek je už na AccelStepperu SetSpeed + runSpeed, tak jestli ani tohle AccelStepper na Arduinu nezvládne, tak je u mě mrtvej Homolka.

A ještě, jak to je s nastavením zrychlení? Default když nic nezadáš je, jestli mě nešálí zrak, 1, a tady i v příkladech od knihovny se nastavuje 100. To je docela rozdíl, nemůže tohle být problém? Třeba že by se jednou braly procenta a jednou poměr (1=100%)

DavidO
Příspěvky: 956
Registrován: 01 kvě 2013, 21:27

Re: Accel Stepper - krokac - rada

Příspěvek od DavidO » 02 lis 2020, 23:13

Hm, no tak ještě něco:
setSpeed()
Parameters
[in] speed The desired constant speed in steps per second. Positive is clockwise. Speeds of more than 1000 steps per second are unreliable.
a
analog_value = analogRead(SPEED_PIN); // read value of potenitometr (0 až 1023)…
current_speed = (((analog_value/1023.0) * (MAX_SPEED - MIN_SPEED)) + MIN_SPEED); // convert to stepper speed
stepper1.setSpeed(current_speed);
tak to se s maximálkou 4000 kroků/s asi ani nemůžem moc divit. Když bude poťák vytočenej víc jak na čtvrtku, tak to začne být nespolehlivé: 256/1023.0*(4000-0)+0 je kolik?

Uživatelský avatar
jrt
Příspěvky: 1741
Registrován: 17 úno 2013, 17:13

Re: Accel Stepper - krokac - rada

Příspěvek od jrt » 09 lis 2020, 20:13

K čemu to je jsme se zatím nedozvěděli, ale když jsem se na program kouknul hlouběji, připomíná mi to skener na digitalizaci 8mm filmů, ke kterému jsem dělal program někdy na jaře. Není to náhodou ono?
jrt
jederobot.cz, hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz

DavidO
Příspěvky: 956
Registrován: 01 kvě 2013, 21:27

Re: Accel Stepper - krokac - rada

Příspěvek od DavidO » 19 lis 2020, 21:05

Jak to dopadlo? Nebo byl vývoj dočasně přerušen a projekt outsourcován do Asie? ("necháme to na Indy")

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti