C#.NET – Arduino Uygulamaları: LM35 ile Sıcaklık Takibi

Merhaba arkadaşlar bu yazımda sizlere Arduino ve C# ile yaptığım ufak bir uygulamayı paylaşmak istiyorum. Benzer uygulamalar internette mevcut. Devrede kullandığım LM35 sıcaklık sensörü hakkında detaylı bilgilere bu adresten ulaşabilirsiniz.

Öncelikle devremizin kurulumu aşağıdaki gibidir.

şema2

Burada LM35’in yazı kısmı bize bakacak şekilde Arduino’ya bağlıyoruz. Kırmızı kablo +5V, siyah kablo Gnd ve yeşil kablo ise kullanacağımız pin’i temsil ediyor. C# ile tasarladığım arayüz aşağıdaki gibidir. Arayüzde “Com Portu” yazan kısma Arduino’nun bilgisayarınıza bağlantığı port’u yazıyoruz. (Aygıt Yöneticisinden bakabilirsiniz.) Sonrasında yeşil butona basarak ölçümü başlatıyoruz. “Sıcaklık” kısmında anlık olarak takip yapabiliyoruz. Ayrıca “Sıcaklık Tablosu” kısmında ise kaydedilen değerleri görebiliyoruz. Kırmızı buton ile ölçüm işlemimizi sonlandırıyoruz.

Aşağıda C# ve Arduino’ya ait kodları bulabilirsiniz.

carduino1

Arduino Kodları


int SicaklikPini=A3;
int deger=0;
char x;

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

void loop()
{
  if(Serial.available()>0)
      x=Serial.read();
  if(x=='a')
   {
      deger=analogRead(SicaklikPini);
      Serial.println(deger);
      delay(100);
    }
}

C# Kodları (SerialPort’u projenize eklemeyi unutmayınız.)

namespace Arduino_LM35_Uygulaması
{
 public partial class Form1 : Form
 {

SerialPort seriPort;
 public Form1()
 {
 InitializeComponent();

seriPort = new SerialPort();
 seriPort.BaudRate = 9600;
 }

private void timer1_Tick(object sender, EventArgs e)
 {
 try
 {
 seriPort.Write("a");
 int veri = Convert.ToInt32(seriPort.ReadExisting());
 veri = ((veri * 5000) / 1023) / 10;
 textBox2.Text = veri.ToString();
 listBox1.Items.Add(textBox2.Text);
 System.Threading.Thread.Sleep(100);
 }
 catch (Exception)
 {

}
 }

 private void pbBaglan_Click(object sender, EventArgs e)
 {
 timer1.Start();
 try
 {
 seriPort.PortName = textBox1.Text;
 if (!seriPort.IsOpen)
 {
 seriPort.Open();
 lblSonuc.ForeColor = Color.Green;
 lblSonuc.Text = "Bağlantı Kuruldu";
 }
 }
 catch
 {
 lblSonuc.ForeColor = Color.Red;
 lblSonuc.Text = "Bağlantı Kurulamadı";
 }
 }

private void pbKes_Click(object sender, EventArgs e)
 {
 timer1.Stop();
 seriPort.Close();
 }
 }
}

Bir sonraki yazımda görüşmek dileğiyle hoşçakalın

10 Comments

  • erkan Cevapla

    eren bey 2nci bir lm35 kullanma sansımız varmı kodlar nasıl olurdu

    • Eren Uyanık Cevapla

      Merhaba Erkan bey, Arduino kısmında 2. bir veri oluşturup bunu 2. sensör ile eşleştirmek gerek. C# kısmında ise aynı işlemleri oluşturabilirsiniz. Kopyala yapıştır mantığı gibi.

  • Site Cevapla

    Merhaba Ben arduino ile henuz tan?sabildim. Internetten biraz arast?rd?m ama tam olarak kavrayamad?m.Bu kitap baslang?c icin bana katk?da bulunur mu ? Ya da arduinoyu daha iyi ogrenebilmek icin hangi kitapla baslamal?y?m ? Bu uygulaman?n uzerine dusup kendimi gelistirmek istiyorum. Bu konuda bana tavsiyede bulunabilirseniz sevinirim.

  • erkan Cevapla

    ardino nano ile yapmaya calıştım olmadı kodlar

    const int analogtemp=0; // This is the analog pin which is measuring the input voltage from the LM35 temperature sensor
    double temp=0, Vin=0, samples[250];
    unsigned int j=0;
    const double Vref=1100.0;

    // The setup function runs only once when you power or reset the board
    void setup ()
    {
    Serial.begin(9600);
    analogReference(INTERNAL);
    }

    // The loop function runs indefinitely after the setup function ends
    void loop ()
    {
    Vin=0;
    temp=0;

    for(j=0 ; j Voltage = ADC*Vref/1024. ADC = [0;1023]
    // For a 10-bit ADC with an 1100mV reference, the most you can measure without saturating the ADC would be (1100mV – 1100mV/1024) = 1098.9mV.
    // In other words, a reading of 1023 from your ADC equals (1023 * 1100/1024mV) equals 1098.9 mV.
    // Remember, 10 bits can only represent a value as large as b1111111111 or decimal 1023.
    }

    Vin=Vin/250.0; // Calculate the average value from all “j” readings.
    temp = (Vin/10.0);
    Serial.print(temp,1);
    Serial.println(” degrees Celsius”);
    }

  • berika Cevapla

    merhaba
    ben daha yeni c# ve arduino kullanmayı öğreniyorum.
    yıl sonu ödevim olarak c# ve arduio kullanarak sıcaklık ölçme.
    fakat aklıma takılan soru şu arduino ve c# programını nasıl birbirine bağlıyoruz ? yani c# kodları girdikten sonra çalıştırıyoruz hata vermiyorsa arduinoyla nasıl bağlantısını sağlıyoruz???
    lm35 ve board arduino ve jamper kablodan başka bir malzemeye ihtiyaç var mı?
    yardımcı olursanız sevinirim.

    • Eren Uyanık Cevapla

      Mail adresinize, konu hakkında fikir verebilecek bir mail attım 🙂

  • dost Cevapla

    Merhabalar, Serial port C# ‘a nasıl eklenecek??

Bir cevap yazın

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