Dotazy začátečníka 2

Odpovědět
jova
Příspěvky: 348
Registrován: 16 pro 2013, 11:40

Re: Dotazy začátečníka 2

Příspěvek od jova »

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.
Pivrnec78
Příspěvky: 72
Registrován: 30 dub 2017, 15:25

Re: Dotazy začátečníka 2

Příspěvek od Pivrnec78 »

Pivrnec78 píše: 02 říj 2020, 16:05
fulda píše: 02 říj 2020, 12:05 ... se tvorba PWM přesunula co nejblíže k motoru - tedy přímo do modelu ...
Ale já nepotřebuju to mít přímo u motoru každého modelu, mi stačí jeden univerzální způsob ... který bude nějak fungovat ...
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 ...
jova
Příspěvky: 348
Registrován: 16 pro 2013, 11:40

Re: Dotazy začátečníka 2

Příspěvek od jova »

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?

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
Ukázka problému:
Uživatelský avatar
jrt
Příspěvky: 1890
Registrován: 17 úno 2013, 17:13

Re: Dotazy začátečníka 2

Příspěvek od jrt »

Zkus tohle:

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
Driver je A4988, takže si budeš kód muset upravit podle svého.
jrt
jederobot.cz, hobbyrobot.cz, profirobot.cz
edurobot.cz, robodoupe.cz
jova
Příspěvky: 348
Registrován: 16 pro 2013, 11:40

Re: Dotazy začátečníka 2

Příspěvek od jova »

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 :cry:
Pepa z depa
Příspěvky: 85
Registrován: 02 úno 2014, 02:12

Re: Dotazy začátečníka 2

Příspěvek od Pepa z depa »

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
Odpovědět