řízení KM s MCU
To né, ale nešla elektrika a při šklebíku se to špatně vymýšlí .
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 .
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é .
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 .
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é .
Rotwerk 300
Sieg SX2L homemade cnc
Sieg SX2L homemade cnc
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..
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
Sieg SX2L homemade cnc
- 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:
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
- 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:
Tak to zkus takto:
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...
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
Díky moc. No já jsem to věděl, jenom jsem Tě zkoušel jestli to víš taky.... 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ří . 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 .
Ze studijních důvodů jsem chtěl vyzkoušet ty rozjezdové rampy. Samozřejmě se nedaří . 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
Sieg SX2L homemade cnc
- 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:
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:
A ty tu konečnou hodnotu (11) nahradíš proměnou kterou si nastavíš potenciometrem.
Ještě to chce trochu ošetřit co se týká max. otáček, ale to už jsme zkoušeli
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
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
- 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:
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
Více večer, teď jdu tavit hliník
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
Sieg SX2L homemade cnc