- Çizgi İzleyen Robot Kavramı
- Gerekli Bileşenler
- Devre şeması
- Çizgi İzleyen Robot için Atmega16'nın Programlanması
Burada AVR Atmega16 Microcontroller ile başka bir proje daha inşa edeceğiz. AVR mikro denetleyicilerinde yeniyseniz, önceki AVR projelerine ve eğitimlerine başvurabilirsiniz.
Bir robot yapmak, tüm elektronik hobileri için her zaman bir heyecan kaynağıdır. Ve robot herhangi bir harici talimat olmadan bazı şeyleri otomatik olarak yapabilirse bu heyecan en üst düzeye çıkarılabilir. Elektronik yeni başlayanlar tarafından en yaygın olarak inşa edilen robotlardan biri Line Follower Robot'dur. İsminden de anlaşılacağı gibi robot, yüzeyde çizilen çizgiyi takip edecektir. Çizginin düz bir çizgi olması gerekmez. Ayrıca çizgiler herhangi bir renkte olabilir.
Daha önce farklı Denetleyicileri kullanarak Çizgi İzleyen Robot projeleri oluşturduk:
- 8051 Mikrodenetleyiciyi kullanan Çizgi İzleyen Robot
- PIC Mikrodenetleyiciyi kullanan Çizgi İzleyen Robot
- Arduino kullanan Çizgi İzleyen Robot
- Raspberry Pi kullanan Çizgi İzleyen Robot
- MSP430 Launchpad Kullanan Çizgi İzleyen Robot
Bugün bir Line follower Robot oluşturmak için AVR mikrodenetleyicisini kullanacağız.
Hatları tespit etmek için çoğunlukla IR sensörleri kullanılır. IR sensörleri, beyaz veya siyah yüzeyleri algılamada iyidir. Bununla birlikte, tüm renkleri algılayabilen ve tüm renk çizgilerini takip edebilen bir robot yapabilen diğer gelişmiş sensörleri kullanabilirsiniz. Açıyı değiştirerek yol değiştirilse bile robot çizgiyi algılayabilmeli ve çizgiyi takip etmeye devam etmelidir. Ayrıca, durma bölgesinin hatta geldiği yerde durmalıdır.
Hat izleyen robotlar günümüzde imalat endüstrilerinde, medikal, evsel uygulamalarda ve mal depolarında yoğun bir şekilde kullanılmaktadır. Robotlar yalnızca bu uygulamalarla sınırlı değildir ve uygulamalarını gelecekteki birçok uygulamada genişletebilirler.
Çizgi İzleyen Robot Kavramı
IR sensörleri bu projede kilit rol oynar. Kızılötesi sensörleri, çizilen siyah çizgiyi ve yüzeyi izlemek için robotun ön tarafına yerleştirilir. Robot hat arasına yerleştirilir ve kızılötesi sensörlerin yardımıyla robot hattı takip eder. IR sensörleri, okumayı mikrodenetleyiciye geri bildirir ve IR okuma yardımıyla, mikrodenetleyici motorları sola veya sağa hareket ettirir ve tekrar robotu yola getirir.
Çizgi İzleyen Robot, bir IR sensörü yardımıyla bir çizgiyi takip edebilmektedir. Bu sensör bir IR Vericisine ve IR alıcısına sahiptir. IR vericisi (IR LED) ışığı iletir ve Alıcı (Fotodiyot) gönderilen ışığın geri dönmesini bekler. Bir IR ışığı, yalnızca bir yüzey tarafından yansıtılırsa geri döner. Oysa tüm yüzeyler kızılötesi ışığı yansıtmaz, yalnızca beyaz renkli yüzey onları tamamen yansıtabilir ve siyah renkli yüzey bunları aşağıdaki şekilde gösterildiği gibi tamamen gözlemleyecektir. Kızılötesi sensör modülü hakkında buradan daha fazla bilgi edinin.
Şimdi robotun hat ile yolda olup olmadığını kontrol etmek için iki IR sensörü ve ray dışına çıkarsa robotu düzeltmek için iki motor kullanacağız. Bu motorlar yüksek akım gerektirir ve çift yönlü olmalıdır; bu nedenle L293D gibi bir motor sürücü modülü kullanıyoruz. IR sensöründen gelen değerlere göre motorlara talimat vermek için ATmega16 gibi bir Mikroişlemciye de ihtiyacımız olacak. Aynı şeyin basitleştirilmiş bir blok diyagramı aşağıda gösterilmiştir.
Bu iki IR sensörü, hattın her iki tarafına da yerleştirilecektir. Sensörlerden hiçbiri siyah bir çizgi algılamıyorsa, AVR mikrodenetleyicisi motorlara aşağıda gösterildiği gibi ilerlemelerini söyler.
Sol sensör siyah çizgi üzerinde gelirse, mikro denetleyici robota yalnızca sağ tekerleği döndürerek sola dönmesi talimatını verir.
Sağ sensör siyah çizgi üzerinde gelirse, mikro denetleyici robota yalnızca sol tekerleği döndürerek sağa dönmesini söyler.
Her iki sensör de siyah çizgi üzerinde gelirse robot durur.
Bu şekilde Robot, parkurun dışına çıkmadan çizgiyi takip edebilecektir. Şimdi devrenin ve Kodun nasıl göründüğüne bakalım.
Gerekli Bileşenler
- DC Dişli Motorlar (2 adet)
- IR sensör modülü (2 adet)
- L293D Modülü
- Kablosuz Güç Kaynağı (ör. Pil, Güç bankası)
- Robot Şezlonglar
- Atmega16 Mikrodenetleyici IC
- 16Mhz Kristal Osilatör
- İki adet 100nF Kapasitör
- İki adet 22pF Kapasitör
- Butona basınız
- Atlama Telleri
- Breadboard
- USBASP v2.0 (Atmega16'yı programlamak için)
Devre şeması
Tüm bileşenleri aşağıda Devre Şemasında gösterildiği gibi bağlayın
Çizgi İzleyen Robot için Atmega16'nın Programlanması
Burada Atmega16, USBASP ve Atmel Studio7.0 kullanılarak programlanmıştır. Atmega16'nın USBASP kullanılarak nasıl programlanabileceğini bilmiyorsanız, bağlantıyı ziyaret edin. Tam Program, projenin sonunda verilmektedir, sadece programı JTAG programcısı ve Atmel Studio 7.0 kullanarak Atmega16'da önceki eğitimde açıklandığı gibi yükleyin.
Kodu olabildiğince kısa ve basit tutmaya çalıştık. Yani bu kodda Makrolar ve Özel fonksiyon kayıtları kullanıyoruz.
if (bit_is_clear (PINA , leftSen)) { // sol sensörün KAPALI olup olmadığını kontrol edin
Bu ifade, sol sensörün bağlı olduğu PA0'ın LOW veya HIGH olup olmadığını kontrol eder.
Bu ifade ve diğer makrolar hakkında daha fazla bilgi edinmek istiyorsanız bu bağlantıya gidin
IR sensörlerinden okumak için takip ettiğimiz dört koşul var. IR sensörleri, Robotun ön tarafındaki yerleşimlerine göre adlandırılır. Sol IR, Sol sensör ve sağ IR, sağ sensördür. Robotun hareketine aşağıdaki koşullar karar verecektir.
Kodu yukarıdaki koşullara göre yazdık. Tek değişiklik, her iki motoru da sürmek için L293D'nin yalnızca iki giriş pinini kullanmamızdır.
Bir tanıtım videosuyla birlikte eksiksiz kod aşağıda verilmiştir.