İçindekiler:

UCL Gömülü - B0B Linefollower: 9 Adım
UCL Gömülü - B0B Linefollower: 9 Adım

Video: UCL Gömülü - B0B Linefollower: 9 Adım

Video: UCL Gömülü - B0B Linefollower: 9 Adım
Video: Часть 7 — Аудиокнига «Джейн Эйр» Шарлотты Бронте (гл. 29–33) 2024, Temmuz
Anonim
UCL Gömülü - B0B Linefollower
UCL Gömülü - B0B Linefollower

Bu B0B.*

B0B, geçici olarak çizgi izleyen bir robotun temeline hizmet eden genel bir Radyo Kontrollü arabadır.

Kendisinden önceki pek çok Çizgi izleyen robot gibi, zemin ile bizim durumumuzda koli bandı arasındaki bir geçişten kaynaklanan bir çizgide kalmak için elinden gelenin en iyisini yapacaktır.

Diğer birçok Çizgi izleyen robotun aksine, B0B ayrıca veri toplar ve WiFi aracılığıyla gönderir.

Bir hobi projesi için tamamen abartılı, ilginç bulabileceğiniz bir dizi konuyu içeriyor. Bu kılavuz onun doğumunu, işlevlerini ve onun gibi birini nasıl yapabileceğinizi açıklar.

Aynı zamanda, çeşitli elektroniklerin istediğimiz gibi çalışmamasına ve bu zorlukların üstesinden gelmek için attığımız adımlara kızmayı da içeriyor (Size bakıyorum ESP 8266-01).

Projenin çalışması için 2 adet kod bulunmaktadır. İlk kod Arduino'yu programcı olarak kullandığımız ESP8266 modülü içindir ve ikinci kod Arduino üzerinde çalışacaktır.

Adım 1: Bileşenler

Bu proje için ihtiyacınız olacak:

Donanım:

• 1 adet radyo kumandalı araba, (ESC ve direksiyon servosu olmalıdır).

Çoğunlukla stoklu bir Traxxas 1/16 E-Revo VXL kullanıyorduk, çünkü çoğunlukla sahip olduğumuz buydu ve bir Arduino ile kontrol edebileceğimizden oldukça emindik. Ayrıca, önemsiz olmayan miktarda ekstra donanım taşıyacağı için, bunun 1/16 E-Revo için bir sorun olmayacağından emindik.

Bununla birlikte, çoğu radyo kontrollü araba (kolayca parçalara ayrılabilen) muhtemelen bunun yerine kullanılabilir ve süreç çok benzer olacaktır.

• Bir ton koli bandı.

Renk, zemine mümkün olduğunca zıt olmalıdır. Test ortamımızda karanlık bir zeminde beyaz bant kullandık.

• 1 adet Arduino Mega 2560.

Daha küçük Arduino'lar da muhtemelen iyidir, ancak pimler için basılacaksınız.

• 1 adet büyük ekmek tahtası.

Biri yeterlidir, ancak kullanıcı hatası riskini azaltmak için diğer voltaj güç hatlarını ayırmak için daha küçük bir tane de vardı.

• 1x TCRT5000 IR analog sensör (çarpışmadan kaçınmak için kullanılır).

Tam marka/model, Arduino uyumlu olup olmadığı ve mesafeyi ölçüp ölçmediği önemli değildir. “Mesafe”, “engel” sensörü gibi anahtar kelimeleri arayın. Teknik olarak dijital bir sensör, küçük kod değişiklikleriyle de çalışır, ancak biz analog bir sensör kullanıyoruz.

• 1x veya 2x Yerçekimi: Analog Gri Tonlama Sensörü v2

Biri, çizgi izleyen için bir zorunluluktur. Tam model, yansıyan ışığın yoğunluğuna baktığı ve bir analog sinyal verdiği sürece önemli değildir. İkinci "oda" algılaması beklendiği gibi çalışmıyordu ve atlanabilir veya muhtemelen daha iyi etki için RGB renk sensörü gibi bir alternatif bulunabilir. Bunu henüz test edemedik.

• 1 x ESP 8266-01.

ESP 8266'nın birçok versiyonu mevcuttur. Yalnızca 8266-01 ile deneyimimiz var ve ESP kodunun farklı bir sürümle çalışacağını garanti edemeyiz.

• 1 x ESP8266-01 Wi-Fi kalkanı.

Teknik olarak isteğe bağlıdır, ancak bunu kullanmazsanız Wi-Fi modülünü içeren her şey çok daha karmaşık hale gelecektir. Bununla birlikte, kılavuz buna sahip olduğunuzu varsayacaktır (eğer değilse, ESP-01'i Arduino'ya doğru şekilde bağlamak için kılavuzları çevrimiçi olarak bulun), çünkü bunu yanlış yapmak modüle zarar verebilir ve muhtemelen zarar verecektir.

• Aracın kendisi için piller ve eklenti elektroniğine güç sağlamak için piller.

Her şeye güç sağlamak için bir çift 2.2 AH kapasiteli, 7.4V Lipo pil kullandık. Normalde kullanacağınız pilleri tercih ettiğiniz araçla kullanabilmelisiniz. 5V üzerinde ancak 20V altındaysanız, kapasite nominal voltajdan daha önemlidir.

• Çok sayıda atlama kablosu.

Bunların tam sayısını saymaktan vazgeçtim. Yeterince sahip olduğunuzu düşünüyorsanız, muhtemelen değilsiniz.

• Son olarak, her şeyi takmak için Arduino'yu, sensörleri, devre tahtalarını ve Wi-Fi modülünü seçtiğiniz araca monte etmeniz gerekecektir. Sonucunuz, temel olarak ne kullandığınıza ve hangi malzemelerin mevcut olduğuna bağlı olarak değişecektir.

Kullandığımız:

• Zip bağları.

• Biraz süper yapıştırıcı.

• Elimizde uygun çapta küçük parçalar halinde hurda kağıt/reçine tüp.

• Bir resim çerçevesinden eski bir Masonit arka plaka, boyutuna göre kesilmiş.

• Biraz daha koli bandı.

• Seçtiğiniz radyo kontrollü arabanızda çalışmak için gereken her türlü alet.

Çoğunlukla birden fazla ucu olan küçük bir tornavida seti kullandık, ancak bazen araçla birlikte gelen stok araç setini çıkarmak zorunda kaldık.

Yazılım:

• Düğüm kırmızısı

Veri toplamanın önemli bir parçası.

• Bir MQTT sunucusu.

Aracımız ve Node-red arasındaki orta adam. Başlangıçta, test için test.mosquitto.org'u kullandık.

Daha sonra kullandık:

• CloudMQTT.com

Bu, kurulumu biraz daha karmaşık olmaktan çok daha güvenilirdi.

• WampSunucusu.

Veri toplamanın son kısmı. Özellikle, toplanan verilerimizi depolamak için SQL veritabanını kullanacağız.

Adım 2: Elektrik Şeması

Elektrik Şeması
Elektrik Şeması

Adım 3: Fiziksel Yapı

Fiziksel Yapı
Fiziksel Yapı
Fiziksel Yapı
Fiziksel Yapı
Fiziksel Yapı
Fiziksel Yapı

Çözümümüz, fiziksel montaj için doğrudan bir yaklaşıma sahiptir.

Orijinal alıcı ve su geçirmez muhafazası, gerekli olmadığı için RC arabadan çıkarıldı.

Çizgi takip sensörümüz için ön tekerlekler arasında uygun bir yer olduğunu bulduk, bu yüzden ön koruma plakasının üzerine bir fermuar bağlayarak onu yerinde tuttuk.

Çarpışmayı önlemek için kullandığımız sensör, ön tamponun arkasına sıkışmış. Hala darbelerden korunuyor ve sürtünme uyumu. Hiç bu kadar hafif bir yukarı açıyla ileriye bakarak sona erer. Bu harika.

Üstteki Masonit plakanın (eski resim çerçevesinden arka plaka) boyutuna göre kesilmiş ve alta yapıştırılmış küçük kağıt/reçine boru bölümleri vardır. Bunlar, gövde direkleri için bağlantılarla hizalanır ve her şeyi güvenli bir şekilde tutarak üstüne oturur. Boruyu plakaya yapıştıran yapıştırıcının tutunduğunu ve fazla eğilmediğini varsayarsak, bu yerinde kalacaktır. Plakanın, tekerleklerin ve tamponların koruyucu alanı içinde olduğunu da belirtmekte fayda var. Arduino Mega ve iki devre tahtası plakaya ya çift taraflı bantla ya da etrafına bir koli bandı ilmeği ile yapıştırılarak yapıştırılmıştır.

WiFi modülünün güvenliğini sağlamak için özel bir önlem alınmamıştır. Bize ait değil, o yüzden çok hafif olduğu ve fazla hareket etmeyeceği ve kabloların onu yerinde tutması için yeterli olduğu için yapıştırmak ya da bantlamak gereksiz görüldü.

Son olarak, arka tekerleklerden biri tarafından süspansiyon bileşenlerine bağlanan 'odaları' tespit etmek için bir sensörümüz var. Çalışma sırasında bunun, aracın gezinmek için kullandığı çizgiden uzak olması gerekir.

Adım 4: ESP8266 Modülü

ESP8266 Modülü
ESP8266 Modülü
ESP8266 Modülü
ESP8266 Modülü

WiFi modülü, ESP8266, iki farklı pin kurulumu gerektirir. Modül yeni bir programla yanıp sönerken ve Arduino Mega 2560'ı programlayıcı olarak kullanırken bir kurulum kullanılacaktır. Diğer kurulum, modül kullanımdayken ve MQTT Broker'a bilgi gönderirken içindir.

ESP8266 modülüne kod yüklemek için Arduino IDE'yi kullanarak, bir pano yöneticisi ve ek bir pano yöneticisi kurmanız gerekecektir.

Pano yöneticisi altında esp8266 pano yöneticisini kurun. "esp" aratılarak kolayca bulunur. 2.5.0 sürümünü yüklemeniz çok önemlidir, daha eski değil, daha yeni değil.

Ek pano yöneticisi URL'lerindeki ayarlar altında, bu satırı kopyalayın:

arduino.esp8266.com/stable/package_esp8266c…

ESP8266 modülüne herhangi bir şey yükleyebilmek için, modülü flaş edebilmeniz için belirli bir pin kurulumu kullanmanız gerekecektir. Bu, modülde çalışan mevcut kodda her değişiklik yapmak istediğinizde yapılmalıdır. Modülü flaş etmeden önce kart yöneticisinden doğru ESP8266 modülünü seçmeyi unutmayın. Bu projede genel ESP8266 kartını seçtik. Modülün yanıp sönmesi için pin kurulumu bu bölümdeki ilk resimde bulunur.

ESP8266 modülünü flashladıktan sonra pin kurulumunu değiştirmeniz gerekir. Kurulumu sizin için kolaylaştırmak için bir adaptör kullanmayı da seçebilirsiniz. Bu projede, modülü çalıştırdığımızda bir adaptöre sahip olmayı seçtik. Adaptörlü pin kurulumu bu segmentteki ikinci resimde yer almaktadır.

ESP8266 modülüne yanıp sönecek kod, bir WiFi ve bir MQTT Broker'a bağlantıyı kurar, bu durumda bir kullanıcı adı ve şifre ile, ancak kodun yorumlarında açıklanan gerekli değişiklikleri yapmazsanız yapılabilir. Bu proje için Broker'ımız çalışmak için bir kullanıcı adı ve şifre istedi. Modül, bağlı olduğu seri porttan gelen mesajları okur. Arduino kodu tarafından oluşturulan her yeni satırı okuyacak, mesajı deşifre edecek ve mesajı yeniden oluşturacaktır. Daha sonra kodda belirtilen mesajı MQTT Broker'a gönderir. ESP8266 Modülü için kod:

Adım 5: Arduino

WiFi modülünü yapılandırdıktan sonra RC araba üzerinde motor ve servo kontrolü için kullanılacak programa bakıyoruz. Araba, bu projede "Hat Dedektörü" olarak da bilinen merkezi sensörden gelen gri skala bilgisine göre tepki verecek. Açıkça, Hat Dedektöründen gelen bilgileri, aydınlık ve karanlık arasındaki geçişte veya bu projede beyaz ve siyah arasındaki geçişte kaydedilen bilgilere eşit olan önceden ayarlanmış bir değere yakın tutmayı amaçlar. Bu nedenle, değer çok farklıysa, servoya karşılık gelen çıkış, arabayı hattın önceden ayarlanmış değerinin yakınına yönlendirecektir.

Program, RC araba için başlat ve durdur düğmesi işlevi gören iki düğmeye sahiptir. Teknik olarak "durdur" düğmesi, motora gönderilen ve RC arabanın durmasına neden olan bir PWM değerine eşit olan bir "kurma" düğmesidir. Başlat düğmesi, çok fazla ivme kazanırsa çok hızlı süreceği için zar zor ilerleyen RC arabaya eşit bir PWM değeri gönderir.

Önündeki yolun açık veya kapalı olup olmadığını tespit etmek için RC arabanın ön ucuna bir çarpışmadan kaçınma detektörü eklenir. Engellenirse, RC araba engel ortadan kalkana/kaldırılana kadar duracaktır. Dedektörden gelen analog sinyal, bir şeyin yolu kapattığını veya engellemediğini belirlemek için kullanılır ve durmanın yanı sıra ilerlemek için de bir kriter haline getirilir.

İkincil bir gri skala sensörü, "Oda Dedektörü", RC arabanın hangi odaya girdiğini tespit etmek için kullanılır. Hat Dedektörü ile benzer bir prensipte çalışır, ancak aydınlık ve karanlık arasındaki değişimi değil, Oda Dedektöründen görülen değere bağlı olarak farklı odalara karşılık gelen belirli bir aralıktaki değerleri arar.

Son olarak program, WiFi modülünün okuması ve ardından MQTT Broker'a göndermesi için sensörlerden bir bilgi satırı oluşturur. Bilgi satırı bir dize olarak oluşturulur ve WiFi modülünün bağlı olduğu ilgili seriye yazılır. Seriye yazmanın yalnızca WiFi modülünün gelen mesajı okuyabildiği sıklıkta gerçekleşmesi önemlidir, ancak bu kodda herhangi bir gecikme kullanmamayı unutmayın, çünkü RC arabanın hattı takip etme becerisine müdahale edecektir. Bunun yerine "millis" kullanın, çünkü programın gecikmeden çalışmasına izin verir, ancak Arduino açıldığından beri tanımlanmış bir miktar milis geçtikten sonra, gecikmenin yaptığı gibi kodu bloke etmeden seriye bir mesaj yazacaktır.

Arduino Mega 2560 için kod:

Adım 6: MySQL Veritabanı

WampServer, PHP ve MySQL veritabanı ile uygulamalar oluşturmamıza izin veren Windows için bir web geliştirme ortamıdır. PhpMyAdmin, veritabanlarımızı kolay bir şekilde yönetmemizi sağlar.

Başlamak için şu adrese gidin:

Bu projede Windows için 3.17 x64 bit sürümünü kullanıyoruz. Kurulumdan sonra, tüm hizmetlerin çalıştığından emin olun; bu, küçük simgenin kırmızı veya turuncu yerine yeşile döndüğü anlamına gelir. Simge yeşilse, MySQL veritabanınızı yönetmek için PhpMyAdmin'e erişebilirsiniz.

PhpMyAdmin kullanarak MySQL'e erişin ve yeni bir veritabanı oluşturun. Hatırlayabileceğiniz uygun bir ad verin, bu projede adı “line_follow_log” idi. Veritabanını oluşturduktan sonra veritabanında bir tablo oluşturmalısınız. Sütun sayısının uyduğundan emin olun. Projede 4 sütun kullanıyoruz. Bir sütun bir zaman damgası içindir ve son üçü araçtan veri depolamak için kullanılır. Her sütun için uygun bir veri türü kullanın. Zaman damgası sütunu için "uzun metin" ve geri kalanı için "orta metin" kullandık.

PhpMyAdmin ve MySQL'de yapmanız gereken tek şey bu olmalı. Veritabanınızı ve Düğüm-Kırmızı ile ilgili bölüm için tabloyu hatırlayın.

Adım 7: Düğüm-Kırmızı

Veri toplamayı işlemek için Node-red'de oldukça basit bir akış kullanacağız. MQTT sunucumuza bağlanır ve MYSQL veritabanımıza yazar.

Bunu yapmak için, çeşitli işlevlerin çalışması için birkaç palete ihtiyacımız var ve çalışması için bazı gerçek kodlara ihtiyacımız var.

Her şey sırayla. Aşağıdaki paletlere ihtiyacımız olacak.

Node-red-contrib-mqtt-broker: Bu, MQTT aracımızla bağlantıdır.

Düğüm-kırmızı-dashboard: Toplanan verileri görsel olarak temsil etmesi gereken Kontrol Panelimiz.

Node-red-node-mysql:SQL veritabanına olan bağlantımız.

Bu, Düğüm kırmızısı için tam teşekküllü bir kılavuz olması anlamına gelmez, ancak Düğüm kırmızısı akışının ne yaptığını açıklayacağım.

Başlangıçta, MQTT sunucu seçimimizle ilgili, görünüşte rastgele olan ölme/bağlantı kesilmesiyle ilgili sorunlar yaşadık, bu da herhangi bir değişiklik yapmayı sinir bozucu bir çaba haline getirdi, çünkü değişikliklerin faydalı olup olmadığı veya sonucu göremediğimiz zaman belirsizdi. Yani 'Sunucu öldü mü?' 'Hayır'ı enjekte eder, aşağıdaki blok onu MQTT sunucumuza enjekte eder. Ölmediyse, Hata Ayıklama penceresinde 'Hayır' görünecektir. Bu yalnızca test etmek için değil, Düğüm kırmızısını MQTT sunucusuna yeniden bağlanmaya zorlamak için yapılır.

'Test dizisi', MQTT aracısına bir kostüm dizisi gönderir. Bu diziyi Arduino'dan alacağımıza benzer olacak şekilde biçimlendirdik. Bu, projenin çalıştırılmasına ve veri toplanmasına gerek kalmadan mesajların kodunu çözen ağı yapılandırmak için daha kolay bir zamana sahip olacaktı.

Çalışma alanındaki son akış iki bölüme ayrılabilir. Alt dal sadece gelen mesajları okur, onları hata ayıklama penceresine gönderir ve SQL sunucusuna kaydeder.

Gerçek 'sihrin' gerçekleştiği yerde, bir işlev düğümünü izleyen geniş bağlı anahtarlar ağı.

Devam eden işlev, gelen dizeyi okur, onu her noktalı virgülle böler ve her bir çıktıdaki bölümleri geçirir. Aşağıdaki anahtarlar, gelen iki farklı bilgi parçasından birini arar. Belirli bir bilgi parçası her zaman bir çıktıdan geçirilir, diğer seçenek ikinci çıktıdan ayrılır. Bunu takiben, ikinci grup anahtar blokları gelir. Yalnızca belirli bir girdiyle etkinleşirler ve başka bir şey çıkarırlar.

Bir örnek, 'engel', diğerleri gibi ikili bir seçimdir, sürmek ya açıktır ya da değildir. Yani 0 veya 1 alacaktır. 'clear' şubesine 0, 'Obstructed' şubesine 1 gönderilecektir. 'Temizle', 'Engellendi' anahtarları, etkinleştirilirse, sırasıyla belirli, Temizle veya engellenmiş bir çıktı verir. Yeşil ilerleme blokları hata ayıklama penceresinde yayınlanacak, mavi ise kontrol panelimize yazacak.

'Durum' ve 'konum' dalları tamamen aynı şekilde çalışır.

Adım 8: MQTT Aracısı

Aracı, istemcilerden gelen mesajları uygun hedef istemcilere yönlendiren bir sunucudur. Bir MQTT Aracısı, istemcilerin bir ağ üzerinden aracıya bağlanmak için bir MQTT Kitaplığı kullandığı bir aracıdır.

Bu proje için, "Cute Cat" sürümü için ücretsiz abonelikle CloudMQTT hizmetini kullanarak bir MQTT Broker oluşturduk. Sınırları var ama biz bu projedekileri aşmıyoruz. WiFi modülü aracıya bağlanabilir ve aracı daha sonra mesajları uygun bir hedef istemciye yönlendirir. Bu durumda müşteri bizim Node-Red'imizdir. CloudMQTT hizmeti, sunucuları için bir kullanıcı adı ve parola ayarlar, böylece daha yüksek bir güvenlik garanti edilir. Temel olarak, yalnızca kullanıcı adı ve parolaya sahip olanların bu belirli CloudMQTT hizmetine erişebileceği anlamına gelir. Kullanıcı adı ve parola, ESP8266 kodunda ve Node-Red kodunda bağlantı kurulurken çok önemlidir.

Broker'ın aldığı mesajlar için devam eden istatistikler, abonelik planınızın yönlendirdiği bilgileri ne kadar iyi idare ettiğini görmek için kullanılabilecek hoş bir özelliktir.

Güzel bir özellik, Broker'dan WiFi modülüne mesaj gönderme imkanı, ancak bunları bu projede kullanmadık.

Adım 9: Hobi Elektroniği

Başlamadan önce, stok direksiyon servosunun bir Arduino'dan PWM sinyali ile, benzer kablolara sahip ve aynı stok radyo alıcısında farklı kanallara takılarak kontrol edilebileceğini biliyorduk, Elektronik Hız Kontrolünü (ESC'den) varsaydık. Şimdi açık), motoru kontrol eden, Arduino'dan PWM ile benzer şekilde kontrol edilebilir.

Bu teoriyi test etmek için küçük bir Arduino çizimi yapıyoruz. Çizim, bir potansiyometreden bir analog girişi okur, değeri 0, 1024'ten 0, 255'e yeniden eşler ve elde edilen değeri, R/C arabası küçük bir kutudayken analogWrite() kullanarak bir PWM pinine verir ve tekerlekler kaldırıldı.

Potmetre üzerindeki aralığı taradıktan sonra, ESC 'uyanmış' görünüyordu ve onu yukarı ve aşağı kısabilirdik, ayrıca Arduino'ya değerleri seri bağlantıya yazdırdık, böylece onları izleyebildik.

ESC, belirli bir eşiğin altındaki değerleri sevmiyor gibiydi, bu durumda 128. 191 sinyalini nötr gaz kelebeği ve 255'i maksimum gaz kelebeği olarak gördü.

Aracın hızını değiştirmemize gerek yoktu ve mükemmel bir şekilde onu hareket ettirecek en düşük hızda sürüklemesini sağladık. 192 motoru döndürecek en düşük değerdi, ancak henüz her şeyi bir araya getirmedik ve bu çıktının son montajdan sonra aracı hareket ettirmek için yeterli olup olmayacağından emin değiliz, ancak biraz daha büyük bir değer girmek önemsiz olmalıdır.

Ancak potansiyometreyi atlatmak ve koda sabit bir değer koymak işe yaramadı. Stok ESC basitçe yanıp söndü ve motoru döndürmedi, kılavuza göre 'gaz kelebeği trimini ayarlayın'.

Öfkeli sorun giderme, ona çeşitli değerler atma, farklı kablolar kullanma ve hatta Arduino'nun kullandığı PWM frekansını değiştirme denemeleri bile daha fazla tuhaflıkla sonuçlandı.

Aralıklı bir sorun gibi görünüyordu, bazen çalışıyor, diğer zamanlarda hiçbir şey yapmayı reddediyordu. Sadece yanıp sönmeye devam etti. Orijinal kontrolör ve alıcı ile yapılan bir test, ESC'nin hala tam olarak amaçlandığı gibi çalıştığını doğruladı ve bu da sorunları daha da garip hale getirdi. Daha yüksek değerler görmezden geldi ve yanıp sönmeye devam etti, daha düşük değerler ESC mutlu bir yeşil parlamaya geri döndü, ancak yine de dönmedi.

Potansiyometre veya stok verici ve alıcı ile kurulumdan ve sabit değerler sağlayan versiyondan farklı olan neydi?

Bazen amaçlandığı gibi çalışmak ve beklendiği gibi çalışmak Venn şemasında pek örtüşmez. Bu durumda, bir oyuncak olduğu için, vericiyi tuhaf bir şekilde tutmak gibi bir şey gaz kelebeğine sahip olsa bile, model açılırken modelin basitçe parmaklarını koparması veya kırması veya saçların tekerleklere veya aktarma organlarına sıkışması ihtimali olmamalıdır. nötr dışında herhangi bir pozisyon.

'Gaz kelebeği trimini ayarlayın', bu tam olarak ne anlama geliyor. ESC, açıldığında hiçbir şey yapmayacağını almadan önce nötr bir sinyal bekliyor. Normalde, ESC açıldığında verici her zaman boşta olur ve oradan mutlu bir şekilde sürülür. Değilse, model yere sıkıca oturduğunda ve operatör yarışmaya hazır hissettiğinde muhtemelen en az bir kez nötr konuma gelir.

Potansiyometreyi kullanırken, aralıklar arasında 'süpürüyorduk' ve sonra çalışmaya başlayacaktı. Potansiyometre nötr pozisyonu geçerken basitçe silahlandı ve sonra çalıştı.

Daha düşük aralıklar, ancak yine de ESC'yi memnun etmiyor gibiydi. Bu, PWM görev döngülerinin bir ürünüdür.

Tasarım gereği veya teknik bir nedenden dolayı, hem direksiyon servosu hem de ESC, %50 görev çevrimlerinin altındaki sinyalleri yok sayar. Bu, alıcı/vericinin çalışmayı durdurması veya gücünün bitmesi durumunda, model nötr duruma döner ve tam geri gazda mesafeye çıkmazsa olabilir. Aynı şekilde, servo sadece 180 derece döner ve tam aralığa ihtiyaç duymaz.

Eldeki bu yeni bilgi ile yeni bir Arduino taslağı oluşturuldu. İlk sürüm, Seri monitöre girilen dizeleri kabul eder, onu bir tamsayıya dönüştürür ve servo kitaplığı ve write()* kullanarak PWM pinine taşır. Seri monitöre yeni bir değer girilirse write() değeri güncellenir.

Test sırasında, stok Traxxas ESC, bir Mtroniks G2 Micro ile değiştirildi, ancak kesin değerler biraz farklı olsa da aynı şekilde çalışmalılar.

Bu kütüphane ESC'ye bir servo gibi davranır, görünüşe göre bu iyi. Servo.h kitaplığındaki write() işlevi 0'dan 180'e gider, beklenen devreye alma sinyalinin ortalarda olması beklenir.

G2 Micro, 90'a yakın bir değer aralığında bir write()'da silahlanıyor, ancak silahlandırıldığını 'hatırlıyor' göründüğü için tam olarak belirlemek zordu.

Traxxas VXL-s3'ün 91'lik bir write() değerinde devreye girmesi bekleniyor.

Devreye alma sinyalinden sonra, ESC, onları üretmek için çağrılan Arduino işlevleri ne olursa olsun, PWM sinyallerini mutlu bir şekilde kabul eder ve motoru buna göre kontrol eder.

Fonksiyonlardan bahsetmişken; Standart analogWrite() ve ayrıca Servo.h kitaplığından write() ve writeMicroseconds() birbirinin yerine kullanılabilir, sadece neyin ne yaptığını ve sonuçta görev döngüsünden başka hiçbir şeyin önemli olmadığını unutmayın. Daha fazla ayrıntı gerekirse WriteMicroseconds() kullanılabilir, buradaki aralığın 1000 ile 2000 arasında olduğunu, devreye alma veya 'nötr' değerinin 1500'de olması beklendiğini unutmayın. Standart analogWrite() ile kullanılabilir aralığın yaklaşık 191 nötr olmak üzere 128 ila 255 arasında olmalıdır.

Önerilen: