Arduino a já

arduino, teensy, atmega, pic a jine (software, hardware)
Odpovědět
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

1. 5. 2018, 10:19

Než přijdou všechny věci, tak jsem se rozhodnul trochu vylepšil můj fiber laser. Jde o to, že požadavek na zaostření je poměrně extrémní cca +- 1mm. A představte si, že máte nastavenou rotační osu a teď do ní dáte obrobek a potřebujete to zaostřit. Měřící ryska je ale z čela laseru a tak vše rozšroubujete změříte vzdálenost a opět přiděláte a ladíte polohu. Samozřejmě klička je až nahoře na sloupu. A tak jsem si vytisknul krásné kola s šípovým ozubením, vzal NEMA 17 motorek a že to trochu vyladím. Projekt jednoduchý, zadání nejasné a vcelku jsem to podcenil. Stavět jednoduchou věc na univerzálním plošňáku problém není, ale nesmíte si ho hned přiletovat k displeji. Ještě, že těch součástek je tam jen pár. Za padesát korun krásná analogová pěti tlačítkovka (nakonec jsem ji předělal na digitál) ardu mini 168, dva tranzistory a pár odporů. Vše drží na plexi destičce říznuté laserem. Napájím to 18V zdrojem ze staré Toshiby. Druhou chybou byla neexistence vývojového diagramu a tím dost chaotický zdroják, ve kterém jsem se nemohl pořádně orientovat. Do toho mi přišla práce a i jen částečně funkční nastavování mi značně ulehčilo práci. Přes výkend jsem dal i ten vývoják, taky už jsem věděl co od toho chci a dnes během odpoledne jsem udělal plně funkční betu 2. Od finálního SW nemá ošetřené některé limitní hodmoty. Funguje to asi takto: po zapnutí je první výběr pokračovat v předchozí práci nebo jít na HOME souřadnici. Pokud jedu na home, po najetí nastavím buď sílu materiálu, nebo u rotační osy průměr materiálu a odjedu Zkem na pozici. Od této chvíle mohu šipkama UP a DOWN měnit poloho Zka o 0,5mm na jedno zmáčknutí. (doladění optimální výšky) Pokud jsem jel z HOME souřadnic zobrazuje displej absolutní polohu osy Z, jinak relativní k původní výšce při zapnutí.
komponenty.jpg
driver.jpg
soukoli.jpg
Ty kolečka se dávají docela blbě dohromady.
home_end.jpg
hodinky_home.jpg
Dojezd na HOME polohu je +- 0,01mm, použitý zelený mikrosw z CNC shopu
pet_mm.jpg
hodinky_5mm.jpg
Tady je vidět pro jednoduchost pohyb o 5mm. Při přejezdu o 150mm je chyba cca 0,06mm a když jsem jezdil po půl milimetrech cca 100x byla výsledná součtová chyba 0,23mm.
Tady se už projevuje zaokrouhlení konstatnty na tři desetinná čísla, ale na funkčnost zařízení to vliv nemá.
pohled_z_boku.jpg
Trochu rušivý efekt modré LEDky na pinu13, který se podílí na komunikaci s displejem. Budu muset ten drát dát někam jinam.

A teď dodělat ten otočný stůl, protože potřebuju opravit elektrický zámek BERA a tam se úhluje. Frézují se tam takové vačky z 1,5 plechu a výrobce tohle neopravuje a nový stojí cca 12000Kč. A už mi leží ve skříni na opravu čtyři kousky.
atlan
Příspěvky: 1369
Registrován: 7. 2. 2011, 9:12

2. 5. 2018, 3:21

Ziadna suctova chyba na krokovom motore neexistuje.
Mas tam nieco zle. Naskor arduino. Ale skor typujem program.

Pocitaj stale s celymi cislami. Iba vyslednu hodnotu prepocitaj z celych cisel na desatiny pre zobrazenie na displej.
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

2. 5. 2018, 7:50

Dělící poměr těch dvou kol má číslice ještě na osmém místě za desetinnou čárkou a já počítám pouze s prvníma třema číslama. Tedy jednoznačně vzniká chyba při každém výpočtu počtu kroků a druhá při zaokrouhlení na celý krok. Čím víc pohybů tím se ta chyba zvětšuje, tak jí říkám součtová. Protože při běžné práci nastavuji výšku max. třikrát. Nemusím se tím vůbec zatěžovat, neb je to hluboko pod požadovanou tolerancí. Na CNC řízení bych samozřejmě použil jiný algoritmus výpočtu, ale pro tento účel je zjednodušený výpočet naprosto v poho.
atlan
Příspěvky: 1369
Registrován: 7. 2. 2011, 9:12

2. 5. 2018, 7:56

Aha, ked ti to nevadi. Preco si nevytlacil kolesa s celym prevodom (sice to ma svoje chyby)
Mex
Příspěvky: 4293
Registrován: 6. 2. 2014, 10:29

2. 5. 2018, 8:08

No ale i při nešikovném převodovém poměru není důvod, aby se chyba kumulovala.
Počítáš pořád v nějakých svých jednotkách, přepočet na počet mikrokroků uděláš až nakonec a nikde dál ho nepoužiješ.
Chyba tam může vzniknout (nemůžeš udělat třeba 1/7 mikrokroku, že), ale nebude se kumulovat.
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

2. 5. 2018, 8:34

Tak ty zubatý kola jsem si stáhnu z webu a moc se mi líbily.
Přiznám se, že jsem byl línej tento algoritmus nějak moc řešit. Jde jenom prakticky o několik pohybů. Zahoumuju tedy jsem na nule. Posunu se na pracovní polohu a vygeneruju první chybu někde okolo 0,005 mm. Pak už pohybuju o 0,5 mm nahoru nebo dolu a každý ten pohyb vygeneruje dalších 0,005mm chyby občas se to odečte, občas přičte. Když si vezmu, že původně se to měřilo ocelovým měřítkem a tak je toto řešení v pohodě. Nemá smysl dělat vědu na plastových kolečkách a trapézovém šroubu.
Z přísně technického pohledu je to samozřejmě špatně, ale v praxi je to naprosto dostačující. Až si budu hrát se soustruhem, budu to fakt počítat jinak. :-)
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

8. 6. 2018, 5:04

Výškové nastavení laseru funguje jak má a mě nebylo než dodělat tu děličku. To se nakonec taky povedlo, zatím v první "lite" verzi. Lite, protože s tím budu pohánět čínský 125mm stolek. V regálu mám poctivý 250mm otočný stůl od FN20 a tam hodlám realizovat totéž. Tedy přesněji řečeno, budu používat stejné řízení pro oba stoly. Zatím to umí prosté otáčení, děličku a dělení na ozubené kola, kdy zadám rovnou počet zubů. Tady už samozřejmě pracuji s nezaokrouhlenými čísly. Používám 1/4 kroky bez rampy, protože je tam šnekový převod 1 ku 7 a motor se točí poměrně pomalu a není zatěžován. Do krabičky se kromě řídící elektroniky vešel i driver Leadshine M542. Můžu tedy použít libovolný NEMA23-24 motor a napětí do 45V. Kromě displeje a klávesnice je tam taky malej větráček, potenciometr na řízení rychlosti otáčení motoru a tři konektory. Motor, napájení a tlačítko pro opakování poslední akce. Teď budu dělat nějaké díly na zámky BERA a tak to natočím a postnu sem video.
IMG_1950.JPG
IMG_1952.JPG
IMG_1954.JPG
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

16. 7. 2018, 11:05

Tak tady bych potřeboval radu. Dá se přečíst celý port (8bitů) najednou? Myslím tím v Arduino prostředí Wiring. Díky za info. :-)
Mex
Příspěvky: 4293
Registrován: 6. 2. 2014, 10:29

16. 7. 2018, 5:05

Snad i v tom prostředí Arduino funguje něco normálně, takže třeba
stav=PINA;
vy Ti měl do proměnné "stav" přečíst celý port A.
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

16. 7. 2018, 5:55

Původně jsem to předpokládal, ale nic jsem neobjevil. Udělám to tedy jinak. :cry:
Mex
Příspěvky: 4293
Registrován: 6. 2. 2014, 10:29

16. 7. 2018, 6:11

lubbez píše:
16. 7. 2018, 5:55
Původně jsem to předpokládal, ale nic jsem neobjevil. Udělám to tedy jinak. :cry:
Tomu nerozumím.
To jako takhle nefunguje? To snad není možné.
Uživatelský avatar
Hades
Příspěvky: 1214
Registrován: 11. 10. 2012, 10:59
Bydliště: Praha; Mimoň

17. 7. 2018, 8:31

lubbez píše:
16. 7. 2018, 5:55
Původně jsem to předpokládal, ale nic jsem neobjevil. Udělám to tedy jinak. :cry:
Serial.println(PINB,BIN); //Nacte stav portu
OR
Serial.println(PINB,HEX); //Nacte stav portu

nepomůže?
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

18. 7. 2018, 11:58

Díky zkusím to. :-)
Mex
Příspěvky: 4293
Registrován: 6. 2. 2014, 10:29

18. 7. 2018, 3:30

lubbez píše:
16. 7. 2018, 5:55
Původně jsem to předpokládal, ale nic jsem neobjevil. Udělám to tedy jinak. :cry:
Poslyš, že Ty si z nás děláš srandu?

Napsal jsem takovýto velmi komplikovaný program:

void setup() {
}
void loop() {
char ahoj;
ahoj = PINB;
}

A minimálně kompilace prošla bez problémů. Nemám tady žádnou fyzickou desku, abych to vyzkoušel, ale tady snad není proč by to nejelo.

Čtení portu je ta nejjednodušší 1-taktová instrukce. Takže je s prominutím trochu mimo ji balit do nějakých obrovských objektů jako Serial atd.
lubbez
Příspěvky: 1041
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

18. 7. 2018, 4:23

Kdepak, srandu si nedělám. Moje první xxxduino jsem měl poprvé v ruce nekdy koncem ledna tohoto roku. O pár dnů jsem zkompiloval první program. Tedy zatím s knihovnou wiring, neb klasické C mi ještě stále nejde pod nos. V podstatě celý život programuju v assmbleru a sem tam v pascalu, ale C mi prostě nejde. Říkal jsem si, že časem wiring opustím a doučím se to zpropadené Céčko, ale času je pekelně málo. Co se týká toho portu, potřeboval jsem přečíst 8bitové číslo a tam mi strýček Google nepomohl. Prakticky všechny knížky o arduinu od sebe opisují stejně jako naši ministři, ale ani tam jsem nenašel nic o pošli bajt na port. V Cčku je to normální základní operace, ale v tom wiringu mi to stále uniká. Já to nakonec dám, protože mám rozebranej soustruh a ten musí fungovat, ale asi mi to bude ještě trochu trvat. Vlastně jediná seriozní paralelní komunikace v Arduinu je knihovna LCD displeje. Jinak všecho ostatní podporuje seriovou komunikaci, ve všech možnejch kombinacích.
Odpovědět

Zpět na „MCU“