Mn-80 control unit

Odpovědět
lubbez
Příspěvky: 3148
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

19. 2. 2020, 7:40

Žádný plán překvapivě nezvládne konfrontaci s realitou. Dnešní "přidělám už konečně ten enkodér" mi zabralo celý den času. Při první úpravě jsem si některé věci trochu zjednodušil a to se mi samozřejmě vymstilo. Nakonec jsem chudáka malýho docela oholil, protože jsem musel dostat do roviny vnitřek odlitku. Původní úprava byla nedostatečná. Nakonec se mi to podařilo srovnat do 0,05mm, včetně všech podložek držáku motoru i enkodéru. Když už jsem měl vše vyndané, udělal jsem plastový ostřikovací kroužek, aby se nehumusil řemínek k enkodéru od přebytků oleje. Nechal jsem sestavu vřeteno + řemenice a enkodér chvíli běžet na maximum, což je 1850 ot/min a vše zatím dobré. Zatím ten výkend a první ostré pokusy vypadají reálně.
Chudák oholenej
Chudák oholenej
Nové úpravy na původní skříni
Nové úpravy na původní skříni
Ostřikovací kroužek a řemenice
Ostřikovací kroužek a řemenice
Přílohy
Sestava enkodéru
Sestava enkodéru
atlan
Příspěvky: 3343
Registrován: 7. 2. 2011, 9:12

1. 3. 2020, 2:30

Uz hotovo? Video?
Naposledy upravil(a) atlan dne 1. 3. 2020, 7:52, celkem upraveno 1 x.
lubbez
Příspěvky: 3148
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

1. 3. 2020, 7:24

Ještě ne, ale už skoro. Ladím už to na soustruhu a vidím to tak na 2-3 dny. :mrgreen:
lubbez
Příspěvky: 3148
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

7. 3. 2020, 11:14

Editnul jsem můj předchozí post a teď tedy závěr mého snažení. Zařízení funguje. :D
První verze, sice fungovala taky, ale bylo tam spousta technických i SW kompromisů. Protože jsem to vše pojal jako vzdělávací projekt a snažím se nedělat kompromisy, je na světě verze 2.

Zásadní rozdíl je, že k řezání závitů nepotřebuji vědět jaké jsou otáčky vřetena. Chová se to stejně, jako soustruh s ozubenými koly. Když se sníží/zvýší otáčky, adekvátně tomu se změní rychlost suportu s nožem. V extrémním stavu, zastavení vřetena se zastaví i pohyb nože a nedojde ke zničení. Samozřejmě má tohle udělátko své limity. Spoustu věcí by šlo doprogramovat tak, aby i po zastavení bylo možné se vrátit do výchozích poloh a pokračovat v rozdělané práci, ale pro mě to není až tak důležité a možnost "opravy" rozdělaného závitu jsem vynechal. Poměrně zásadním omezením je maximální rychlost otáčení krokového motoru. V mém případě 3mm stoupání pohybového šroubu a driver KM 400 kroků na otáčku umožňuje řezat závit se stoupáním 2mm pouze do 650 ot/min, při vyšších otáčkách nebo stoupání se motor už nerozjede. Z principu se nemůže motor rozjíždět s rampou.

Pohyb vřetena snímám inkrementálním enkodérem a mým účelům vyhovuje nejvíc 1000 nebo 2000 imp/ot. Co je důležité je i výstup Z, který používám na synchronizaci řezání a taky na měření otáček. Celý princip je vlastně velice jednoduchý. Příklad Závit má stoupání 1mm, to znamená, že enkodér "vyprdí" 1000 impulzů. Krokáč je nastavený na 400 kroků na otáčku a trapéz má stoupání 3mm, tedy jeden krok je 0,0075mm, my ale potřebujeme 1mm a tak to bude 133,33 kroků. A teď už je to jednoduché na 1000 impulzů musíme udělat 133,33 kroků, tedy to nějak podělíme, cca uprostřed cyklu změníme úroveň signálu STEP a na konci znovu a tím máme vygenerovaný jeden impulz pro krokáč. To opakujeme stále dokola až dojedeme na konec závitu. Tlačítkem se vrátíme najedeme nožem a dalším tlačítkem opět pustíme. O synchronizaci se nám stará ten Z impulz, nechám pro sychr napočítat 2 a jedeme. A tak se to opakuje až do úplného dořezání závitu. Na měření hloubky samozřejmě používám DRO. Pokud si chci nožem odjet ze z polohy, třeba pro změření kalibrem :lol: (matičkou) je na to tlačítko, druhým se pak vrátím zpět na polohu, kterou to samozřejmě hlídá a není možné přejet jinam. Prakticky všecho důležité dělám v HW přerušeních.

Zařízení je sice plně funkční, ale při konstrukci jsem narazil na pár drobností, které budu / nebudu možná řešit. Pro celé řízení nepotřebuji oba výstupy z enkodéru, stačí mi jen jeden. Ve wiringu je sice možnost spouštět interrupt oběma hranami, ale nějak mi to nechodí. Asi udělám z A a B ex orem čtyřnásobnej kmitočet, samozřejmě si klopákem hlídám směr otáčení. Na měření otáček používám samostatné duino. Tady je ještě prostor pro hlídání otáček. V každém případě beru projekt jako ukončený a finální podoba vč. popisu, dalších fotek a samozřejmě videí bude na mém webu. Odkaz se dám, až to bude aktuální.
Pohled na připojení IRC přes řemenici
Pohled na připojení IRC přes řemenici
skrin.jpg (22.19 KiB) Zobrazeno 3128 x
Návrat do nuly
Návrat do nuly
zacatek.jpg (17.98 KiB) Zobrazeno 3128 x
Závit dlouhej cca 10mm
Závit dlouhej cca 10mm
konec.jpg (17.83 KiB) Zobrazeno 3128 x
testone
Sponzor fora
Příspěvky: 7176
Registrován: 3. 12. 2010, 5:56
Bydliště: Slaný

7. 3. 2020, 11:22

klobouk dolů
Obvykle se dějí věci obvyklé. Méně často se dějí věci neobvyklé a zcela vyjímečně se dějí věci vyjímečné...
Masturn 40 CNC, Hermle UWF1200H CNC a pár klasik
http://www.radialengine.cz" onclick="window.open(this.href);return false;
http://www.autopejsek.cz" onclick="window.open(this.href);return false;
atlan
Příspěvky: 3343
Registrován: 7. 2. 2011, 9:12

7. 3. 2020, 11:41

A skusal su uz rezat zavit s 2mm stupanim?

Preco sa pytam, ja som sa bal aby ten motor zvlatol posun noza v zabere, a tym padom ho mam sprevodovany do pomala. Co obmedzuje rychlost rezania zavitu, lebo bez rampy sa motor neroztoci.

Tak ze ked budes mat skusenosti, daj v3diet, velmi sa mi do prerabky nechce. Ale ked ti to bude chodit tak by som to urobil, predsa len rychlejsie rezanie je lepsie.

Stale som sa nedokopal, k prepocte otacok k stupaniu, aby som vedel kolko nax mozem nastavit pre kazde stupanie.
lubbez
Příspěvky: 3148
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

7. 3. 2020, 12:22

1,75 mm jsem řezal v poho. :-) Druhá stránka je, že stačí ubrat na rychlosti vřetena. Ale příští týden bych chtěl právě dělat testy, abych si udělal finální představu. Co mě ser....re, že budu muset dělat asi novej plošňák. Zase výhoda bude zjednodušení a další funkce.
Milan199
Příspěvky: 2907
Registrován: 18. 8. 2010, 9:04

7. 3. 2020, 12:35

atlan píše: 7. 3. 2020, 11:41 Co obmedzuje rychlost rezania zavitu, lebo bez rampy sa motor neroztoci.
Rampu můžeš dobře nahradit // pokud tam máš měnič na vřeteni // tak, že snížíš otáčky na úroveň kdy se krokáč bezpečně roztočí a pak je přidáš. Tím si vytvoříš rampu z rozběhové křivky měniče.
Je to jednoduché a používám to už leta.
atlan
Příspěvky: 3343
Registrován: 7. 2. 2011, 9:12

7. 3. 2020, 1:04

Lenze to by som musel aj pri spomalovani ci?

Ked budes robit testy, pis priemer materialu, otacky vretena a stupanie zavitu.
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

7. 3. 2020, 5:31

Pěkně jsi s tím postoupil. Klobouk dolů. :)

Je skoro škoda, že když dáš dohromady takovou pěknou konstrukci a k tomu i hezký SW, tak že pak narazíš na nějaké omezení Wiringu (nebo jak se to ohnuté C++ jmenuje), třeba i tím přerušením.
Procesory ATmega už mnoho let nepoužívám, takže si to nepamatuju a musel jsem se na to podívat. Ale jen letmým pohledem do datasheetu to vypadá, že na linkách INT0 a INT1 se dá nastavit na jakou hranu mají reagovat, a to včetně možnosti obou hran. Je to konfigurace jen 2 bitů v jenom registru.
Pokud bys používal funkci Pin Change na zbylých I/O linkách, tak tam snad ani není možné omezit na co to reaguje, tam to automaticky reaguje na jakoukoli hranu.

Pokud bys měl zájem, tak si nějaké to Arduino doma nainstaluju a udělám i tím přerušením nějaké pokusy.

Samozřejmě Ti nepřeju, abys musel svůj tišťák předělávat. Ale kdyby k tomu náhodou došlo, tak si prosím vzpomeň, jak jsme si před nějakou dobou psali o nepájivé masce. Psal jsi tehdy, že máš (Ty nebo nějaký Tvůj kamarád) vyzkoušený postup s předsušením masky, aby se dala maska nanášet prázdným sítem a před osvitem ji vysušit na dotek. Tak, jak se to dělá v hromadné výrobě, což mi s mou čínskou maskou prostě nejde. A že bys to případně natočil.
Díky.
lubbez
Příspěvky: 3148
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

7. 3. 2020, 9:55

Posledních 30 let jsem byl přesvědčenej, že C++ je tak blbej programovací jazyk, že se ho nikdy nenaučím a raději jsem programoval v Pascalu. Ovšem při přechodu z X51 na AVR jsem měl problém. V podstatě jsem nepotřeboval opustit X51, kvůli výkonnosti, ale hlavně jsem psal čím dál tím rozsáhlejší programy a tam je ten assembler prostě nepřehlednej. Proto jsem u AVR začal pokukovat po něčem "vyšším". Pascal jsem zavrhnul hned, Bascom mě nijak nenadchnul. Nakonec zůstalo to arduino. Je to učební projekt, tak to tedy zkusím. Po dvou letech lze říct, že to trochu jde. Opět jsem v situaci, kdy jsem schopen naprogramovat prakticky vše, co chci. Logicky ale narážím na mantinely výukového programu. Wiring je sám o sobě docela fajn, nemusíš o procesoru vědět prakticky nic a výsledný produkt funguje. Ovšem je to všechno orientované na "nožičky" procesoru a né na porty. To je první problém, kromě nějakejch pomocnejch výpisů přes sériovou linku neexistuje žádný debuging, nebo krokování programu. A samozřejmě jsou tu i určitá omezení, což je taky logické. Kde je ale největší "díra" je opět dokumentace. Původní představa, že si informace najdu v češtině je přehnaně optimistická. Ano, na netu najdu asi tak tisíc návodů, jak blikat LEDkou na nožičce 13 a jak ošetřit zmáčknutí tlačítka, ale třeba info o interruptech prakticky není, přesněji je jeden překlad publikovaný cca 10x. Za této situace je asi jednodušší použít z arduina zavaděč a zbytek opravdu napsat v C++. Myslím, že to nebude až tolik práce s učením a výsledek bude program pod kontrolou. Samozřejmě i v tom wiringu jsem si dokázal docela efektivně pomoci a obě HW ( na 328 ) přerušení řídit podle potřeby, ale je to taková náhražka.
Co se týká nepájivky, všechny moje tři síta zmizely asi při stěhování v temném propadlišti dějin. Stěrky jsem ale našel a objednal jsem si i sítovinu. Udělat nové síta je chvilka práce a pak udělám test i bez plošňáku.
Mex
Příspěvky: 10288
Registrován: 6. 2. 2014, 10:29

7. 3. 2020, 10:22

Hlavně si prosím uvědom, že Wiring je prostě C++. Takže se nic moc nového nebudeš muset učit.
Ta parta kolem Arduina jen udělala něco jako preprocesor, který přechroustá ten program ve Wiringu a výsledkem je C++, který pak normální kompilátor přeloží.
Rozdíl při použití C++ oproti tomu Wiringu bude jen ten, že tam není něco jako setup() a loop(), ale je tam prostě main(). A z něho si zavoláš nějaký setup(), pokud ho tedy potřebuješ.
No a druhá věc je, že v tom Wiringu máš předchystány základní knihovny. Ty můžeš použít i v C++, jen si je musíš explicitně připojit.

Takže rozdíly jsou fakt minimální.
Ale jsou minimální i opačným směrem. V klidu můžeš psát ve Wiringu a používat přitom běžné konstrukce z C++. Takže úplně snadno můžeš používat porty po bytech, jak už jsem Ti ostatně několikrát psal, včetně předchystaných příkladů.

Na debaty o zkušenostech s pastama se těším.
atlan
Příspěvky: 3343
Registrován: 7. 2. 2011, 9:12

8. 3. 2020, 7:14

Akurat wiring robi na pozadi veci o ktorych nevies..... Pokial ich C nezakazes. Ale pouzit C bude jednoduchsie.
lubbez
Příspěvky: 3148
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

11. 3. 2020, 12:00

Tak už jenom pár technickejch poznámek k jednotce. Všechny původní předpoklady platí. Limitujícím faktorem je tady krokovej motor. Použít buď 3f motor, nebo closed loop by spolehlivě tenhle problém vyřešilo. Otázka je, jestli to je vůbec problém. Řezat šroub M12 na malinkatém soustruhu mi přijde trochu out. Ale teď ty údaje. Stoupání 1,75mm/ot zvládá můj obyčejný krokáč s driverem M542 od 610 otáček vřetena. Naprosto spolehlivě se rozjede i s úběrem 0,5mm!! do železa průměr 30mm při 550 otáčkách vřetena. Když jsem zkoušel nerez - kulatina průměr 40mm, tak jsem to s tím 0,4 mm úběru přehnal a nůž ulomil. :-( Po dvou dnech testování je to asi takto.
M12 - max 550 ot/min
M8 - max 750 ot/min
od M6 otáčky 1000/min
krokáči je úplně jedno, jaký materiál, noži ne :-)
protože mám otáčkoměr jako samostatnou jednotku, naprogramoval jsem jednu PWM nožičku na 1/1, 1/2 a 1/10 a to čtu duinem s řízením a upozorňuju pípákem na nevhodné otáčky pro zvolené stoupání. Krom toho taky indikuju správný směr otáčení vřetena a tam rovnou řezání blokuji. V současné chvíli můžu řezat závity zprava směrem k vřetenu které se otáčí vlevo (proti směru HR), HW umožňuje samozřejmě i opačné řezání, alw SW na to není, a ani nebude, modifikovaný.
lubbez
Příspěvky: 3148
Registrován: 21. 6. 2012, 9:26
Bydliště: Praha

14. 3. 2020, 10:08

Závěrečná :-)

Finální úpravy - řezání UNF a G závitů 14-28 běhů / inch a minimalizace metrickách posuvů pod 0,5 mm / ot. Jsem docela rád, že jsem "bednu" pověsil na své místo. Poslední týden jsem tomu věnoval většinu času a už mě to moc nebavilo. Ono když je to rozhozené po soustruhu, trochu chaos drátů, osciloskop, multimetr tak se člověk nevyhne sem tam nějaké chybce. Ta moje největší :-( bylo několik špon v krabičce s elektronikou, následkem čehož odešlo arduino, M542 driver a tranzistor který spíná pípáček. Druhou věcí, která mě fakt přibrzdila, byl samotný kód. Běžné věci vcelku bez problémů, ale když přišly externí interrupty, bylo ouvej. Tady to chce čistej kód bez wiringu, protože tam určitě tiká nějakej NMI interrupt, o kterém nevím. :evil: A vcelku čistá a jednoduchá matematika impulzů z IRC a otáčení trapézem byla v tu ránu v prdeli. Asi to bude nějakej časovač, protože jeho režie je vcelku lineární. Lze tedy upravit pracovní konstatnty a stoupání šroubu pak vcelku odpovídá zadaným hodnotám. Bavíme se tady o driftu v setinách mm na otáčku. Krabička je plně funkční, opakované polohování +- 0,02mm, ale stoupání sice přesné, ale kompromis. Tak tohle je zralý na upgrade.
Další "problém" je krokáč, točí se pomalu a krokuje. To "pomalu" je o otáčkách vřetena a s tím spojeným pohybem suportu. Cca od 500 ot/min nejde řezat závit nad 1,5mm. To sice není až takový problém, protože i těch 500 ot/min je docela fofr. Mnohem nepříjemnější je samotné krokování. Při řezání závitů se to neprojevuje, ale při pouhém posunu suportu je to docela nepříjemné a na soustruhu rezonuje kde co. Že by upgrade? Asi zkusím 100W servo STEP/DIR, pokud ho seženu, ale spíš 2Nm closed loop motor 3F.

V každém případě teď budu dělat něco jiného.
Po zapnutí stroje
Po zapnutí stroje
Šipkama nastavuju stoupání závitu
Šipkama nastavuju stoupání závitu
A jinejma šipkama nastavuju začátek a délku závitu
A jinejma šipkama nastavuju začátek a délku závitu
Odpovědět

Zpět na „výrobky a obrobky“