Bu projede Kuvvet sensörü ve Arduino Uno kullanarak eğlenceli bir devre geliştireceğiz. Bu devre, sensöre uygulanan kuvvetle doğrusal olarak ilgili ses üretir. Bunun için FORCE sensörünü Arduino Uno ile arayüzleyeceğiz. UNO'da, işi yapmak için 8 bit ADC (Analogdan Dijitale Dönüştürme) özelliğini kullanacağız.
Kuvvet Sensörü veya Kuvvet Duyarlı Direnç
FORCE sensörü, yüzeye basınç uygulandığında direncini değiştiren bir dönüştürücüdür. FORCE sensörü farklı boyut ve şekillerde mevcuttur. Daha ucuz versiyonlardan birini kullanacağız çünkü burada fazla doğruluğa ihtiyacımız yok. FSR400, piyasadaki en ucuz kuvvet sensörlerinden biridir. FSR400'ün resmi aşağıdaki şekilde gösterilmektedir. Direnç, uygulanan kuvvet veya basınca göre değiştiğinden, Kuvvet duyarlı direnç veya FSR olarak da adlandırılırlar. Bu kuvvet algılama direncine basınç uygulandığında direnci azalır, yani direnç uygulanan kuvvetle ters orantılıdır. Bu yüzden üzerine baskı uygulanmadığında FSR'nin direnci çok yüksek olacaktır.
Şimdi FSR 400'ün uzunluk boyunca hassas olduğuna dikkat etmek önemlidir, kuvvet veya ağırlığın şekilde gösterildiği gibi sensörün gözünün ortasındaki labirent üzerinde yoğunlaştırılması gerekir. Güç yanlış zamanlarda uygulanırsa, cihaz kalıcı olarak hasar görebilir.
Bilmeniz gereken bir diğer önemli şey de sensörün yüksek menzilli akımları sürdürebilmesidir. Bu yüzden kurulum sırasında sürüş akımlarını aklınızda bulundurun. Ayrıca sensörün 10 Newton'luk bir kuvvet sınırı vardır. Yani sadece 1 kg ağırlık uygulayabiliyoruz. 1 Kg'dan daha yüksek ağırlıklar uygulanırsa, sensör bazı sapmalar gösterebilir. 3Kg'dan fazla artarsa. sensör kalıcı olarak hasar görebilir.
Daha önce de belirtildiği gibi bu sensör, basınçtaki değişiklikleri algılamak için kullanılır. Bu nedenle ağırlık, FORCE sensörünün üzerine uygulandığında, direnç büyük ölçüde değişir. FS400'ün ağırlık üzerindeki direnci aşağıdaki grafikte gösterilmiştir.
Yukarıdaki şekilde gösterildiği gibi, sensörün iki kontağı arasındaki direnç ağırlık ile azalır veya sensörün iki kontağı arasındaki iletkenlik artar. Saf bir iletkenin direnci şu şekilde verilir:
Nerede, p- İletkenin direnci
l = İletken uzunluğu
A = İletken alanı.
Şimdi "R" dirençli bir iletken düşünün, eğer iletken üzerine bir miktar basınç uygulanırsa, iletken üzerindeki alan azalır ve basınç sonucunda iletken uzunluğu artar. Dolayısıyla formülle iletkenin direnci artmalıdır, çünkü direnç R alanla ters orantılıdır ve ayrıca uzunluk l ile doğru orantılıdır.
Böylece basınç veya ağırlık altındaki bir iletken için bununla iletkenin direnci artar. Ancak bu değişiklik, genel dirence kıyasla küçük. Önemli bir değişiklik için birçok iletken bir arada istiflenmiştir. Yukarıdaki şekilde gösterilen Kuvvet Sensörlerinin içinde olan budur. Yakından bakıldığında sensörün içinde birçok çizgi görülebilir. Bu çizgilerin her biri bir iletkeni temsil eder. Sensörün hassasiyeti iletken numaralarındadır.
Ancak bu durumda basınçla direnç azalacaktır çünkü burada kullanılan malzeme saf iletken değildir. Buradaki FSR, sağlam polimer kalın film (PTF) cihazlarıdır. Yani bunlar saf iletken malzeme cihazları değil. Bunlar, sensörün yüzeyine uygulanan kuvvetin artmasıyla dirençte azalma gösteren bir malzemeden yapılmıştır. Bu malzeme, FSR grafiğinde gösterildiği gibi özellikleri gösterir.
Direnişteki bu değişim, biz onları okuyamadığımız sürece bir işe yaramaz. Eldeki kontrolör sadece voltajdaki olasılıkları okuyabilir ve daha azını okuyamaz, bunun için voltaj bölücü devresi kullanacağız, bununla direnç değişimini voltaj değişimi olarak türetebiliriz.
Gerilim bölücü dirençli bir devredir ve şekilde gösterilmiştir. Bu dirençli ağda bir sabit direncimiz ve diğer değişken direncimiz var. Şekilde gösterildiği gibi, burada R1 sabit bir dirençtir ve R2 direnç görevi gören FORCE sensörüdür. Dalın orta noktası ölçüme alınır. R2 değişikliği ile Vout'ta değişim yaşıyoruz. Yani bununla ağırlık ile bir voltaj değişimimiz var.
Şimdi burada dikkat edilmesi gereken önemli nokta, kontrolör tarafından ADC dönüşümü için alınan girişin 50µAmp kadar düşük olmasıdır. Direnç bazlı voltaj bölücünün bu yükleme etkisi önemlidir, çünkü voltaj bölücünün Vout'undan çekilen akım, hata yüzdesi artışlarını arttırır, çünkü artık yükleme etkisi konusunda endişelenmemize gerek yoktur.
FSR Sensörü nasıl kontrol edilir
Kuvvet algılama direnci, bir multimetre kullanılarak test edilebilir. FSR sensörünün iki pimini herhangi bir kuvvet uygulamadan multimetreye bağlayın ve direnç değerini kontrol edin, çok yüksek olacaktır. Ardından yüzeyine biraz kuvvet uygulayın ve direnç değerindeki düşüşü görün.
FSR Sensörünün Uygulamaları
Kuvvet algılama dirençleri, esas olarak basınç algılama "düğmeler" oluşturmak için kullanılır. Araba doluluk sensörleri, dirençli dokunmatik pedler, robotik parmak uçları, yapay uzuvlar, tuş takımları, Ayak pronasyon sistemleri, müzik aletleri, Gömülü Elektronikler, Test ve Ölçüm Ekipmanları, OEM Geliştirme Kiti ve taşınabilir elektronikler, sporlar gibi çeşitli alanlarda kullanılırlar.. Ayrıca Artırılmış Gerçeklik sistemlerinde ve mobil etkileşimi geliştirmek için kullanılırlar.
Gerekli Bileşenler
Donanım: Arduino Uno, Güç kaynağı (5v), 1000 uF Kapasitör, 100nF kapasitör (3 adet), 100KΩ direnç, Buzzer, 220Ω direnç, FSR400 Kuvvet sensörü.
YAZILIM: Atmel studio 6.2 veya Aurdino her gece
Devre Şeması ve Çalışma Açıklaması
Kuvvet algılama direncinin Arduino ile arayüzlenmesi için devre bağlantısı aşağıdaki şemada gösterilmiştir.
Sensördeki voltaj tamamen doğrusal değildir; gürültülü olacak. Gürültüyü filtrelemek için, şekilde gösterildiği gibi bölücü devredeki her direnç boyunca bir kapasitör yerleştirilir.
Burada bölücü tarafından sağlanan voltajı (ağırlığı doğrusal olarak temsil eden voltaj) alacağız ve onu UNO'nun ADC kanallarından birine besleyeceğiz. Dönüştürmeden sonra bu dijital değeri (ağırlığı temsil eden) alacağız ve onu sesli uyarıyı çalıştırmak için PWM değeriyle ilişkilendireceğiz.
Yani ağırlık ile birlikte, dijital değere bağlı olarak görev oranını değiştiren bir PWM değerimiz var. Dijital değer ne kadar yüksekse, PWM'nin görev oranı o kadar yüksek olur, bu nedenle buzzer tarafından üretilen gürültü o kadar yüksektir. Yani ağırlığı sese bağladık.
Daha ileri gitmeden önce Arduino Uno'nun ADC'si hakkında konuşalım. ARDUINO, şekilde gösterildiği gibi altı ADC kanalına sahiptir. Bunlardan herhangi biri veya tümü analog voltaj için giriş olarak kullanılabilir. UNO ADC 10 bit çözünürlüktedir (yani (0- (2 ^ 10) 1023) arasındaki tam sayı değerleri) Bu, 0 ile 5 volt arasındaki giriş voltajlarını 0 ile 1023 arasındaki tam sayı değerlerine eşleyeceği anlamına gelir. (5/1024 = 4.9mV) birim başına.
Burada UNO'nun A0'ını kullanacağız.
Birkaç şeyi bilmemiz gerekiyor.
|
Öncelikle UNO ADC kanallarının varsayılan referans değeri 5V'tur. Bu, herhangi bir giriş kanalında ADC dönüşümü için maksimum 5V giriş voltajı verebileceğimiz anlamına gelir. Bazı sensörler 0-2.5V arasında voltaj sağladığından, 5V referans ile daha az doğruluk elde ederiz, bu nedenle bu referans değerini değiştirmemizi sağlayan bir talimatımız var. Yani referans değerini değiştirmek için elimizde (“analogReference ();”) Şimdilik olarak bırakıyoruz.
Varsayılan olarak, 10 bit olan maksimum kart ADC çözünürlüğünü elde ederiz, bu çözünürlük komut kullanılarak değiştirilebilir ("analogReadResolution (bit);"). Bu çözünürlük değişikliği bazı durumlarda kullanışlı olabilir. Şimdilik olarak bırakıyoruz.
Şimdi yukarıdaki koşullar varsayılan olarak ayarlanmışsa, "analogRead (pin)" işlevini doğrudan çağırarak "0" kanalının ADC'sinden değeri okuyabiliriz; burada "pin", analog sinyali bağladığımız pini temsil eder, bu durumda "A0" olacaktır. ADC'den gelen değer, “int SENSORVALUE = analogRead (A0) şeklinde bir tamsayı olarak alınabilir; ", Bu komutla ADC'den sonraki değer" SENSORVALUE "tamsayısında saklanır.
Arduino Uno'nun PWM'si, PCB kartı üzerinde “~” ile simgelenen pinlerden herhangi birinde elde edilebilir. UNO'da altı PWM kanalı vardır. PIN3'ü amacımız için kullanacağız.
analogWrite (3, VALUE); |
Yukarıdaki koşuldan, PWM sinyalini doğrudan ilgili pinden alabiliriz. Parantez içindeki ilk parametre, PWM sinyalinin pin numarasını seçmek içindir. İkinci parametre görev oranını yazmak içindir.
UNO'nun PWM değeri 0'dan 255'e değiştirilebilir. En düşük "0" ile en yüksek "255" ile. Görev oranı olarak 255 ile PIN3'te 5V alacağız. Görev oranı 125 olarak verilirse PIN3'te 2,5V alacağız.
Artık ADC çıkışı olarak 0-1024 ve PWM görev oranı olarak 0-255 değerimiz var. Yani ADC, PWM oranının yaklaşık dört katıdır. ADC sonucunu 4'e bölerek yaklaşık görev oranını elde edeceğiz.
Bununla birlikte, görev oranı ağırlık ile doğrusal olarak değişen bir PWM sinyaline sahip olacağız. Bu zile veriliyor , ağırlığa bağlı olarak ses jeneratörümüz var.