řízení KM s MCU
- jova
- Příspěvky: 2545
- Registrován: 2. 11. 2007, 1:40
- Bydliště: Chýnov to je kousek od Tábora
- Kontaktovat uživatele:
Ještě než ti prozradím co je špatně, zkus si to sám v simulaci.
Zapneš jí na té horní liště. V tomto případě jí zapni a hned vypni. Objeví se ti na obrazovce 3 okna. Nás momentálně zajímá to Simulation. V něm si zapni C.1 a C.3 to je jako by jsi zapojil tlačítka, případně C.2 to je koncák. Dále si dole vyber v nabídce ten tvůj vstup kde je potenciometr C.0 a těmi šipkami a + nastav hodnotu třeba na 250. To je číslo do kterého se bude počítat smyčka FOR-NEXT. Teď znova nahoře pusť tu simulaci. Zapnutím a vypínáním C.3 uvidíš co ten program dělá případně jak se mění proměnné.
Pokud to na tebe bude moc rychlé, stopni nahoře simulaci a postupně si to odkrokuj tím označeným tlačítkem.
Zapneš jí na té horní liště. V tomto případě jí zapni a hned vypni. Objeví se ti na obrazovce 3 okna. Nás momentálně zajímá to Simulation. V něm si zapni C.1 a C.3 to je jako by jsi zapojil tlačítka, případně C.2 to je koncák. Dále si dole vyber v nabídce ten tvůj vstup kde je potenciometr C.0 a těmi šipkami a + nastav hodnotu třeba na 250. To je číslo do kterého se bude počítat smyčka FOR-NEXT. Teď znova nahoře pusť tu simulaci. Zapnutím a vypínáním C.3 uvidíš co ten program dělá případně jak se mění proměnné.
Pokud to na tebe bude moc rychlé, stopni nahoře simulaci a postupně si to odkrokuj tím označeným tlačítkem.
Zdar.
Potřeboval bych poradit s picaxe. Jsem sice z oboru, ale procesory mě minuly, to jsem zrovna chyběl
. Kecám, když jsem to studoval, tak vrcholem IO byly sekvenční IO, (7493 a tahle řada). Pak jsem v oboru chvíli dělal, ale s procesorama jsem se nesetkal. Před pár lety jsem se k tomu vrátil, dokážu si bez problémů naprogramovat hradlový pole od Xilinxu, ale procesory neumím. Díky tomuhle vláknu jsem se vrhnul na picaxe, neb jak jsem pochopil, jen blbec by to nezvládnul. No, zatím jsem blbec; imaginární dění v procesoru si nedokážu převést do reálného světa. Jak tam neběhaj pulzy, na který se můžu podívat, jsem ztracenej.
No a teď ten dotaz. Chci z 14M řídit KM a budit přes L293. Zatím tam mám generátor pulzů a za ním dvě déčka k dosažení správného buzení. No a to samé bych chtěl s picaxe. Od jovy jsem odkoukal ty jednoduché ukázky, a dokonce jsem je pochopil. Ale nemůžu udělat to, aby se mi na dvou výstupech střídaly pulzy, když je jeden nahoře, druhej bude dole. Když si dám, aby jeden výstup běžel ve smyčce a druhej ho sledoval a byl v opačném stavu, tak mě to fakuje na syntax error. Dělám to jako přečíst výstup b, ale tuším, že v tom okamžiku si program myslí, že je to vstup a bouří se. Co s tím, odborníci?
Potřeboval bych poradit s picaxe. Jsem sice z oboru, ale procesory mě minuly, to jsem zrovna chyběl


No a teď ten dotaz. Chci z 14M řídit KM a budit přes L293. Zatím tam mám generátor pulzů a za ním dvě déčka k dosažení správného buzení. No a to samé bych chtěl s picaxe. Od jovy jsem odkoukal ty jednoduché ukázky, a dokonce jsem je pochopil. Ale nemůžu udělat to, aby se mi na dvou výstupech střídaly pulzy, když je jeden nahoře, druhej bude dole. Když si dám, aby jeden výstup běžel ve smyčce a druhej ho sledoval a byl v opačném stavu, tak mě to fakuje na syntax error. Dělám to jako přečíst výstup b, ale tuším, že v tom okamžiku si program myslí, že je to vstup a bouří se. Co s tím, odborníci?
- jova
- Příspěvky: 2545
- Registrován: 2. 11. 2007, 1:40
- Bydliště: Chýnov to je kousek od Tábora
- Kontaktovat uživatele:
Osobně tento způsob řízení krokových motorů nepoužívám , takže bych asi nejdříve zkusil klasiku, na začátku programu jeden výstup nadefinovat do vysoké a druhý do nízké úrovně. Pak v té smyčce použít příkaz TOGGLE na jeden a druhý výstup. Ten by měl měnit jejich stavy. Další bezpečnější variantou by byl příkaz PINS. Ten nadefinuje všechny výstupy do předem učeného stavu současně. Muselo by se ale někam “střídavě odskakovat“ kde by se měnilo nastavení těch hodnot. Výhodou by mělo být to, že nevznikají kolizní stavy oproti tomu postupnému přepínání pomocí příkaz toggle.
Ukázka příkazu pins:
http://www.ok1cjb.cz/index.php?option=c ... i&Itemid=8
Jinak vítej do klubu bojovníků s Alzheimerem. Pevně doufám, že tohle je ten správný způsob jak ho porazit
Ukázka příkazu pins:
http://www.ok1cjb.cz/index.php?option=c ... i&Itemid=8
Jinak vítej do klubu bojovníků s Alzheimerem. Pevně doufám, že tohle je ten správný způsob jak ho porazit




Přes pins jsem nastavil na začátku všude nuly, anžto jsem nenašel, jestli to maj tyhle obvody uvnitř zabudovaný, nebo ne. Na pole používám nulování po zapnutí standardně, tam to nabíhá do nedefinovanýho stavu.
Myslíš číst nastavení potenciometru pro oba výstupy nezávisle? Jeden z těch výstupů nastavit na jedničku, druhej nechat v nule a poslat jim toggle? Pokud to nechám běžet jako jednu velkou smyčku, tak to asi půjde, to se bude chovat jako sekvenční obvod (hele, jsem doma

- jova
- Příspěvky: 2545
- Registrován: 2. 11. 2007, 1:40
- Bydliště: Chýnov to je kousek od Tábora
- Kontaktovat uživatele:
No osobně si nejsem jistý zda obvod L293 je zrovna na řízení krokových motorů vhodný. Mám pocit že s TB6560 za stovku od Číňana se to dá řešit mnohem jednodušeji.
Ten program jsem myslel nějak takto, teda jestli jsem správně pochopil řízení motoru pomocí L293
Ten program jsem myslel nějak takto, teda jestli jsem správně pochopil řízení motoru pomocí L293

Kód: Vybrat vše
setfreq m32
high b.1
low b.2
start:
readadc10 c.0,w0 ;načtení hodnot z potenciometru a uložené do proměnné w0 0-1023
pause w0
toggle b.1 ; změna stavu na výstupu b.1
toggle b.2 ; změna stavu na výstupu b.2
goto start
Jo, to je přesně to ono, co jsem myslel taky.
L293 je na to určenej: The Device is a monolithic integrated high voltage,
high current four channel driver designed to
accept standard DTL or TTL logic levels and drive
inductive loads (such as relays solenoides, DC
and stepping motors) and switching power transistors.
Jestli se daj sehnat lepší, o tom není řeč, prostě tohle mám a v rámci učení se picaxe to chci udělat, i kdybych to pak měl zahodit a postavit to jinak. Pokud bych to dal na frézku, tak tam stejně ve finále použiju nějakej originál driver, kterýmu stačej pulzy do jednoho vstupu. Zatím jsem tam dal stěračovej motor řízenej PWM s NE555. Na podélnej posuv, kterej mám skoro půl metru, je to dostačující.

L293 je na to určenej: The Device is a monolithic integrated high voltage,
high current four channel driver designed to
accept standard DTL or TTL logic levels and drive
inductive loads (such as relays solenoides, DC
and stepping motors) and switching power transistors.
Jestli se daj sehnat lepší, o tom není řeč, prostě tohle mám a v rámci učení se picaxe to chci udělat, i kdybych to pak měl zahodit a postavit to jinak. Pokud bych to dal na frézku, tak tam stejně ve finále použiju nějakej originál driver, kterýmu stačej pulzy do jednoho vstupu. Zatím jsem tam dal stěračovej motor řízenej PWM s NE555. Na podélnej posuv, kterej mám skoro půl metru, je to dostačující.
@ jova:
po nějakém čase jsem se k tomu zase vrátil. Vůbec mně to nebaví, když tomu nerozumím. Simulace je fajn, vidím, jak to jede furt dokola. Ale to je vše. Žádný nápad na nápravu
. Mohl by jsi mně ještě trochu více konkrétněji napovědět? Zda přidat ještě někde nějaký příkaz, nebo kontrolu pinu-tlačítka,... S hotovým řešením ještě chvilku počkej. Chtěl bych na to přijít (po nápovědě ) sám. I když nevím nevím.
po nějakém čase jsem se k tomu zase vrátil. Vůbec mně to nebaví, když tomu nerozumím. Simulace je fajn, vidím, jak to jede furt dokola. Ale to je vše. Žádný nápad na nápravu

Rotwerk 300
Sieg SX2L homemade cnc
Sieg SX2L homemade cnc
- jova
- Příspěvky: 2545
- Registrován: 2. 11. 2007, 1:40
- Bydliště: Chýnov to je kousek od Tábora
- Kontaktovat uživatele:
Omlouvám se, ale trochu mi z tvého stesku uniká co konkrétně tě trápí a s čím máš problém.
Mě osobně se třeba osvědčilo, si složitější děje rozdělit na jednotlivé části a ty vyjmout jako samostatný program.
Otevřít si nové okno, vložit tam tu část programu a odladit tam. Pak se jen opět vrátí zpět.
Myslím tím třeba nastavování otáček motorů, čtení hodnot z potenciometru a pod.
Hodně tam pomáhá vyvést si ty proměnné na LCD a sledovat jejich aktuální hodnoty.
Mě osobně se třeba osvědčilo, si složitější děje rozdělit na jednotlivé části a ty vyjmout jako samostatný program.
Otevřít si nové okno, vložit tam tu část programu a odladit tam. Pak se jen opět vrátí zpět.
Myslím tím třeba nastavování otáček motorů, čtení hodnot z potenciometru a pod.
Hodně tam pomáhá vyvést si ty proměnné na LCD a sledovat jejich aktuální hodnoty.
Testování po jednotlivých částech jsem zkoušel. Problém mám, jak vyskočit z té smyčky pomalého náběhu ven, aby to pokračovalo nastavenou hodnotou z potenciometru dál. Nemůžu s tím hnout.
Rotwerk 300
Sieg SX2L homemade cnc
Sieg SX2L homemade cnc
- jova
- Příspěvky: 2545
- Registrován: 2. 11. 2007, 1:40
- Bydliště: Chýnov to je kousek od Tábora
- Kontaktovat uživatele:
Dal jsem ten tvůj program do simulace. Prozatím jsem zrušil tu pauzu aby to běhalo rychleji, přepnul vstupy C1-C3 do log.1, dole v okně simulace nastavil potenciometr na C.0 na hodnotu 250 aby ta smyčka byla kratší. Vpravo dole jsem ještě otevřel okno s výpisem proměnných hodnot, aby bylo vidět co se v nich děje. Spustil simulaci a zapnutím a vypnutím C.3 se přesunul na tu problematickou část "dolu".
Dále se děje po řádcích toto:
10. výstup B.5 se nastaví pro chod motoru směrem dolů
11. načte se hodnota z potenciometru a zapíše do b3.
12. do b0 se zapíše hodnota 255 a začne odpočet po 1 na hodnotu b3 (250)
13. spočítá se hodnota pro PWM
14. na výstup B.2 se odešle hodnota PWM
15. chvíli se počká
16. zkontroluje se podmínka zda b0>b3. Pokud ano, program se vrací na ř.12, pokud b0=b3, pokračuj dál.
17. kontroluje se zda už motor dojel na koncák
18. kontroluje se zda nebylo stisknuto tlačítko pro zastavení (pauzu)
Až potud je to vše tak jak jsme chtěli. Ale pak přijde řádek 19. a na něm tomu programu říkáš, že si to má vše znovu zopakovat! Ale to ty přeci nechceš. Ty potřebuješ, aby program pokračoval dál s konečnou hodnotou PWM po té smyčce for-next a zároveň kontroloval to tlačítko s koncákem. Takže tím řádkem 19. ho nesmíš poslat na začátek, ale do místa za tu smyčku (tam je už to PWM nastaveno), před ten koncák a tlačítko které musí kontrolovat!
Stačí tahle nápověda?
Dále se děje po řádcích toto:
10. výstup B.5 se nastaví pro chod motoru směrem dolů
11. načte se hodnota z potenciometru a zapíše do b3.
12. do b0 se zapíše hodnota 255 a začne odpočet po 1 na hodnotu b3 (250)
13. spočítá se hodnota pro PWM
14. na výstup B.2 se odešle hodnota PWM
15. chvíli se počká
16. zkontroluje se podmínka zda b0>b3. Pokud ano, program se vrací na ř.12, pokud b0=b3, pokračuj dál.
17. kontroluje se zda už motor dojel na koncák
18. kontroluje se zda nebylo stisknuto tlačítko pro zastavení (pauzu)
Až potud je to vše tak jak jsme chtěli. Ale pak přijde řádek 19. a na něm tomu programu říkáš, že si to má vše znovu zopakovat! Ale to ty přeci nechceš. Ty potřebuješ, aby program pokračoval dál s konečnou hodnotou PWM po té smyčce for-next a zároveň kontroloval to tlačítko s koncákem. Takže tím řádkem 19. ho nesmíš poslat na začátek, ale do místa za tu smyčku (tam je už to PWM nastaveno), před ten koncák a tlačítko které musí kontrolovat!
Stačí tahle nápověda?
- jova
- Příspěvky: 2545
- Registrován: 2. 11. 2007, 1:40
- Bydliště: Chýnov to je kousek od Tábora
- Kontaktovat uživatele:
Srandičky, srandičky
Ale kdo pomůže mě? Hraju si tu s naprogramováním hodin poháněné krokovým motorem a už se mezi těmi, více jak 600ti sty řádky, začínám pomalu ztrácet
Nikdy bych neřekl, že „čas“ je tak složitá záležitost

Ale kdo pomůže mě? Hraju si tu s naprogramováním hodin poháněné krokovým motorem a už se mezi těmi, více jak 600ti sty řádky, začínám pomalu ztrácet

Nikdy bych neřekl, že „čas“ je tak složitá záležitost
