İçindekiler:

Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti: 5 Adım
Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti: 5 Adım

Video: Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti: 5 Adım

Video: Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti: 5 Adım
Video: CNC TORNA OPERATÖRLÜĞÜ ÖĞRENİYORUM - 1 2024, Kasım
Anonim
Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti
Hurdadan Yapılan CNC Besleme Hızı Ölçme Aleti

Hiç kimse bir CNC makinesinde gerçek ilerleme hızını ölçmek istedi mi? Muhtemelen hayır, bir CNC işinden sonra freze uçları sağlam olana kadar… ama düzenli olarak kırılmaya başladıklarında, belki de araştırma zamanı gelmiştir. Bu talimatta, bir CNC makinesinin gerçek besleme hızını belirleme görevini takip edebilirsiniz. Bir yazıcının tersine mühendislik kısmını, arduino bellenimini, PC yazılımını ve meslektaşlarımın yardımıyla elde ettiğim sonuçları ve hazineye dönüşen bir çöpü kapsayacak.

Adım 1: Projeyi Çalıştırmak İçin Kullanılan Malzemeler, Araçlar, Cihazlar

Bunun üzerinde çalışmaya başladığımda, ihtiyacımız olacak şeylerin kısa bir listesini düşündüm:

  • demonte yazıcı taşıyıcı mekanizması
  • Bunu düzeltmek için el aletleri
  • havya, lehim, teller
  • multimetre
  • osiloskop veya mantık analizörü - bu kesinlikle gerekli değildir
  • güç kaynağı
  • mikroskop
  • Arduino nano + pin çıkışı
  • Arduino IDE'li PC, Visual Studio 2008 Express + MS Charting araçları kurulu
  • (MPU6050 - Bunu kullanmadım)
  • nasıl yapacağınızı bilmediğiniz her şeye göz atmaya istekli

Başlangıçta, bir MPU6050 kartının, üç eksende de aynı anda besleme hızını ölçmeme izin vereceğini düşündüm. İçinde ivmeölçer bulunduğundan, ivmeölçer verilerini toplamanın bana istenen değeri, yani her eksendeki hızı vereceğinden emindim. Seri monitörde ham verileri görüntüleyen bir Arduino parçacığını indirip değiştirdikten sonra, Visual Studio'da verileri işleyen küçük bir PC programı yazdım ve daha kolay yorumlanması için bir çizelgeye çizdim. Bunun için hem Visual Studio C# Express 2008'i hem de grafik araçlarını indirmem gerekti.

Bir süre kodlama yaptıktan ve seri iletişim için gerekli olan her şeyi araştırdıktan sonra, çizilen değerlere ulaştım ama ne yaptıysam kullanılamazdı. Küçük ama ani hareketler büyük artışlara neden olurken, daha uzun yolculuklar listelerde bile görünmezdi. MPU6050'yi iki gün boyunca çekiçledikten sonra sonunda pes ettim ve başka bir şeye döndüm - demonte bir yazıcının konum geri bildirim mekanizması.

2. Adım: Yapılması Gereken Donanım İşleri

Yapılması Gereken Donanım İşleri
Yapılması Gereken Donanım İşleri
Yapılması Gereken Donanım İşleri
Yapılması Gereken Donanım İşleri
Yapılması Gereken Donanım İşleri
Yapılması Gereken Donanım İşleri
Yapılması Gereken Donanım İşleri
Yapılması Gereken Donanım İşleri

Tersine mühendislik

Elbette, yazıcı mekanizmasının tam özelliklerini belirlemek için kullanabileceğim bir parça numarası yoktu, istediğimiz yere ulaşmak için biraz tersine mühendislik gerekiyordu. Mekanizmayı ve elektroniği yakından inceledikten sonra, ilk işin optik sensör pinlerinin tanımlanması gerektiğine karar verdim. Bu, her şeyi Arduino ile arayüzlemek için yapılmalıydı. Siyah plastik parçayı söktüm, PCB'yi çıkardım ve sensörü inceledim: üzerinde ROHM RPI-2150 yazılıydı. Bu beni mutlu etti, bir veri sayfası bulacağıma dair umudum yüksekti. Ne yazık ki bu ya eski ya da özel bir bölüm - web'de hiçbir yerde bulunabilecek bir veri sayfası yoktu. Bu, işleri kendi ellerime almam gerektiği anlamına geliyordu: Bu sensörlerin genellikle bir kızılötesi LED'i ve içinde iki foto-transistör olduğunu bilerek, bir multimetre aldım, diyot ölçüm moduna ayarladım ve pimler arasında ölçüm yapmaya başladım.

Güç pinlerini bulmak genellikle kolaydır - aralarında kapasitörler bulunur ve genellikle PCB'lerde geniş izlerle bağlanırlar. Daha iyi gürültü reddi için zemin izleri genellikle birden fazla pede bağlanır.

Ancak giriş ve çıkış pinleri o kadar da önemsiz değil. Bir diyot üzerinden ölçüm yaparken, sayaç bir yönde ileri gerilimini ve diğer yönde aşırı yük (sonsuz) gösterecektir. Pimler arasında dört diyot tanımlayabildim, dördüncü diyotun, bileşenin güç pimleri arasında olduğu için bir tür zener veya TVS diyotu olması gerektiği sonucuna vardım. Kızılötesi yayıcıyı bulmak kolaydı, onunla seri olarak bir 89R direnç vardı. Kalan iki pimde iki diyot ölçümü ile kaldım, bunlar iki alıcı olmalıydı.

Not: Bu sensörler, darbeleri sayarak konum belirlemenin yanı sıra hareket yönünü de belirleyebilmek için iki alıcıya sahiptir. Bu iki çıkış dalga biçimi 90° faz dışıdır, bu bir yukarı sayım veya bir geri sayım darbesi üretmek için kullanılır. Bu darbelerin sayısı takip edilerek baskı kafasının tam konumu belirlenebilir.

Verici ve iki alıcı bulunduğunda, kabloları pinlerine lehimledim, böylece sensörü Arduino ile arayüzleyebilirim. Bunu yapmadan önce sensörü 3,3V ile besledim, şeridi sensör arasında birkaç kez çektim ve çıkışlarda kare dalga gözlemledim. Kare dalganın frekansı hareket hızına göre değişiyordu ve ölçüm sisteminin artık Arduino'ya bağlanmaya hazır olduğu sonucuna vardım.

Arduino'yu Bağlamak

Bu yeni 'sensörü' bağlamak çok kolaydır. Sensör çıkışlarını D2 ve D3'e (kesilebilir pinler!) ve güç kaynağı hatlarına bağlamanız yeterlidir, kodlama başlayabilir.

Adım 3: Arduino Kodlama

Arduino Kodlama
Arduino Kodlama

Arduino kodu oldukça basittir. D2 her yükselen kenar gördüğünde çalışan bir fonksiyon atadım, bu, eklediğim Arduino kodundan geçen fonksiyondur. İkinci dereceden bir kodlayıcının sinyallerine bakarsanız şunu göreceksiniz:

  • bir yönde A fazı, her B fazında yükselen kenarda mantık yüksektir
  • diğer yönde A fazı her B fazında yükselen kenarda mantık düşüktür

Bu, yararlandığım kodlayıcının özelliğiydi: elapse işlevi D2'nin her yükselen kenarı olduğunda çalıştığından, D3 yüksek olduğunda bir sayacı artırıyorsa ve D3 düşük olduğunda azaltıyorsa yazdım. Bu ilk denemede işe yaradı, sayaç değerini seri monitöre gönderdim ve yazıcı kafasını mil üzerinde hareket ettirdiğimde arttığını/azaldığını izledim.

Uzun lafın kısası, bellenim döngü işlevinde aşağıdakileri yapar:

  1. herhangi bir gelen veri için seri alma arabelleğini kontrol eder
  2. gelen veri varsa, '1' olup olmadığını kontrol edin
  3. '1' ise, PC yazılımının sayaç değerini talep ettiği anlamına gelir.
  4. sayaç değerini seri olarak PC'ye gönder
  5. 1'de yeniden başlayın.

Bununla, top artık PC yazılımının sahasında. Hadi buna girelim!

4. Adım: Visual Studio C# Yazılımı

VS C# programının amacı, hesaplama yükünü Arduino'dan PC'ye kaydırmaktı. Bu yazılım Arduino'nun sağladığı verileri alır, hızı hesaplar ve bir grafik şeklinde görüntüler.

İlk yaptığım google'da C# ile seri iletişimin nasıl yapıldığını öğrenmekti. MSDN.com'da iyi bir örnekle birlikte birçok iyi bilgi buldum, sonra ihtiyacım olmayan şeyi attım - temelde okuma kısmı hariç her şeyi. COM bağlantı noktasını ve hızı Arduino'nunkiyle eşleşecek şekilde ayarladım, sonra birkaç deneme yaptım ve seri bağlantı noktasında gelen her şeyi çok satırlı bir metin kutusuna döktüm.

Değerler okunduktan sonra, bir ölçümü birbirinden ve sınırlayıcı karakterlerden ayırmak için readto & split işlevlerini kullanabilirdim. Bunlar bir Chart kontrolüne çizildi ve değerler ekranda görünmeye başladı.

VS araç kutunuzda Grafik kontrolünü göremiyorsanız, sorunu google'da görebilir ve çözümü burada bulabilirsiniz (cevap 1'i arayın): link

ölçüm prensibi

Sayım sayısı ile kafanın kat ettiği mesafe arasındaki bağlantıyı bulmak için sayım değerini sıfırladık, yazıcı kafasını elle 100 mm hareket ettirdik ve sayımlardaki değişimi gözlemledik. Sonunda şu oranı bulduk: 1 sayı = 0.17094mm.

Mesafeyi sorgulayabildiğimiz ve örnekler arasındaki süreyi ölçebildiğimiz için konum kaymasının meydana gelme hızını hesaplayabiliriz - hızı hesaplayabiliriz!

TMR0 sayesinde 50ms gibi kaba bir yazılım zamanlaması var ama bu zamanlamaların çok doğru olmadığını gözlemledik. Aslında, bazı yazılım hız ölçümlerinden sonra, zamanlanmış 50ms'nin hiç 50ms olmadığını gördük. Bu, numunelerin sabit aralıklarla alınmadığı anlamına geliyordu, bu nedenle hız hesaplaması da sabit bir zaman tabanı kullanamazdı. Bu sorunu bulduktan sonra devam etmek kolaydı: mesafe ve zaman farkını aldık ve hızı D_mesafe/D_zaman olarak hesapladık (D-mesafesi/50ms yerine).

Ayrıca, denklemimiz hızı mm/50ms cinsinden döndüreceğinden, kafanın bir dakikada kat edeceği mesafeyi [mm/dakika] olarak bulmak için bunu 1200 ile çarpmamız gerekir.

Not: Mach 3 CNC freze kontrol yazılımı, ilerleme oranlarını [mm/dakika] biriminde tanımlar.

filtreleme

Bu noktadan itibaren, ölçümler oldukça doğru görünüyordu, ancak ölçülen sinyalde biraz gürültü vardı. Bunun şaft, şaft kaplini vb.'deki mekanik tutarsızlıklardan kaynaklandığından şüphelendik, bu yüzden ölçülenin güzel bir ortalama değerini elde etmek için filtrelemeye karar verdik.

Yazılımda ince ayarlar

Çalışma zamanı sırasında örnekleme hızını ve filtre hızını değiştirmek için kaydırma çubukları eklendi - her biri için bir tane. Ayrıca, arsaları gizleme yeteneği de tanıtıldı.

Adım 5: Sonuçlar

Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar
Sonuçlar

Donanım ve yazılım parçaları hazır olduktan sonra, mach 3 + yazılımım ile üç set ölçüm yaptık, sonuçları ekteki resimlerde görebilirsiniz. Daha sonraki deneyler, hem filtre hem de örnek oranları artırılarak daha iyi doğruluk gösterdi. Grafikler, ölçülen hızı düz kırmızı ile ve ortalamayı kesikli mavi ile gösterir.

Bununla birlikte, Mach 3 bu hız ayarlarını oldukça doğru bir şekilde ele alıyor gibi görünüyor, ancak artık kesin olarak biliyoruz:)

Umarım tersine mühendislik ve suyu şaraba çevirmeyle ilgili bu kısa talimatı beğenmişsinizdir!

Şerefe!

Önerilen: