Baskı Devre Kartı Delme Makinesi – V
Yazı dizimizin dördüncü bölümü. Bilgisayar kontrollü baskı devre kartı delme makinesi (CNC PCB Drilling Machine) yapmak isteyenler, gerçekleştirilmiş olan bu projeye ilişkin yazı dizisini kaçırmasınlar! MAXIMUS'un hikayesi devam ediyor!
MCU Yazılımı Akış Diyagramı
MCU Yazılımı
MCU yazılımı, kontrol kartını yöneten yazılımdır. Tüm PC haberleşmesi ve step motor sürücülerinin kontrolü PIC16F877 içinde çalışan firmware ile yapılmaktadır.
Karta enerji verildiğinde PIC resetlenir ve kodun başından itibaren çalışmaya başlar. Öncelikle sürücü kartlarına giden I/O pinleri high konumuna getirilir. Daha sonra PIC seri port üstünden data gelene kadar bekleme durumundadır.
PC yazılımından ISMACHINEREADY byte'ı gönderildiği taktirde PIC buna MACHINEREADY byte'ı ile cevap verir. Bu sayede PC yazılımı ve mikrodenetleyicinin senkronize çalışması sağlanmıştır.
Burada adı geçen ISMACHINEREADY ve MACHINEREADY byte'ları, PIC ve PC yazılımında aynı olacak şekilde tanımlanmış sabitlerdir. 8 bitlik sayılar yerine bu tanımlamalar kullanılarak kodun okunabilirliği arttırılmıştır.
Programda "Jog Mode" ve "Drill Mode" olmak üzere iki çalışma modu vardır. Jog modu makinenin PC programından girilen değerlerle manual olarak kontrol edilmesi için kullanılmaktadır. Drill modu ise PC programında açılan delgi dosyasındaki tüm delik koordinatlarının otomatik olarak makineye gönderilmesi ve kart üstündeki tüm deliklerin sırayla delinmesi için tasarlanmıştır.
MACHINEREADY byte'ı PC'ye gönderildikten sonra PC tarafından mod seçim işlemi yapılır. Genellikle, offset noktasının belirlenmesi işlemi için ilk açılan mod Jog modudur, ancak direkt olarak Drill moduna girmek de mümkündür.
JOG Modu
Jog moduna girmek için, PC seri port üstünden OPENJOGMODE byte'ını PIC'e gönderir. PIC bu byte'ı alınca akış şemasında görülen sağ kısma geçer, PC'ye JOGMODEON byte'ını gönderir ve PC'den gelecek "Jog Data Packet" ini beklemeye başlar.
JOG Data Packet
4 | 3 | 2 | 1 |
Axis Delay | Axis Step (High|Low) | Config. |
Jog Data" paketinin uzunluğu 4 byte'tır. Paket içinde hangi eksenin, hangi yönde, hangi hızda ne kadar hareket edeceği bilgisi PC'den PIC'e gitmektedir.
Configuration (1 Byte):
Bit0-Spindle: Matkap motorunun açılıp kapatılması [0-Matkap OFF | 1-Matkap ON]
Bit4-Yön: Motorun hangi yönde döneceği [0-CW | 1-CCW]
Bit5-Mod: Motorun half-step/full-step sürülmesi [0-Full Step | 1-Half Step]
Bit6,7-Axis: Eksen seçimi ve Jog modundan çıkılması [00-Jog Modundan Çık | 01-X | 10-Y | 11-Z]
Axis Step (2 byte): Seçilen eksenin full-step cinsinden dönme miktarı
Axis Delay (1 Byte): Seçilen eksenin dönme hızı
[ Step frekansı = 1 / (2 * Delay * 100 us) ]
"Jog Data" paketi alındıktan sonra PIC tarafından paket çözümlenir, gerekli değişkenler atanır ve step motor sürücülerine step ve yön sinyalleri çıkılır. Eksen hareketinin tamamlanmasının ardından PC'ye JOGMODEDONE byte'ı gönderilir ve PIC tekrar Jog data paketini beklemeye başlar. Yinelenen eksen hareketleri için bu işlemler tekrarlanır.
Jog penceresi PC programında kapatılırsa, PC'den PIC'e |00|00|00|00| paketi gönderilir. (Configuration byte'ının 6. ve 7. bitlerine sıfır gönderilir.) Bu sayede PIC programı Jog modundan çıkıp mod seçim rutinine geri döner.
Drill Modu
Drill moduna girmek için, PC seri port üstünden OPENDRILLMODE1 byte'ını PIC'e gönderir. PIC bu byte'ı alınca akış şemasında görülen sol kısma geçer, PC'ye DRILLMODE1ON byte'ını gönderir ve PC'den gelecek "Offset Positioning Packet" ini beklemeye başlar.
Offset Positioning Packet
"Offset Positioning" paketinin uzunluğu 10 byte'tır. Bu paket ile, eksenlerin offset noktasına olan uzaklıkları PIC'e iletilmektedir.
Configuration (1 Byte):
Bit0-Yön X: X ekseninin step motorunun hangi yönde döneceği [0-CW | 1-CCW]
Bit1-Yön Y: Y ekseninin step motorunun hangi yönde döneceği [0-CW | 1-CCW]
Bit2-Yön Z: Z ekseninin step motorunun hangi yönde döneceği [0-CW | 1-CCW]
Bit3-Mod X: X eksenindeki step motorun half-step/full-step sürülmesi [0-Full Step | 1-Half Step]
Bit4-Mod Y: Y eksenindeki step motorun half-step/full-step sürülmesi [0-Full Step | 1-Half Step]
Bit5-Mod Z: Y eksenindeki step motorun half-step/full-step sürülmesi [0-Full Step | 1-Half Step]
Step X (2 Byte): X ekseninin full-step cinsinden offset noktasına olan uzaklığı
Step Y (2 Byte): Y ekseninin full-step cinsinden offset noktasına olan uzaklığı
Step Z (2 Byte): Z ekseninin full-step cinsinden offset noktasına olan uzaklığı
Delay X (1 Byte): X ekseninin step motorunun dönme hızı
Delay Y (1 Byte): Y ekseninin step motorunun dönme hızı
Delay Z (1 Byte): Z ekseninin step motorunun dönme hızı
[ Step frekansı = 1 / (2 * Delay * 100 us) ]
"Offset Positioning" paketi alındıktan sonra PIC tarafından paket çözümlenir, gerekli değişkenler atanır ve step motor sürücülerine step ve yön sinyalleri çıkılır. Bu sayede eksenler PC yazılımda belirlenen offset noktasına ulaşmış olur. Eğer eksenlerin ilk konumu offset noktası ise bu paket es geçilir. Eksen hareketinin tamamlanmasının ardından PC'ye ATOFFSETPOS byte'ı gönderilir ve PIC "Initialize Drill Mode" paketini beklemeye başlar.
Initialize Drill Mode Packet
"Initialize Drill Mode" paketinin uzunluğu 9 byte'tır. Bu paket ile, Drill modu sırasında kullanılacak genel ayarlar PIC'e iletilmektedir.
Configuration (1 Byte):
Bit0-Mod X: X eksenindeki step motorun half-step/full-step sürülmesi [0-Full Step | 1-Half Step]
Bit1-Mod Y: Y eksenindeki step motorun half-step/full-step sürülmesi [0-Full Step | 1-Half Step]
Bit2-Mod Z: Z eksenindeki step motorun half-step/full-step sürülmesi [0-Full Step | 1-Half Step]
DrillStepZup (2 Byte): Z ekseninin matkap delik üstünde iken full-step cinsinden offset noktasına göre konumu
DrillStepZdown (2 Byte): Z ekseninin matkap delik içinde iken full-step cinsinden offset noktasına göre konumu
Delay X (1 Byte): X ekseninin dönme hızı
Delay Y (1 Byte): Y ekseninin dönme hızı
Delay Zup (1 Byte): Z ekseninin yukarı hareketindeki dönme hızı
Delay Zdown (1 Byte): Z ekseninin aşağı hareketindeki dönme hızı
[ Step frekansı = 1 / (2 * Delay * 100 us) ]
"Initialize Drill Mode" paketi alındıktan sonra PIC tarafından paket çözümlenir ve gere
kli değişkenler atanır. Z ekseni step motoru DrillStepZdown kadar aşağı indirilerek matkap ucunun kart üstünde gezeceği konumu alması sağlanır. Bu işlemden sonra PC'ye DRILLMODE1INITIALIZED byte'ı gönderilir ve PIC "Drill Data" paketini beklemeye başlar.
Drill Data Packet
5 | 4 | 3 | 2 | 1 |
Step Y (High|Low) | Step X (High|Low) | Config. |
"Drill Data" paketinin uzunluğu 5 byte'tır. Bu paket ile, X ve Y eksenlerinin hareket bilgisi PC'den PIC'e gitmektedir.
Configuration (1 Byte):
Bit0-Yön X: X eksenindeki step motorun hangi yönde döneceği [0-CW | 1-CCW]
Bit1-Yön Y: Y eksenindeki step motorun hangi yönde döneceği [0-CW | 1-CCW]
Bit6-SDF(Start Drilling Flag): Delme işlemine başlama biti [0-Reset | 1-Set]
Bit7-CDF(Continue Drilling Flag): Delme işlemine devam biti [0-Reset | 1-Set]
Step X (2 byte): X ekseninin step motorunun full-step cinsinden şu an bulunduğu konuma göre hareket (dönme) miktarı
Step Y (2 Byte): Y ekseninin step motorunun full-step cinsinden şu an bulunduğu konuma göre hareket (dönme) miktarı
"Drill Data " paketi alındıktan sonra PIC tarafından Configuration byte'ının 6. (SDF) ve 7. (CDF) bitleri kontrol edilir.
CDF bitinin 1 olması delgi işleminin devam ettiğini, 0 olması işe delgi işleminin sona erdiğini gösterir. Delgi işlemi devam ediyorsa paketle bilikte gelen koordinatlarda delme yapılır ve tekrar "Drill Data" paketi beklenir. Delgi işlemi sona ermiş ise PC'ye DRILLMODE1DONE byte'ı gönderilir ve PIC mod seçiminin yapıldığı akış diyagramındaki mode selection kısmına geri döner.
SDF bitinin 1 olması delgi işleminin yeni başladığını, 0 olması ise delgi işleminin devam ettiğini gösterir. Bu bit sadece delgi işleminin başlangıcında yani matkap offset noktasının üstünde iken 1 durumundadır. SDF biti 1 olduğunda o anki X ve Y koordinatları atlanıp PC'ye ONEHOLEDRILLED byte'ı gönderilmektedir. Bu sayede offset noktasının delinme zorunluluğu ortadan kalkmıştır.
CDF ve SDF bitlerinin kontrol edildikten sonra PIC tarafından "Drill Data" paketi çözümlenir ve gerekli değişkenler atanır. X ve Y eksenleri paketten alınan bilgiler sayesinde delik koordinatlarına hareket ettirilir. Matkap delik üstüne geldikten sonra Z ekseninde aşağı-yukarı hareketi yapılır. Bu işlem sonucunda 1 delik delinmiş olur. Delgi yapıldıktan sonra PC'ye ONEHOLEDRILLED byte'ı gönderilir ve PIC bir sonraki "Drill Data" paketini beklemeye başlar.
Bu rutin kart üstündeki tüm delikler delinene kadar tekrarlanır. Tüm deliklerin delinmesi tamamlandığında CDF biti 0 yapılarak Drill modundan çıkılıp mod seçimine geri dönülür.
Alper YILDIRIM
b0164043@hacettepe.edu.tr