Sadržaj:

CNC mjerni alat za brzinu pomaka napravljen od otpada: 5 koraka
CNC mjerni alat za brzinu pomaka napravljen od otpada: 5 koraka

Video: CNC mjerni alat za brzinu pomaka napravljen od otpada: 5 koraka

Video: CNC mjerni alat za brzinu pomaka napravljen od otpada: 5 koraka
Video: The HOLY GRAIL of Precision Machining | SIP Hydroptic 6 Jig Borer 2024, Srpanj
Anonim
CNC alat za mjerenje brzine pomaka izrađen od otpada
CNC alat za mjerenje brzine pomaka izrađen od otpada

Je li netko ikada želio mjeriti stvarnu brzinu pomaka na CNC stroju? Vjerojatno ne, sve dok glodalice ne budu netaknute nakon CNC posla … ali kad se počnu redovito lomiti, možda je vrijeme za istraživanje. U ovom uputstvu možete slijediti potragu za određivanjem stvarne brzine pomaka CNC stroja. Pokrivat će dio obrnutog inženjeringa pisača, arduino firmware, računalni softver i rezultate koje sam dobio uz pomoć svojih kolega, a smeće se pretvorilo u blago.

Korak 1: Materijali, alati i uređaji koji se koriste za pokretanje projekta

Kad sam počeo raditi na ovome, smislio sam kratak popis stvari koje će nam trebati:

  • rastavljeni mehanizam nosača pisača
  • ručnim alatima za to
  • lemilica, lem, žice
  • multimetar
  • osciloskop ili logički analizator - to nije apsolutno potrebno
  • napajanje
  • mikroskop
  • Arduino nano + pinout
  • Računalo s Arduino IDE, Visual Studio 2008 Express + MS Charting alati instalirani
  • (MPU6050 - na kraju ovo nisam koristio)
  • spremni pregledavati sve što ne znate učiniti

U početku sam mislio da će mi MPU6050 ploča omogućiti mjerenje brzine pomaka na sve tri osi odjednom. Imajući akcelerometar u sebi, bio sam siguran da će mi zbrajanje podataka akcelerometra dati željenu vrijednost - brzinu na svakoj osi. Nakon što sam preuzeo i izmijenio Arduino isječak koji je prikazivao neobrađene podatke na serijskom monitoru, napisao sam mali računalni program u Visual Studiju koji je obradio podatke i iscrtao ih na grafikonu radi lakšeg tumačenja. Za to sam morao preuzeti i Visual Studio C# Express 2008 i alate za crtanje.

Nakon što sam neko vrijeme kodirao i potražio sve što mi je potrebno za serijsku komunikaciju, završio sam s iscrtanim vrijednostima, ali bez obzira na to što sam učinio, nije bilo upotrebljivo. Mali, ali nagli pokreti rezultirali bi velikim skokovima, dok se duža putovanja ne bi ni pojavila na ljestvicama. Nakon dva dana čekića MPU6050, konačno sam odustao i okrenuo se nečemu drugom - mehanizmu povratne sprege položaja rastavljenog pisača.

Korak 2: Hardverske stvari koje je potrebno učiniti

Hardverske stvari koje je potrebno učiniti
Hardverske stvari koje je potrebno učiniti
Hardverske stvari koje je potrebno učiniti
Hardverske stvari koje je potrebno učiniti
Hardverske stvari koje je potrebno učiniti
Hardverske stvari koje je potrebno učiniti
Hardverske stvari koje je potrebno učiniti
Hardverske stvari koje je potrebno učiniti

Obrnuti inženjering

Naravno, mehanizam pisača nije imao broj dijela koji sam mogao upotrijebiti za određivanje njegovih točnih svojstava, bilo je potrebno malo obrnutog inženjeringa da bismo stigli tamo gdje smo htjeli. Nakon što sam pomno proučio mehanizam i elektroniku, odlučio sam da prva stvar mora biti identifikacija pinova optičkog senzora. To je trebalo učiniti kako bi se cijela stvar povezala s Arduinom. Rastavio sam crni plastični dio, izvadio PCB i pregledao senzor: na njemu je bio napisan ROHM RPI-2150. To me razveselilo, nada je bila velika da ću pronaći podatkovnu tablicu. Nažalost, ovo je ili stari ili prilagođeni dio - nigdje na webu nije bilo podatkovnog lista. To je značilo da sam morao uzeti stvari u svoje ruke: znajući da ti senzori obično imaju infracrvenu LED i dva foto-tranzistora unutra, zgrabio sam multimetar, postavio ga na način mjerenja dioda i počeo mjeriti između pinova.

