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
5,492

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 - Konuk Yazar
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

      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

          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

  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

  6. ahmet

    16 Mayıs 2018 at 17:10

    Merhaba. Stm32f103c8t6 ile hcsr04 kütüphanesine nasıl ulaşabilirim ?

    Reply

    • ahmet

      16 Mayıs 2018 at 18:11

      Yada stm32f4’ün kütüphanesini stm32f1 de kullanabilir miyim ?

      Reply

Bir cevap yazın

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

Bak Bakalım ?

Lazer İşleme Makinesi Yapımı

Merhaba arkadaşlar,bu projemizde sizlerle birlikte lazer işleme makinesi yapımını göreceği…