Yeni Yazıcımız: Tevo Tarantula

Bu yazıyı yazmaya başladığımda Ocak ayıydı ancak bir türlü tamamlayamadım. Artık yeni yazıcımız demeyelim de uzun kullanım testimiz diyelim. 2016’da 1 adet Prusa i3 modeli kendi topladığımız yazıcımız vardı. 2017 yaz başında bir tane de Prusa i3 model metal şaseye sahip yazıcı satın aldık. 3 ay kullandıktan sonra artık bu 2 yazıcının da kalibrasyonları, kaymaları, arızalarının bize çok fazla vakit ve para kaybettirdiğinin farkına vardık. O kadar fazla uğraştırıyorlardı ki gönül rahatlığı ile bir baskıyı bırakıp dışarı çıkamıyordunuz.

Biz de Burak’la birlikte elimizdeki iki aleti de satıp yeni bir yazıcı almaya karar verdik. Biraz araştırdıktan sonra yeni aletimizin Tevo Tarantula olmasında karar kıldık. Aşağıda da resimlerini gördüğünüz aleti sipariş etmek için uygun bir vakit kollamaya başladık. Siparişi vereceğimiz sıralarda “Black Friday”in yaklaştığı farkettik ve indirim olacak diye 11 Kasım tarihini beklemeye başladık. 11 Kasım günü siparişimizi tamamladık ve siparişimiz 25 Kasım günü elimize ulaştı. Satıcı firmaya 194$, gümrüğe ise bu tutarın %20’i olan 38.8$ ödeme yaptık. O günkü dolar kuru ile cebimizden yaklaşık ola  rak 890-900 TL para çıkmış oldu. Gümrük sürecinde DHL firması ile muhattap olduk ve hiçbir sıkıntı olmadan, gümrüğe geldikten hemen sonra ödememizi yaparak kargomuzun yola çıkmasına yardımcı oldular.

Yeni Yazıcı: Tevo Tarantula

Aslında ana yapıya baktığınız zaman Tevo Tarantula da Prusa i3 model alınarak yapılmış bir yazıcı. Ama farklı olan kısımları, farklı tasarlanmış bir kart kullanıyor. Burda bahsetmek istediğim konu, üzerinde bulunan kartı istediğiniz yazıcıya takıp kullanabiliyorsunuz, onun da üzerinde Atmega2560 çipi var. Aslında bizim kullandığımız Arduino Mega’dan bir farkı yok, ancak üzerine ekstra bir RAMPS kartı takmadan, tümleşik olarak motor sürücüleri ile birlikte geliyor ve sizin tek yapmanız gereken şey motor kablolarının bağlantısını yapmak oluyor.

Onun dışında ray yapısında Prusa i3 modeli lineer rulmanlar kullanırken Tevo Tarantula’da tekerlek rulmanlar kullanılmış. Bunun artı ve eksileri var. Lineer rulman sistemini belirli periyotlarla yağlamamız gerekiyordu anca teker sisteminde buna ihtiyaç duymuyoruz. Ancak tekerin sıkıntıs da havada tozlar tekeri ve yüzük rulmanı dolduruyor.

Tabla kısmında Prusa i3 üzerinde tüm tablaları denemiştim, cam, bant, ısıtıcı tabla, düz tabla, PEI tabla. Bu yöntemlerin de hepsinin birbirinden farklı eksi ve artıları var ama burda bunlardan bahsetmeyeceğim. Tevo Tarantula’da ise gönderdikleri tabla yeterli oluyordu ama ben baskıları kaldırırken tablaya zarar vermemek için PEI tabla alarak üzerine yapıştırdım ve ısıtıcı tabla ile birlikte kullanıyorum. Herhangi bir kalkma sorunu yaşamadığımı söyleyebilirim. Hatta çok yapışmadan dolayı kaldırırken kırdığım parçalar da oldu.

Tevo’nun dikey ekseni bir yere sabitlenmediği için biraz sallantı yapabiliyordu ve biz de bu sorunu çözmek için Thingiverse üzerinden bulduğumuz destek parçaları ile almış olduğumuz sehpaya sabitledik. Şu an sallantılar %90 oranında azaldı. Ayrıca sehpamızın üzerine LCD ekranı koymak için bir parça basarak onu da sabitledik. Prusa’da LCD ekranımız olmadığı için sadece bilgisayara bağlı olarak baskı alabiliyorduk ve bu bizi yazıcıya bağlı kalmak zorunda bırakıyordu. Ama artık hafıza kartına GCODE dosyasını atıp baskıyı başlatıp evden laptop ile çıkabiliyoruz. Bu çok büyük bir avantaj sağladı. Sürekli satışını yaptığımız parçaların dosyaları hafıza kartının içerisinde duruyor, evde olmadığımız zamanlarda eğer sipariş gelirse evde olan birisini arayarak direk baskının başlamasını sağlayabiliyorsunuz.

Aldığımız baskıların kalitesinin çok çok çok ekstrem bir şekilde değişim olduğunu söyleyemem. Ama az da olsa gözle farkedebileceğimiz bir kalite artışı oldu. Kalitenin yanı sıra en önemli avantajı güven oldu. Artık baskının %90 ihtimalle biteceğini bilerek baskı yapıyoruz. Bu uzun baskılar için de geçerli, gönül rahatlığıyla baskı alabiliyoruz.

UART Nedir ve Nasıl Çalışır?

Daha önce Seri Haberleşme Protokolleri (UART, SPI, I2C) yazımda küçük bir değinme ile bahsettiğim haberleşme protokollerine biraz daha detaylı olarak girmeye başlayacağımız serimizin ilk yazısı olan “UART Nedir (USART Nedir) ve Nasıl Çalışır?” yazısı ile karşınızdayım.

UART (Universal Asynchronous Receiver Transmitter), bilgisayar ve mikrokontroller veya mikrokontroller ve çevre birimler arasında haberleşmeyi sağlayan haberleşme protokolüdür. Asenkron olarak çalıştığı için herhangi bir “clock” ihtiyacı duymaz. USART (Universal Synchronous Asynchronous Receiver Transmitter) ise hem senkron hem de asenkron olarak çalışabilir. UART’a göre daha gelişmiş bir protokoldür. Haberleşme mantıklı aynı şekilde çalışır ancak USART aynı zamanda senkron haberleşmeleri de gerçekleştirebilir. Yeni çıkan bir mikroişlemcinin datasheet’ine baktığınız zaman bu birimleri genelde USART birimi olarak görüyoruz çünkü USART aynı zamanda UART’ı da kapsayan bir birim olarak tasarlanmıştır.

USART, 5 ve 9 bit arası data uzunluğuna sahip veriyi taşıma özelliğine sahiptir. Ancak genel olarak 8 veya 9 bitlik kullanımlar tercih edilir.

UART – USART Haberleşmesi

UART haberleşmesini gerçekleştirirken ilk olarak baudrate (veri taşıma hızı) ayarlanması gerekir. Veri taşıma hızı çok çeşitli aralıklarda olabilir ancak piyasada yaygın olarak kullanılan baudrate’ler 4800, 9600, 57600, 115200 ve mikroişlemciler için çok fazla tercih edilmese de 921600. (921600 genelde hızlı işlem gerektiren yerlerde kullanılır.) Baudrate bizim verimizin saniyede ne kadarlık byte’ını taşıyacağını belirlememize yarar. Örneğin veri taşıma hızımızı 115200 seçersek bu bizim için saniyede yaklaşık olarak 11520 byte veri iletimi sağlayacaktır.

Veri iletimi için aşağıdaki görseldeki gibi bir yapı kullanılır. Yani haberleşme işlemimiz bir başlangıç bitinden sonra data bitleri, ardından parity biti ve son olarak da bitiş biti gönderilerek sonlandırılır. Bu işlem sırasında data uzunluğu ve parity biti opsiyonel olarak değişkenlik gösterebilir.

Bu haberleşme tipini kullanabilmemiz için alıcı ve vericinin veri taşıma hızlarının (baudrate) aynı olması gerekiyor (veya birbirine çok yakın değerler olması gerekiyor.) Bunun sebebi ise aktarım sırasında oluşabilecek hataları minimuma indirmek. Hata payları tolere edilebilir seviyede olması taktirde bir sorun yaratmayacaktır (~%1-3)

Yukarıdaki görselde gördüğünüz gibi haberleşme gerçekleşmesi için ilk önce verici tarafında logic 1 (HIGH) seviyesinde bulunan iletişim hattı iletişimin başlaması için logic 0 (LOW) seviyesine çekilir ve bu bizim Başlangıç Bit’imizi (Start Bit) temsil eder. Ardından göndermek istediğimiz verileri başlangıç bitinin arkasına ekleriz. Eğer parity bitine sahipsek onu da ekledikten sonra son olarak iletişime sonlandırmak için gerekli olan bitiş bitini (stop bit) HIGH seviyesine çekerek iletişimin sonlandığını alıcıya bildiririz. Biz verici kısmında bu işlemleri yaparken alıcı da aynı şekilde işlem yapar ve sadece bizim gönderdiğimiz dataları kendi UART Data Register’ına yazar.

Nasıl Kullanabiliriz?

USART haberleşmesi yapabilmek için mikroişlemcimizdeki daha önceden tanımlanmış olan pinleri kullanarız. Bunun için ya USB-TTL dönüştürücü ya da RS232 modülü kullanırız. Her iki modülü de RX-TX pinleri mikroişlemcimizin RX-TX pinleri ile ters olarak bağlanacak şekilde bağlantısını yaptıktan sonra iletişimi başlatabiliriz. (Yani mikroişlemci TX —> Modül RX, mikroişlemci RX —> Modül TX). RS232 ile daha ayrıntılı bilgi için ilgili yazımı ( RS232 Nedir? ) inceleyebilirsiniz.

Kaynaklar:

http://enderunix.org/docs/hard_soft-uart.pdf

https://learn.sparkfun.com/tutorials/serial-communication/uarts

https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter

http s://www.slideshare.net/canezgiaydemir/uart-ve-seri-haberleme

http://www.mcu-turkey.com/wp-content/uploads/2012/11/maximsoftuartfig1.jpg

http://www.bb-elec.com/Images/whitepaper-images/DataByte.aspx

RS232 nedir?

RS232 bir haberleşme standartıdır (communication standart). RS, Recommended Standard‘ın kısaltılmış halidir. Kısa mesafede haberleşme sağlamak için 1960’ların başlarında ortaya çıkmıştır. Şu an kullanılan standart ise 1987’de standart haline getirilmiştir.

Yapılan çalışmalar kabloların kapasitansından dolayı 15 metre üzerinde yapılan haberleşmelerde verinin bozulmalara uğradığını göstermiş. Ancak düşük kapasitanslı kablolar ile bu haberleşmenin 300 metreye kadar sağlanabildiği görülmüş. RS232 haberleşme standartı  seri asenkson olarak çalışmaktadır. Aynı zamanda ‘tam çift yönlü (full duplex)’ olarak çalışabilmektedir.

RS-232 iletimi yapılarken veriler ASCII karakterlerininden dolayı 8 bitlik karakterler halinde iletilmektedir. İletim seri bir şekilde gerçekleşmektedir. Gönderilecek veri gönderici tarafından belirli bir formatta hazırlanır ve hatta iletilir. Bu işlem yapılırken alıcı sürekli olarak hattı dinlemektedir. Alıcı, başlangıç bitini (start bit) gördükten sonra bitiş bitine (stop bit) kadar olan aralıktaki verileri okur.

Aslında hepimizin bilgisayarında, televizyon alıcılarımızda (receiver), modemlerimizde RS232 çıkışları mevcut. Şu an kullanılan standart RS232 kablosu ve çıkışını aşağıdaki görselden inceleyebilirsiniz.

Kaynak: https://cdn.sparkfun.com//assets/parts/1/4/9/00449-01a.jpg
Kaynak: https://images-na.ssl-images-amazon.com/images/G/02/aplusautomation/vendorimages/c25d08b1-7aa6-41a5-89b6-851db089ef4e.jpg._CB292758830_.jpg

 

RS232 neden kullanılır?

RS232, TTL seviyesinde (Transistor – Transistor Logic) iletim yapmaz. Gerilim aralığı +12v ve -12v arasındadır. Bilgisayarın binary sayı sisteminde 0 değeri 0V’u, 1 değeri ise 5V temsil etmektedir. Buna aynı zamanda TTL seviyesi de denir. Ancak veri iletimini TTL seviyesinde gerçekleştirmek oldukça risklidir. Çünkü TTL seviyesi gürültülerden çok çabuk etkilenip bozulmaya uğrayabilir. Burda devreye – kısa mesafeler için – RS232 giriyor. RS232, TTL seviyesinde iletilmiş olan veriyi kendi gerilim aralığı olan +12V ve -12V aralığına çekerek dışardan gelecek olan gürültülerden etkilense bile veri kaybolması yaşanmamasını sağlıyor.

Kaynak: http://www.best-microcontroller-projects.com/image-files/xhow-rs232-works-tx-logic-rs232-diag.png.pagespeed.ic.ymGeZe71tB.png
Kaynak: http://4.bp.blogspot.com/-oe0ZJvhNrBw/TdEM50BeSQI/AAAAAAAAgEQ/0uL8BJdElLc/s1600/RS232+TTL.png

Mikroişlemciler kullanarak yaptığınız projelerde bilgisayar ile uyumlu kablolar (RS232’den USB’ye dönüştüren kablolar da mevcut) kullanarak UART biriminden bilgisayarınızdaki seri monitöre (Real Term, Tera Term veya Arduino Seri monitörü bile olabilir) verileri aktarmanız mümkün. Herhangi bir görüntü aygıtı (LCD gibi) kullanmıyorsanız RS232 bu konuda size oldukça kolaylık sağlayabiliyor.

Kaynaklar:

 

Seri Haberleşme Protokolleri (UART, SPI, I2C)

Seri haberleşme için geçerli, standartlaşmış bazı senkron ve asenkron protokoller vardır. Bunlar cihazların birbiriyle veya  bir ana kontrolcüyle haberleşmesini sağlar. Yazımıza öncellikle senkron ve asenkron haberleşme hakkında bilgi vererek başlamak istiyorum.

Senkron Haberleşme Nedir?

Senkron haberleşme gerçekleştirilirken, gönderilen veri biti ve alınan veri biti birbiriyle uyum içerisinde olmalıdır. İletişimi gerçekleştirecek olan aygıtlar eş zamanlı olarak çalışmak zorundadır. Yani alıcı ve verici aynı saat (clock) üzerinde olmalıdır.

Asenkron Haberleşme  Nedir?

Asenkron haberleşme yapmak için belirli bir clock’a ihtiyaç duyulmaz. Veri herhangi bir anda iletilebilir. Belirli standartlar kullanılarak gerçekleştirilir ve Senkron haberleşmeye göre daha yavaş bir iletim olur. [1][2]

Seri Haberleşme Protokolleri - Serial Communication Protocols

Haberleşme protokolleri

Yazımız içerisinde değineceğimiz haberleşme protokolleri UART, USART, SPI ve I2C protokolleridir. Protokoller hakkında temel bilgiler, nerelerde ve ne çeşitte kullanıldığı hakkında bilgilendirme yapacağım. Embedded.com üzerinde yazılan bir yazıda haberleşme protokolleri birbirleri ile çok güzel karşılaştırılmış. [11]

UART Haberleşmesi (Universal Asynchronous Receiver Transmitter)

Adından da anlaşılacağı üzere Asenkron bir haberleşme gerçekleştiren bir yapıdır. Aslında bir protokol değildir, bir çiptir. Ama bu çip programlanabilir olduğu için belirli prokollere sahiptir. Aslında bir bilgisayarın (ya da mikrodenetleyici diyebiliriz) seri portlarını kullanarak haberleşme sağlayan bir gömülü devredir. Data tipi ve hızı değiştirilebilir, programlanabilir bir çiptir. Bizim çift taraflı olarak asenkron bir haberleşme yapmamızı sağlar. Gelen seri veriyi paralel veriye veya paralel veriyi seri veriye çevirerek iletimi gerçekleştirebilir. USART Haberleşmesi (Universal Synchronous and Asynchronous Receiver Transmitter) ise UART’ın yaptığı işin senkron haberleşme ile birlikte yapılmış halidir. Hem senkron hem de asenkron veriler iletilebilir. [3][4][5]

SPI Protokolü (Serial Peripheral Interface)

Senkron haberleşme protokollerinden bir tanesidir.  Fully duplex (eş zamanlı çift yönlü çalışabilen) olarak çalışabilir. Haberleşme gerçekleştirilecek cihazlar arasında master-slave ilişkisi vardır. Birden fazla slave cihazla haberleşme sağlanabilir. Senkron olarak çalıştığı için mutlaka bir clock sinyaline ihtiyaç duyulur. Kısa mesafeli iletimde kullanılır. [6][7][8]

I2C Protokolü (Inter-Integrated Circuit)

Senkron haberleşme protokollerinden diğer bir tanesidir. Half-duplex (yarı eş zamanlı çift yönlü çalışabilen) olarak çalışır. Yani veri iletimi çift yönlü olur ancak aynı anda hem veri gönderilip hem de alınamaz. Buna telsizleri örnek verebiliriz. Minimum bilgi alışverişi gerçektirilecek yerlerde tercih edilir. İletişim için bant genişliği oldukta düşüktür. SPI’da olduğu gibi master-slave yapısını kullanır. [9][10]

Kaynaklar:

1 – http://web.itu.edu.tr/~sgunduz/courses/mikroisl/slides/d8.pdf

2 – www.elektrikport.com/teknik-kutuphane/veri-iletimi-1-bolum-elektrikport-akademi/17252

3 – http://support.usr.com/support/s-cour/s-cour-docs/10589.htm

4 – https://en.wikipedia.org/wiki/Universal_asynchronous_receiver/transmitter

5 – https://www.slideshare.net/canezgiaydemir/uart-ve-seri-haberleme

6 – https://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

7 – https://learn.sparkfun.com/tutorials/serial-peripheral-interface-spi

8 – http://ramazansural.blogspot.com/2009/09/spi-nedir-nasil-calisir-spi.html

9 – https://en.wikipedia.org/wiki/I²C

10 – https://learn.sparkfun.com/tutorials/i2c

11 – http://www.embedded.com/design/connectivity/4023975/Serial-Protocols-Compared