Kazalo:

CNC merilno orodje za podajanje iz ostankov: 5 korakov
CNC merilno orodje za podajanje iz ostankov: 5 korakov

Video: CNC merilno orodje za podajanje iz ostankov: 5 korakov

Video: CNC merilno orodje za podajanje iz ostankov: 5 korakov
Video: Scrap CNC Machines / Can They Be Saved ? 2024, Julij
Anonim
CNC merilno orodje za podajanje iz ostankov
CNC merilno orodje za podajanje iz ostankov

Je kdo že želel izmeriti dejansko hitrost podajanja na CNC stroju? Verjetno ne, dokler rezkarji po CNC -ju niso nedotaknjeni … ko pa se začnejo redno lomiti, je morda čas, da raziščemo. V tem navodilu lahko sledite iskanju pri določanju dejanske hitrosti podajanja CNC stroja. Zajemal bo del obrnjenega inženiringa tiskalnika, vdelano programsko opremo arduino, računalniško programsko opremo in rezultate, ki sem jih dobil s pomočjo kolegov, in smeti, ki so se spremenile v zaklad.

1. korak: Materiali, orodja in naprave, ki se uporabljajo za zagon projekta

Ko sem začel delati na tem, sem si zamislil kratek seznam stvari, ki jih bomo potrebovali:

  • razstavljen nosilec tiskalnika
  • ročna orodja za to
  • spajkalnik, spajkanje, žice
  • multimeter
  • osciloskop ali logični analizator - to ni nujno
  • napajanje
  • mikroskop
  • Arduino nano + pinout
  • Računalnik z nameščenim orodjem Arduino IDE, Visual Studio 2008 Express + MS Charting
  • (MPU6050 - tega nisem uporabil)
  • pripravljeni pobrskati po vsem, česar ne veste, kako narediti

Na začetku sem mislil, da mi bo plošča MPU6050 omogočila merjenje hitrosti podajanja na vseh treh osh hkrati. Ker sem imel merilnik pospeška v sebi, sem bil prepričan, da mi bo seštevanje podatkov merilnika pospeška dalo želeno vrednost - hitrost na vsaki osi. Ko sem prenesel in spremenil delček Arduino, ki je na serijskem monitorju prikazal surove podatke, sem v Visual Studio napisal majhen računalniški program, ki je obdelal podatke, in jih za lažjo interpretacijo narisal na grafikon. Za to sem moral prenesti tako Visual Studio C# Express 2008 kot orodja za grafikone.

Ko sem nekaj časa kodiral in poiskal vse, kar sem potreboval za serijsko komunikacijo, sem končal z izrisanimi vrednostmi, vendar ne glede na to, kaj sem naredil, ni bilo uporabno. Majhni, a nenadni premiki bi povzročili velike konice, medtem ko daljša potovanja sploh ne bi bila prikazana na lestvicah. Po dveh dneh kladiva MPU6050 sem končno obupal in se obrnil na nekaj drugega - mehanizem povratne informacije o položaju razstavljenega tiskalnika.

2. korak: Strojne stvari, ki jih je treba narediti

Strojna oprema, ki jo je treba narediti
Strojna oprema, ki jo je treba narediti
Strojna oprema, ki jo je treba narediti
Strojna oprema, ki jo je treba narediti
Strojna oprema, ki jo je treba narediti
Strojna oprema, ki jo je treba narediti
Strojna oprema, ki jo je treba narediti
Strojna oprema, ki jo je treba narediti

Povratni inženiring

Seveda tiskalniški mehanizem ni imel številke dela, s katero bi lahko določil njegove natančne lastnosti, zato je bilo potrebno malo obratnega inženiringa, da smo prišli tja, kjer smo želeli. Po natančnem preučevanju mehanizma in elektronike sem se odločil, da mora biti najprej identifikacija zatičev optičnega senzorja. To je bilo treba storiti, da bi celotno stvar povezali z Arduinom. Razstavil sem črni plastični del, izvlekel tiskano vezje in pregledal senzor: na njem je bilo napisano ROHM RPI-2150. To me je razveselilo, upanje je bilo veliko, da bom našel podatkovni list. Na žalost je to star ali del po meri - podatkovnega lista ni bilo mogoče najti nikjer v spletu. To je pomenilo, da moram stvari vzeti v svoje roke: ker sem vedel, da imajo ti senzorji ponavadi infrardečo LED in dva foto-tranzistorja v notranjosti, sem zgrabil multimeter, ga nastavil na način merjenja diod in začel meriti med zatiči.

Napajalne zatiče je običajno enostavno najti - na njih bodo kondenzatorji in so običajno povezani s širokimi sledovi na tiskanih vezjih. Ozemljitvene sledi so pogosto povezane z več blazinicami za boljše odbijanje hrupa.

Vhodni in izhodni zatiči pa niso tako nepomembni. Pri merjenju preko diode bo merilnik pokazal svojo napetost naprej v eno smer, preobremenitev (neskončno) pa v drugo. Med zatiči sem lahko identificiral štiri diode, sklenil sem, da mora biti četrta dioda neke vrste zener ali TVS dioda, saj je bila ravno med napajalnimi zatiči komponente. Lociranje infrardečega oddajnika je bilo enostavno, z njim je bil serijsko upor 89R. Ostala sta mi dve meritvi diod na preostalih dveh zatičih, to sta morala biti dva sprejemnika.

Opomba: Ti senzorji imajo dva sprejemnika za določanje smeri gibanja poleg določanja položaja s štetjem impulzov. Ti dve izhodni valovni obliki sta 90 ° izven faze, to se uporablja za ustvarjanje odštevalnega ali odštevalnega impulza. S sledenjem številu teh impulzov je mogoče natančno določiti položaj tiskalne glave.

Ko sta bila oddajnik in dva sprejemnika nameščena, sem spajkal žice na njihove zatiče, tako da lahko povežem senzor z Arduinom. Preden sem to naredil, sem senzorju dal napetost 3,3 V, nekajkrat potegnil trak med senzorjem in opazoval kvadratni val na izhodih. Frekvenca kvadratnega vala se je spreminjala s hitrostjo gibanja in sklenil sem, da je merilni sistem zdaj pripravljen za povezavo z Arduinom.

Povezovanje Arduina

Priključitev tega novega "senzorja" je zelo enostavna. Samo priključite izhode senzorja na D2 in D3 (zatiči, ki podpirajo prekinitve!), Napajalne vode in kodiranje se lahko začne.

3. korak: Arduino kodiranje

Arduino kodiranje
Arduino kodiranje

Koda Arduino je precej preprosta. Dodelil sem funkcijo, ki se izvede vsakič, ko D2 vidi naraščajoč rob, to je funkcija zamude iz kode Arduino, ki sem jo priložil. Če pogledate signale kvadratnega dajalnika, boste videli to:

  • v eni smeri je faza A logično visoka na vsakem vzhodnem robu faze B
  • v drugi smeri je faza A logično nizka na vsakem vzhodnem robu faze B

To je bila lastnost dajalnika, ki sem ga izkoristil: ker se funkcija elapse izvaja vsakič, ko ima D2 naraščajoč rob, sem napisal le, če to poveča števec, ko je D3 visoko, in ga zmanjša, ko je D3 nizko. To je delovalo na prvi poskus, vrednost števca sem poslal na serijski monitor in opazoval njeno povečanje/zmanjšanje, ko sem premaknil glavo tiskalnika na gred.

Skratka, vdelana programska oprema v funkciji zanke naredi naslednje:

  1. preveri vmesni sprejemni vmesnik za vse vhodne podatke
  2. če so vhodni podatki, preverite, ali je '1' ali ne
  3. če je '1', to pomeni, da programska oprema za osebni računalnik zahteva vrednost števca
  4. pošljite vrednost števca v računalnik po serijski enoti
  5. začni pri 1.

S tem je žoga zdaj na igrišču računalniške programske opreme. Pojdimo v to!

4. korak: Programska oprema Visual Studio C#

Namen programa VS C# je bil prestaviti računsko breme z Arduina na osebni računalnik. Ta programska oprema sprejema podatke, ki jih ponuja Arduino, izračuna in prikaže hitrost v obliki grafa.

Najprej sem poiskal google, kako narediti serijsko komunikacijo v C#. Na MSDN.com sem našel veliko dobrih informacij, skupaj z dobrim primerom, nato pa sem vrgel samo tisto, kar nisem potreboval - v bistvu vse razen bralnega dela. Vrata COM in hitrost sem nastavil tako, da se ujema s hitrostjo Arduina, nato sem le nekajkrat poskusil in vse, kar je prišlo na serijskih vratih, iztisnil v večvrstično polje z besedilom.

Ko so bile vrednosti prebrane, sem lahko preprosto uporabil funkcije readto & split, da sem ločil eno meritev drug od drugega in od ločilnih znakov. Ti so bili narisani na kontrolniku Chart, vrednosti pa so se začele pojavljati na zaslonu.

Če kontrolnika grafikona ne vidite v orodjarni VS, lahko težavo poiščete na Googlu in rešitev najdete tukaj (poiščite odgovor št. 1): povezava

Načelo merjenja

Da bi našli povezavo med štetjem števila in razdaljo, ki jo glava prevozi, smo vrednost štetja izničili, ročno premaknili glavo tiskalnika za 100 mm in opazovali spremembo štetja. Končno smo prišli do naslednjega deleža: 1 število = 0,17094 mm.

Ker lahko poizvedujemo o razdalji in lahko merimo čas med vzorci, lahko izračunamo hitrost, s katero se zgodi premik položaja - lahko izračunamo hitrost!

Zahvaljujoč TMR0 je okvirni časovni razpored programske opreme 50 ms, vendar smo opazili, da ti časovni razporedi niso bili preveč natančni. Dejansko smo po nekaj meritvah hitrosti programske opreme ugotovili, da časovno omejenih 50 ms sploh ni 50 ms. To je pomenilo, da vzorci niso bili odvzeti v določenem intervalu, zato tudi izračun hitrosti ni mogel uporabiti fiksne časovne osnove. Ko smo našli to težavo, je bilo enostavno nadaljevati: vzeli smo razliko v razdalji in časovno razliko ter izračunali hitrost kot D_distance/D_time (namesto D-distance/50ms).

Ker bi naša enačba vrnila hitrost v enotah mm/50ms, moramo to pomnožiti z 1200, da dobimo razdaljo, ki bi jo glava prešla v eni minuti, v [mm/minuti].

Opomba: programska oprema za krmiljenje CNC strojev Mach 3 določa hitrosti podajanja v enotah [mm/minuto]

Filtriranje

Od tega trenutka dalje so bile meritve precej natančne, vendar je bilo na izmerjenem signalu nekaj hrupa. Sumili smo, da je to posledica mehanskih neskladnosti v gredi, sklopki gredi itd., Zato smo se odločili, da jo filtriramo, da dobimo lepo srednjo vrednost tistega, kar se meri.

Dobre prilagoditve programske opreme

Za spreminjanje hitrosti vzorčenja in hitrosti filtriranja med izvajanjem so bile dodane drsne vrstice - po ena za vsako. Prav tako je bila uvedena možnost skrivanja parcel.

5. korak: Rezultati

Rezultati
Rezultati
Rezultati
Rezultati
Rezultati
Rezultati
Rezultati
Rezultati

Ko so bili strojni in programski deli pripravljeni, smo izvedli tri sklope meritev s programsko opremo mach 3 + my, rezultate pa si lahko ogledate na priloženih slikah. Na grafikonih je prikazana izmerjena hitrost s trdno rdečo barvo, povprečje pa s črto modro.

Kot rečeno, izgleda, da Mach 3 te nastavitve hitrosti obdeluje precej natančno, zdaj pa zagotovo vemo:)

Upam, da ste uživali v tem kratkem navodilu o obratnem inženiringu in spreminjanju vode v vino!

Na zdravje!

Priporočena: