Asi to bude nepodstatné, ale já mám dobrou zkušenost s tímhle obvodem: http://www.stavebnice.postreh.com/select.php?link=PT016
Co se týká samotného nastavení, je velice důležité pro daný motor zvolit správnou frekvenci pulzů. V tom obvodu se to provádí změnou R5 a C1. R je nejlepší nahradit trimrem a například při 50% plnění, změnou velikosti R5 nastavit co největší „tah“. Bez toho se nikdy, k optimální regulaci, pro daný motor, nedá dopracovat.
Dotazy začátečníka 2
Re: Dotazy začátečníka 2
Tak jsem našel prográmek na postupne rožinani LEDky ...
main:
for b1 = 0 to 50
pwmout C.3,50,b1
pause 20
next b1
goto main
... a myslím se, že by to šlo doladit pro rozjezd ...
Re: Dotazy začátečníka 2
Zdravím. Opět jsem narazil na problém, se kterým si nevím rady. Pro jednu úlohu potřebuji řídit otáčení krokového motoru na obě strany se zastavením otáčení uprostřed dráhy potenciometru.
Sestavil jsem jednoduchý prográmek, který v první části čte hodnotu z potenciometru, podle toho zda je hodnota nižší než 128, nebo vyšší, „přepíná“ příkazem high/low směr točení.
V další části pak hodnotu z potenciometru beru jako délku pauzy a tou nastavuji rychlost otáčení.
Teoreticky, vše funguje jak má. V praxi, ale ta část s výpočtem: „ potenciometr=inv potenciometr“ (nebo: „potenciometr=255- potenciometr“), se chová nějak nestandardně. Motor při chodu tím směrem má jako by „chrastivý zvuk“, když jsem na to koukal osciloskopem, tak se to tváří, jako by se neustále měnila délka pulzů. Pokud program běží v té části potencio1, tak jsou pulzy hezky čisté, stejnoměrně dlouhé. V té části potencio2 neustále kmitají a různě se překrývají. Jako by ten výpočet při každém taktu procesoru trval různě dlouho. Zajímavé je, že výpočet té proměnné w12 na to vliv nemá. Netušíte někdo čím by to mohlo být?
Ukázka problému:
Sestavil jsem jednoduchý prográmek, který v první části čte hodnotu z potenciometru, podle toho zda je hodnota nižší než 128, nebo vyšší, „přepíná“ příkazem high/low směr točení.
V další části pak hodnotu z potenciometru beru jako délku pauzy a tou nastavuji rychlost otáčení.
Teoreticky, vše funguje jak má. V praxi, ale ta část s výpočtem: „ potenciometr=inv potenciometr“ (nebo: „potenciometr=255- potenciometr“), se chová nějak nestandardně. Motor při chodu tím směrem má jako by „chrastivý zvuk“, když jsem na to koukal osciloskopem, tak se to tváří, jako by se neustále měnila délka pulzů. Pokud program běží v té části potencio1, tak jsou pulzy hezky čisté, stejnoměrně dlouhé. V té části potencio2 neustále kmitají a různě se překrývají. Jako by ten výpočet při každém taktu procesoru trval různě dlouho. Zajímavé je, že výpočet té proměnné w12 na to vliv nemá. Netušíte někdo čím by to mohlo být?
Kód: Vybrat vše
;PICAXE 20X2
symbol potenciometr =b1
setfreq m64
start:
potencio:
readadc c.2,potenciometr
if potenciometr<128 then low B.3 else high B.3 end if ;hodnot potenciometru určí kterým směrem se bude točit motor
potencio1:
readadc c.2,potenciometr
if potenciometr<100 then:w12=w12+1:pause potenciometr:toggle B.4 goto potencio1 end if ;w12 je proměnná kterou potřebuji do jiné části programu
potencio2:
readadc c.2,potenciometr
if potenciometr>154 then:w12=w12-1:potenciometr=inv potenciometr:pause potenciometr:toggle B.4 goto potencio2 endif
goto start
Re: Dotazy začátečníka 2
Zkus tohle:
Driver je A4988, takže si budeš kód muset upravit podle svého.
Kód: Vybrat vše
#picaxe 14M2
#no_data
symbol stp = C.0 ; signál step
symbol dir = C.1 ; signál dir
symbol pt = C.4 ; potenciometr
symbol val = b0 ; hodnota přečtená adc
symbol spd = b1 ; rychlost
#rem
Mikrokrokování
MS1 (B.3) MS2 (B.4) MS3 (B.5) Velikost kroku
--------------------------------------------------
low low low Celokrok (Full step)
high low low 1/2 základního kroku (Half step)
low high low 1/4 základního kroku (Quarter step)
high high low 1/8 základního kroku (Eighth step)
high high high 1/16 základního (Sixteenth step)
#endrem
low B.2 ;enable ON
high B.3 ;MS1
high B.4 ;MS2
high B.5 ;MS3
start:
pause 100
readadc pt,val
if val<125 then vpred
if val>131 then vzad
pwmout pwmdiv16, stp, 0, 0
goto start
vpred:
high dir
let spd = val * 2
pwmout pwmdiv16,stp,val,spd
goto start
vzad:
low dir
let val = 255 - val
let spd = val * 2
pwmout pwmdiv16,stp,val,spd
goto start
jrt
Re: Dotazy začátečníka 2
Díky za radu. S pwmkem to asi chodit bude, bohužel to neřeší můj problém. Já potřebuji pro ten program, aby při každém kroku motoru se změnila i ta hodnota w12. Vyžívám jí pro další výpočty polohy
-
- Příspěvky: 85
- Registrován: 02 úno 2014, 02:12
Re: Dotazy začátečníka 2
Pepo když koukám na ten program, tak si myslim, že ten čurbes ti tam dělá to, že pokud ti jede smyčka "potencio2", tak pořád dokola "invertuješ potenciometr", což je myslim zbytečný... Takže třeba takhle?
Kód: Vybrat vše
;PICAXE 20X2
symbol potenciometr =b1
setfreq m64
start:
potencio:
readadc c.2,potenciometr
if potenciometr<128 then low B.3 else high B.3 endif ;hodnot potenciometru urci kterym smerem se bude tocit motor
potencio1:
readadc c.2,potenciometr
if potenciometr<100 then:w12=w12+1:pause potenciometr:toggle B.4:goto potencio1:endif
;w12 je promenna kterou potrebuji do jine casti programu
readadc c.2,potenciometr
if potenciometr>154 then:potenciometr=inv potenciometr:endif
potencio2:
readadc c.2,potenciometr
if potenciometr>154 then:w12=w12-1:pause potenciometr:toggle B.4:goto potencio2:endif
goto start
end