Obsah:

CNC měřicí nástroj rychlosti posuvu vyrobený ze šrotu: 5 kroků
CNC měřicí nástroj rychlosti posuvu vyrobený ze šrotu: 5 kroků

Video: CNC měřicí nástroj rychlosti posuvu vyrobený ze šrotu: 5 kroků

Video: CNC měřicí nástroj rychlosti posuvu vyrobený ze šrotu: 5 kroků
Video: Hot Wire Foam Cutting Cnc Machine Review - FoxAlien HW40 2024, Červenec
Anonim
CNC měřicí nástroj rychlosti posuvu vyrobený ze šrotu
CNC měřicí nástroj rychlosti posuvu vyrobený ze šrotu

Chtěl někdy někdo změřit skutečnou rychlost posuvu na CNC stroji? Pravděpodobně ne, dokud nejsou frézovací bity po práci CNC neporušené … ale když se začnou pravidelně lámat, možná je čas to prozkoumat. V tomto pokynu můžete sledovat úkol při určování skutečného posuvu CNC stroje. Pokryje reverzní strojírenskou část tiskárny, firmware arduino, počítačový software a výsledky, kterých jsem dosáhl s pomocí svých kolegů, a odpadky proměněné v poklad.

Krok 1: Materiály, nástroje, zařízení použitá ke spuštění projektu

Když jsem na tom začal pracovat, vymyslel jsem si krátký seznam věcí, které budeme potřebovat:

  • rozebraný mechanismus vozíku tiskárny
  • ruční nástroje, které to vyladí
  • páječka, pájka, dráty
  • multimetr
  • osciloskop nebo logický analyzátor - to není nezbytně nutné
  • zdroj napájení
  • mikroskop
  • Arduino nano + pinout
  • PC s nainstalovanými nástroji Arduino IDE, Visual Studio 2008 Express + MS Charting
  • (MPU6050 - nakonec jsem to nepoužíval)
  • ochotni procházet vše, co nevíte, jak dělat

Na začátku jsem si myslel, že deska MPU6050 mi umožní měřit posuv na všech třech osách najednou. Měl jsem v sobě akcelerometr a byl jsem si jistý, že sečtením dat akcelerometru mi poskytne požadovanou hodnotu - rychlost na každé ose. Po stažení a úpravě úryvku Arduina, který zobrazoval nezpracovaná data na sériovém monitoru, jsem ve Visual Studiu napsal malý počítačový program, který data zpracoval a zakreslil do grafu pro snazší interpretaci. K tomu jsem musel stáhnout jak Visual Studio C# Express 2008, tak nástroje pro tvorbu grafů.

Po chvíli kódování a vyhledání všech věcí, které jsem potřeboval pro sériovou komunikaci, jsem skončil s vynesenými hodnotami, ale bez ohledu na to, co jsem udělal, to nebylo použitelné. Malé, ale náhlé pohyby by vedly k obrovským špičkám, zatímco delší cesty by se na grafech ani neobjevily. Po dvou dnech kladiva MPU6050 jsem to nakonec vzdal a obrátil jsem se k něčemu jinému - mechanismu zpětné vazby polohy rozebrané tiskárny.

Krok 2: Hardware, které je třeba provést

Hardware, který je třeba provést
Hardware, který je třeba provést
Hardware, který je třeba provést
Hardware, který je třeba provést
Hardware, který je třeba provést
Hardware, který je třeba provést
Hardware, který je třeba provést
Hardware, který je třeba provést

Reverzní inženýrství

Mechanismus tiskárny samozřejmě neměl číslo dílu, které bych mohl použít k určení jeho přesných vlastností, bylo potřeba trochu zpětného inženýrství, abychom se dostali tam, kam jsme chtěli. Po důkladném prozkoumání mechanismu a elektroniky jsem se rozhodl, že první věcí musí být identifikace pinů optického senzoru. To bylo nutné provést, aby se celá věc propojila s Arduinem. Demontoval jsem černý plastový díl, vytáhl DPS a prozkoumal senzor: bylo na něm napsáno ROHM RPI-2150. To mě potěšilo, naděje byla velká, že najdu datasheet. Bohužel se jedná o starou nebo vlastní část - nikde na webu nebyl k dispozici žádný datový list. To znamenalo, že jsem musel vzít věci do vlastních rukou: věděl jsem, že tyto senzory mají uvnitř obvykle infračervenou LED a dva fototranzistory, popadl jsem multimetr, nastavil jej do režimu měření diod a začal měřit mezi piny.

Napájecí piny jsou obvykle snadno k nalezení - budou mít kondenzátory a jsou obvykle spojeny s širokými stopami na deskách plošných spojů. Pozemní stopy jsou často spojeny s více podložkami pro lepší potlačení hluku.

Vstupní a výstupní kolíky však nejsou tak triviální. Při měření přes diodu bude měřič ukazovat své dopředné napětí v jednom směru a přetížení (nekonečné) v druhém. Byl jsem schopen identifikovat čtyři diody mezi piny, dospěl jsem k závěru, že čtvrtá dioda musí být nějaký druh zenerovy nebo TVS diody, protože to bylo přímo mezi napájecími piny součásti. Umístění infračerveného vysílače bylo snadné, v sérii s ním byl odpor 89R. Zbývaly mi dvě měření diod na zbývajících dvou pinech, to musely být dva přijímače.

Poznámka: Tyto senzory mají dva přijímače, aby kromě určování polohy počítáním impulzů mohly určit i směr pohybu. Tyto dva výstupní průběhy jsou 90 ° mimo fázi, což se používá k vytvoření impulsu pro odpočítávání nebo odpočítávání. Sledováním počtu těchto pulzů lze určit přesnou polohu tiskové hlavy.

Když byl vysílač a dva přijímače umístěny, připájel jsem na jejich piny dráty, abych mohl propojit senzor s Arduinem. Než jsem to udělal, dodal jsem senzoru 3,3 V, několikrát jsem zatáhl proužek mezi senzorem a pozoroval čtvercovou vlnu na výstupech. Frekvence čtvercové vlny se měnila s rychlostí pohybu a dospěl jsem k závěru, že měřicí systém je nyní připraven k připojení k Arduinu.

Připojení Arduina

Připojení tohoto nového „senzoru“je velmi snadné. Stačí připojit výstupy senzorů k D2 a D3 (piny s možností přerušení!), Napájecímu vedení a kódování může začít.

Krok 3: Arduino kódování

Arduino kódování
Arduino kódování

Kód Arduino je celkem jednoduchý. Přiřadil jsem funkci, která se spouští pokaždé, když D2 vidí stoupající hranu, to je funkce uplynulého z připojeného kódu Arduino. Když se podíváte na signály kvadratického kodéru, uvidíte toto:

  • v jednom směru fáze A je logicky vysoko na každé stoupající hraně fáze B.
  • v opačném směru je fáze A logicky nízká na každé stoupající hraně fáze B.

To byla vlastnost kodéru, který jsem využil: protože funkce elapse se spouští pokaždé, když má D2 stoupající hranu, jen jsem napsal, že pokud to zvýší čítač, když je D3 vysoký, a sníží jej, když je D3 nízký. Na první pokus to fungovalo, poslal jsem hodnotu čítače na sériový monitor a sledoval, jak se zvyšuje/snižuje, když jsem přesunul tiskovou hlavu na hřídel.

Stručně řečeno, firmware dělá ve funkci smyčky následující věc:

  1. zkontroluje vyrovnávací paměť pro příjem příchozích dat
  2. pokud jsou příchozí data, zkontrolujte, zda je to „1“nebo ne
  3. pokud je to „1“, znamená to, že počítačový software požaduje hodnotu čítače
  4. odešlete hodnotu počitadla do počítače přes sériové číslo
  5. začít od 1.

Díky tomu je míč nyní na hřišti PC softwaru. Pojďme do toho!

Krok 4: Software Visual Studio C#

