Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

2 Mayıs 2021 Pazar

HC-SR04 Ultrasonik Sensör ve Arduino ile Mesafe Ölçme

 

HC-SR04 Ultrasonik Sensör ve Arduino ile Mesafe Ölçme


Bu eğitim, temassız mesafe ölçümü için Arduino ile HC-SR04 veya HY-SR05 Ultrasonik sensörlerin nasıl kullanılacağını gösterir.Bundan sonra, Ultrasonik sensör Arduino kütüphanesi olan veya olmayan örnek kodları göreceğiz. Öncelikle bir LED'i Arduino ve Ultrasonik sensör ile kontrol etmek için bir örnek göreceğiz. Daha sonra mesafe (cm) ölçüm değerini görüntülemek için 16 × 2 LCD kullanılacaktır. 
Arduino mesafe ölçümü ile HC-SR04

HC-SR04 Pin Ayrıntıları

Aşağıda verilen şekil, pin konfigürasyonunu göstermektedir. Dört pimden oluşur; Vcc, Ground, Trigger ve Echo pimi.

HC-SR04 Ultrasonik Sensör Pinout şeması

Vcc ve Toprak, sensörü çalıştırmak için kullanılır. Vcc pinine 5 volt vermeli ve GND pinini güç kaynağının toprak terminaline bağlamalıyız. 

Tetikleyici: Bir giriş pinidir. Mesafe ölçümünü veya mesafe aralığını başlatmak için ultrasonik sensörü başlatmak için tetik pimi kullanılır. Kullanıcılar sensörden mesafe ölçümleri almak istediklerinde, bu pime 10µs'lik bir darbe uygularız.

Eko: Bu bir darbe çıkış pinidir. Eko pini, çıkış olarak bir darbe üretir. Darbenin genişliği veya darbenin açık olduğu süre, ultrasonik sensör ile HC-SR04 sensörünün önüne yerleştirilen engel arasındaki mesafeye bağlıdır. Bekleme koşullarında, bu pin aktif düşük seviyede kalır. 

HC-SR05 ultrasonik sensör, 40KHz frekanslı duyulamayan ultrasonik ses dalgalarını kullanarak mesafeyi ölçer. Ses dalgaları gibi ultrasonik dalgalar da havada hareket eder ve önlerinde herhangi bir engel varsa geliş açısına göre yansır. Ayrıca, bir nesne bir ultrasonik vericiye paralel yerleştirilirse, ultrasonik dalgalar tam olarak 180 derecelik bir açıyla yansır. Bu nedenle, HC-SR05 sensörü ile mesafe ölçümü için, test edilen nesneyi aşağıdaki şekilde gösterildiği gibi ultrasonik sensör ile tam paralel konuma yerleştiririz. 

HC-SR04 ve nesne mesafe konumu

HC-SR05 ultrasonik sensör, ultrasonik verici ve ultrasonik alıcı modülü gibi iki temel modülden oluşur. Verici devresi, bir elektrik sinyalini 40KHz'lik 8 sonar dalga darbesi patlamasına dönüştürür. Verici devresine giriş elektrik sinyali, HC-SR04 sensörünün tetik pimine 10 µs darbe girişidir. Daha önce de bahsettiğimiz gibi, bu tetikleyici giriş sinyalini Arduino veya herhangi bir mikrodenetleyici aracılığıyla uyguluyoruz. Ultrasonik alıcı devresi ise verici devresinin ürettiği bu ultrasonik dalgaları dinler. 

HC-SR04 Echo Pulse Time'ı Arduino ile ölçün

Ultrasonik sensör HC-SR04 çalışıyor
  • HC-SR04 ile aralık değiştirmeye başlamak için, önce Arduino dijital çıkış pininden HC-SR04 sensörünün tetik pinine 10µs puls uyguluyoruz.
  • 10µs giriş tetik sinyali aktif hale gelir gelmez, verici devresi 8 ultrasonik sonar darbesi patlaması üretir. Aynı zamanda, Echo pini ayrıca mantık düşük seviyesinden mantık yüksek seviyeye geçiş yapar. 
  • Echo pini yükseldiğinde Arduino süre ölçme fonksiyonu ile zamanı ölçmeye başlarız. 
  • Bu dalgalar havada hareket eder ve sensöre paralel olarak yerleştirilmiş herhangi bir nesne varsa, bu dalgalar nesne ile bir çarpışmadan sonra geri yansır. 
  • Alıcı devresi tarafından bir cisme vurulduktan sonra alınan ultrasonik dalgalar, yankı pini alçalır. Arduino bu yankı çıkış sinyalinin aktif yüksekten aktif düşük seviyeye geçişini algılar ve ölçümü durdurur.  

Kısaca Yankı çıkış darbe sinyalinin açık olduğu süreyi ölçerek mesafeyi ölçebiliriz. Aşağıdaki şekil, giriş tetikleme sinyali ve 8 sonar darbesi ile ilgili yankı çıkış sinyalini göstermektedir.

Zamanlama diyagramı HC-SR04

Yankı çıkış sinyalinin yüksek kaldığı süre, ultrasonik sensör ile sensörün önüne yerleştirdiğimiz nesne arasındaki mesafeye bağlıdır. Mesafe ne kadar yüksekse, sonar dalgalarının ultrasonik alıcı devresine geri dönmesi için gereken süre o kadar yüksek olur. Çünkü ultrasonik dalgalar havada ses hızıyla ilerler ve hız sabit kalır. 

Zaman Süresini Mesafeye Dönüştürme

Bir sonraki bölümde, Arduino kullanarak nabız süresinin nasıl ölçüleceğini göreceğiz. Arduino ile çıkış darbesini zamanında (t) ölçtüğümüzü varsayalım. Şimdi soru, ölçülen bu zamanın mesafeye nasıl dönüştürüleceğidir.

Eh, bu eğitimin en bariz kısmı budur. Lisede, hepimiz iyi bilinen S = vt olan bir mesafe-zaman denklemi üzerinde çalışırız. Bu denklemi kullanarak darbe süresini (t) mesafeye (S) dönüştürebiliriz.

Mesafe (S) = Hız (v) * t // metre cinsinden mesafe

Burada v, havadaki ultrasonik dalgaların hızıdır. Ultrasonik dalgaların havadaki hızı, 340 m / s (saniyede metre) olan ses hızına eşittir. 

Yukarıdaki denklem, metre birimlerinde mesafe çıktısı verecektir. Ancak, mesafeyi santimetre biriminde istiyorsanız, 340'ı 100 ile çarpın. Dolayısıyla, yukarıdaki denklem şöyle olur:

S = 34000 * t // cm cinsinden mesafe

Yukarıdaki formülde verilen süre de ikiye bölünmelidir. Çünkü ultrasonik dalgalar vericiden engele doğru ilerler ve daha sonra aynı mesafeyi katederek alıcı devresine geri yansıtır. Sadece HC-SR04 ile nesne arasındaki mesafeyi bulmak istiyoruz. Bu nedenle, mesafeyi hesaplama formülü şu şekildedir:

S = 17000 * t // cm cinsinden mesafe

Bağlantı Şeması HC-SR04 ve Arduino

Şimdiye kadar ultrasonik sensörün çalışmasını ve pim detaylarını gördük. Artık bir HC-SR04 sensörünü Arduino ile arayüzlemek için, ikisi güç kaynağı pini ve ikisi dijital giriş çıkış pini olmak üzere dört pime ihtiyacımız olduğunu biliyoruz. Arduino'nun bir GPIO pini, ultrasonik sensöre bir tetik sinyali sağlamak için dijital çıkış pini olarak kullanılacaktır. Benzer şekilde, bir GPIO pini, çıkış sensörünün yankı çıkış sinyalini yakalamak için dijital giriş pini olarak kullanılacaktır.  

Arduino bağlantı şeması ile arayüz oluşturan HC-SR04 ultrasonik sensör

Şimdi Arduino'nun HC-SR04 sensörü ile bağlantısını bu bağlantı şemasına göre yapın. Bu şematik diyagramda, bir tetikleme sinyali sağlamak için Arduino'nun D9 pinini ve eko çıkış darbesini yakalamak için D11'i kullanıyoruz. 

HC-SR04Arduino
Vcc+ 5V
GNDGND
TetikleyiciD9
EkoD11

LED'li Ultrasonik Sensör için Arduino Kodu

Bu örnek kodda, ölçülen mesafe değerine göre bir LED'i kontrol edeceğiz. Arduino Uno, D13 pinine bağlı bir yerleşik LED'e sahiptir. Bu kod mesafe ölçümünü alır ve ölçülen mesafe değeri 10 cm'den az ise led yanar. Aksi takdirde LED kapalı kalır.

/*
* Ultrasonic Sensor HC-SR04 interfacing with  Arduino 
*
* by microcontrollerslab.com
*/

/* Define the names for Arduino pin for HC-SR04*/
#define trigger_pin 9
#define Echo_pin 11
#define LED 13

/* two variables to store duraion and distance value */
long duration;
int distance;

/* configure D9 and D11 as digital input and output respectively */
void setup() {
pinMode(trigger_pin, OUTPUT); // configure the trigger_pin(D9) as an Output
pinMode(LED, OUTPUT); // Set the LED (D13) pin as a digital output
pinMode(Echo_pin, INPUT); // configure the Echo_pin(D11) as an Input
Serial.begin(9600); // Enable the serial with 9600 baud rate
}

void loop() {
  
digitalWrite(trigger_pin, LOW); //set trigger signal low for 2us
delayMicroseconds(2);

/*send 10 microsecond pulse to trigger pin of HC-SR04 */
digitalWrite(trigger_pin, HIGH);  // make trigger pin active high
delayMicroseconds(10);            // wait for 10 microseconds
digitalWrite(trigger_pin, LOW);   // make trigger pin active low

/*Measure the Echo output signal duration or pulss width */
duration = pulseIn(Echo_pin, HIGH); // save time duration value in "duration variable
distance= duration*0.034/2; //Convert pulse duration into distance

/* if distance greater than 10cm, turn on LED */
if ( distance < 10)
digitalWrite(LED, HIGH);
else 
digitalWrite(LED, LOW);
// print measured distance value on Arduino serial monitor
Serial.print("Distance: ");
Serial.println(distance);
}

Kod Nasıl Çalışır?

Önce, #define önişlemci direktiflerini kullanarak Arduino pinlerinin adlarını tanımlayın. Bu, Arduino'nun D9 ve D11 pinlerinin, HC-SR04 sensörünün tetik ve eko pinlerini kontrol etmek için kullanıldığını tanımlar. Benzer şekilde, D13 pinine "LED" adı verilir. Dolayısıyla program aracılığıyla pin numaraları yerine bu sembolik isimleri kullanacağız.

#define trigger_pin 9
#define Echo_pin 11
#define LED 13
Bu iki değişken, süre ve mesafe değerlerini depolamak için bildirilir.
long duration;
int distance;

Kurulum İçinde ()

Arduino programında, setup () fonksiyonu içerisinde konfigürasyon ve başlatma ayarlarını yapıyoruz. Bu kodda, trigger_pin ve LED pinlerini dijital çıkış pinleri olarak ve Echo_pin'i dijital giriş pinleri olarak başlatıyoruz. Ayrıca, mesafe ölçüm verilerini Arduino seri monitörüne göndermek için seri iletişimi etkinleştirin.

pinMode(trigger_pin, OUTPUT); // configure the trigger_pin(D9) as an Output
pinMode(LED, OUTPUT); // Set the LED (D13) pin as a digital output
pinMode(Echo_pin, INPUT); // configure the Echo_pin(D11) as an Input
Serial.begin(9600); // Enable the serial with 9600 baud rate

Ana döngü()

Loop () işlevinin içine yazılan kod, tekrar tekrar çalıştırılır. Bu nedenle, bu ana loop () işlevi içinde mesafe ölçümü veya diğer yararlı işlevleri gerçekleştiririz.

Bildiğiniz gibi, HC-SR04 sensöründen veri aralığını etkinleştirmek için, tetik pimine 10 µs'lik bir darbe sağlıyoruz. Bu nedenle, bu kod segmenti, pimi tetiklemek için 10 µs'lik bir darbe sağlar. Uzaktan numune alma sürecini başlatacaktır.

digitalWrite(trigger_pin, LOW); //set trigger signal low for 2us
delayMicroseconds(2);

/*send 10 microsecond pulse to trigger pin of HC-SR04 */
digitalWrite(trigger_pin, HIGH);  // make trigger pin active high
delayMicroseconds(10);            // wait for 10 microseconds
digitalWrite(trigger_pin, LOW);   // make trigger pin active low

Ultrasonik sensöre 10µs puls uyguladığımız anda yanıt olarak 40KHz sonar dalgaları üretir ve Echo çıkış sinyalini aktif yüksek duruma yükseltir. Yankı çıkış sinyali, bu sonar dalgaları ultrasonik vericiye geri yansıyana kadar aktif yüksek kalır. Alıcı devre bu dalgaları alır almaz, yankı çıkış sinyali aktif düşük seviyeye gider. Bu nedenle, bu hat, çıkış sinyalinin aktif yüksek durumda kaldığı zamanlayıcıyı ölçer.

