Blog

3DMetri Baskı kalitesi

3DMetri ile çalışmak gerçekten çok zevkli. Bir Delta Yazıcı sahibi olmak (Aslında bir değil bende 5 adet var :)) güzel bir duyguymuş. Bir Maker için herhalde en önemli cihaz bu olsa gerek.

Çoğu kez sizlerden hasasiyet ve çıktı kalitesi ile ilgili sorular alıyorum. Bunlara yanız olması açısından 100 mikron ile bastığım bir parçanın yakın çekimlerini sizlerle paylaşmak istedim. Hasasiyeti gerçekten mükemmel. Bütün iş kalibrasyonu ve yazdırma parametrelerini doğru ayarlamakta. Ondan sonra bırakın saatlerce 3DMetri çalışsın. Çok söze gerek yok görmek inanmaktır. İşte resimler: (Parmağımdaki çizgilerle çıktı üzerindeki çizgileri karşılaştırarak hasasiyeti ve çıktı kalitesini anlayabilirsiniz.)

photo 2 (3) photo 1 (3) photo 3 (1)

Delta Yazıcı Kalibrasyonu

Türkiye’nin ilk Delta 3D Yazıcısı 3DMetri kullanıcıları ile buluşuyor! Bu nedenle printer sahibi kullanıcılara kurulum ve kullanım konusunda destek vermek için bir dizi yazı hazırlamaya çalışacağım. İşte bunlardan ilki. Oldukça teknik içerikli olacak ama bu sizi korkutmasın videolar ile bu anlatımları destekleyerek daha kolay anlaşılır olmasını sağlamaya çalışacağız.

 

4

 

Delta 3D yazıcılar yurtdışında oldukça popüler. Büyük çıktı alanları ve hızlı çalışabilme imkanları ile bir çok avantaja sahipler. 3DMetri özellikle magnetik tutucuları sayesinde herhangi bir yanlış kullanımda cihazınıza bir zarar gelmesini önlemekte. Mesela kafayı yanlış bir koordinata gönderirseniz ve cama çarptırırsanız magnetik tutucular zorlandığı anda atacak ve sisteme bir zarar gelmesini önleyecektir. Magnetik başlık tutucularının bir başka faydasıda boşluksuz bir tutuş sağlayarak makinanızın çok hasas toleranslarda çalışmasını sağlamaktadır. Ama durun en önemli faydasına şimdi geliyoruz. Değişebilir başlık. Başlığı kolayca değiştirebilir ve bir anda 3D yazıcıdan lazer markalama çihazına geçiş yapabilirsiniz. Başlık çeşitleri hakkında bir başka yazıda bilgi vermeye çalışacağım.

3DMetri elinize ulaştığında ilk yapılması gereken işlem kalibrasyondur.

Delta yazıcıların kalibrasyonu, tabla üzerinde her noktaya aynı yükseklik seviyesinde ulaşmanız ve çıktı kaliteniz açısından önemlidir. Delta yazıcılar diğer yazıcılar gibi kartezyen koordinat sistemini kullanmazlar. Bu nedenle hareket algoritmaları biraz daha farklıdır.

Yazıcımızın cam tabla yüzeyi Z ekseninin 0 olduğu düzlemdir. Yazıcı kafası yukarı doğru hareket ettirildiğinde Z positif olarak artar. Yazıcımızı yukarıdaki Home switchlerine gönderdiğimizde Z değerimiz maximum yüksekliğine ulaşmış olur bu değer Eepromda Z Max Length olarak belirtilmektedir.

Kalibrasyonu yapmak için yazıcının tablası üzerinde 4 noktada işlem yapmak gerekmektedir. Bunlar

1- Yazıcının Merkezi             (G1 X0 Y0 Z30 F3000)    Z max Length  birim [mm]
2- X kulesine yakın bir kenar nokta  (G1 X-50 Y-20 Z30 F3000)    Tower X enstop offset birim [step]
3- Y kulesine yakın bir kenar nokta  (G1 X50 Y-20 Z30 F3000)   Tower Y enstop offset birim [step]
4- Z kulesine yakın bir kenar nokta   (G1 X0 Y70 Z30 F3000)   Tower Z enstop offset birim [step]

Parantez içerisindeki gcodelar ile bu noktalara 30mm yukarıda kalacak şekilde ulaşabilirsiniz.

jogPrinter kontrol yazılımlarında manuel kontrol butonları ile yazıcımızı yukarı aşağı sağa sola eksenlerde değişik uzunluklarda hareketlerle ilerletebiliriz. Buna CNC dünyasında Jog denilmektedir.

 

 

 

 

 

 

Tabla üzerinde ayarlarımızı Z 0.1 mm yukarıda kalacak şekilde yapıyoruz. Bunu anlamak için bir kağıtdan yararlanabiliriz. Standart kağıtların kalınlığı yaklaşık 0.1 mm dir. Kağıt testi için makinamızı home yapıp yukarıdaki end switchlere yolluyoruz. Daha sonra merkezi ayarlamakla başlayabiliriz. Yazıcı merkezi için 1 nolu parantez içindeki kodu printer kontrol yazılımına girip Yazıcıya gönderiyoruz. Extruder kafası merkezden 30 mm yukarda duruyor Z ekseninde manuel olarak kafayı yavaş yavaş aşağıya indiriyoruz. Kağıt cam yüzeyinde iken 0.1mm adımlarla aşağıya inip kağıda tatlı bir temas sağlıyoruz kafanın ucu kağıda değmeli ama kağıdı elimizle hareket ettrebiliyor olmalıyız.

Bu kağıt testini her 4 noktada tekrarlayıp z değerini kağıda her 4 nokta için not ediyoruz. Bu değer 0.1mm olmalı 0.1 mm den farklı ise bu fark bizim hata değerimizdir.

Bu hata değerlerini eeprom değerlerine işleyerek gidermemiz gerekmektedir.

Şimdi tespit ettiğimiz hata değerini eeprom vaastası ile nasıl gidereceğiz onu anlatalım.

Merkez kalibrasyonu için değiştireceğimiz değer Z max Length dir.

Kule yakınlarını kalibre edebilmek için eeprom üzerinde değiştireceğimiz değerler sıra ile Tower X enstop offset, Tower Y enstop offset, Tower Z enstop offset dir.

Merkez kalibrasyonu için Z max Length azaltılırsa extruder tabladan yukarıda kalır. Aynı şekilde arttırılırsa tablaya doğru yaklaşır. Kağıt testi ile Z max Length değerinin olması gereken seviyeye ayarlamamız gerekmektedir.

Aynı mantık ile kule diplerindeki yüksekliğimizi de kağıt testi ile ayarlayacağız. Enstop offset adındanda anlaşılacağı gibi yukarıdaki end switch e dokunduktan sonra o kulenin offset olarak hareketlere pay vererek başlamasını sağlar. Nekadar pay vereceğini eepromdaki Tower X:Y:Z endstop offset alanlarına yazacağımız değer belirler. Yanlız bu değerin birimi mm değildir Step tir bu nedenle bulduğumuz hata mm değerinde iken bunu stepe çevirmemiz gereklidir bunun için 101.59 ile çarpmamız yeterlidir. Kabaca belirtecek olursak mesela X kulesi için cam yüzeyinden 0.3mm yukarıda kaldınız. olması gereken 0.1mm aradaki fark 0.2mm bu geri 101.59 ile çarparsak 20.3 buluruz step bir tam sayı olduğu için virgülden sonraki değeri yuvarlıyoruz ve X kulesi için X enstop offset değerine 20 ilave ediyoruz. Eeprom ayarlarını printerımıza gönderdiğimizde x kulesi artık endswitch e dokunduktan sonra 20 step offset vererek aşağıya inecektir. Aynı mantık ile bu işlemi üç kuleyede uyguluyoruz. Böylece kalibrasyon işlemi tamamlanıyor. Hasas bir kalibrasyondan sonra makinamız tüm cam yüzeyde 0.1mm yükseklikte dolaşabilecektir.

Not: Dikkat edilecek önemli bir husus Z maxLength parametresinin birimi mm iken endstop offsetler için eeproma yazdığımız değer step tir. Bu nedenle 3Dmetri printerları için bulduğumuz offset değerlerini 101.59 ile capmamız gerekir.

İşte kalibrasyon videosu. Tüm anlatılanların bir uygulaması olması açısından:

 

DBM01 Bluetooth 4.0

Mavidiş 4.0 düşük güç tüketim modülü (Bluetooth 4.o low energy module, Bluetooth LE , Bluetooth Smart) sağlık ,spor ,güvenlik ve ev eğlence sektörlerinde yeni uygulamalara yönelik “Bluetooth Special Interest Group” tarafından tasarlanan ve pazarlanan bir kablosuz kişisel alan ağ teknolojisidir. Klasik Bluetooth ile karşılaştırıldığında Bluetooth Smart benzer bir iletişim alanını korurken önemli ölçüde azaltılmış güç tüketimi ve maliyet etkin bir çözüm sağlamak için tasarlanmıştır. Bluetooth Smart 2006 yılında Nokia tarafından Wibree adı altında tanıtıldı. Bugün IOS , Android, Windows Phone ve BlackBerry gibi mobil işletim sistemlerinin yanı sıra OS X ,Linux ve Windows 8 dahil olmak üzere bir çok işletim sistemi doğal olarak Bluetooth Smartı desteklemektedir.

GnexLab nesnelerin interneti (IoT) projemizde sensor iletişim networkü olarak Bluetooth 4.0 da kulanmayı düşündüğümüz için Texas Instrumets’ın CC2540 çipini kullanan DBM01 modülü ile bazı çalışmalar yapmaya karar verdik. Bu modülü direnc.net den satın alabilirsiniz.

 

DBM01Modülün temel özellikleri şu şekilde:

  • Frequency Range: 2402~2480MHz
  • UART Data Interface
  • Sensitivity: -93dBm
  • Output Power: ≥3dBm
  • AES-128 Encryption and Decryption
  • Self-adaptable frequency hopping
  • Supply voltage: 2.0~3.6V

Modül ile ilgili datasheet

 

Şimdi modülü nasıl kullanacağımız ile ilgili teknik detaylara bakalım. Öncelikle pin yapısını incelersek:

screen-shot-2014-04-24-at-20-47-48

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Biz temel olarak 5 bacak ile ilgileniyoruz. Bunlar besleme voltajı olarak 3.3V ve GND. İletişim için RX ve TX birde AT komut setini kullanabilmemiz için CTRL. Bu beş bacağa bir iki direncinizi feda edip bacaklardan tel çıkarmanız yerinde olur zira modül oldukça küçük kullanması biraz sıkıntı olabilir. Ben aşağıdaki resim gibi gerekli bacaklara telleri lehimledim.

photo (13)

 

 

 

 

 

 

 

 

 

 

 

 

İletişim için yine USB serial çeviricimizi kullanacağız. Voltaj olarak 3.3v olan bir model seçmeniz yerinde olacaktır. Elimde daha önceden seeedstudio dan aldığım bir USB UART çevirici vardı. Aşağıda resmini görebilirsiniz.

 

photo 2 (4)photo 1 (6)

 

 

 

 

 

 

 

Seeedstudio da halen buna benzer modüller var. Bağlantıların şöyle olması gerekmekte.

USB UART modülü   ————    Bluetooth modülü

vcc ———————————–vcc

gnd———————————–gnd

rx————————————-txd

tx————————————-rxd

gnd———————————–CTRL

Modül için gerekli voltaşıda USB UART modülünden alıyoruz. Aşağıda Breadboard da yaptığım bağlantıları görebilirsiniz.

photo 1 (7)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Şimdi bir terminal programı ile modül ile iletişim kuralım.

Ben bilgisayar olarak MAC kullandığım için Terminal den screen komutu ile bir haberleşme terminali açtım. Komut şöyle:

screen /dev/tty.usbserial-A800BQZZ 38400

Windows kullanıcıları için Realtherm bir seçenek olabilir. Dikkat etmeniz gereken usb modülün driverını kurmak, doğru com porta 38400 baud hızla bağlanmak.

Modülün desteklediği AT komutsetine modülün datasheetinden ulaşabilirsiniz.

İlk olarak denenmesi gereken komut AT komutu bu komuta karşılık OK cevabını alabildiyseniz modül ile iletişimi kurmuşsunuz demektir.

Haberleşmenin diğer ucunu iphone olarak düşünürsek Bluetooth cihazlar ile ilgili çalışmak için geliştirilmiş olan generik LightBlue iphone uygulamasını (ücretsiz) indirip iphonea kuruyoruz. Çevredeki cihazları tarayan yazılım bizim modlülü buluyor ve aşağıdaki ekranla karşılaşıyoruz.

 DBM BLE yi seçecek olursak cihaz ile ilgili bir çok bilgi ekranda görünüyor.

 

photo 2

photo 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bu aşamadan sonra AT+SEND=xxx komutu ile cihaza veri göndermemiz mümkün. iphone uygulamasından da read diyerek gelen datayı ekranda görebiliyoruz. xxx komutunun Hexadecimal olması gerektiğini hatırlatalım. Bu yazıda modülü tanıma ve çalıştırma egzersizi yapmış olduk. Daha can alıcı ve iot uygulamalarında bu modülü nasıl kullanabileceğimiz ile ilgili bir başka yazı planlamaktayım.

www.direnc.net den Ersin Yılmaz Bey’e bize test etmemiz için ücretsiz gönderdiği modüller için teşekkür ederiz.

Çeşitli Kaynaklar:

  • http://wingoodharry.wordpress.com/2014/04/24/uart-with-bluetooth-low-energy-ble-using-dorji-dbm01/
  • http://dorji.com/docs/app/ADW1009_Testing_DBM01_In_Android_IPHONE_IPAD.pdf
  • http://dorji.com/docs/app/ADW1009_Testing_DBM01_In_Android_IPHONE_IPAD.pdf
  • http://hackaday.io/project/151-smartcar

 

ESP8266 İlk Denemeler

ESP8266 modülü ile ilgili genel bilgileri burada vermiştik. Şimdi ilk deneme çalışmaları ile ilgili sizleri bilgilendirmek istiyorum. Bu çip ile iletişim kurmak için seri bağlantı yapmak ve bu bağlantıdan AT komutları ile çiple haberleşmek gerekmekte. Bunu bir çok şekilde yapmak mümkün. Ben ilk olarak çipi tanımak amacıyla USB UART bir cevirici ile bağlantı kurarak çipi kurcalamaya başladım. Elimde daha önceden seeedstudio dan aldığım bir USB UART çevirici vardı. Aşağıda resmini görebilirsiniz.

 

photo 2 (4) photo 1 (6)

 

 

 

 

 

 

 

Baktım seeedstudio da halen buna benzer modüller var. Dikkat edilmesi gereken 3.3v olan modeli kullanmak. esp8266 modülümüz 3.3v olduğundan 5v ürünler kullanmamaya dikkat edilmesi gerekmekte.

ESP8266 wifi modülünü bacak bağlantılarını verelim.

 

4262791411877023544

 

USB UART modlü ile ESP8266 Wifi modülünü bağlarken;

USB UART modülü   ————    ESP8266 Wifi modülü

vcc ———————————–vcc

gnd———————————–gnd

rx————————————-txd

tx————————————-rxd

Bir önemli bağlantı da CH_PD bağlantısını modülün vcc sine bağlamak gerekmekte ben basitce bir tel lehimledim.

Bağlantıları tamamladığımıza göre modül ile ilk iletişimlerimizi kuralım. Ben bilgisayar olarak MAC kullandığım için Terminal den screen komutu ile bir haberleşme terminali açtım. Komut şöyle:

screen /dev/tty.usbserial-A800BQZZ 115200

Windows kullanıcıları için Realtherm bir seçenek olabilir. Dikkat etmeniz gereken usb modülün driverını kurmak, doğru com porta 115200 baud hızla bağlanmak. Bundan sonra terminalden şu komutları göndererek esp8266 ile haberleşebilirsiniz. (Gönderilen komutların başına > işareti koyuyorum bunları terminale biz yazıp enterliyoruz diğer mesajlar modülün geri gönderdikleri onları da italik yapıyorum.)

>AT+RST

  

OK

  

ets Jan  8 2013,rst cause:4, boot mode:(3,7)

  

wdt reset

  

load 0x40100000, len 24444, room 16

  

tail 12

  

chksum 0xe0

  

ho 0 tail 12 room 4

  

load 0x3ffe8000, len 3168, room 12

  

tail 4

  

chksum 0x93

  

load 0x3ffe8c60, len 4956, room 4

  

tail 8

  

chksum 0xbd

  

csum 0xbd

  

ready

Bu reset komutu en sonda ready mesajını alıyorsanız herşey yolunda gidiyor demektir.

Ben ev wifi networküme bağlanmak için aşağıdaki komutu kullandım.

>AT+CWJAP="NNetwork","xxxx"

OK

siz de wifi isim ve passwordünüzü bu şekilde modüle tanıtmalısınız.

Bunun gibi bir çok AT komut seti var bunların tamamını buradan görebilirsiniz.

AT komut setleri ile modüle her istediğinizi yaptırmanız mümkün mesela mevcut wifi modüllerini ve sinyal güçlerini listeletebilirsiniz.

ya da bir web servarına bağlanabilirsiniz.

Peki bu AT komut setlerini gerçek hayatta nasıl modüle gönderebiliriz? Tabiki bir mikro işlemci ile. Aslında esp8266 modülü hem mikro işlemci hem de wifi radio modülü bu çipi direkt programlayarak başka bir mikro işlemciye ihtiyaç kalmadan kullanmak mümkün. Ben bu işlemciyi programlamak yerine herkesin daha aşina olduğu Arduino yu devreye sokarak bir uygulama yaptım. Biraz ondan bahsedeyim.

Mikro işlemci için bir Arduino Mega kullandım. Birden fazla UART a sahip olduğundan bir uart ile ciple haberleşip diğeri ile ekrana debug mesajları yollamak mümkün oluyor.

Kullandığım programı aslında buradan buldum. Biraz modifiye ederek aşağıdaki şekli verdim.

 

#define SSID "NNetwork"
#define PASS "B1065f26C847" // My luggage has the same combination!
#define DEST_HOST "localhost"
#define DEST_IP "192.168.1.2"
#define TIMEOUT 5000 // mS
#define CONTINUE false
#define HALT true

// #define ECHO_COMMANDS // Un-comment to echo AT+ commands to serial monitor

// Print error message and loop stop.
void errorHalt(String msg)
{
 Serial.println(msg);
 Serial.println("HALT");
 while(true){};
}

// Read characters from WiFi module and echo to serial until keyword occurs or timeout.
boolean echoFind(String keyword)
{
 byte current_char = 0;
 byte keyword_length = keyword.length();
 
 // Fail if the target string has not been sent by deadline.
 long deadline = millis() + TIMEOUT;
 while(millis() < deadline)
 {
 if (Serial1.available())
 {
 char ch = Serial1.read();
 Serial.write(ch);
 if (ch == keyword[current_char])
 if (++current_char == keyword_length)
 {
 Serial.println();
 return true;
 }
 }
 }
 return false; // Timed out
}

// Read and echo all available module output.
// (Used when we're indifferent to "OK" vs. "no change" responses or to get around firmware bugs.)
void echoFlush()
 {while(Serial1.available()) Serial.write(Serial1.read());}
 
// Echo module output until 3 newlines encountered.
// (Used when we're indifferent to "OK" vs. "no change" responses.)
void echoSkip()
{
 echoFind("\n"); // Search for nl at end of command echo
 echoFind("\n"); // Search for 2nd nl at end of response.
 echoFind("\n"); // Search for 3rd nl at end of blank line.
}

// Send a command to the module and wait for acknowledgement string
// (or flush module output if no ack specified).
// Echoes all data received to the serial monitor.
boolean echoCommand(String cmd, String ack, boolean halt_on_fail)
{
 Serial1.println(cmd);
 #ifdef ECHO_COMMANDS
 Serial.print("--"); Serial.println(cmd);
 #endif
 
 // If no ack response specified, skip all available module output.
 if (ack == "")
 echoSkip();
 else
 // Otherwise wait for ack.
 if (!echoFind(ack)) // timed out waiting for ack string 
 if (halt_on_fail)
 errorHalt(cmd+" failed");// Critical failure halt.
 else
 return false; // Let the caller handle it.
 return true; // ack blank or ack found
}

// Connect to the specified wireless network.
boolean connectWiFi()
{
 String cmd = "AT+CWJAP=\""; cmd += SSID; cmd += "\",\""; cmd += PASS; cmd += "\"";
 if (echoCommand(cmd, "OK", CONTINUE)) // Join Access Point
 {
 Serial.println("Connected to WiFi.");
 return true;
 }
 else
 {
 Serial.println("Connection to WiFi failed.");
 return false;
 }
}

// ******** SETUP ********
void setup() 
{
 Serial.begin(115200); // Communication with PC monitor via USB
 Serial1.begin(115200); // Communication with ESP8266 via 5V/3.3V level shifter
 
 Serial1.setTimeout(TIMEOUT);
 Serial.println("ESP8266 Demo");
 
 delay(2000);

 echoCommand("AT+RST", "ready", HALT); // Reset & test if the module is ready 
 Serial.println("Module is ready.");
 echoCommand("AT+GMR", "OK", CONTINUE); // Retrieves the firmware ID (version number) of the module. 
 echoCommand("AT+CWMODE?","OK", CONTINUE);// Get module access mode. 
 
 // echoCommand("AT+CWLAP", "OK", CONTINUE); // List available access points - DOESN't WORK FOR ME
 
 echoCommand("AT+CWMODE=1", "", HALT); // Station mode
 echoCommand("AT+CIPMUX=1", "", HALT); // Allow multiple connections (we'll only use the first).

 //connect to the wifi
 boolean connection_established = false;
 for(int i=0;i<5;i++)
 {
 if(connectWiFi())
 {
 connection_established = true;
 break;
 }
 }
 if (!connection_established) errorHalt("Connection failed");
 
 delay(5000);

 //echoCommand("AT+CWSAP=?", "OK", CONTINUE); // Test connection
 echoCommand("AT+CIFSR", "", HALT); // Echo IP address. (Firmware bug - should return "OK".)
 //echoCommand("AT+CIPMUX=0", "", HALT); // Set single connection mode
}

// ******** LOOP ********
void loop() 
{
 // Establish TCP connection
 String cmd = "AT+CIPSTART=0,\"UDP\",\""; cmd += DEST_IP; cmd += "\",80";
 if (!echoCommand(cmd, "OK", CONTINUE)) return;
 delay(2000);
 
 // Get connection status 
 if (!echoCommand("AT+CIPSTATUS", "OK", CONTINUE)) return;

 // Build HTTP request.
 cmd = "Hi from Arduino long message test from the wifi modul hello"; //cmd += DEST_HOST; cmd += ":80\r\n\r\n";
 
 // Ready the module to receive raw data
 if (!echoCommand("AT+CIPSEND=0,"+String(cmd.length()+1), ">", CONTINUE))
 {
 echoCommand("AT+CIPCLOSE", "", CONTINUE);
 Serial.println("Connection timeout.");
 return;
 }
 
 // Send the raw HTTP request
 echoCommand(cmd, "OK", CONTINUE); // GET
 
 
 
 
 
 // Loop forever echoing data received from destination server.
 while(true)
 while (Serial1.available())
 Serial.write(Serial1.read());
 
 errorHalt("ONCE ONLY");
}

 

Burada gördüğünüz gibi bir UDP bağlantısı yapıyoruz. Daha sonra Node.js ile yazdığım çok basit bir UDP server ile haberleşeceğiz. İşte Node.js kodu böyle;

 

var PORT = 80;
var HOST = '192.168.1.2';

var dgram = require('dgram');
var server = dgram.createSocket('udp4');

server.on('listening', function () {
    var address = server.address();
    console.log('UDP Server listening on ' + address.address + ":" + address.port);
});

server.on('message', function (message, remote) {
    console.log(remote.address + ':' + remote.port +' - ' + message);

});

server.bind(PORT, HOST);

Node.js ile karşılaşmayanlara duyrulur javascriptin serverda çalışan şekli mutlaka vakit ayırıp bakın. Arkasında Google var ve çok gelecek vaadediyor.

Bağlantılar için benim setup ım aşağıdaki gibi:

photo (12)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bord üzerinde bir TTL çevirici kullandım (kırmızı olan). Bunun nedeni daha önce söylediğim gibi modül 3.3v ile çalışıyor. Arduino mega çıkışları 5v. Bu voltajı modüle zarar vermemek için düşürüyoruz. İlgilenen arkadaşlar olursa daha ayrıntılı şemalar verebilirim.

Bu da çalıştırma videosu:

3D Yazıcılar (Bölüm-2)

Bu yazı dizisinin bir önceki bölümüne buradan ulaşabilirsiniz.

Barnes & Noble Arligton Washington’dayim. İlgimi çeken kitap ve dergileri topladım kitapçının içindeki Sturbucks’dan kahvemi aldım Ipadimle bu yazıyı hazırlıyorum. Nasıl hızlı bir teknolojik değişim yaşadığımıza inanamıyorum. Tarım çağı endüstriyel devrim derken devrimler birbirini takip ediyor. Bu devrimlerin birbiri arkasına gelmesi ve artık aradaki zamanın kısalması asıl ürpertici olan. Siz de bu yazıyı Ipadinizden tuvalette okuyorsanız hatırlatayım sifonlu tuvalet icat olunalı sadece 150 yıl oldu. (Not: Kralice Victoria ilk sifonlu tuvaleti kullanan kişidir.) Teknolojinin inanılmaz hızda ilerlemesine verilen örneklerden en beğendiğim bir tanesi de bugün elimizde tutuğumuz akıllı telefonlar NASA aya ilk insanı gönderdiğinde sahip olduğu bilgisayar gücünün toplamından daha fazla hesaplama gücüne sahip olduğu ile ilgilidir. Aynı şekilde Xbox oyun konsolu ilk tanıtıldığında o günün en kuvvetli askeri bilgisayarından daha hızlı hesaplama gücüne sahipti. Bazı ülkelere satışında sınırlamalar vardı.

Bu baş döndürücü teknolojik ilerlemelerden konuyu tabiki 3D yazıcılara getireceğim. Bir sonraki endüstriyel devrim olarak 3D yazıcıların görülmesi biraz da geçmişe bakıldığında daha doğru geliyor. Bir deja-vu bu aslında. Futuristler online satın alınan dataları evde 3D yazıcılar ile basacağımızı artık dükkanlara gitmek gerekmeyeceğinden bahsediyorlar. Eminim ki bu da olacak. Beni 3D yazıcılarda heyecanlandıran aklıma gelen bir tasarımı bilgisayarda tasarlayıp elime alabildiğim hatta projemde direkt kullanabildiğim bir parçaya, bir dişliye veya bir kutuya çevirebilmem. Benim gibi birisi için beklenen endüstriyel devrim zaten gerçekleşti!

Chuck Hull ilk 3D yazıcıyı 1984 de stereolithography denen bir teknikle yaparak bu icadın babası oldu. Latincede stereo kati, litho tas ve graphien de yazmak anlamlarına gelmektedir. Stereolithography bilimsel bir isimlendirme olsa da genel olarak bu teknolojilere hızlı prototipleme ve eklemeli üretim gibi isimler verilmektedir.

Bu gün tüm 3D yazıcılar aynı temel prensip ile çalışmaktadır. Yüzlerce çeşidi olmasına karşın temel işleyiş hep aynıdır. Bu temel mantıktan birazdan bahsedeceğim.

3D Yazıcılar Nasıl Çalışır?

3D Yazıcıdan bir çıktı almadan önce sahip olmanız gereken şey bilgisayar ortamında bir 3D modeldir. 3D modelleme yapabilmek için sayısız program mevcuttur. Mesela bazı mühendislik tasarım yazılımları olan Autocad, Autodesk Inventor, SolidWorks veya Solid Edge gibi. Bu binlerce dolarlık mühendislik yazılımlarının yanında bedava olan yazılımlar da var. Mesela Autodesk123 ya da Blender gibi. Ve hatta web browser üzerinden hiç bir yazılım yüklemenize gerek kalmadan online kullanabileceğiniz hizmetler de mevcut. Buna örnek olarak da Tinkercad‘i verebiliriz. Benim hayranlık duyduğum bir diğer modelleme aracı da yazılım geliştiricilerin seveceği türden. Yazılım geliştirir gibi kodlarla 3D model oluşturabiliyorsunuz. OpenSCAD tam da kodlama yaparak 3D model üretmenize olanak sağlıyor. Opengl motorunun başarılı bir kullanımı. Kesinlikle bu alanda daha fazla çalışmalar yapılmalı ve teknik altyapısı olmayan insanların da modelleme yapabilmesi sağlanmalı. Bu bence 3D yazıcıların önündeki en büyük engel. Gnexlanb olarak bu konuda bazı fikirlerimiz var. Çalışmak için sabırsızlanıyorum.

3D modeli kendiniz bu programlarla oluşturabileceğiniz gibi internet sitelerinden de bedava çok çeşitli model bulmanız mümkün. Size model aramada kullanabileceğiniz bir arama motoru olan 3dbility.com‘u öneririm. Bir gnexlab projesidir kendisi. Yakında yeni bir yaklaşım getirmeye hazırlanıyoruz. En ünlü hazır model bulabileceğiniz sitelerden birisi de makerbotun thingiverse sitesi. İnsan oğlunun ne kadar yaratıcı bir varlık olduğunu anlamamız ve görmemiz için bu siteye bakmamız yeterli. 3D yazıcı meraklıları yaptıklarını burada sergiliyor ve diğer insanlarla paylaşıyor.

Artık bir 3D modelimizin var olduğunu düşünelim. Bu modeli gerçeğe dönüştürmenin vakti geldi. Bunun için bir 3D printera ihtiyacınız olacak. Kendi 3D yazıcınız yoksa çıktı hizmeti veren bazı sitelerden de burada bahsetmek yerinde olur sanırım. 3D modelinizi siteye yükleyip hangi hassasiyette ve hangi malzemeden üretilmesini istediğinizi söylüyor ve parasını ödüyorsunuz. Bir kaç hafta içinde modeliniz posta ile size ulaşıyor. İşte bu hizmeti veren bazı siteler;

– http://www.shapeways.com/

– http://i.materialise.com/

– http://www.sculpteo.com/en/

http://www.ponoko.com/3d-printing

 

Şimdi 3D yazıcılar hangi temel mantıkla çalışıyor ondan bahsedelim. Tüm yazıcılar 3D modeli alıp, 2D düzlemsel bir çizim haline getirip, bu 2D çizimleri üst üste mümkün olduğunca ince katmanlar halinde dizerek 3D modeli oluşturuyorlar. Ne tür olursa olsun aslında matematiksel bir integral almaktan başka bir şey değil bu.

 

 

Objeyi 2D katmanlara ayırdığınızda objenin ne kadar karmaşık olduğunun da bir önemi kalmıyor.  3D modelinizi bir dilimleme yazılımı alıyor ve o modeli baştan aşağı saç telinin kalınlığında (yaklaşık 100 mikron tabi bu kalınlığı siz belirliyorsunuz istediğiniz kalınlıkta dilimleme yapabilirsiniz) ilerleyerek 2D kesitini çıkarıyor. Bu 2D kesitler daha sonra 3D yazıcının kontrolünde kullanılan G-code denilen komutlara çevriliyor. 3D yazıcılar bu G-codlara göre hareket ederek 3D objeyi 2D dilimleri üst üste çizerek oluşturuyor. Umarım anlaşılır bir anlatım olmuştur.

3D Yazıcı Türleri

Daha önce de söylediğim gibi yüzlerce çesit 3D yazıcı var. Ben bunları 3 grupta toplayarak özetlemek istiyorum. Bahsedemediğim değişik çeşitlerdeki yazıcılar hakkında bilgiyi buradan bulabilirsiniz.

Fused deposition modeling (FDM)

Bu teknolojide plastik ham madde filament şeklinde yazıcıya gelir ve ergime sıcaklığında ısıtılır. Plastik, 2D çizimin yüzeye yapılmasında malzeme olarak kullanılır. Sistem, bu 2D çizimleri plastikden üst üste dizerek 3D modeli oluşturur. Çıkan ürün plastik olduğundan direkt olarak projede kullanılabilir. En yaygın kullanılan yazıcı teknolojilerinden bir FDM’dir.

Stereolithography (SLA)

UV ışığa duyarlı bir reçine katmanlar halinde katılaştırılarak 3D model oluşturulur. UV ışık bir lazer kaynağı olabileceği gibi DLP bir projeksiyon makinesi de olabilir. Hassasiyeti FDM yazıcılardan yüksek olduğu için özellikle kuyumculuk sektöründe kullanılmaktadır. Reçineler döküme uygun olduğundan Lost Wax Casting yöntemi ile üretime çok uygundurlar.

Selective Laser Sintering (SLS)

Toz bağlama teknolojilerinden biri olan bu sistemde, toz parçacıklar lazer gücü ile bir birlerine sinterlenir. Prosesin gerçekleştiği kapalı ortam toz malzemenin ergime sıcaklığından biraz az bir noktada tutulur. Böylece lazer ışının geldiği bölgenin sıcaklığı lazer enerjisi ile toz malzemenin ergime sıcaklığına yükseltilir. Bu yöntemin avantajı destek malzemesi kullanılmasına gerek olmadan parçaları bir toz havuzunda oluşturulmasıdır.

 

 

 

 

 

 

 

 

 

 

 

Her gün yeni bir teknik için patent savaşları 3D yazıcılar dünyasında sürmektedir. Sizler de aklınıza gelen yöntemleri bu yazı altında tartışabilirsiniz. Gnexlab olarak reçineli bir sistemin uluslararası patentini almak için çalışmalar yapıyoruz.

3D yazıcıların Avantajları ve Dezavantajları

3D yazıcılar bu kadar konuşulduğuna göre gerçekten fayda sağlıyor olmaları gerek. İşte 3D yazıcıların bazı avantaj ve dezavantajları;

– Masa üstünde yer alacak kadar ucuz olamaları en önemli avantajları. Bu teknoloji 15 yıldan fazladır var ama ancak kitlelerce ulaşılabilir oldu.

– Bir çok mühendislik plastiği üretim malzemesi olarak kullanılabilmekte. Bu sayede gerçekten güçlü, projede direkt kullanabileceğiniz parçalar basabilmek mümkün. Malzeme maliyeti nispeten ucuz.

– Oldukça hassas çıktılar alınabilmekte. Çıktıdan sonra bir işlem yapmanıza gerek kalmayacak kadar düzgün ürünler üretilebilmekte.

Dezavantajları

– Çıktı süreleri saatlerle ifade ediliyor. Malzemenin karmaşıklığı çok etkilemese de büyüklüğü çıktı süresini olumsuz yönde etkiliyor.

– Altı boş olan bir yapı basmak için destek malzemesi planlanması gerekiyor. Overhang denilen bir kavram var. Şöyle tariflenebilir: Mesela bir su bardağı basacaksınız. Bardağın açık ağzı yukarı gelecek şekilde baskı almanız gerek. Ters kapatılmış bir bardak basamazsınız. Çünkü en sonda bardağın kapalı kısmını basarken altında destek malzemesi olmayacaktır. FDM türündeki printerlarla çıkan plastiği bir fan yardımı ile çıkar çıkmaz soğutuyor ve bazı overhang durumlarıın üstesinden gelebiliyoruz. Bu kavrama köprüleme bridging deniliyor.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bölüm-2 de biraz anlatım içerikli oldu. Umarım Bölüm 3 de daha teknik detaylara geçebiliriz. Yazı dizilerini kendi 3D yazıcısını yapmak isteyenlere yardımcı olacak kadar teknik detaylarda anlatmaya çalışacağım.