Sadržaj:

CNC alat za mjerenje brzine pomaka napravljen od otpada: 5 koraka
CNC alat za mjerenje brzine pomaka napravljen od otpada: 5 koraka

Video: CNC alat za mjerenje brzine pomaka napravljen od otpada: 5 koraka

Video: CNC alat za mjerenje brzine pomaka napravljen od otpada: 5 koraka
Video: Using Our New SUNNEN HONING Machine! | Making a D10 Dozer Barrel | Part 2 2024, Juli
Anonim
CNC alat za mjerenje brzine pomaka napravljen od otpada
CNC alat za mjerenje brzine pomaka napravljen od otpada

Je li netko želio izmjeriti 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. Obuhvatit će dio obrnutog inženjeringa pisača, arduino firmware, PC 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 štampača
  • ručnim alatima za to
  • lemilica, lemljenje, žice
  • multimetar
  • osciloskop ili logički analizator - to nije apsolutno potrebno
  • napajanje
  • mikroskop
  • Arduino nano + pinout
  • PC sa Arduino IDE, Visual Studio 2008 Express + MS Charting alati instalirani
  • (MPU6050 - na kraju ovo nisam iskoristio)
  • spremni da pretražujete sve što ne znate kako da radite

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 sumiranje podataka akcelerometra dati željenu vrijednost - brzinu na svakoj osi. Nakon preuzimanja i izmjene Arduino isječka koji je prikazivao neobrađene podatke na serijskom monitoru, napisao sam mali PC program u Visual Studiju koji je obradio podatke i iscrtao ih na grafikonu radi lakšeg tumačenja. Za ovo sam morao preuzeti i Visual Studio C# Express 2008 i alate za crtanje.

Nakon što sam neko vrijeme kodirao i potražio sve stvari koje su mi bile potrebne za serijsku komunikaciju, završio sam s iscrtanim vrijednostima, ali bez obzira na to što sam radio, 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 za povratnu informaciju o položaju 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 utvrđivanje njegovih tačnih svojstava, bilo je potrebno malo obrnutog inženjeringa da bismo stigli tamo gdje smo htjeli. Nakon pomnog proučavanja mehanizma i elektronike, 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 pisalo ROHM RPI-2150. To me je obradovalo, nada je bila velika da ću pronaći podatkovnu tablicu. Nažalost, ovo je ili stari ili prilagođeni dio - nije bilo tablice s podacima koja se može pronaći bilo gdje na webu. To je značilo da sam morao uzeti stvari u svoje ruke: znajući da ovi senzori obično imaju infracrvenu LED diodu 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 se obično lako nalaze - imaće kondenzatore preko njih i obično su povezane širokim tragovima na PCB -ovima. Tragovi zemlje su često povezani na više jastučića radi boljeg odbijanja buke.

No, ulazni i izlazni pinovi nisu toliko trivijalni. Prilikom mjerenja preko diode, mjerač će pokazati svoj napon prema 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, ovo se koristi za stvaranje impulsa odbrojavanja ili odbrojavanja. Prateći broj ovih impulsa, može se odrediti tačan položaj glave za štampanje.

Kad su emiter i dva prijemnika bili locirani, lemio sam žice na njihove pinove, tako da mogu spojiti senzor s Arduinom. Prije toga, napajao sam senzor sa 3.3V, 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 povezivanje s Arduinom.

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 kod je vrlo jednostavan. Dodijelio sam funkciju koja se izvršava svaki put kada D2 vidi rastuću ivicu, 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 logično visoka na svakoj uzlaznoj ivici faze B
  • u drugom smjeru faza A je logički niska na svakoj uzlaznoj ivici faze B

Ovo je svojstvo kodera koji sam iskoristio: budući da se funkcija elapse izvršava svaki put kada D2 ima rastuću ivicu, 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, firmver radi sljedeće u funkciji petlje:

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

Ovim 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 PC. 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 jednostavno izbacio ono što mi nije trebalo - u osnovi sve osim dijela za čitanje. Postavio sam COM port i brzinu koja se poklapa s onom kod Arduina, a zatim sam samo pokušao i sve što je došlo na serijskom portu izbacio u više redak.

Nakon što su vrijednosti pročitane, mogao sam jednostavno koristiti funkcije readto & split da izoliram 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 vidite kontrolu grafikona u svom VS alatu, problem možete proguglati i pronaći rješenje ovdje (potražite odgovor #1): veza

Princip mjerenja

Da bismo pronašli vezu između broja odbrojavanja i udaljenosti koju glava pređe, nulirali smo vrijednost odbrojavanja, ručno pomaknuli glavu pisača i promatrali promjenu brojača. Konačno smo došli do sljedeće proporcije: 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 grubo softversko vrijeme od 50 ms, ali primijetili smo da ta vremena nisu bila previše točna. U stvari, nakon nekih softverskih mjerenja brzine, otkrili smo da vremenski ograničenih 50 ms uopće nije 50 ms. To je značilo da uzorci nisu uzeti u fiksnom intervalu, pa ni izračunavanje brzine nije moglo koristiti fiksnu vremensku bazu. 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-udaljenosti/50 ms).

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

Napomena: Softver za upravljanje CNC strojevima 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 bilo mjenjanja na mjernom signalu. 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 tokom 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 + my softverom, rezultate možete vidjeti na priloženim slikama. Kasniji eksperimenti pokazali su bolju tačnost, s povećanjem broja filtera i uzorka. Grafikoni prikazuju izmjerenu brzinu punom crvenom bojom, a prosječnu plavom bojom isprekidanom tačkom.

S obzirom na to, izgleda 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čuje se: