kategoriler: Mikrodenetleyici devreleri
Görüntülenme sayısı: 18998
Makaleye Yorumlar: 0
Analog sensörleri Arduino ya bağlama, sensörleri okuma
Sensörler, eyaletlerdeki ve konumlardaki değişikliklerin miktarlarını, çevre koşullarını ve tepkileri ölçmek için kullanılır. Çıkışlarında, hem birlerden hem de sıfırlardan oluşan dijital sinyaller ve belirli bir aralıkta sonsuz sayıda voltajdan oluşan analog sinyaller olabilir.
Sensörler hakkında
Buna göre, sensörler iki gruba ayrılır:
1. Dijital.
2. Analog.
Dijital değerleri okumak için mikrodenetleyicinin hem dijital hem de analog girişleri kullanılabilir, bizim durumumuzda Arduino tahtasında avr. Analog sensörler, analogdan dijitale dönüştürücü (ADC) aracılığıyla bağlanmalıdır. ATMEGA328, çoğu ARDUINO kartına takılıdır (bunun hakkında daha fazla bilgi sitede bir makale var), devresinde dahili ADC içerir. Aralarından seçim yapabileceğiniz en fazla 6 analog giriş mevcuttur.
Bu sizin için yeterli değilse, dijital girişlere bağlanmak için ek bir harici ADC kullanabilirsiniz, ancak işlem algoritmaları ve ADC kontrolünün eklenmesi nedeniyle kodu karmaşıklaştıracak ve ses seviyesini artıracaktır. Analog-dijital dönüştürücüler konusu, bunlar hakkında ayrı bir makale veya döngü oluşturabileceğiniz kadar geniştir. Çok sayıda veya çoklayıcıya sahip bir tahta kullanmak daha kolaydır. Arduino'ya analog sensörlerin nasıl bağlanacağına bakalım.

Analog sensörlerin genel şeması ve bağlantıları
Sensör geleneksel bir potansiyometre bile olabilir. Aslında, dirençli bir konum sensörüdür; bu prensipte sıvıların seviyesini, eğim açısını, bir şeyin açılmasını kontrol ederler. Arduino'ya iki şekilde bağlanabilir.

Yukarıdaki devre, potansiyometredeki tüm voltajın düşmesi nedeniyle 0 ila 1023 arasındaki değerleri okumanızı sağlar. Voltaj bölücü prensibi burada çalışır, motorun herhangi bir pozisyonunda voltaj, direnç katmanının yüzeyine veya voltajın kaydırıcının çıkışı (kayan kontak) ile toprak (gnd) arasında kalan kısmı logaritmik bir ölçekte (potansiyometreye bağlı olarak) doğrusal olarak dağıtılır. Breadboard'da bu bağlantı şöyle görünür:

İkinci seçenek, klasik direnç bölücünün şemasına göre bağlanır, burada potansiyometrenin maksimum direnci noktasındaki voltaj, üst direncin direncine bağlıdır (Şekil R2'de).

Genel olarak, dirençli bölücü sadece mikrodenetleyicilerle çalışma alanında değil, aynı zamanda genel olarak elektronikte de çok önemlidir. Aşağıda, genel şemayı ve alt koldaki voltaj değerini belirlemek için hesaplanan oranları görebilirsiniz.

Böyle bir bağlantı sadece bir potansiyometre için değil, tüm analog sensörler için karakteristiktir, çünkü çoğu dış kaynakların etkisi altında direnç (iletkenlik) değiştirme prensibi üzerinde çalışır - sıcaklık, ışık, çeşitli radyasyon, vb.
Aşağıdaki en basit bağlantı şemasıdır termistörprensip olarak, bir termometre temelinde yapılabilir. Ancak okumalarının doğruluğu, direncin sıcaklığa dönüşüm tablosunun doğruluğuna, güç kaynağının kararlılığına ve aynı sıcaklığın etkisi altında direnç değişim katsayılarına (üst kolun direnci dahil) bağlı olacaktır. Bu, optimum dirençler, güçleri ve çalışma akımları seçilerek en aza indirilebilir.

Aynı şekilde, ışık sensörü olarak fotodiyotları, fototransistörleri de bağlayabilirsiniz. Fotoelektronik, daha sonra dikkate alacağımız bir nesnenin mesafesini ve varlığını belirleyen sensörlerde uygulama bulmuştur.

Şekil, fotodirençin arduinoya bağlantısını gösterir.

Yazılım bölümü
Belirli sensörleri bağlama hakkında konuşmadan önce, bunları işlemek için yazılımı düşünmeye karar verdim. Tüm analog sinyaller, analogRead () komutu kullanılarak aynı bağlantı noktalarından okunur.Arduino UNO ve 168 ve 328 atmega içeren diğer modellerin 10 bit ADC'ye sahip olduğunu belirtmek gerekir. Bu, mikrodenetleyicinin giriş sinyalini 0 ila 1023 arasında bir sayı olarak gördüğü anlamına gelir - toplam 1024 değer. Besleme voltajının 5 volt olduğunu düşünüyorsanız, giriş hassasiyeti:
5/1024 = 0.0048 V veya 4.8 mV
Yani, girişte 0 değeri ile voltaj 0'dır ve girişte 10 değeri ile - 48 mV.
Bazı durumlarda, değerleri istenen seviyeye dönüştürmek için (örneğin, PWM çıkışına iletmek için), 1024 bir sayıya bölünür ve bölünme sonucunda gerekli maksimum değer elde edilmelidir. Harita işlevi (kaynak, düşük, yüksek, yüksek, yüksek, düşük) daha net çalışır, burada:
-
düşük - işleve göre dönüşümden önce düşük sayı;
-
vch - üst;
-
VCh - fonksiyon tarafından işlendikten sonraki düşük sayı (çıkışta);
-
VHV - üstte.
Bir işlevi bir PWM'ye iletim için bir giriş değerine dönüştürmek için pratik bir uygulama (maksimum değer 255, ADC'den PWM çıkışına veri dönüştürmek için 1024, 4'e bölünür):
Seçenek 1 - bölüm.
int x;
x = analogOkuma (kap) / 4;
// 0 ile 1023 arasında bir sayı alınacak
// 4'e bölün, 0'dan 255'e bir tamsayı alırız analogWrite (led, x);
Seçenek 2 - HARİTA işlevi - daha fazla fırsat açar, ancak daha sonra bu konuda daha fazla fırsat açar.
void loop ()
{int val = analogOkuma (0);
val = harita (val, 0, 1023, 0, 255);
analogWrite (led, val); }
Veya daha da kısa:
analogWrite (led, harita (val, 0, 1023, 0, 255))
Tüm sensörlerin çıkışta 5 volt yoktur, yani. 1024 sayısı, PWM (veya başka herhangi bir) için aynı 256'yı elde etmek üzere bölmek her zaman uygun değildir. Maksimum sinyal örneğin 500 olduğunda, bu 2 ve 2,5 volt ve diğer değerler olabilir.
Popüler analog sensörler
Arduino için sensörün genel bağlantısı ve bağlantısı aşağıda gösterilmiştir:

Genellikle üç çıkış vardır, dördüncü - dijital olabilir, ancak bunlar özelliklerdir.
Analog sensörün çıkışlarının tanımlanması açıklaması:
-
G - eksi güç, ortak veri yolu, toprak. GND, “-” olarak adlandırılabilir;
-
V - artı güç. Vcc, Vtg, "+" olarak belirtilebilir;
-
S - çıkış sinyali, olası gösterim - Çıkış, SGN, Vout, işaret.
Yeni başlayanlar, sensörlerin değerlerini okumayı öğrenmek için her türlü termometreden projeleri seçerler. Bu tür sensörler dijital tasarımda, örneğin DS18B20'de ve analogda - bunlar LM35, TMP35, TMP36 ve diğerleri gibi her türlü mikro devrelerdir. İşte böyle bir sensörün tahtadaki modüler tasarımına bir örnek.

Sensörün doğruluğu 0,5 ila 2 derecedir. Çoğu analogları gibi bir TMP36 yongası üzerine kurulmuş olan çıkış değerleri 10 mV / ° C'dir. 0 ° 'de, çıkış sinyali 0 V'dir ve daha sonra 1 derece başına 10 mV eklenir. Yani, 25.5 derecede voltaj 0.255 V'dir, IC kristalinin hatası ve kendi kendine ısınması (0.1 ° C'ye kadar) içinde bir sapma mümkündür.
Kullanılan mikro devreye bağlı olarak, ölçüm aralıkları ve çıkış voltajları farklı olabilir, tabloya bakınız.

Bununla birlikte, yüksek kaliteli bir termometre için değerleri okuyabilir ve bir PC ile iletişim için LCD göstergede veya seri portta görüntüleyemezsiniz, tüm sistemin çıkış sinyalinin bir bütün olarak stabilitesi için, hem analog hem de dijital sensörlerden gelen değerleri belirli sınırlar içinde ortalamanız gerekir. hızlarını ve doğruluklarını bozmadan (her şeyin bir sınırı vardır). Bunun nedeni gürültü, parazit, dengesiz kontakların varlığıdır (bir potansiyometreye dayanan dirençli sensörler için, araba tankındaki su veya yakıt seviye sensörünün arızalarına bakın).
Çoğu sensörle çalışmak için kodlar oldukça hacimlidir, bu yüzden hepsini vermeyeceğim, “sensör + Arduino adı” isteği ile ağda kolayca bulunabilirler.
Arduino robot mühendislerinin sıklıkla kullandığı bir sonraki sensör hat sensörüdür. Fotoelektronik cihazlara dayanır, fototransistör tipi.

Onların yardımı ile, çizgi boyunca hareket eden bir robot (parçaları üretmek için otomatik üretimde kullanılır) beyaz veya siyah bir şeridin varlığını belirler. Şeklin sağ tarafında, LED'lere benzer iki cihaz görünür. Bunlardan biri LED, görünmez spektrumda yayabilir ve ikincisi bir fototransistördür.
Işık karanlıksa yüzeyden yansır - fototransistör yansıyan bir akım almaz, ancak ışık alır ve açılırsa. Mikrodenetleyiciye koyduğunuz algoritmalar sinyali işler ve hareketin doğruluğunu ve yönünü belirler ve düzeltir. Bu satırları okurken büyük olasılıkla elinizde tuttuğunuz optik fare de benzer şekilde düzenlenmiştir.
Bitişik bir sensörle destekleyeceğim - Sharp'tan bir mesafe sensörü, robotikte ve aynı zamanda uzayda nesnelerin konumunu izleme koşullarında (karşılık gelen TX hatasıyla) kullanılır.

Aynı prensipte çalışır. Kütüphaneler ve onlarla birlikte eskiz ve proje örnekleri Arduino sitelerinde çok sayıda mevcuttur.
Sonuç
Analog sensörleri kullanmak çok basittir ve öğrenmesi kolay Arduino programlama dili ile basit cihazları hızlı bir şekilde öğrenirsiniz. Bu yaklaşım, dijital meslektaşlara kıyasla önemli dezavantajlara sahiptir. Bu, parametrelerdeki geniş değişiklikten kaynaklanır; bu, sensörü değiştirirken sorunlara neden olur. Programın kaynak kodunu düzenlemeniz gerekebilir.
Doğru, bireysel analog cihazlar, seri üretimde nihai ürün ve cihaz tekrarlanabilirliği üzerinde olumlu bir etkiye sahip olan referans voltaj kaynaklarını ve akım dengeleyicileri içerir. Tüm sorunlar dijital cihazlar kullanılarak önlenebilir.
Bu şekilde dijital devre, montajdan sonra devreyi ayarlama ve ayarlama ihtiyacını azaltır. Bu, aynı kaynak kodunda, detayları aynı sinyalleri verecek olan birkaç özdeş cihazı bir araya getirme fırsatı verir, dirençli sensörler ile bu nadirdir.
Ayrıca web sitemize bakın:Harici aygıtları Arduino ya bağlama
Ayrıca bkz. electro-tr.tomathouse.com
: