Ana Sayfa STM32F4 Discovery STM32F4 Discovery HC-SR04 Mesafe Ölçer Uygulaması

STM32F4 Discovery HC-SR04 Mesafe Ölçer Uygulaması

6 min read
11
0
3,364

Merhaba arkadaşlar bu yazımızla birlikte STM32F4 Discovery ile sensör kullanımıyla ilgili bilgi vereceğiz.Malumunuz üzere piyasada bir çok sensör bulunmaktadır.Bu sensörleri,insanların duyu organları olarak da düşünebiliriz.Kapasitif sensörler,sıcaklık sensörleri,ultrasonic sensörler,nem sensörleri vb. örnek olarak verilebilir.Eğer robot yapacaksanız veya bir otomasyon, sensörlerin kullanılması kaçınılmazdır.

Bu yazımızda kullanacağımız sensör hakkında biraz bilgi vereceğiz…

HC-SR04 Ultrasonic Sensör

İnsan kulağı,20Hz-20KHz arasındaki ses dalgalarını duyabilir.Bu sensörler 40KHz in üstünde ses dalgaları üretmektedir.Peki ultrasonic sensör nasıl çalışır.

Ultrasonic sensörlerin yapısını incelediğimizde,bir tane özel hoparlör ve bir tane özel mikrofon bulunmaktadır.Özel hoparlör sayesinde 40kHz seviyesinde ses dalgaları üretilmektedir.Özel mikrofon sayesinde de bu ses dalgaları algılanmaktadır.Temel olarak bildiğimiz bir fizik kuralımız var.(X=V*t)Bundan farksız hiçbir şey değildir.

ultrasonik_sensorun_calismasi

Sensör üzerinde bulunan vcc,gnd,trig,echo pinleri aşağıda gösterilmektedir….

sensor_objdec_ultra_hc_sr04_7

Sensörü kullanmak için trig pininden yaklaşık 10us’lik bir pals gönderiyoruz.Bu değeri datasheetten biliyoruz.Sensör kendi içerisinde 40khz frekansında bir sinyal üretip  8 pals verici transdüsere gönderiyor.Bu ses dalgası  havada, deniz seviyesinde ve 15 °C sıcaklıkta 340 m/s bir hızla yol alır.Bir cisme çarpar ve geri sensöre yansır.Cismin sensörden uzaklıgı ile doğru orantılı olarak echo pini bir süre lojik-1 seviyesinde kalır ve tekrar lojik- 0 olur.Bizim bu mesafeyi ölçmek için tek yapmamız gereken echo pininin ne kadar lojik-1 olduğunun süresini bulmaktır.

 Trigger ve Echo pininin ayarlarını defines.h dosyasından değiştirebilirsiniz.

/* Trigger PIN */
#define HCSR04_TRIGGER_RCC RCC_AHB1Periph_GPIOB
#define HCSR04_TRIGGER_PORT GPIOB
#define HCSR04_TRIGGER_PIN GPIO_Pin_2

/* Echo PIN */
#define HCSR04_ECHO_RCC RCC_AHB1Periph_GPIOB
#define HCSR04_ECHO_PORT GPIOB
#define HCSR04_ECHO_PIN GPIO_Pin_3

main.c kodları aşağıda gösterilmektedir..

#include "stm32f4xx.h"
#include "defines.h"
#include "tm_stm32f4_delay.h"
#include "tm_stm32f4_hcsr04.h"
#include <stdio.h>

int main(void) {
float mesafe;

/* Pin konfigürasyonlari yapiliyor... */
GPIO_InitTypeDef GPIO_InitDef;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
GPIO_InitDef.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOD, &GPIO_InitDef);
/* Sistem baslatiliyor */
SystemInit();
/* Delay fonksiyonlari baslatiliyor */
TM_DELAY_Init();

/*HC-SR04 baslatiliyor.. */
if (!TM_HCSR04_Init()) {
/* Sensor dogru okumuyorsa */
while (1) {
GPIO_SetBits(GPIOD, GPIO_Pin_12| GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15);
Delayms(100);
}
}

while (1) {
/* Mesafeyi oku */
mesafe = TM_HCSR04_Read();

if (mesafe < 10) {
GPIO_SetBits(GPIOD, GPIO_Pin_12);
GPIO_ResetBits(GPIOD, GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15);
}
else if (mesafe> 10 && mesafe < 20 ) {
GPIO_SetBits(GPIOD, GPIO_Pin_13);
GPIO_ResetBits(GPIOD, GPIO_Pin_12|GPIO_Pin_14 | GPIO_Pin_15);
}
else if (mesafe> 20 && mesafe < 30 ){
GPIO_SetBits(GPIOD, GPIO_Pin_14 );
GPIO_ResetBits(GPIOD, GPIO_Pin_12| GPIO_Pin_13| GPIO_Pin_15);
} else {
GPIO_SetBits(GPIOD, GPIO_Pin_15);
GPIO_ResetBits(GPIOD, GPIO_Pin_12| GPIO_Pin_13|GPIO_Pin_14);
}

/* Sensorun algilamasi icin biraz zaman ver*/
Delayms(100);
}
}

Program dosyalarına buradan ulaşabilirsiniz…..

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Bilal Kaya
Daha Fazla Göster -  STM32F4 Discovery

11 Yorumlar

  1. […] Ultrasonik Mesafe sensörü hakkında bilgi almak isterseniz,bu konu ile ilgili makalemize buradan […]

    Reply

  2. hakan

    30 Aralık 2015 at 20:45

    TCST1030 ile motorun devir sayısını ölçmek istiyorum bunu nasıl yapabilirim.

    Reply

    • Bilal Kaya

      Bilal Kaya

      31 Aralık 2015 at 09:07

      Merhabalar,ilk önce TCST1030’u açıklar mısınız?Nasıl çalışır vs

      Reply

      • hakan

        31 Aralık 2015 at 09:47

        TCST1030 ile çizgi izleyen robot yapımında kullanılıyor.Siyah ve beyaz diye 2 renk var beyaz zemin üstünde siyah rengi her algıladığında çıkışına değer gönderiyor.Gönderilen bu değerleri nasıl okutabilirim.BU değerleri okutunca 2pi*değer/60 gibi bir formüller bunları devir/dakikaya çevirlebilir.

        Reply

        • Bilal Kaya

          Bilal Kaya

          31 Aralık 2015 at 12:23

          Çalışması CNY70’e benzer sanırım

          Reply

          • hakan

            31 Aralık 2015 at 12:39

            Evet benzer bir ürün.
            TCST1030 veya CNY70 ile motor devirini nasıl ölçebiliirim bu konuda bilgi verebilirmisiniz?

  3. hakan

    31 Aralık 2015 at 09:30

    TCST1030 ile çizgi izleyen robot yapımında kullanılıyor.Siyah ve beyaz diye 2 renk var beyaz zemin üstünde siyah rengi her algıladığında çıkışına değer gönderiyor.Gönderilen bu değerleri nasıl okutabilirim.BU değerleri okutunca 2pi*değer/60 gibi bir formüller bunları devir/dakikaya çevirlebilir.

    Reply

  4. mekatronik

    18 Haziran 2017 at 16:18

    iyi günler bu mesfe ölçer uygulamasının mekanik kısmı nasıl oluyor bu konuda yardımcı olabilirmisiniz lütefen. (çok acil)

    Reply

    • Bilal Kaya

      Bilal Kaya

      18 Haziran 2017 at 23:14

      mekanik kısım derken neyi kastediyorsunuz ?

      Reply

  5. mekatronıik

    19 Haziran 2017 at 05:57

    bu kodlar keil de çalışmıyor neden acaba çok acil yardımın gerek

    Reply

    • Bilal Kaya

      Bilal Kaya

      22 Haziran 2017 at 20:12

      kodlar keil 4 ‘de sorunsuz olarak çalışıyor.Muhtemelen sizde keil 5 var

      Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

ABB ACS355 Motor Sürücüsü ile Tork Kontrolü Nasıl Yapılır ?

Merhaba arkadaşlar , önceki paylaşımlarımızda ABB ACS355 motor sürücüsü ile ilgili paylaşı…