Účelem programu VS C# bylo přesunout výpočetní zátěž z Arduina na PC. Tento software přijímá data, která Arduino poskytuje, vypočítává a zobrazuje rychlost ve formě grafu.

První, co jsem udělal, bylo googlit, jak provádět sériovou komunikaci v C#. Na webu MSDN.com jsem našel spoustu dobrých informací spolu s dobrým příkladem, pak jsem vyhodil, co jsem nepotřeboval - v podstatě vše kromě části pro čtení. Nastavil jsem COM port a rychlost tak, aby odpovídala rychlosti Arduina, pak jsem to jen párkrát zkusil a vše, co přišlo na sériový port, zahodil do víceřádkového textového pole.

Poté, co byly hodnoty načteny, mohl jsem použít funkce readto a split k izolaci jednoho měření od sebe navzájem a od znaků oddělovače. Ty byly vykresleny na grafu a hodnoty se začaly objevovat na obrazovce.

Pokud ve svém panelu nástrojů VS nevidíte ovládací prvek Graf, můžete problém vygooglit a najít řešení zde (hledejte odpověď č. 1): odkaz

Princip měření

Abychom našli souvislost mezi počtem počtů a vzdáleností, kterou hlava urazí, vynulovali jsme hodnotu počítání, ručně jsme posunuli tiskovou hlavu o 100 mm a pozorovali změnu počtů. Nakonec jsme přišli s následujícím poměrem: 1 počet = 0,17094 mm.

Protože můžeme dotazovat vzdálenost a můžeme měřit čas mezi vzorky, můžeme vypočítat rychlost, s jakou dochází k posunu polohy - můžeme vypočítat rychlost!

Díky TMR0 existuje hrubé časování softwaru 50 ms, ale zjistili jsme, že tato časování nebyla příliš přesná. Ve skutečnosti jsme po několika měřeních rychlosti softwaru zjistili, že časovaných 50 ms není vůbec 50 ms. To znamenalo, že vzorky nebyly odebírány v pevném intervalu, takže výpočet rychlosti nemohl použít ani pevnou časovou základnu. Jakmile jsme našli tento problém, bylo snadné pokračovat: vzali jsme rozdíl ve vzdálenosti a rozdíl v čase a vypočítali rychlost jako D_distance/D_time (namísto D-distance/50ms).

Protože naše rovnice vrátí rychlost v jednotkách mm/50 ms, musíme to vynásobit 1 200, abychom získali vzdálenost, kterou by hlava ušla za jednu minutu, v [mm/minutu].

Poznámka: Software pro řízení CNC fréz Mach 3 definuje posuvy v jednotkách [mm/minutu]

Filtrování

Od tohoto okamžiku se měření zdála být docela přesná, ale na měřeném signálu byl určitý šum. Měli jsme podezření, že je to kvůli mechanickým nesrovnalostem v hřídeli, spojce hřídele atd., Proto jsme se rozhodli to odfiltrovat, abychom získali pěknou střední hodnotu toho, co se měří.

Jemné úpravy softwaru

Aby bylo možné během běhu změnit vzorkovací frekvenci a rychlost filtrování, byly přidány posuvníky - pro každý jeden. Rovněž byla zavedena schopnost skrýt spiknutí.

Krok 5: Výsledky

Výsledek
Výsledek
Výsledek
Výsledek
Výsledek
Výsledek
Výsledek
Výsledek

Poté, co byly připraveny hardwarové a softwarové části, provedli jsme tři sady měření pomocí softwaru mach 3 + my, výsledky můžete vidět na přiložených obrázcích. Pozdější experimenty ukázaly lepší přesnost, přičemž se zvýšily filtry i vzorkovací frekvence. Grafy ukazují naměřenou rychlost plnou červenou barvou a průměr modrou čárkovanou tečkou.

Jak již bylo řečeno, vypadá to, že Mach 3 zpracovává tato nastavení rychlosti poměrně přesně, ale teď to víme jistě:)

Doufám, že se vám tento krátký návod na reverzní inženýrství a přeměnu vody ve víno líbil!

Na zdraví!

Doporučuje: