PWM'den bahsetmeden önce gerekli olan malzemelerden bahsetmek istiyorum.
- 2N2222 Transistör
- 1N4001 Diyot
- 5K ya da 10K Pot
- DC Motor (9V'luk ya da daha küçük)
- 470 Ώ direnç
PWM en basit haliyle bir sinyal modülasyon tekniği olarak tanımlanabilir. Sinyal bilgisinin aktarım için uygun hale çevirilmesi amacının yanı sıra güç kontrolü sağlamak ve elektrik makineleri,güneş pili şarj üniteleri gibi özel devrelere destek olmak amacı da taşır.
Bu kontrol de tamamen anahtarlama ile sağlanır. Anahtarlama ne kadar hızlı yapılırsa, PWM ile aktarılan sinyalin gücü o kadar da artar. Örneğin bir lambaya gönderilen sinyalde PWM tekniğine ihtiyaç duyuluyorsa, bu teknik 120 Hz frekans değerinde uygulandığında maksimum verim elde edilebilir.
"Duty Cycle" yani görev döngüsü olarak tanımlanan bir kavram bulunuyor ve PWM tekniğinde de sıkça karşımıza çıkıyor. Görev döngüsü kavramı aslında yapılan işlemin periyodunu belirtiyor. Bu döngü düşük seviyelerde ise aktarılan güç düşük olurken, döngünün yüksek seviyelerinde yüksek güç aktarılıyor.
Basitçe soldaki Duty Cycle grafikleri ile PWM'i şu şekilde anlatabiliriz. 10 bitlik bir ADC ile analog değerimiz 0-255 arasında değer alır. Bu yeni dijital değer ile anahtar olarak kullanacağımız transistörün bazına bu sayısal değerler ile PWM uygularız. Sayı ne kadar büyük ise "Pulse Width" yani "Darbe Genişliği" o kadar büyük olur.
Bir pervaneyi elimizle çevirdiğimizi düşünelim. Ne kadar çok çevirip az dinlenirsek pervanemiz o kadar çok dönecektir. Çevirim kısmını 1,dinlenme kısmını da 0 olarak düşünürsek 1'ler ne kadar çoksa pervane de o kadar çok hızlı dönecektir. İşte bu 1'ler transistörümüzün bazına uyguladığımız PWM sinyalinin Darbe Genişliği demek oluyor.
DC MOTOR SÜRMEK
Edindiğimiz bilgiler ile DC Motor sürmek artık kolay. İhtiyacımız yüksek akım kapasiteli bir transistör, PWM üretecimiz ki biz bunu Arduino'muz ile yapacağız ve 1 motor ile diyot.
Soldaki devreyi Arduino'muz ile kuracağız.Transistörün 2N2222 veya muadili olmasına dikkat etmekte fayda var hakeza BC547 vs. gibi transistörler ile bu iş mümkün değil.Çünkü motoru döndüren güç akımdır ve yüksek akım geçiremeyen transistörler ile motor süremeyiz.
Direnç olarak 1k Ώ da kullanabilirsiniz fakat ben 470 Ώ kullandım, bu konuda sıkıntı yok.
Çok kısa da olsa kullanacağımız transistörden de bahsetmek istiyorum. Tüm transistörlerin C,B,E bacakları standart değildir. O yüzden devreyi tamamlerken sağdaki resme bir göz atmanızda fayda görüyorum. Ben ilk seferde transistörü ters taktım ne yazık ki :D ve transistör o kadar çok ısındı ki elimi yaktım. O yüzden dikkat !
ARDUINO ile DEVRE BAĞLANTISI
Arduino ile sadece motoru yavaşlatıp hızlandırmayacağız. Analog girişe taktığımız potansiyometre değerine göre motorumuzu süreceğiz ve bu işi en kısa yoldan yapmamızı sağlayan bir kod da öğrenmiş olacağız, map.
"map" komutu ile istediğimiz bir çıkış değerini, bağlı olan giriş değerine göre anında değiştirebiliriz.Örnek vermek gerekirse ki bu kodu motor sürme devremizde de kullandık;
motordegeri = map(potdegeri, 0, 1023, 0, 255);
Bu yukardaki kod ile "motordegeri" isimli değerimizi, potun durumuna bağlı kıldık ve okunan analog değeri 10 bit ile sayısal değere çevirdik ve bunu da çıkışa 8 bit olarak yansıttık. Bu sayede motorumuzun hızını potansiyometrenin değeri ile kontrol edebiliyoruz.
Devreyi kurarken motoru harici bir pil ya da adaptör ile sürmenizde fayda var yoksa motoru arduino üzerinden süremezsiniz. Kodlarımız ;
int potPin = A0;
int motorPin = 3;
int potDegeri = 0;
int motorDegeri = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
potDegeri = analogRead(potPin);
motorDegeri = map(potDegeri, 0, 1023, 0, 255);
analogWrite(motorPin, motorDegeri);
Serial.print("Potansiyometre = " );
Serial.print(potDegeri);
Serial.print("\t motor = ");
Serial.println(motorDegeri);
delay(2);
}
Devreyi çalıştıtırken Seri Haberleşme Monitörüne bakmayı da ihmal etmeyin :).
Bu da devremizin son halinin resmi ve videosu.
guzel ve aciklayici bir calisma olmus elinize saglik.
YanıtlaSilTeşekkür ederim...
Silben bunu reduktorlu dc motorla yapabılırmıyım?
YanıtlaSil2N2222 transistörü 0,8 A'e kadar akım çekebilir. Motorunuzun çekeceği akım bu değere kadarsa çalışabileceğini düşünüyorum. Değilse eğer MOSFET'li sürücü devresi kurabilirsiniz. Şu başlık biraz yardımcı olabilir size.
Silhttp://forum.arduinoturkiye.com/discussion/1169/reduektoerlue-dc-motor-sueruecuesue/p1
Motorun değerlerini yazabilir misiniz
YanıtlaSilben bu devredeki atmega 328p-pu arduıno üzerinden söküp baskı devre üzerinde yapmam lazım .bana bu konuda yardımcı olabilirmisiniz .ödev olarak yapmam laım
YanıtlaSilhttps://www.quora.com/Can-I-use-ATmega328P-without-Arduino-just-using-it-in-breadboard-for-projects
Silkurulum burda.
Hocam motordan bi ses geliyor ama dönmüyor sorun ne yardımcı olur musunuz
YanıtlaSilTransistörünüzü değiştirin. 2N2222 ya da yüksek akım geçirebilen bir transistör kullandığınızdan emin olun.
SilGüzel olmuş. Peki joystick ile 2 dc motor nasıl olur. Sağ sol ileri. Böyle bir çalışma yapmak istiyorum ben
YanıtlaSilselamlar
YanıtlaSil1 Ω = 10 Ώ
bu doğrumudur ? ohm işaretinde çizgi olunca 1 sıfır ekleniyor sanırsam
Böyle bir şeyi ilk defa duyuyorum. 0 ekleme gibi bir durum yok :).
Siliki tane dc motoru sürücü olmadan sürebilir miyim
YanıtlaSilSürücüden kastınız transistörler ise hayır süremezsiniz.
Silelinize sağlık.
YanıtlaSilben 4 adet 3.7 v mikro dc motoru bu şekilde transistör ile sürerek qualkopter yapmayı düşünüyorum.
820 dc motor 300 ma çekiyor. bu durumda bc547 kullanabilir miyim.
bir de arduino ile transistör aradındaki direnç 300 ma motora tam güç vermesi için kaç ohm olması gerekir ?
teşekkür ederim.
Teşekkür ederim.
SilBC547 en fazla 100mA geçirmektedir. O yüzden yeteceğini düşünmüyorum.
Aradaki direnç konusunda ise arduino pininden en fazla 40mA akım çıkabiliyor 5V gerilimde yanlış hatırlamıyorsam. Kullanacağınız transistörün ß kazancını bilmeniz gerekmekte direnci hesaplayabilmeniz için.
Bu yorum bir blog yöneticisi tarafından silindi.
YanıtlaSilÇok güzel açıklama olmuş internette û transistör ne işe yarıyor tam anlamamıştım çok teşekkür ederim bir şey sormak istiyorum bende l298 motor sürücü devresi var bu transistörü ikisini birlikte kullanma şansımız var mı kurdum mantık yanlış mı eğer doğru ise nassıl bağlantı yapabiliriz
YanıtlaSilL298 varsa transistör kullanmanıza gerek yok, L298 içerisinde transistör seti var zaten. İstenilen bacaklarına pwm'i vereceksiniz e çıkıştan motoru süreceksiniz.
SilMerhabalar, 7 A, 24 V Değerlerindeki bir DC motoru ne ne şekilde sürebiliriz?
YanıtlaSilMerhaba, aynı devreyi BC547 ile yapmıştım, base önündeki direnci 10K yaptığım zaman transistörüm çok ısınıyor, ama 470 ohm kullanınca ısınma olmuyor. Bunun nedeni nedir?
YanıtlaSil12 v motor güç verince dönüyor sonra duruyor kontrol edemiyorum sorun nerde acaba
YanıtlaSil