Arduino DC Motor Hız Kontrolü
Evet, tam olarak. DC motorlar, genellikle yüksek akım çekerler ve doğrudan Arduino gibi mikrodenetleyici pinlerinden kontrol edilmeleri uygun değildir, çünkü bu pinlerin akım çıkışı sınırlıdır. Transistörler, düşük güç sinyallerini kontrol etmek için kullanılan yarı iletken cihazlardır. Bir transistör, daha yüksek akım ve gerilim değerlerini kontrol edebilmenizi sağlar. DC motorun hızını kontrol etmek için transistörler kullanılır çünkü transistörler, mikrodenetleyicinin düşük güç sinyalini alıp, daha yüksek güç akımını yönlendirmek için kullanılabilir.
Bu sayede Arduino, transistörü kontrol ederek daha güçlü bir enerji kaynağını (örneğin pilden veya harici bir güç kaynağından) motorun beslemesine yönlendirebilir. Böylece motorun hızını istediğiniz gibi kontrol edebilirsiniz. Transistörler, Arduino gibi düşük güç cihazları ile daha yüksek güç cihazları arasında arabulucu olarak görev yapar, böylece düşük güç sinyalleriyle yüksek güç cihazlarını kontrol edebilirsiniz.
Transistörler
Harika bir benzetme! Transistörlerin temel çalışma prensibi, elektrik akımını veya gerilimi kontrol ederek daha büyük akım veya gerilimleri yönlendirebilme yeteneğidir. Bu benzetme, transistörlerin nasıl çalıştığını anlamak isteyenler için oldukça açıklayıcı bir şekilde ifade ediyor.
NPN tipi transistörlerde, baz bacağına akım uygulandığında, kolektör ve emitör arasındaki akışkanlık artar, yani ana akım yolunun açılmasını sağlar. Bu da transistörün "açık" konumda olduğu anlamına gelir ve daha büyük bir akımın kolektörden emitöre geçmesine izin verir.
Transistörler, elektronik devrelerde oldukça önemli bir rol oynar ve sinyal amplifikasyonundan anahtarlama işlemlerine kadar birçok farklı uygulamada kullanılır.
Bu anlamda, transistörler elektroniğin temel öğelerinden biridir. Onları bir anahtar olarak düşünebiliriz; küçük bir giriş sinyali ile daha büyük bir çıkış akımını veya gerilimini kontrol etmemize olanak sağlarlar. Bu özellikleri sayesinde, mikrodenetleyiciler gibi düşük güçlü cihazlarla daha yüksek güçlü yükleri kontrol etmek için çok kullanışlıdır.
NPN tipi bir transistörü düşünün. Kolektör, emitör ve baz olmak üzere üç bacağı vardır. Bu bileşen, kolektör ve emitör bacakları arasındaki akımı kontrollü bir şekilde yönlendirmenizi sağlar. Baz bacağına küçük bir akım uygulandığında, kolektör-emiter yolu üzerindeki daha büyük bir akım akışını etkileyebilirsiniz. Bu sayede, transistörü "açık" veya "kapalı" duruma getirerek bağlı olan yükün çalışmasını veya durmasını sağlayabilirsiniz.
Bu temel prensibi kullanarak, DC motorun hızını kontrol etmek için bir transistör kullanabilirsiniz. Örneğin, motorunuzu daha düşük bir hızda döndürmek istiyorsanız, transistörü kullanarak motorun beslemesini kontrol edebilirsiniz. Bu şekilde, Arduino gibi düşük güçlü bir mikrodenetleyici ile motorun daha yüksek güçlü bir kaynağını yönlendirebilirsiniz.
Devredeki diyotun görevi, motorun durur vaziyetten harekete geçtiği anda oluşan gerilim sıçramalarından transistörü korumak içindir.
NOT: Bağlantıları yapmadan önce Arduino’muza kodu yükleyelim. Bağlantıları yaptıktan sonra ise USB bağlantısı yerine Arduino üzerinde bulunan güç girişinden 9V adaptör veya 9V pil ile kartımızı besleyelim. Aksi takdirde bilgisayarımızın USB portuna veya Arduino’muza zarar verebiliriz!
Bu kod ile motorumuzun hızı önce kademeli olarak artacak; en yüksek değere ulaştıktan sonra ise aynı şekilde azalacak:
int motorPin = 6; // DC motorun bağlandığı pin
int hiz = 0; // Motor hızını saklamak için değişken
void setup() {
pinMode(motorPin, OUTPUT); // motorPin'i çıkış olarak ayarla
}
void loop() {
// Motor hızını artırarak motoru hızlıca açma döngüsü
for (hiz = 0; hiz <= 255; hiz++) {
analogWrite(motorPin, hiz); // motor hızını ayarla
delay(20); // 20 ms bekle
}
// Motor hızını azaltarak motoru yavaşça kapatma döngüsü
for (hiz = 255; hiz >= 0; hiz--) {
analogWrite(motorPin, hiz); // motor hızını ayarla
delay(20); // 20 ms bekle
}
}
Bu sefer motorun hızının kendiliğinden artması yerine biz bilgisayarımızdan kontrol edelim:
int motorPin = 6; // DC motorun bağlandığı pin
void setup() {
pinMode(motorPin, OUTPUT); // motorPin'i çıkış olarak ayarla
Serial.begin(9600); // Seri iletişimi başlat
while (!Serial); // Seri iletişimin hazır olduğunu kontrol et
Serial.println("0 ile 255 arası hız giriniz"); // Kullanıcıya hız girmesi için talimat ver
}
void loop() {
if (Serial.available()) { // Seri portta veri var mı kontrol et
int hiz = Serial.parseInt(); // Gelen veriyi integer'a dönüştür
if (hiz >= 0 && hiz <= 255) { // Hız aralığında mı kontrol et
analogWrite(motorPin, hiz); // Motor hızını ayarla
}
}
}
Kesinlikle doğru. Motor gibi yüksek akım çeken cihazları kontrol ederken güç kaynaklarına dikkat etmek önemlidir. Arduino'nun kendi beslemesi genellikle yetersiz kalabilir, bu yüzden daha güçlü bir kaynağa ihtiyaç duyulabilir.
Aynı zamanda seri port üzerinden komut göndererek motorun hızını kontrol edebilmek, projenizin esnekliğini artırır. Böylece kodu her seferinde yeniden yüklemek zorunda kalmadan, motorun davranışını gerçek zamanlı olarak değiştirebilirsiniz.
Eğer herhangi bir sorunuz veya daha fazla açıklamaya ihtiyacınız varsa, çekinmeden sorabilirsiniz.
Berat KURTGÖZ (Yazar)
Tasarım ssnasıl göründüğü ya da nasıl hissettirdiği ile ilgili bir şey değildir. Tasarım nasıl çalıştığı ile ilgilidir
Makaleleri
45
Makale Okunması
17387
Yorumunuz Gönder