Igle za napajanje obično je lako pronaći - preko njih će se nalaziti kondenzatori, a obično su povezani širokim tragovima na PCB -ovima. Tragovi uzemljenja često su spojeni na više jastučića radi boljeg odbijanja buke.

No, ulazi i izlazi nisu tako trivijalni. Prilikom mjerenja preko diode, mjerač će pokazati svoj napon naprijed u jednom smjeru, a preopterećenje (beskonačno) u drugom. Uspio sam identificirati četiri diode između pinova, zaključio sam da četvrta dioda mora biti neka vrsta zener ili TVS diode, jer je bila točno između pinova za napajanje komponente. Lociranje infracrvenog odašiljača bilo je jednostavno, s njim je u seriji bio i otpornik od 89R. Ostala su mi dva mjerenja dioda na preostala dva pina, to su morala biti dva prijemnika.

Napomena: Ovi senzori imaju dva prijemnika kako bi mogli odrediti smjer kretanja uz određivanje položaja brojenjem impulsa. Ova dva izlazna valna oblika su 90 ° izvan faze, to se koristi za stvaranje impulsa odbrojavanja ili odbrojavanja. Prateći broj ovih impulsa, može se odrediti točan položaj glave za ispis.

Kad su se odašiljač i dva prijemnika smjestili, lemio sam žice na njihove igle, tako da mogu spojiti senzor s Arduinom. Prije nego što sam to učinio, napajao sam senzor s 3,3 V, povukao traku između senzora nekoliko puta i promatrao kvadratni val na izlazima. Učestalost kvadratnog vala varirala je s brzinom kretanja i zaključio sam da je mjerni sustav sada spreman za spajanje na Arduino.

Povezivanje Arduina

Spajanje ovog novog 'senzora' vrlo je jednostavno. Samo spojite izlaze senzora na D2 i D3 (pinovi sposobni za prekid!), I vodove za napajanje i kodiranje može započeti.

Korak 3: Arduino kodiranje

Arduino kodiranje
Arduino kodiranje

Arduino kôd je vrlo jednostavan. Dodijelio sam funkciju koja se izvršava svaki put kada D2 vidi rastući rub, ovo je funkcija protekla iz Arduino koda koji sam priložio. Ako pogledate signale kvadratnog kodera, vidjet ćete ovo:

  • u jednom smjeru faza A je logika visoka na svakom rastućem rubu faze B
  • u drugom smjeru faza A je logički niska na svakom rastućem rubu faze B

Ovo je svojstvo kodera koji sam iskoristio: budući da se funkcija elapse izvršava svaki put kada D2 ima rastući rub, upravo sam napisao ako to povećava brojač kada je D3 visoko, a smanjuje ga kada je D3 nisko. Ovo je uspjelo u prvom pokušaju, poslao sam vrijednost brojača na serijski monitor i gledao kako se povećava/smanjuje kada sam pomaknuo glavu pisača na vratilu.

Ukratko, firmware radi sljedeće u funkciji petlje:

  1. provjerava ima li u međuspremniku serijskog prijema ulaznih podataka
  2. ako ima ulaznih podataka, provjerite je li to '1' ili ne
  3. ako je to '1', to znači da računalni softver traži vrijednost brojača
  4. pošaljite vrijednost brojača na računalo serijski
  5. početi ispočetka u 1.

Time je lopta sada na terenu za PC softver. Uđimo u to!

Korak 4: Softver Visual Studio C#

Svrha programa VS C# bila je prebacivanje računarskog opterećenja s Arduina na računalo. Ovaj softver prima podatke koje Arduino pruža, izračunava i prikazuje brzinu u obliku grafikona.