duration = pulseIn(Echo_pin, HIGH); // save time duration value in "duration variable

Gelen Arduino IDE , pulseIn () işlevi, darbe süresinin ölçülmesi için kullanılır ve mikrosaniye zaman süresi çıkış verir. Ancak yukarıda türettiğimiz mesafe-zaman ilişkisi formülü, hem hız hem de zaman, saniye, mikrosaniye veya milisaniye gibi zaman açısından aynı birimlere sahipse çalışır. Ancak bu denklemde hız birimi saniyede santimetredir.

S = 17000 * t // cm cinsinden mesafe

Hızı mikrosaniye başına santimetreye dönüştürmek için, bu denklemi 10 ^ -6'ya bölün. Artık hız ve zaman birimleri birbiriyle uyumlu.

S = 0.017 * t // cm cinsinden mesafe

Son olarak bu çizgi, darbe süresini mesafeye (cm) çevirir.

distance= duration*0.034/2;

If-else koşullu blok kontrolleri ya ölçülen mesafenin 10 cm'den az ya da daha büyük olduğunu kontrol eder. 10'dan büyükse LED'i açın. Aksi takdirde LED kapalı kalır.

if ( distance < 10)
digitalWrite(LED, HIGH);
else 
digitalWrite(LED, LOW);

Sonunda, serial.print () işlevi ölçülen mesafeyi Arduino seri monitörüne yazdırır.

// print measured distance value on Arduino serial monitor
Serial.print("Distance: ");
Serial.println(distance);

HC-SR04 Ultrasonik Sensör, LCD ve Arduino ile

Bu bölümde, HC-SR04 ultrasonik sensör ve Arduino kullanarak bir mesafe ölçüm ölçer tasarlayacağız. Ölçülen mesafe değerini görüntülemek için 16 × 2 LCD kullanacağız.

Önceki eğitimimizde, Arduino ile 16xLCD arabirimi hakkında derinlemesine bir kılavuz yayınladık. Makaleye buradan başvurabilirsiniz.

Şimdi LCD, HC-SR04 ultrasonik sensör ve Arduino ile bağlantı kurun.

Arduino ile arayüz oluşturan HC-SR04 Ulrasonic Sensör ve LCD'de ekran mesafesi
16 × 2 LCDArduino
D4 - D79, 10, 11, 12
E7
RS4
VEEPOT (Orta Ayak)
VSSZemin
VDD+ 5V
D ++ 5V
D-Zemin

Arduino ve HC-SR04 ile bağlantılar:

HC-SR04Arduino
Vcc+ 5V
GNDGND
TetikleyiciD2
EkoD3

HC-SR04 Arduino Kodu

Bu mesafe ölçümü arduino kodu hc-sr04 için 16 × 2 LCD'de santimetre birimi cinsinden mesafenin değerini gösterir.

/*
* Ultrasonic Sensor HC-SR04 interfacing with  Arduino 
*
* by microcontrollerslab.com
*/
// It inculde Liquid crystal display library in your code
#include <LiquidCrystal.h>
// This function assigns Arduino microcontroller about connection of LCD with Arduino. Pins should be connected in following manner :
// LiquidCrystal(RS, EN, D4, D5, D6, D7)
 LiquidCrystal lcd(4, 7, 9, 10, 11, 12);
/* Define the names for Arduino pin for HC-SR04*/
#define trigger_pin 2
#define Echo_pin 3
#define LED 13

/* two variables to store duraion and distance value */
long duration;
int distance;

/* configure D9 and D11 as digital input and output respectively */
void setup() {
pinMode(trigger_pin, OUTPUT); // configure the trigger_pin(D9) as an Output
pinMode(LED, OUTPUT); // Set the LED (D13) pin as a digital output
pinMode(Echo_pin, INPUT); // configure the Echo_pin(D11) as an Input
 lcd.begin(16, 2); // lcd.begin() function et up the LCD 16x2 LCD

}

void loop() {
  
digitalWrite(trigger_pin, LOW); //set trigger signal low for 2us
delayMicroseconds(2);

/*send 10 microsecond pulse to trigger pin of HC-SR04 */
digitalWrite(trigger_pin, HIGH);  // make trigger pin active high
delayMicroseconds(10);            // wait for 10 microseconds
digitalWrite(trigger_pin, LOW);   // make trigger pin active low

/*Measure the Echo output signal duration or pulss width */
duration = pulseIn(Echo_pin, HIGH); // save time duration value in "duration variable
distance= duration*0.034/2; //Convert pulse duration into distance

/* if distance greater than 10cm, turn on LED */
if ( distance < 10)
digitalWrite(LED, HIGH);
else 
digitalWrite(LED, LOW);
// print measured distance value on Arduino serial monitor
lcd.setCursor(0,0); // set the cursor position
lcd.print("Distance = "); //print the string on cursor position
lcd.print(distance);
lcd.print("cm");
}

Ultrasonik sensör HC-SR04 uygulamaları

Evsel kullanımdan endüstriyel kullanıma kadar birçok ultrasonik sensör uygulaması vardır. Ancak bunlardan bazıları aşağıda verilmiştir:

  • Engellerden kaçınma robotu
  • Robotik
  • Nesne algılama
  • Mesafe ölçümü
  • Sıvı seviye izleme sistemi
  • Yükseklik ölçümü
  • Tarım
  • Araç çarpışma koruması

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Kuvvet Algılama Direnci (FSR) Arduino

 

Kuvvet Algılama Direnci (FSR) Arduino

Kuvvet Algılama Dirençleri, Kuvvet Duyarlı Dirençler veya Kuvvet Sensörleri veya yalnızca FSR'ler olarak da bilinir . FSR - Force Sensing Resistor Fiziksel basıncı, sıkışmayı ve ağırlığı algılamak için özel olarak tasarlanmış düşük maliyetli ve kullanımı kolay sensörlerdir.

Bunları elektronik davullarda, cep telefonlarında, avuç içi oyun cihazlarında ve daha birçok taşınabilir elektronik cihazlarda bulacaksınız.

Bu sensörler basıncı ölçmek için harika olsa da, üzerlerinde kaç kilo ağırlık olduğunu bulmakta harika değiller. Ancak, "sensörün sıkıştırılıp sıkıştırılmadığını ve ne kadar olduğunu" öğrenmek istiyorsanız, bir sonraki dokunma algılama projeniz için bunlar iyi bir seçenektir.

FSR'ye Genel Bakış

FSR'lerde kullanılan teknoloji, 1985'ten beri kullanımda olan Interlink Electronics tarafından patentlenmiştir . Kolayca bulabileceğiniz en yaygın FSR türleri Interlink FSR-402 ve FSR-406'dır.

FSR, algılama alanına basınç uygulandıkça direnç açısından değişen değişken bir dirençten başka bir şey değildir.

Birkaç ince esnek katmandan oluşur. Ne kadar çok bastırılırsa, dirençli karbon elementleri iletken izlere o kadar çok dokunur ve bu da direnci azaltır.

fsrs nasıl yaptı

Şekil ve boyut

Dışarıda çeşitli FSR seçenekleri ve onları ayıran boyut, şekil ve algılama aralığı gibi birkaç temel özellik var.

Çoğu FSR'nin dairesel veya dikdörtgen bir algılama alanı vardır. Kare FSR'ler geniş alan algılama için iyidir, küçük dairesel sensörler ise algılama alanına daha fazla doğruluk sağlayabilir.

fsr sensör türleri

Algılama Aralığı

FSR'nin bir diğer önemli özelliği, sensörün birbirinden ayırt edebileceği minimum ve maksimum basınçları tanımlayan nominal algılama aralığıdır.

Kuvvet oranı ne kadar düşükse, FSR o kadar hassastır. Sensörün maksimum aralığının dışındaki herhangi bir basınç ölçülemez (bu, sensöre de zarar verebilir). Örneğin, 1kg değerindeki daha küçük bir FSR, 0 ile 1kg arasında daha hassas okumalar sağlayabilir, ancak 2kg ile 5kg ağırlık arasındaki farkı söyleyemez.

FSR Nasıl Çalışır?

Söylediğimiz gibi, FSR temelde ne kadar basıldığına bağlı olarak direnç değerini değiştiren bir dirençtir.

fsr çalışma animasyonu

Basınç olmadığında, sensör sonsuz bir direnç (açık devre) gibi görünür. Sensörün başına ne kadar sert bastırırsanız, iki terminal arasındaki direnç o kadar düşük olacaktır, ancak basıncı kaldırdıkça orijinal değerine geri dönecektir.

Aşağıdaki grafik, FSR 402 sensörü için farklı kuvvet ölçümlerinde sensörün direncini yaklaşık olarak göstermektedir. Verilerin logaritmik ölçeklerde çizildiğine dikkat edin.

fsr 402 direnci vs kuvvet eğrisi

Grafiğin genellikle 50 g ve yukarısından doğrusal olduğuna, ancak 50 g'nin altında olmadığına dikkat edin. Bu, üzerine ne zaman baskı yapsak direncinin hızla sonsuzdan 100K'ya düşeceği ve sonra daha doğrusal hale geldiği anlamına gelir.

FSR okumak

FSR'yi okumanın en kolay yolu, bir voltaj bölücü oluşturmak için FSR'yi sabit değerli bir dirençle (genellikle 10kΩ) bağlamaktır. Bunu yapmak için FSR'nin bir ucunu Güce, diğer ucunu aşağı çekme direncine bağlarsınız. Ardından sabit değerli aşağı çekme direnci ile değişken FSR direnci arasındaki nokta bir Arduino'nun ADC girişine bağlanır.

Bu şekilde, bir mikrodenetleyicinin ADC girişi tarafından okunabilen değişken bir voltaj çıkışı oluşturabilirsiniz.

fsr voltaj bölücü

Ölçtüğünüz çıkış voltajının FSR boyunca değil, aşağı çekme direnci üzerindeki voltaj düşüşü olduğunu unutmayın.

Gerilim bölücü konfigürasyonunun çıktısı aşağıdaki denklemle açıklanmaktadır:

fsr1

Gösterilen konfigürasyonda, çıkış voltajı artan güçle artar.

Örneğin 5V besleme ve 10K aşağı çekme direnci ile basınç olmadığında FSR direnci çok yüksektir (yaklaşık 10MΩ). Bu, aşağıdaki çıkış voltajıyla sonuçlanır:

fsr2

FSR'ye gerçekten çok bastırırsanız, direnç yaklaşık 250 Ω'a düşecektir. Bu, aşağıdaki çıkış voltajıyla sonuçlanır:

fsr3

Gördüğünüz gibi, sensöre uygulanan kuvvet miktarına bağlı olarak çıkış voltajı 0 ile 5V arasında değişmektedir.

Aşağıdaki tablo, 5V besleme ve 10K çekme direnci ile sensör kuvvetine / direncine dayalı yaklaşık analog voltajı göstermektedir.

Kuvvet (lb)Kuvvet (N)FSR DirenciR boyunca gerilim
YokYokSonsuz0V
0,04 lb0.2N30KΩ1,3V
0,22 lb1N6KΩ3.1V
2,2 lb10N1KΩ4.5V
22 lb100N250Ω4,9V

Arduino UNO'ya FSR Bağlama

FSR'yi bir arduino'ya bağlamak oldukça kolaydır.

Bir voltaj bölücü devre oluşturmak için FSR ile seri olarak 10kΩ aşağı çekme direnci bağlamanız gerekir. Ardından aşağı çekme direnci ile FSR arasındaki nokta bir Arduino'nun A0 ADC girişine bağlanır.

fsr'yi arduino'ya kablolama

FSR'lerin temelde dirençler olduğunu unutmayın. Bu, onları her iki şekilde de bağlayabileceğiniz ve iyi çalışacakları anlamına gelir.

Arduino Kodu - Basit Analog FSR Ölçümleri

İlk deneyimiz için sensör verilerini Arduino'nun ADC pininden okuyacağız ve çıkışı seri monitörde göstereceğiz.

Kod oldukça basittir. Baskı miktarı olarak yorumladığı şeyi nitel bir şekilde basar. Çoğu proje için gerekli olan hemen hemen budur.

int fsrPin = 0;     // the FSR and 10K pulldown are connected to a0
int fsrReading;     // the analog reading from the FSR resistor divider
 
void setup(void) {
  Serial.begin(9600);   
}
 
void loop(void) {
  fsrReading = analogRead(fsrPin);  
 
  Serial.print("Analog reading = ");
  Serial.print(fsrReading);     // print the raw analog reading
 
  if (fsrReading < 10) {
    Serial.println(" - No pressure");
  } else if (fsrReading < 200) {
    Serial.println(" - Light touch");
  } else if (fsrReading < 500) {
    Serial.println(" - Light squeeze");
  } else if (fsrReading < 800) {
    Serial.println(" - Medium squeeze");
  } else {
    Serial.println(" - Big squeeze");
  }
  delay(1000);
}

Her şey yolundaysa, aşağıdaki çıktıyı seri monitörde görmelisiniz.

fsr analog çıkışı

Kod Açıklaması:

Çizim, FSR ve 10K pull-down'ın bağlı olduğu Arduino pininin beyanıyla başlar. Ayrıca FSR'den fsrReadingham analog okumayı tutan değişkeni de tanımlıyoruz .

