Atmega32u4 Arduino Leonardo Gelişmiş Çizgi İzleyen Robot Projesi

| Mart 13, 2021 Tarihinde güncellendi
Atmega32u4 Arduino Leonardo Gelişmiş Çizgi İzleyen Robot Projesi

Bu anlatımda sizlere beyaz bir zemin üzerindeki siyah çizgiyi izleyen robotun nasıl yapılacağına dair içeriği çok uzun bir sunum yapacağız. Böylece bu robotun nasıl çalıştığını anlayabilecek ve adımları izleyerek kendiniz de yapabileceksiniz.

Burada amaç küçük ve ucuz bir robot yapabilmektir. Kablosuz bağlantı ile ayarlanabilen PID denetleyicili bir ışık sensörü dizisi içermelidir. 0,5 m / s hıza ulaşmalı ve basılı bir izi (beyaz kağıda siyah çizgiler basılmış) sürekli olarak takip edebilmelidir.

Bu basılı izler 1,5 cm genişliğindedir, minimum 10 cm’lik bir kavis yarıçapına sahiptir ve kavşak içerebilir, bu durumda robotun düz ileri gitmesi gerekir. Diğer kısıtlamalar, 12 cm’den fazla olmaması gereken robotun yüksekliği ve genişliğidir ve normal elamanlar kullanmak yerine mümkün olduğunca fazla smd bileşeni kullanmalıyız.”

Özetle donanım aşağıdakilerden oluşmalıdır:

Enerji kaynağı (iki adet lityum pil kullanacağız)
DC-Motor
H köprü motor sürücü (açıklayacağız)
6 adet Analog Işık sensörü
PID Kontrol
Kablosuz iletişim modülü
Başlat / durdur düğmesi

“Yukarıdaki özellikleri göz önünde bulundurduğumuzda 6V DC motorlar ve 50: 1 redüktör kullanılmasının uygun olacağını belirledik. 6V’yi seçtik, çünkü seri olarak iki 18650 pili bir güç kaynağı olarak kullanmak istedik. Çünkü bu piller nispeten hafif, kolay ulaşılabilir, güçlü ve ucuz bir seçenek. Bu piller, 7,4V ila 8,4 volt arasında bir voltaj sağlar. Kayıpları hesaba katarak, yeterli amper verirken 6V’luk bir motoru aşırı yüklemeyeceği anlamına geliyor.

cizgi-izleyen-robot-yapimi

Atmega32u4 (Arduino Leonardo kartı için kullanılan çip) mikrodenetleyiciyi robot için beyin olarak kullanmak, bu proje için gerekli tüm hesaplamaları sağlayabilmesi gerektiğinden bariz bir seçimdi. Bu çip bazı giriş ve çıkışlarla bağlanacaktır.

Çip iki girişi bulunmaktadır: bir ışık sensörü dizisi ve 5 volt. Işık sensörü dizisi için QRE1113 sensörleri ile gittik, çünkü özellikleri istediğimiz seçeneklere çok uygun ve aynı projelerde yaygın olarak kullanılmakta. Bunlardan altısını kullanacağız. 5 volt, DC-DC regülatörü reg1117 arasındaki bir voltaj aracılığıyla iletilecektir, çünkü smd bileşenini bulmak kolaydır ve yukarıda açıkladığımız şartlara da uygundur.

H-Köprü motor sürücü olarak DRV8833’ü seçtik. Atmega32u4, biri usb ve diğeri bluetooth ile olmak üzere iki iletişim hattına (Giriş / Çıkış-I/O) sahiptir. Usb için mini bir USB portu ile devam ettik, çünkü esas olarak bir mikro USB portundan daha kolay lehimleniyor. Bluetooth için HC-05 modülünü seçtik, yine de bir tane taktığım için, bu modüllerin edinilmesi kolay ve bu uygulama için mükemmel çalışıyordu.

PCB Tasarım ip uçları püf noktaları:

arduino-line-following-robot-circuit

Bu proje için, PCB’yi tasarlarken kendi devre kartımızı tasarlamak istedik. Devremizi oluşturmak için ‘Eagle CAD’ yazılımını kullandık, çünkü kullanımı kolay, ücretsizce kullanılabilir ve daha sonra basılabilecek pcb tasarımının oluşturulmasına izin veriyor. Siz isterseniz farklı bir yazılım da kullanabilirsiniz; fakat çıktılardan hızlı faydalanmak için yine de öneririz.

Pcb’nin oluşturulması ile ilgili olarak, bir bileşen eklerken, iyi bir ayak izine (footprint-eleman) sahip bir bileşen seçmemiz önemliydi. Bu, devreyi oluşturma sürecini biraz daha zorlaştırdı, ancak bir sonraki adımda büyük zaman kazandı.

İyi bir karar vermek için aklınızda bulundurmanız gereken birkaç şey vardır. Ana paketten başlarsak: Mümkün olduğunca küçük olmasını istedik, böylece robot mümkün olduğunca küçük ve kompakt olacaktı. Bununla birlikte, her zaman en küçük bileşeni alamıyoruz; çünkü birkaç sınırlama vardı:

Pcb’nin her iki tarafını da en iyi şekilde kullanabilmemiz için SMD bileşenleri kullanmak istiyoruz. Bu yüzden deliklere monte edilen footprint (elemanların kart üzerindeki çizimleri) kullanmamaya dikkat edin.

Kullanmak istediğiniz bileşen var mı ve kolayca erişilebiliyor mu? Bu, eklediğiniz her yeni bileşen için cevaplamanız gereken bir sorudur, google ve / veya bir satıcı web sitesi aracılığıyla özelliklerin veri sayfasındaki gereksinimlerinize uygun olup olmadığını kontrol edin. Daha küçük bileşenlerin genellikle daha düşük nominal gerilimlere sahip olduğunu unutmayın, bu yüzden herşeyi kontrol ettiğinizden emin olun.

Ayrıca, biraz daha küçük bir bileşenin katlanarak fiyat olarak arttığı da olur, o zaman fiyattaki bu artışın boyutta minimum kazanmaya değip değmeyeceğini dikkate almanız gerekir.

Robot olmadığımızı ve elle lehim yapmamız gerektiğini unutmayın. Bu yüzden mümkün olsa da, gerçekten 1206 kılıfdan daha küçük bileşenler kullanmanızı önermem.

Uğraşımızda kristal için daha büyük bir footprint ve bileşen kullanmalıydık, çünkü çalışmasına rağmen, lehimlemekte zorlandık hatta 1 adet fire verdik.

Arduino Çizgi İzleyen Robot Devre Şemaları

Devreyi beş şemaya böldüm, burada durumu biraz açıklayacağım.

5-regulator-devre-semasi-5v-power-supply-schematic

1. İlk şema ATmega32u4 için voltaj regülatörü. Kontrol sistemi kararlı, temiz bir 5 dc voltaj istiyor. Bunu sağlamak için, regülatöre 100nF kapasitörler (ani voltajları ve elektromanyetik parazitleri gidermek için) ve bir yumuşatma kapasitörü olan 100μF kapasitörü olan ‘snubbers’ ekledik. Ayrıca pc’ye bağlandığında devreye pilsiz güç sağlamak da istedik; bu nedenle iki kaynak arasında geçiş yapmak için bir jumper ekledik. Son olarak, bir LED devresi de var; devreye güç uygulandığı zaman yanacak.

cizgi-izleyen-robot-beyni-robot-brain-following-line-microcontroller

2. İkinci şematik, ATmega32u4’den daha fazla bileşene ihtiyaç duyan robotun beynini çalıştırıyor. Çalışma için saat sinyaline ihtiyacı vardır, kristal ATmega’nın düzgün çalışması için 16MHz’lik bir frekans oluşturmaktadır. Kristale ek olarak iki adet 22pF yük kapasitörü ve 1M ohm direnç gereklidir. Kristal bir kuvarsdır ve bu nedenle bir piezoelektrik malzemedir.

Bu, belirli bir voltaj uygulandığında, belirli bir frekansta rezonansa girdiği anlamına gelir. Bir metronom gibi düzgün çalışması için, her döngü 360 ° faz kaymasına sahip olmalıdır; çünkü sinyalin kendisine müdahale etmemesini istiyoruz. Bunu gerçekleştirmek için size belirli bir dönüşüm sağlayacak bir RC devresi (1M ohm ve 22pF) ve dönüşümü durduracak seri olarak iki yük kapasitörü bulunur. Yük kapasitörlerinin birleşik kapasitesi ne kadar düşük olursa, Kristalin üretilen frekansı o kadar yüksek olur. Birleşik kapasite ne kadar yüksek olursa, üretilen frekans o kadar düşük olur.”

“Ayrıca veri iletişimi için bir usb portu eklemek istedik. Bu sadece D + ila D + ve D- ila D- arasında basit bir bağlantıdır, ancak ara bazı sınırlama dirençleri olmalıdır, böylece bağlantının toplam empedansı usb özelliklerine uygun olur. SW2, ATmega’nın sıfırlama anahtarıdır.

SW1, daha sonra başlatma / durdurma anahtarı olarak programlanacak olan programlanabilir bir anahtardır. LED2, gerçekten önemli bir işlevi olmayan programlanabilir bir ışıktır, ancak her şeyin çalıştığını doğrulamak için çok yararlı olacaktır.

Unutmamanız gereken çok önemli bir şey, tüm ISCP pinlerine bir terminal vermektir, böylece önyükleyiciyi yüklemek için daha sonra tekrar bağlayabilirsiniz. Bu pinler SCK, MOSI, MISO, VCC, RST ve GND pinleridir.

hc-05-modulu-bluetooth-devre-semasi

3. HC-05 bluetooth modül Bir ayarı değiştirmek istediğimizde bir bilgisayara takmak zorunda kalmak biraz rahatsız edici olacağından, bazı bluetooth işlevlerini de eklemek istedik. HC-05 modülünü seçtik.

Bu bluetooth modülü 3.3V ile çalışıyordu, bu yüzden başka bir voltaj regülatörüne ihtiyacımız vardı REG1117-3.3 kullandık sabit bir 3.3V çıkış veren model. Daha önce olduğu gibi, temiz bir çıkış voltajı oluşturmak için bir durum ışığı, bazı snubbers ve yumuşatma kapasitörü ekledik.

Tarih aktarımı için TX’i RXD ve RX’e TXD voltaj bölücü üzerinden bağlamamız gerekir. Voltaj bölücüsünün Arduino’dan de 5V veri hattını HC-05’ten 3.3V veri girişine dönüştürmesi gerekir (Arduino 3.3V gelen sinyali okuyabildiğinden, bu ters yönde gerekli değildir.)

PIO8, durumu gösteren LED’i kontrol etmek için kullanılır. Güç açıldıktan sonra yanıp sönecektir. PIO9, eşlemeyi gösteren LED’i kontrol etmek için kullanılır. Eşleştirme başarılı olduğunda sabit yanacaktır.

PIO11 bu iki modu ayarlamak için kullanılır: AT komut modu (pin 3.3V’a bağlıysa) veya Otomatik binding transparent data mode (pim GND’ye bağlıysa). AT komut modu, cihazın bazı özelliklerini yapılandırmak için kullanılır (örneğin, Ana, Bağımlı veya Geri Döngü modları).

sensor-dizisi-qre-sensorleri-akim-sinirlayici-direnc-analog-gerilim-bolucu

4. Sensör Dizisi, QRE sensörleri, bir akım sınırlayıcı direnç ve bir analog üreten bir gerilim bölücü oluşturmak için bir çekme direncine (47k) bağlı bir fototransistöre sahip bir ledden çok daha fazla olmadığından oldukça düzdür. 0V ve 5V arasında voltaj çıkışı vardır.

drv8833-motor-surucu-devre-semasi

5. Sonunda motorları açıp kapatan, ileri veya geri açan bir H köprümüz var. H-köprüsü için drv8833 veri sayfasında bulunan önerilen devreyi takip ettim, bu örnekte gelen voltaj için bazı yumuşatma kapasitörleri eklenmiştir, bazı dirençler uyku işlevini devre dışı bırakmak ve çıkışları etkinleştirmek içindir. Girişler, Arduino’nun tümü pwm pinleri olan Pin 5, 6, 9 ve 10’a bağlanır, hızı ayarlamak istiyorsanız çok önemlidir.

Kaynak: instructables

Not: Türkçe çevirinin tamamı alternatif dosya içindedir. Alternatif Dosya indirme LINK listesi (TXT formatında) link-27000a.zip

Yayım tarihi: 2020/06/03 Etiketler: , , ,



Bir cevap yazın

E-posta hesabınız yayımlanmayacak.