Ono što sam prvo učinio bilo je proguglati kako se izvodi serijska komunikacija u C#. Našao sam puno dobrih informacija na MSDN.com zajedno s dobrim primjerom, a onda sam samo izbacio ono što mi nije trebalo - u osnovi sve osim dijela za čitanje. Postavio sam COM port i brzinu koja se podudara s onom kod Arduina, a zatim sam samo pokušao i sve što je došlo na serijskom portu izbacio u tekstualni okvir s više redaka.

Nakon što su vrijednosti pročitane, mogao sam jednostavno koristiti funkcije readto & split kako bih izolirao jedno mjerenje jedno od drugog i od znakova razgraničenja. One su iscrtane na kontroli grafikona, a vrijednosti su se počele pojavljivati na ekranu.

Ako ne možete vidjeti kontrolu grafikona u svom VS alatu, problem možete proguglati i pronaći rješenje ovdje (potražite odgovor #1): veza

Princip mjerenja

Kako bismo pronašli vezu između broja odbrojavanja i udaljenosti koju glava pređe, nulirali smo vrijednost odbrojavanja, ručno pomaknuli glavu pisača za 100 mm i promatrali promjenu brojača. Konačno smo došli do sljedećeg omjera: 1 broj = 0,17094 mm.

Budući da možemo pitati udaljenost i možemo mjeriti vrijeme između uzoraka, možemo izračunati brzinu kojom se događa pomak položaja - možemo izračunati brzinu!

Zahvaljujući TMR0 postoji okvirno vrijeme softvera od 50 ms, ali primijetili smo da ta vremena nisu bila previše točna. Zapravo, nakon nekih softverskih mjerenja brzine, otkrili smo da vremenski ograničenih 50 ms uopće nije 50 ms. To je značilo da se uzorci nisu uzimali u fiksnim intervalima, pa se ni pri izračunavanju brzine nije mogla koristiti fiksna vremenska baza. Nakon što smo pronašli ovaj problem, bilo je lako krenuti dalje: uzeli smo razliku u udaljenosti i razliku u vremenu i izračunali brzinu kao D_distanca/D_ vrijeme (umjesto D-udaljenost/50 ms).

Također, budući da bi naša jednadžba vratila brzinu u jedinicama mm/50ms, moramo je pomnožiti s 1200 kako bismo dobili udaljenost koju bi glava prešla u jednoj minuti, u [mm/minuti].

Napomena: Softver za upravljanje CNC mlinovima Mach 3 definira brzine pomaka u jedinicama od [mm/minutu]

Filtriranje

Od ovog trenutka pa nadalje, činilo se da su mjerenja prilično točna, ali je na izmjerenom signalu bilo šuma. Sumnjali smo da je to posljedica mehaničkih nedosljednosti u vratilu, spojke vratila itd., Pa smo odlučili to filtrirati kako bismo dobili lijepu srednju vrijednost onoga što se mjeri.

Fina prilagođavanja softvera

Kako bi se promijenila brzina uzorkovanja i brzina filtriranja tijekom izvođenja, dodane su trake za pomicanje - po jedna za svaku. Također, uvedena je i mogućnost skrivanja parcela.

Korak 5: Rezultati

Rezultati
Rezultati
Rezultati
Rezultati
Rezultati
Rezultati
Rezultati
Rezultati

Nakon što su hardverski i softverski dijelovi bili spremni, proveli smo tri seta mjerenja sa mach 3 + mojim softverom, rezultate možete vidjeti na priloženim slikama. Kasniji eksperimenti pokazali su bolju točnost, s povećanjem broja filtera i uzorka. Grafikoni prikazuju izmjerenu brzinu punom crvenom bojom, a prosječnu plavom bojom s crticama.

S obzirom na to, čini se da Mach 3 prilično precizno upravlja ovim postavkama brzine, ali sada znamo sigurno:)

Nadam se da ste uživali u ovom kratkom uputstvu o obrnutom inženjeringu i pretvaranju vode u vino!

Živjeli!

Preporučeni: