řízení KM s MCU

Odpovědět
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

6. 2. 2016, 5:29

To né, ale nešla elektrika a při šklebíku se to špatně vymýšlí :D .

Zatím jsem přišel akorát na to, jak přerušit posuv dolu, ale neumím to rozjet opačným směrem :oops: .


Nemá někdo starší verzi toho editoru pro picaxe, který umí ukládat ty komentáře v češtině? Já jsem stáhnul nejnovější verzi a ta vždy diakritiku převede do znakůa je to nečitelné :evil: .
Rotwerk 300
Sieg SX2L homemade cnc
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

6. 2. 2016, 6:53

Myslíš tento?
http://www.picaxe.com/Software/PICAXE/P ... ng-Editor/
Tak se pochlub tím programem.
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

6. 2. 2016, 7:13

Díky za odkaz. Vyzkouším ten editor, ale až doma. V práci na to nemám oprávnění.
No není se čím chlubit..

Kód: Vybrat vše

etfreq m32

start:
pwmout pwmdiv64, b.2,0,0   ;vypne motor
if pinc.3=0 then goto dolu   ;tla??tko T1
goto start

dolu:               ;smy?ka pro chod dol?
high b.5            ;nastav? sm?r ot??en? motoru
readadc c.0,b0         ;na?te rychlost ot??en? z potenciometru
let w2=b0*2             
pwmout pwmdiv64, b.2,b0,w2
if pinc.1=0 then goto nahoru  ;p?i najet? na spodn? konc?k K1 odskok na dal?? smy?ku
if pinc.3=0 then goto pauza
goto dolu

nahoru:            ;smy?ka pro chod nahoru
low b.5            ;nastav? sm?r ot??en? motoru
readadc c.0,b0         ;na?te rychlost ot??en? z potenciometru
let w2=b0*2             
pwmout pwmdiv64, b.2,b0,w2
if pinc.2=0 then goto start   ;p?i najet? na horn? konc?k K2 odskok na za??tek programu
goto nahoru

pauza:
pwmout pwmdiv64, b.2,0,0   
if pinc.3=0 then pauza    
pauza1:
if pinc.3=1 then pauza1
pauza2:
if pinc.3=0 then pauza2
goto dolu
Rotwerk 300
Sieg SX2L homemade cnc
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

6. 2. 2016, 7:58

Našel jsem tam dvě chyby a označil jsem je v popisu.

Kód: Vybrat vše

setfreq m32

start:
pwmout pwmdiv64, b.2,0,0   
if pinc.3=0 then goto dolu  
goto start

dolu:               
high b.5           
readadc c.0,b0         
let w2=b0*2             
pwmout pwmdiv64, b.2,b0,w2
if pinc.1=0 then goto nahoru  
if pinc.3=0 then goto pauza	;Chyba1. Pokud ve smycce start privedes 0 na pin.3 
					;program tady pokracuje dal a skoci rovnou na pauzu!
goto dolu

nahoru:            
low b.5           
readadc c.0,b0       
let w2=b0*2             
pwmout pwmdiv64, b.2,b0,w2
if pinc.2=0 then goto start   
goto nahoru

pauza:
pwmout pwmdiv64, b.2,0,0   	;Chyba2. Zaklad je dobry ale proc pokracujes do smycky dolu?
if pinc.3=0 then pauza   
pauza1:
if pinc.3=1 then pauza1
pauza2:
if pinc.3=0 then pauza2
goto dolu
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

6. 2. 2016, 8:12

Ad. chyba 2. Když jsem to poslal do smyčky "nahoru", tak mně to nefungovalo.
Rotwerk 300
Sieg SX2L homemade cnc
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

6. 2. 2016, 8:25

No to proto, protože díky té 1. chybě to vlastně nikdy nejelo dolů :D
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

6. 2. 2016, 8:59

No jo, ale co s tím :cry: ?
Rotwerk 300
Sieg SX2L homemade cnc
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

6. 2. 2016, 9:07

No to je jednoduché. Musíš to nejdříve v té smyčce "dolů" hned na začátku ošetřit tak, aby při tom stisknutí "pinc.3 = 0" to nepokačovalo dál. Už jsi to vyřešil ve smyčce "pauza". :D
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

7. 2. 2016, 4:53

Nechám se poddat. Nějaká další nápověda by nebyla :D ?
Rotwerk 300
Sieg SX2L homemade cnc
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

7. 2. 2016, 8:43

Tak to zkus takto:

Kód: Vybrat vše

setfreq m32

start:
pwmout pwmdiv64, b.2,0,0     ;vypne motor
if pinc.3=0 then goto dolu    ;při stisknutí tlačítka T1 se provede odskok na smyčku chod dolů
goto start

dolu:                            ;smyčka pro chod dolů
if pinc.3=0 then dolu     ;pokud je stále stisknuto tlačítko T1 program se zaciklí a "čeká" na jeho uvolnění
high b.5                        ;nastaví směr otáčení motoru pro pohyb dolů
readadc c.0,b0              ;načte rychlost otáčení z potenciometru
let w2=b0*4             
pwmout pwmdiv64, b.2,b0,w2
if pinc.1=0 then goto nahoru      ;při najetí na spodní koncák K1 odskok na smyčku nahoru
if pinc.3=0 then goto pauza        ;při stisknutí tlačítka T1 se provede odskok na smyčku pauza
goto dolu

nahoru:                     ;smyčka pro chod motoru nahoru
low b.5                     ;nastaví směr otáčení motoru pro pohyb nahoru
readadc c.0,b0         ;načte rychlost otáčení z potenciometru
let w2=b0*4             
pwmout pwmdiv64, b.2,b0,w2
if pinc.2=0 then goto start         ;při najetí na horní koncák K2 následuje odskok na začátek programu a tím jeho ukončení
goto nahoru

pauza:           
pwmout pwmdiv64, b.2,0,0   	 ; zastavení posuvu motoru dolů
if pinc.3=0 then pauza                ;pokud je stále stisknuto tlačítko T1 program se zaciklí a "čeká" na jeho uvolnění
pauza1:
if pinc.3=1 then pauza1
pauza2:
if pinc.3=0 then nahoru         ;při opětovném stisknutí tlačítka T1 se provede odskok na smyčku pro posuv nahoru
goto pauza1
A tímto je vlastně tvoje úloha hotová. Po odlaborování rychlostí posuvu motoru, by se například pro chod motoru "nahoru" dala nastavit hodnota do programu "natvrdo", pro chod motoru pro směr dolů nechat na potenciometr. Další variantou by třeba mohla být páčka připevněná na hřídel potenciometru s pružinou, co by ho vracela do 0lové polohy. V programu by se to upravilo tak, že by stačila část dráhy toho potenciometru a velikost výchylky směrem dolů by určovala rychlost posuvu, při pohybu páčky směrem nahoru by to přestalo vrtat a při ještě větším pohybu, případně při návratu na 0, by se to začalo pohybovat směrem nahoru...
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

10. 2. 2016, 10:16

Díky moc. No já jsem to věděl, jenom jsem Tě zkoušel jestli to víš taky.... :D :lol: Včera jsem to narychlo testnul, je to ok.
Ze studijních důvodů jsem chtěl vyzkoušet ty rozjezdové rampy. Samozřejmě se nedaří :evil: . Nevím, jak docílit toho, aby to zrychlovalo jen do hodnoty nastavené potenciometrem. Použít For-Next tady asi nejde,ne ? Fakt asi to programování pro mne moc nebude :( :( .
Rotwerk 300
Sieg SX2L homemade cnc
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

10. 2. 2016, 12:23

U takovéhle úlohy je třeba si nejdříve ujasnit jednotlivé kroku které musí program vykonat a pak k těm krokům pouze doplnit těch pár „programovacích“ (většinou anglických) slovíček.
Co se týká těch ramp. Potřebuješ aby se postupně v tom pwm zmenšovala jedna proměnná. Toho docílíš tou smyčkou FOR-NEXT a v ní tu proměnnou každým průchodem o něco zmenšíš. Dále potřebuješ, aby se ta konečná velikost „zastavila“ na hodnotě danou potenciometrem. Takže ten rozsah FOR-NEXT necháš proběhnout pouze do hodnoty toho potenciometru.
Například původně jsi tam měl toto:

Kód: Vybrat vše

for b0= 255 to 11 step -1      ;zrychlení  11 je max rychlost podle použitého motoru
let w2=b0*2             
pwmout pwmdiv64, b.2,b0,w2
pause 50               ;nastavení rychlosti zrychlování
next
A ty tu konečnou hodnotu (11) nahradíš proměnou kterou si nastavíš potenciometrem.

Kód: Vybrat vše

readadc c.0,b3		;načtení hodnoty z potenciometru
for b0= 255 to b3 step -1
let w2=b0*2             
pwmout pwmdiv64, b.2,b0,w2
pause 50               ;nastavení rychlosti zrychlování
next
Ještě to chce trochu ošetřit co se týká max. otáček, ale to už jsme zkoušeli :)
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

10. 2. 2016, 1:56

Toto jsem zkoušel už včera. Jenže to jede stále ve smyčce po to next. Takže dokola zrychluje a skokem zpomalí.
Rotwerk 300
Sieg SX2L homemade cnc
Uživatelský avatar
jova
Příspěvky: 2510
Registrován: 2. 11. 2007, 1:40
Bydliště: Chýnov to je kousek od Tábora
Kontaktovat uživatele:

10. 2. 2016, 3:57

To je nějaké divné. Když se ta smyčka FOR-NEXT dopočítá k té koncové hodnotě, program pokračuje dále za tím NEXTem. Co tam pak máš za příkazy? Protože logicky tam musíš mít zase nějakou smyčku které bude hlídat např. koncák, tlačítko... dokud jimi nezvolíš další funkci programu. Musíš si uvědomit, že ten program se sám nezastaví, neustále běží a pokračuje po těch řádcích směrem dolů. Pokud chceš aby v jistém bodě čekal třeba na tlačítka, musíš ho v tom místě zacyklit a v té smyčce všechny ty tlačítka testovat. To PWM běží na pozadí a je ve stavu v jakém jsi ho naposledy nastavil.
Více večer, teď jdu tavit hliník :roll:
expertdb
Příspěvky: 611
Registrován: 20. 5. 2011, 7:25
Bydliště: Valašsko

10. 2. 2016, 4:00

Mám tam je to ,co jsi mně poslal:

Kód: Vybrat vše

setfreq m32

start:
pwmout pwmdiv64, b.2,0,0     ;vypne motor
if pinc.3=0 then goto dolu    ;při stisknutí tlačítka T1 se provede odskok na smyčku chod dolů
goto start

dolu:                            ;smyčka pro chod dolů
if pinc.3=0 then dolu     ;pokud je stále stisknuto tlačítko T1 program se zaciklí a "čeká" na jeho uvolnění
high b.5                        ;nastaví směr otáčení motoru pro pohyb dolů
readadc c.0,b3              ;načte rychlost otáčení z potenciometru
for b0= 255 to b3 step -1
let w2=b0*4 
pwmout pwmdiv64, b.2,b0,w2
pause 300
next
if pinc.1=0 then goto nahoru      ;při najetí na spodní koncák K1 odskok na smyčku nahoru
if pinc.3=0 then goto pauza        ;při stisknutí tlačítka T1 se provede odskok na smyčku pauza
goto dolu

nahoru:                     ;smyčka pro chod motoru nahoru
low b.5                     ;nastaví směr otáčení motoru pro pohyb nahoru
readadc c.0,b0         ;načte rychlost otáčení z potenciometru
let w2=b0*4             
pwmout pwmdiv64, b.2,b0,w2
if pinc.2=0 then goto start         ;při najetí na horní koncák K2 následuje odskok na začátek programu a tím jeho ukončení
goto nahoru

pauza:           
pwmout pwmdiv64, b.2,0,0       ; zastavení posuvu motoru dolů
if pinc.3=0 then pauza                ;pokud je stále stisknuto tlačítko T1 program se zaciklí a "čeká" na jeho uvolnění
pauza1:
if pinc.3=1 then pauza1
pauza2:
if pinc.3=0 then nahoru         ;při opětovném stisknutí tlačítka T1 se provede odskok na smyčku pro posuv nahoru
goto pauza1
Rotwerk 300
Sieg SX2L homemade cnc
Odpovědět

Zpět na „Ostatní elektronika“