DC motorlar en yaygın kullanılan motorlardır. Bu motorlar, küçük projelerden gelişmiş robotiklere kadar hemen hemen her yerde bulunabilir. Daha önce DC Motor'u Arduino, Raspberry pi gibi diğer birçok mikrodenetleyici ile arayüzledik ve birçok robotik projede kullandık. Bugün AVR Mikrodenetleyici Atmega16 ile DC motoru kontrol etmeyi öğreniyoruz. Ancak devam etmeden önce DC motor hakkında daha fazla bilgi edelim.
DC motor nedir?
DC Motor, elektrik enerjisini mekanik enerjiye dönüştüren bir cihazdır. Spesifik olarak, bir DC motor, elektrik enerjisini mekanik enerjiye dönüştürmek için DC akımı kullanır. Motorun temel prensibi, motorun içinde dönmesine yardımcı olan bir kuvvet üretmek için manyetik alan ile akım arasındaki etkileşimdir. Böylece, elektrik akımı manyetik bir alanda bir bobinden geçtiğinde, motorun hareketiyle sonuçlanan bir tork üreten manyetik bir kuvvet üretilir. Motorun yönü, akımı ters çevirerek kontrol edilir. Ayrıca hızı, beslenen voltajı değiştirerek değiştirilebilir. Mikrodenetleyicilerin PWM pinleri olduğundan motorun hızını kontrol etmek için kullanılabilir.
Bu eğitimde, DC motor çalışması Atmega16 ile gösterilecektir. Akımın yönünü dolayısıyla hareket yönünü tersine çevirmek için L293D motor sürücüsü kullanılacaktır. L293D motor sürücüsü, motora gerekli akımı veren H-Bridge devre yapılandırmasını kullanır. Motorun yönünü seçmek için iki düğme kullanılır. Basmalı düğmelerden biri saat yönünde dönüşü seçmek için kullanılır ve diğeri DC motorun saatin tersi çalışmasını seçmek için kullanılır.
Gerekli Bileşenler
- DC Motor (5V)
- L293D Motor Sürücüsü
- 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
- Led (Herhangi Bir Renk)
Devre şeması
DC Motor kontrolü için Atmega16'nın programlanması
Burada Atmega16, USBASP ve Atmel Studio7.0 kullanılarak programlanmıştır. Atmega16'yı USBASP kullanarak nasıl programlayacağınızı bilmiyorsanız, bağlantıyı ziyaret edin. Tam Program, projenin sonunda verilmektedir, sadece programı Atmega16'ya yükleyin ve DC motorunu saat yönünde ve saat yönünün tersine döndürmek için iki Düğmeyi kullanın.DC motor, L293D motor sürücüsü kullanılarak arayüzlenir. İlgili düğmeye basıldığında DC motor iki yönde dönecektir. DC motoru Saat Yönünde döndürmek için bir düğme, diğer düğme ise DC motorunu Saat yönünün tersine döndürmek için kullanılacaktır. Öncelikle mikro denetleyicinin CPU frekansını tanımlayın ve gerekli tüm kitaplıkları dahil edin.
#define F_CPU 16000000UL #include #include
Ardından, basma düğmesinin durumunu takip etmek için bir değişken kullanın. Bu değişken, motorun yönünü tanımlamak için kullanılacaktır.
int i;
Veri yönü kaydını kullanarak GPIO'nun giriş / çıkış modunu seçin. Başlangıçta, motorun basma düğmesine basmadan çalışmasını önlemek için Motor pimi çıkışını düşük yapın.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
1 olmadığını kontrol st düğmesine basıldığında Atmega16 ait PORTA4 bağlı ve değişkendeki düğme durumunu saklayın.
eğer (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
Benzer şekilde Atmega16'nın PORTA5'ine bağlı 2. basma düğmesine basılıp basılmadığını kontrol edin ve basma düğmesinin durumunu değişken olarak kaydedin.
aksi takdirde (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
1 durumu ise st düğmesi doğrudur ardından Saat yönünün DC motorunu döndürmek ve ikinci düğme durumu doğruysa o zaman bilge karşıtı saat DC motoru döndürün.
eğer (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } else if (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Kullanılan GPIO'ya bağlı olarak motor pinlerini herhangi bir GPIO pinine bağlayabilirsiniz. Mikrodenetleyiciler DC motorları çalıştırmak için gerekli akımı sağlayamadığından mikrodenetleyicideki yükü azaltmak için Motor Sürücü IC'yi kullanmak da önemlidir. Daha fazla ayrıntı ve DC motorlara dayalı diğer projeler için lütfen verilen bağlantıyı ziyaret edin.
Tam kod ve Tanıtım Videosu aşağıda verilmiştir.