27 Nisan 2010 Salı

B100D Deney programı, yeni DLL ve B değişkeni içeriği

İlk çıkarttığımız açık kaynak kodlu B100D_Ornek kartın yeteneklerini gösterme açısından güzel bir bir program olsa da üzerinde deneme yapmak için çok da uygun değil.

Yeni yazdığım B100D_Deney çok daha sade. Öte yandan, home stratejisi geliştirildi ve bazı ufak eklentiler le B100D.DLL de yenilendi. B100D_Ornek programını kullanmaya devam edecekseniz o programla verilen B100D.DLL ve B100D_Card dosyalarını saklayınız. Yapılan değişikliklerden dolayı yeni dll dosya B100D_Ornek ile calısmayacak.

B100D_Ornek programını, yeni sürümü çıkartılan dll dosyaya ile kullanmak istiyorsanız programda değişiklikler yapmanız gerekecek ve bunu sizlere bırakıyorum.

Yeni uygulamalarınızı B100D_Deney kodları üzerinde geliştiriniz.

B100D_Deney kodları: http://bikomak.com/B100-D/B100D_Deney.rar
Yeni programın unit1 içeriği http://bikomak.com/B100-D/Unit1.txt

Yeni tanımlanan B structure değişkeni aşağıdaki üye değişkenleri içerir.

Xpos:integer; // X eksen motorunun pozisyonu
YPos:integer; // Y eksen motorunun pozisyonu
ZPos:integer; // Z eksen motorunun pozisyonu
Gonderilen:integer; // Karta verilmiş görevlerin (komutların) sayısı
Bitenler:integer; // Kartın yerine getirdiği görevlerin (komutların) sayısı
Hata:Byte; // Kartın karşılaştığı hatanın kodu Not1
Status:Byte; // Kartın o anki durumuna ilişkin bilgiler Not2
HomeFlag:Byte; // Home işleminin durumu Not3
Imza:word; // Not4
AcilSp:boolean; // Acil Stop butonunun konumu
ExtSw1:boolean; // External 1 butonunun konumu
ExtSw2:boolean; // External 2 butonunun konumu

Örneğin X motorunun herhangi bir andaki pozisyonunu B.XPos olarak öğrenebilirsiniz.

Bu veriler, işletim sisteminin gecikmeli yapısından dolayı gerçek zamanlı değerleri içermez.

Not1: Hata

Bit 0: Home Sw (Home Sw nin aktif olması hata olarak değerlendirilir)
Bit 1: Acil Stop 
Bit 2: Dairesel veri hatası
Bit 3: Interrupt   (Kullanıcıyı ilgilendirmiyor)

Not2: Status

Bu değişken kullanıcıyı ilgilendirmemektedir. User interface prrogramında kullanmayınız. Debug amaçlıdır. DLL rutinleri kullanmaktadır.

Bit 7:  Problem tespit edildi
Bit 6:  Hareket var
Bıt 5:  Buffer dolu
Bıt 4:  Check Sum Hatası
Bit 3:  Ext2 sw
Bit 2:  Ext1 sw
Bit 1:  Acil sw
Bit 0:  Home sw

Not3: Home Flag

Bit 0=1 Home X yapılmış, 0 ise Home X işlemi yapılmalı
Bit 1=1 Home Y yapılmış, 0 ise Home Y işlemi yapılmalı
Bit 2=1 Home Z yapılmış, 0 ise Home Z işlemi yapılmalı

Not4: Imza

B100D kartına peşpeşe komutlar gönderildikten sonra imza komutu işletilirse, kart imza komutunu gördüğü anda daha önce verilmiş tüm görevlerin bitmesini bekler ve ardından imzayı tastikler. İmzanın tastiklenip tastiklenmediğini B.Imza içeriğini Imza komutu ile gönderdiğiniz imzanızı karşılaştırarak anlayabilirsiniz.

Bu özellik, kart ile ana programı senkronlamak için eklenmiştir. Kullanım şekli aşağıdaki gibidir.

Imza(1234); // en son gönderdiğimiz komutu imzalama işlemi
.......
.......
if B.Imza=1234 then // imzalanan komut işlenmişmi?
begin
end;

24 Nisan 2010 Cumartesi

Parametre.Exe ve ReadParam(); Fonksiyonu

B100D üzerinde program geliştirirken bazı temel program parçacıklarından yararlanmak işleri kolaylaştıracaktır.

Bu programları yeri geldikçe ekleyeceğim.

İlk program, parametrelerinizi kontrol edip hata yoksa diske yazan Parametre.Exe dir.
Program çalıştırıldığında mekanizmanızla ilgili parametreleri sizden ister ve B100D_Param.Txt adıyla diskinize yazar. Parametre.Exe adresi: www.bikomak.com/B100-D/Parametre.rar

Geliştirilen user interface programında parametrelere kolayca ulaşmayı sağlayan butonun sıkıntı yarattığı gözlenmiştir. Bu nedenle parametreler, uygulama programından değil Parametre.Exe programından değiştirilmektedir.

Uygulama programınıza aşağıdaki ReadParam fonksiyonunu eklemelisiniz.

http://bikomak.com/B100-D/ReadParam.txt

SysVar Değişkenleri

B100D kartına program geliştirecekseniz SysVar değişkeninin (structure) sakladığı değerleri ve anlamlarını bilmek zorunsadısınız.

SwOfset: integer; // Home switch den uzaklaşma mesafesi (mikrometre)
Max_Mx: integer; // Makinenin X ekseninin boyu (mikrometre)
Max_My: integer; // Makinenin Y ekseninin boyu (mikrometre)
Max_Mz: integer; // Makinenin Z ekseninin boyu (mikrometre)
XRes: word; // X de 1mm ilerleyebilmek için sürücüye gönderilecek pals sayısı
YRes: word; // Y de 1mm ilerleyebilmek için sürücüye gönderilecek pals sayısı
ZRes: word; // Z de 1mm ilerleyebilmek için sürücüye gönderilecek pals sayısı
Dir: byte; // Motor sürücülerin sinyal tanımı (Not1)
AcilButon: boolean; // B100D uygulamanızda AcilStop butonu varsa True
SyncPwm: boolean; // Senkronize Pwm modu (Not2)
EmbPwm: boolean; // Gömülü pwm modu (Not3)
XYModu: boolean; // 2.5 Eksen uygulaması (Not4)
Ivme: word; // Ivme katsayısı 1...32767
Fmin: word; // Sıçrama hız katsayısı 1...32767
Fmax: word; // Koşarak yerdeğiştirme hız katsayısı 1...32767
Fcut: word; // Kesim esnasındaki ilerleme hız katsayısı 1...32767
Adr: ^integer; // Komut ve paramelerin saklandığı Buffer Adresi
Form1Handle: integer; // Form1 e ait handle
FormMsg: integer; // WM_USER+1
DispMsg: integer; // WM_USER+2
ThrdMsg: integer; // WM_USER+3
B100Msg: integer; // WM_USER+4

Not1:

Bit0: Referans X yönünü belirler.
Bit2: Referans Y yönünü belirler.
Bit4: Referans Z yönünü belirler.

Bitler doğru değer aldıysa, Home işleminde hareketli aksamlar Home switchlere doğru yaklaşır. Yanlış değer aldıysa eksenler home switchden uzaklaşırlar.

Bit1: X Clk polaritesi.
Bit3: Z Clk polaritesi.
Bit5: Z Clk polaritesi.

1: Sürücüler, Clk girişinin 0 dan 1 e yükseldiği durumda motora adım attrırıyor
0: Sürücüler, Clk girişinin 1 den 0 a düştüğü durumda motora adım attrırıyor

(Not2) SyncPwm modu

Bu modda pwm değeri XY eksenindeki 2 bileşenli hareketin hız vektöründen üretilir.

Sistem hızlı hareket ediyorsa PWM duty değeri artar, sistem yavaş hareket ediyorsa Pwm duty değeri düşer. PWM çıkışına bağlı 4. eksenin hızı XY hareketleri ile senkronize olur.

PWM sinyali RC tipi filitreden geçirilirek elde edilecek kontrol voltajı AC motor yada servo motor sürücü için referans hız bilgisi olarak kullanılır.

Bu mod, özellikle dikiş makinesi gibi uygulamalarda dikiş aralığının XY hareketinin anlık hızından etkilenmemesi için kullanılır.

(Not 3) Gömülü pwm modu

Bu modda hareket komutuna ait parametrelerdeki pwm değeri kullanılır.

(Not4) 2.5 Eksen modu

Bu modda Z eksenine ait ZClk ve ZDir pinleri devre dışı kalır ancak bu pinler digital olarak yazılımla 1-0 şeklinde değer atanabilir hale gelir.

23 Nisan 2010 Cuma

Home Switchleri hakkında





Home switch girişine bir buton ve buna paralel olarak bağlayacağınız LED ilk denemelerinizde çok faydalı olacaktır.
Led ışıl ışıl parıldamasa da en azından butonun basılı olup olmadığını kolayca anlamanıza imkan verir.

Böyle bir görselliğe gerek olmadığını düşünebilirsiniz. Ancak 3 eksene ait butonların üçünün de bir birine paralel bağlı olması nedeniyle home işlemi biraz karmaşıktır.
Home işlemi başlatıldığında mekanizmalar sıra ile Home Switche çarpmak üzere harekete geçerler. (Sıralama Z, X, Y)
Home switche basıldığında hareketli eksen yavaşça frenleyerek durur. Durma işlemi çok sert gerçekleşmez. Aksi takdirde mekanizmada büyük sarsıntı oluşur.
Switch kapandığında mekanizma, switchi bir miktar geçer ve motor ters yönde çok yavaşça dönerek mekanizmayı switchten SysVar.SwOfset mesafesi kadar uzaklaştırır.
Switche carpan mekanizmanın ne zaman duracagı SysVar.Ivme, SysVar.Fmin gibi parametrelere bağlıdır. Sistem kısa zamanda duramayıp switchi parçalayabilir. Bu nedenle Home Switchlerinin hareket yönüne dik yerleştirilmemesi gerekir.

Home işlemi için makaralı switch yada daha iyisi optik-yarıklı sensör kullanmak gerekir.








Yandaki şemada optik yarıklı sensörle yapılmış home switch uygulaması görülmektedir. Bu devreden üç adet yapıp çıkışlarını B100D kartının Home Switch girişine bağlayabilirsiniz. Işığı kesen levhanın yeterince uzun olması önemlidir. Levha sensör yarığına girdikten sonra motorlar aniden durmayıp ilerlemeye devam etseler dahi levha sensörün yarığında kalmaya devam etmelidir. Aksi takdirde home işlemi yapılamayabilir.

22 Nisan 2010 Perşembe

B100D ile ilk yazılım deneyimi


Öncelikle 330 Ohm direnç, led ve 5V dan oluşan malzemelerle yanda görülen bağlantıyı yapınız.





B100D_Ornek.Dpr Delphi proje dosyasını tıklayın ve form üzerine buton ekleyin. Butonun click procedure başlığına MotorOn(); ve Pwm(1000); komutlarını ekleyin.

procedure Tform1.Buton1Click(Sender: Tobject);
begin
MotorOn();
Pwm(1000);
end;

Programı çalıştırın. Init tuşuna basın.

Usb modül hazır
B100 işlemcisi harekete geçirildi
B100 kartı hareket komutları için hazır mesajlarını alacaksınız.
Şimdi, forma eklediğiniz Butonu tıkladığınızda pwm çıkışına bağladığınız ledin ışıldadığını göreceksiniz. Işığın parlaklığını Pwm(1000); satırındaki 1000 rakamı değiştirerek ayarlayabilirsiniz. Bu değeri 0 ile 4095 arasında değiştirebilirsiniz.

Foruma bir başka buton daha ekleyip bunun click procedure içine MotorOff(); yazarsanız bu buton tıklandıgında lediniz sönecektir. Form üzerine ekleyeceğiniz ayar çubuğu (ScrollBar) ile ledin ışığını program çalışırken de ayarlayabilirsiniz.

Bunun için ScrollBar1Change procedure içine MotorOn(); ve Pwm(ScrollBar1.position); komutlarını ekleyin.
Object Inspector penceresinde Properties menüsünden ScrollBar ın min değerini 0, max değerini de 4095 olarak set ederseniz ledin ışığını en kısıktan en parlak değere kadar dilediğiniz gibi ayarlayabilirsiniz.

procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
MotorOn();
Pwm(ScrollBar1.Position);
end;


Küçük güçlü 9..12v 1Amp. gibi fırçalı DC motorları PWM çıkışından kontrol etmek isterseniz yukarıda şeması verilen devreyi kurabilirsiniz.

Örnek uygulama (II)


Örnek uygulama (I)




B100D Kartını tanıyalım.

B100D, mekatroniks uygulamaları için geliştirilmiş hareket denetleme kartıdır. Usb kablo ile bilgisayara bağlanır ve enerjisini PC den alır. Motor sürücülerinize Clk ve Dir sinyalleri ile hükmeder.

Görsel dillerle yazılım geliştirme imkanı sunar.

Uygulama alanları: 2.5 ve 3 eksen cnc makineler, Robot kolu projeleri, Deney seti


B100D, Usb konnektörü haricinde 16 adet pine sahiptir. Kartin temel özellikleri, 3 Eksen için clk dir çıkışları, spindle motor için pwm hız kontrol çıkışı, home switch, acil stop ve 2 adet harici buton girişi, max 40Khz adımlama frekansı, dairesel ve doğrusal interpolasyon, programlanabilir hız profili, programlanabilir clk ve dir polaritesi, usb 2.0 interface. Açık kaynak yazılım örnekleri.

Bu devreyi B100D ile gerçekleştireceğiniz projelerde spindle motor devir sayısını yazılımla kontrol etmek için kullanabilirsiniz.

Blog Arşivi

Bu karta sahip olmak isterminiz

Bu Blogda Ara