int fsrPin = 0;
int fsrReading;

Kodun kurulum fonksiyonunda, PC ile seri iletişimi başlatıyoruz.

void setup(void) {
  Serial.begin(9600);   
}

Döngü fonksiyonunda, analog okumayı FSR direnç bölücüsünden alıp seri monitörde görüntülüyoruz.

Daha önce belirtildiği gibi, sensörün çıkış voltajı 0V (basınç uygulanmamış) ile yaklaşık 5V (uygulanan maksimum basınç) arasındadır. Arduino bu analog voltajı dijitale dönüştürdüğünde, aslında onu 10 bitlik bir sayı olan 0 ila 1023 aralığına dönüştürür. Dolayısıyla, sensörü ne kadar sıktığınıza bağlı olarak seri monitörde 0 ile 1023 arasında bir değer göreceksiniz.

fsrReading = analogRead(fsrPin);  
 
Serial.print("Analog reading = ");
Serial.print(fsrReading);

Finally, we print the amount of pressure measured qualitatively.

if (fsrReading < 10) {
	Serial.println(" - No pressure");
} else if (fsrReading < 200) {
	Serial.println(" - Light touch");
} else if (fsrReading < 500) {
	Serial.println(" - Light squeeze");
} else if (fsrReading < 800) {
	Serial.println(" - Medium squeeze");
} else {
	Serial.println(" - Big squeeze");
}

Arduino Kodu - Gelişmiş Analog FSR Ölçümleri

Bir sonraki arduino taslağımız oldukça gelişmiş. FSR tarafından ölçülen yaklaşık Newton kuvvetini ölçer. Bu, FSR'nin yaşayacağını düşündüğünüz güçleri kalibre etmek için oldukça yararlı olabilir.

int fsrPin = 0;     // the FSR and 10K pulldown are connected to a0
int fsrReading;     // the analog reading from the FSR resistor divider
int fsrVoltage;     // the analog reading converted to voltage
unsigned long fsrResistance;  // The voltage converted to resistance
unsigned long fsrConductance; 
long fsrForce;       // Finally, the resistance converted to force
 
void setup(void) {
  Serial.begin(9600);   // We'll send debugging information via the Serial monitor
}
 
void loop(void) {
  fsrReading = analogRead(fsrPin);  
  Serial.print("Analog reading = ");
  Serial.println(fsrReading);
 
  // analog voltage reading ranges from about 0 to 1023 which maps to 0V to 5V (= 5000mV)
  fsrVoltage = map(fsrReading, 0, 1023, 0, 5000);
  Serial.print("Voltage reading in mV = ");
  Serial.println(fsrVoltage);  
 
  if (fsrVoltage == 0) {
    Serial.println("No pressure");  
  } else {
    // The voltage = Vcc * R / (R + FSR) where R = 10K and Vcc = 5V
    // so FSR = ((Vcc - V) * R) / V        yay math!
    fsrResistance = 5000 - fsrVoltage;     // fsrVoltage is in millivolts so 5V = 5000mV
    fsrResistance *= 10000;                // 10K resistor
    fsrResistance /= fsrVoltage;
    Serial.print("FSR resistance in ohms = ");
    Serial.println(fsrResistance);
 
    fsrConductance = 1000000;           // we measure in micromhos so 
    fsrConductance /= fsrResistance;
    Serial.print("Conductance in microMhos: ");
    Serial.println(fsrConductance);
 
    // Use the two FSR guide graphs to approximate the force
    if (fsrConductance <= 1000) {
      fsrForce = fsrConductance / 80;
      Serial.print("Force in Newtons: ");
      Serial.println(fsrForce);      
    } else {
      fsrForce = fsrConductance - 1000;
      fsrForce /= 30;
      Serial.print("Force in Newtons: ");
      Serial.println(fsrForce);            
    }
  }
  Serial.println("--------------------");
  delay(1000);
}

Seri monitörde çıkışın nasıl göründüğü aşağıda açıklanmıştır.

fsr analog çıkış2

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.

Arduino Uno R3 ile piezoelektrik sensör

 

Arduino Uno R3 ile piezoelektrik sensör

Arduino Uno R3 ile arayüz oluşturan piezoelektrik sensör, bu Arduino Uno R3 ve piezoelektrik sensöre dayalı öğrenci seviyesi / dönem seviyesi bir projedir. Bu projede piezoelektrik sensörün Arduino Uno R3 ile nasıl arayüzleneceğini öğreneceksiniz? Piezoelektrik sensör nedir? Piezoelektrik sensörün çıkışı nedir? Piezoelektrik sensör nasıl çalışır? Arduino, piezoelektrik sensörün çıkışındaki değişime nasıl tepki verir? Piezoelektrik sensör uygulamaları.Ayrıca Arduino Uno R3'ün piezoelektrik sensörlü donanım bağlantılarını ve tüm bu görevleri otomatik olarak yapmak için programlamayı da yazacağım.

Piezoelektrik sensör nedir?

Piezoelektrik sensör temelde üzerine uygulanan gerilimi elektrik enerjisine dönüştüren bir dönüştürücüdür. Basitçe, bir formdan diğerine enerji dönüşümü ilkesi kullanılır. Piezoelektrik sensörde olduğu gibi, fiziksel stresi elektrik enerjisine dönüştürür. Stres bir kuvvet, basınç, ivme ve dokunma potansiyeli olabilir. Çünkü bunların hepsi bir tür gerilimlerdir ve piezoelektrik sensör bu tür fiziksel kuvvetleri elektriksel forma dönüştürür.



Piezoelektrik sensör veya dönüştürücü uygulaması:

Günlük kullanımda çevrenizde muazzam piezoelektrik dönüştürücü uygulamaları göreceksiniz. Bu sensörün bazı önemli uygulamaları aşağıda verilmiştir:

  • Hareket algılama
  • Kapı vuruntu sensörü
  • İvme ölçüm sistemi
  • kuvvet ölçüm sistemi
  • basınç ölçüm sistemi
  • Mikrofon, onu elektriksel forma dönüştürmek için ses basıncını kullandı.
  • sigara çakmakları
  • yüksek gerilim ekipmanlarının testi
  • Ve binlerce piezo elektrik sensörü uygulaması vardır.

Piezoelektrik dönüştürücü veya sensör nasıl çalışır?

Piezoelektrik sensörlere herhangi bir gerilim uygulandığında, piezoelektrik dönüştürücü boyunca aynı kuvvet büyüklüğünde bir potansiyel fark üretilir. Böylece mekanik enerjiyi elektrik enerjisine dönüştürmek için kolaylıkla kullanılabilir. Piezoelektrik sensörler analog çıkış voltajı üretti. Bu sensörün iç yapısını ve çalışmasını anlamak istiyorsanız. Google'da aramanızı tavsiye ederim. Çünkü her şeyi tek bir başlık altında ele almam mümkün değil. Ancak piezoelektrik dönüştürücünün temel çalışmasını biliyorsanız, projenizde kullanmanız yeterlidir.

Arduino Uno R3 ile arayüz oluşturan piezoelektrik sensör:

Piezoelektrik sensörler, çıkışta analog voltaj üretir. Dolayısıyla bu sensörü Arduino Uno R3 ile arayüzlemek için Arduino Uno R3 ile analog voltajı nasıl ölçeceğinizi bilmelisiniz. 

Aşağıdaki şema, Piezoelektrik sensörün Arduino ile arayüz oluşturan donanım bağlantılarını göstermektedir. Piezoelektrik sensörlerin iki çıkış pini vardır, biri pozitif potansiyeldir ve diğeri negatif potansiyeldedir (toprak anlamına gelir). Pozitif potansiyel pini Arduino'nun pin 3 analog kanalına bağlanır ve negatif potansiyel pini toprağa bağlanır. Koruma amacıyla aralarına 2 mega ohm'luk bir direnç bağlanır. Sensör çıkışının çalışıp çalışmadığını kontrol etmek için sıfır pinine bir led bağlanır.

Arduino Uno R3 ile arayüz oluşturan piezoelektrik sensör
Arduino Uno R3 ile arayüz oluşturan piezoelektrik sensör

 Kod

Aşağıda verilen kod Arduino IDE kullanılarak yazılmıştır.Bu kodun her adımını yorumlarla (//) anlattım. 

int sensoroutput = 4; // the analog pin connected to the sensor
int ledoutput = 0; // pin connected to LED
int THRESHOLD = 100;
void setup()
{
pinMode(ledPin, OUTPUT);   // this function is used to declare led connected pin as output
}
void loop()
{
int value = analogRead(sensoroutput);  // function to read analog voltage from sensor
if (value >= THRESHOLD)                    // function to check voltage level from sensor
{
digitalWrite(ledoutput, HIGH);
delay(100); // to make the LED visible
}
else
digitalWrite(ledoutput, LOW);
}


ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.