İçindekiler:

Arduino 2'si 1 Arada Model Tren Kontrolörü: 4 Adım
Arduino 2'si 1 Arada Model Tren Kontrolörü: 4 Adım

Video: Arduino 2'si 1 Arada Model Tren Kontrolörü: 4 Adım

Video: Arduino 2'si 1 Arada Model Tren Kontrolörü: 4 Adım
Video: Endüstri Mühendisliği Web Seminerleri V I Dijitalleşmede lOT sistemleri 2024, Kasım
Anonim
Arduino 2'si 1 Arada Model Tren Kontrolörü
Arduino 2'si 1 Arada Model Tren Kontrolörü

Kırk yıl önce birkaç arkadaşım için op-amp tabanlı bir model tren gaz kelebeği tasarladım ve sonra yaklaşık dört yıl önce onu bir PIC mikro denetleyici kullanarak yeniden yarattım. Bu Arduino projesi, PIC versiyonunu yeniden yaratır ama aynı zamanda gaz kelebeği, fren ve yön kontrolü için manuel anahtarlar yerine bir Bluetooth bağlantısı kullanma yeteneği ekler. Burada sunduğum tasarım 12 voltluk bir model demiryolu motoru için hedeflenmiş olsa da, çeşitli diğer DC motor kontrol uygulamaları için kolayca değiştirilebilir.

Adım 1: Darbe Genişliği Modülasyonu (PWM)

Darbe Genişlik Modülasyonu (PWM)
Darbe Genişlik Modülasyonu (PWM)

PWM'ye aşina olmayanlarınız için, göründüğü kadar korkutucu değil. Basit motor kontrol uygulamamız için bunun tek anlamı, belirli bir frekansta kare dalga oluşturmamız ve ardından görev döngüsünü değiştirmemizdir. Görev döngüsü, çıktının dalga formu periyoduna kıyasla mantıksal olarak yüksek olduğu zamanın oranı olarak tanımlanır. Yukarıdaki şemada %10 görev döngüsünde üst dalga biçimi, %50 görev döngüsünde orta dalga biçimi ve %90 görev döngüsünde alt dalga biçimi ile bunu oldukça net bir şekilde görebilirsiniz. Her dalga biçiminin üzerine yerleştirilmiş kesikli çizgi, motor tarafından görülen eşdeğer DC voltajını temsil eder. Arduino'nun yerleşik bir PWM özelliğine sahip olduğu göz önüne alındığında, bu tip DC motor kontrolünü oluşturmak gerçekten oldukça basittir. PWM kullanmanın bir diğer avantajı, motorun düz DC kullanırken meydana gelebilecek sarsıntılı başlatmadan korunmasına yardımcı olmasıdır. PWM'nin bir dezavantajı, bazen motordan PWM frekansında duyulabilir bir ses gelmesidir.

2. Adım: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

İlk resim, anahtarlar ve LM298 motor sürücü modülü için Arduino bağlantılarını göstermektedir. Arduino'nun içinde zayıf çekme dirençleri vardır, bu nedenle anahtarlar için çekme dirençlerine gerek yoktur. Yön anahtarı basit bir SPST (tek kutuplu tek atış) anahtarıdır. Gaz Kelebeği ve Fren anahtarları, normalde açık, anlık kontak butonları olarak gösterilmektedir.

İkinci resim, Bluetooth modülü ve LM298 motor sürücü modülü için Arduino bağlantılarını göstermektedir. Bluetooth TXD çıkışı, doğrudan Arduino RX seri girişine bağlanır.

Üçüncü resim bir L298N çift H-köprü modülüdür. LM298 modülü, bir jumper ile etkinleştirilebilen yerleşik 5 voltluk bir regülatöre sahiptir. Arduino ve Bluetooth için +5 volta ihtiyacımız var ama motoru sürmek için +12 volt istiyoruz. Bu durumda L298N'nin “+12V güç” girişine +12 volt uygularız ve “5V etkinleştirme” jumperını yerinde bırakırız. Bu, 5 voltluk regülatörün modül üzerindeki “+5 güç” bağlantısına çıkış vermesini sağlar. Bunu Arduino ve Bluetooth'a bağlayın. +12 girişi ve +5 çıkışı için topraklama kablolarını “power GND” modülüne bağlamayı unutmayınız.

Motora giden çıkış voltajının, sadece tam veya tam kapalı olmak yerine Arduino tarafından üretilen PWM'ye göre değişmesini istiyoruz. Bunun için “ENA” ve “ENB” den jumperları çıkarıp modül üzerindeki “ENA”ya Arduino PWM çıkışımızı bağlıyoruz. Gerçek etkinleştirme piminin, kart kenarına en yakın olan ("giriş" pimlerinin yanında) olduğunu unutmayın. Her etkinleştirme için arka pin +5 volttur, bu yüzden buna bağlanmadığımızdan emin olmak istiyoruz.

Modül üzerindeki “IN1” ve “IN2” pinleri ilgili Arduino pinlerine bağlanır. Bu pinler motor yönünü kontrol eder ve evet, modüle bir anahtar bağlamak yerine Arduino'nun onları kontrol etmesine izin vermek için iyi bir neden vardır. Nedenini yazılım tartışmasında göreceğiz.

3. Adım: Bluetooth Modülü

Bluetooth Modülü
Bluetooth Modülü

Burada gösterilen resim, mevcut Bluetooth modüllerinin tipik bir örneğidir. Satın almak için birini ararken “HC-05” ve HC-06” terimlerini arayabilirsiniz. İkisi arasındaki farklar bellenimde ve genellikle karttaki pin sayısındadır. Yukarıdaki resim bir HC-06 modülüne aittir ve yalnızca çok temel konfigürasyona izin veren basitleştirilmiş ürün yazılımı ile birlikte gelir. Ayrıca yalnızca “Slave” Bluetooth cihazı olarak ayarlanmıştır. Basit bir ifadeyle, bu, yalnızca bir "Ana" cihazdan gelen komutlara yanıt verebileceği ve kendi başına komut veremeyeceği anlamına gelir. HC-05 modülü daha fazla konfigürasyon olanağına sahiptir ve “Master” veya “Slave” cihaz olarak ayarlanabilir. HC-05, HC-06 için yukarıda gösterilen dört yerine genellikle altı pime sahiptir. Durum pini gerçekten önemli değildir, ancak herhangi bir yapılandırma yapmak istiyorsanız Anahtar pini (bazen “EN” gibi başka isimlerle de kullanılır) gereklidir. Genel olarak, varsayılan 9600 baud hızında sorun yoksa ve modüle belirli bir ad vermek istemiyorsanız, modüllerin herhangi bir yapılandırmaya ihtiyacı yoktur. Bunları kullandığım birkaç projem var, bu yüzden onları buna göre adlandırmayı seviyorum.

Bluetooth modüllerini yapılandırmak, bir RS-232 seri bağlantı noktasına veya bir USB bağlantı noktasına bir arabirim satın almanızı veya oluşturmanızı gerektirir. Bu yazıda bir tane nasıl oluşturulacağını ele almayacağım, ancak web'de bilgi bulabilmeniz gerekir. Veya sadece bir arayüz satın alın. Yapılandırma komutları, eski günlerde telefon modemlerinde kullanılana benzer AT komutlarını kullanır. Buraya her modül tipi için AT komutlarını içeren bir kullanım kılavuzu ekledim. Unutulmaması gereken bir şey, HC-06'nın BÜYÜK HARF komutları gerektirmesi ve komut dizisinin 1 saniye içinde tamamlanması gerektiğidir. Bu, baud hızlarını değiştirmek gibi şeyler için daha uzun dizelerin bazılarının kesilip terminal programınıza yapıştırılması gerekeceği veya gönderilecek metin dosyalarını ayarlamanız gerekeceği anlamına gelir. BÜYÜK HARF gereksinimi, yalnızca yapılandırma komutları göndermeye çalışıyorsanız geçerlidir. Normal iletişim modu, herhangi bir 8 bitlik veriyi kabul edebilir.

4. Adım: Yazılım

Yazılım, hem manuel sürüm hem de Bluetooth sürümü için oldukça basittir. Bluetooth sürümünü seçmek için “#define BT_Ctrl” ifadesinin yorumunu kaldırmanız yeterlidir.

PIC kodunu yazarken PWM frekansını denedim ve sonunda 500 Hz'e karar verdim. Frekans çok yüksekse LM298N modülünün darbelere yeterince hızlı tepki veremeyeceğini keşfettim. Bu, voltaj çıkışının doğrusal olmadığı ve büyük sıçramalar alabileceği anlamına geliyordu. Arduino'nun yerleşik PWM komutları vardır, ancak bunlar frekansı değil, yalnızca görev döngüsünü değiştirmenize izin verir. Neyse ki frekans yaklaşık 490 Hz, yani PIC'de kullandığım 500 Hz'e yeterince yakın.

Tren gaz kelebeğinin "özelliklerinden" biri, gerçek bir trenin nasıl çalıştığını simüle etmek için hızlanma ve frenleme için bir momentum duygusudur. Bunu başarmak için, yazılımın manuel sürümü için döngüye basit bir zaman gecikmesi eklenir. Gösterilen değer ile 0'dan 12 volta veya 12 volttan sıfıra dönmek yaklaşık 13 saniye sürer. Gecikme, daha uzun veya daha kısa süreler için kolayca değiştirilebilir. Momentumun etkin olmadığı tek durum Yön anahtarının değiştirilmesidir. Koruma amacıyla, bu anahtar her değiştirildiğinde PWM görev döngüsü hemen %0'a ayarlanır. Bu, aslında, Yön şalterini bir acil durum freni olarak da ikiye katlar.

Yön anahtarının hemen işlenmesini sağlamak için kodunu bir kesme işleyicisine koydum. Bu aynı zamanda "değişimde kesinti" işlevini kullanmamıza da olanak tanır, böylece değişikliğin düşükten yükseğe veya yüksekten düşüğe olması önemli değildir.

Yazılımın Bluetooth sürümü, İleri, Geri, Fren ve Gaz işlevlerini başlatmak için tek harfli komutlar kullanır. Gerçekte, alınan komutlar manuel anahtarların yerini alır ancak aynı yanıtlara neden olur. Bluetooth kontrolü için kullandığım uygulama, Next Prototypes tarafından “Bluetooth Seri Controller” olarak adlandırılıyor. Sanal bir tuş takımı yapılandırmanıza ve her tuş için kendi komut dizilerinizi ve adlarınızı belirlemenize olanak tanır. Aynı zamanda bir tekrar hızı ayarlamanıza da izin veriyor, bu yüzden yaklaşık 14 saniyelik momentum vermek için Fren ve Gaz düğmelerini 50ms'ye ayarladım. İleri ve Geri düğmeleri için tekrar işlevini devre dışı bıraktım.

Bu yazı için bu kadar. Diğer Talimatlarıma göz atın. PIC mikrodenetleyici projeleriyle ilgileniyorsanız, www.boomerrules.wordpress.com adresindeki web siteme bakın.

Önerilen: