BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Gömülü Programlama > Isı sensörü (LM35)

Isı sensörü (LM35)

Bu bölümde, ML35DZ ısı sensörünü elimizdeki F401-RE karta bağlayarak, sensör ile okunan ısı değerini seri port üzerinden ekranda göstermemizi sağlayan programı Mbed ve STM32CubeIDE yoluyla yazmaya çalışacağız.

LM35 santigrat sıcaklığına linear olarak orantılı çıkış voltajı üreten entegre devreli yarı iletken bir ısı sensörüdür.

  • Harici olarak bir kalibrasyon gerektirmez ve oda sıcaklığında +-0,25°C doğruluk sağlar.
  • Düşük güç tüketen bir aygıt olup güç kaynağından sadece 60µ akım çeker.
  • -55°C - 150°C arasında çalışır.
  • 4V – 30V aralığında çalışır.
  • Sıcaklıktaki her bir derecelik artış analog çıkışta 10mV artış sağlar.

STM32F401RE mikrodenetleyici kart ile LM35 ısı sensörü bağlantısı aşağıdaki şemaya uygun olarak yapılacaktır:

ML35 ısı sensörü bağlantısını aşağıdaki esaslara göre yapalım:

  • Sensörün 1 no.lu ucuna 5 V. bağlanır.
  • Sensörün 3 no.lu ucuna GND bağlanır.
  • Ortada kalan 2 no.lu uç ise, sıcaklığa bağlı olarak bir voltaj (analog) üretir. Bu uç mikrodenetleyici kartın analog giriş pinlerinden birine bağlanır.

Isı sensörü (Mbed ile)

1. Önce buradaki talimatları uygulayarak, Mbed OS online geliştirme ortamında yeni bir program oluşturalım.

2. main.cpp dosyası içine aşağıdaki kodları yazarak kaydedelim:


#include "mbed.h"

Serial pc(USBTX, USBRX, 115200);
AnalogIn sensor(A1);

int main() {
    int id = 297;  
    float fd;

    while (1) {
       fd = sensor.read();
       pc.printf("\nTemperature: %4.2f", fd*id); // Seri porta yazma
       wait(1);
    }     
}

3. Programı derleyelim ve elde ettiğimiz .bin uzantılı dosyayı bilgisayarımıza kaydedelim.

4. Bilgisayarımıza kaydettiğimiz .bin uzantılı dosyayı, kart bilgisayara bağlandığında Windows Explorer’da görünen flash bellek içine kopyalayalım.

5. Windows Explorer'da kartı temsil eden sürücüye kopyaladığımız .bin uzantılı dosya kart tarafından otomatik olarak okunarak çalıştırılır. Kart kendini resetler ve .bin uzantılı dosya silinir.

6. Program çalışmaya başladığında, LM35 ısı sensörü ile okunan değerler seri porta aktarılacaktır.

CoolTerm programı çalıştırdığımızda aktarılan değerler ekranda görülecektir.

Isı sensörü (STM32CubeIDE ile)

1. Önce buradaki talimatları uygulayarak, STM32CubeIDE ortamında yeni bir proje oluşturalım.

2. Projemize verdiğimizin isme sahip .ioc uzantılı dosyaya tıkladığımızda karşımıza gelen pencerede, mikrodenetleyici kart üzerindeki Arduiono konnektörün D2, D3, D4, D5, D6, D7 ve D8 pinlerine sırasıyla karşılık gelen PA10, PB3, PB5, PB4, PB10, PA8 ve PA9 kutularına tıkladığımızda karşımıza gelen seçeneklerden GPIO_Output seçeneğini seçelim:

4. main.c dosyasının içindeki kodları aşağıdaki şekilde düzenleyerek ve sonuna display_LED() fonksiyonunu ekleyerek kaydedelim:


#include "main.h"
#include <stdio.h>

int main(void)
{
  /* USER CODE BEGIN 1 */
  char cdizi[40];
  int id=0;  

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
	HAL_UART_Transmit(&huart2,  (uint8_t*) cdizi, sprintf(cdizi, "Data send: %d\n", id++), 100);
	HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

5. Programı derleyelim.

6. Doğrudan Run butonuna basarak veya elde ettiğimiz .bin uzantılı dosyayı, kart bilgisayara bağlandığında Windows Explorer’da görünen flash bellek içine kopyalayalım.

7. Program kart tarafından otomatik olarak okunarak çalıştırılır. Kart kendini resetler.

6. Program çalışmaya başladığında, LED ekranı 0-9 arasındaki sayıları 2 saniye ara ile göstermeye başlar.