Thermostat dengan AVR ATmega8535

Diakhir tahun 2014 ini kita akan mulai lagi postingan tentang dunia mikrokontroler. khususnya aplikasi mikrokontroler AVR. Ya karena tipe AVR mempunyai fitur yang sudah komplit, mudah di dapatkan (bisa pinjam atau minta temen, hehe..) dan harga terjangkau (bagi yang punya duit).

Aplikasi Mikrokontroler

Aplikasi mikrokontroler yang siap kita unggah adalah Thermostat. Fungsinya untuk kontrol suhu/temperature. Jadi misalkan kita ingingkan suhu di sebuah tempat 30 derajat Celcius. Nah alat ini akan membaca suhu(dengan sensor suhu tentunya) kemudian membandingkan dengan set point, misalnya 30. Jika nilai suhu lebih kecil dari 30 maka system pemanas akan hidup. sebaliknya jika suhu lebih besar dari set point pemanas akan mati.

Thermostat

Thermostat dengan mikrokontroler ATmega8535 , sebagai sensor suhu kita ambil LM35. Sebagai aktuatornya memakai Relay SPDT. Ditambah dengan 3 tombol untuk seting set point dan tampilan menarik LCD 2◊16.
99 proyek arduinoGambar rangkaian :

Skematik Thermostat dengan ATmega8535

Programnya kita buat dengan CVAVR :

#include

#include
#include
#include

char setpoint;
char str[16];
unsigned int temp,adc;

#define ADC_VREF_TYPE ((0<

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | ADC_VREF_TYPE;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=(1<
// Wait for the AD conversion to complete
while ((ADCSRA & (1<
ADCSRA|=(1<
return ADCW;
}

Banner MM AVRvoid main(void)
{
 DDRC=0;
 PORTC=0xFF;
 DDRD.5=1;
 
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<
SFIOR=(1<

lcd_init(16);
lcd_putsf(“Thermostat AVR”);
lcd_gotoxy(0,1);
lcd_putsf(“Set Point=37 C”);
setpoint=37;
while(PINC.1){
   if(PINC.0==0){
      setpoint++;
¬†¬†¬†¬†¬† sprintf(str,”%i”,setpoint);
      lcd_gotoxy(10,1);
      lcd_puts(str);     
      delay_ms(200);
      }
   else if(PINC.2==0){
¬†¬†¬†¬†¬† setpoint–;
¬†¬†¬†¬†¬† sprintf(str,”%i”,setpoint);
      lcd_gotoxy(10,1);
      lcd_puts(str);
      delay_ms(200);
      }
   }
 lcd_clear();
¬†lcd_putsf(“T=¬†¬† C, SP=¬†¬† C”);
 lcd_gotoxy(11,0);
 lcd_puts(str);

while (1)
      {
       adc=read_adc(0);
       temp=adc*5/10;       
¬†¬†¬†¬†¬†¬† sprintf(str,”%i”,temp);
       lcd_gotoxy(2,0);
       lcd_puts(str);
       if(temp>setpoint) {
         PORTD.5=0;
         lcd_gotoxy(0,1);
¬†¬†¬†¬†¬†¬†¬†¬† lcd_putsf(”¬†¬†¬† Relay Off¬†¬† “);
         }
       else if(temp
         PORTD.5=1;
         lcd_gotoxy(0,1);
¬†¬†¬†¬†¬†¬†¬†¬† lcd_putsf(”¬†¬†¬† Relay On¬†¬†¬† “);
         }
       delay_ms(1000);

      }
} 

Untuk melihat hasilnya cukup kita simulasikan saja ya. Oya frekuensi osilatornya 8 MHz.
Pertama kita atur dulu set point suhu-nya. Tekan tombol Up untuk menambah dan Down untuk mengurangi.

Seting nilai set point

Tombol OK untuk melanjutkan proses.

Proses Thermostat dg ATmega8535

Nilai temperatur dapat kita coba ubah dengan tombol ‘anak panah’ ke atas dan ke bawah pada LM35. Pada contoh kita ini, set point 35. Ketika suhu terukur bernilai 31 (dibawah set point) maka Relay akan ON.

OK, sederhana kan ? Silakan kalau mau dicoba. Monggo……

Iklan EDUROBO

This entry was posted in Mikrokontroler AVR and tagged , , , , , . Bookmark the permalink.

12 Responses to Thermostat dengan AVR ATmega8535

  1. Arifin says:

    pak kl mau compile sorce diatas jadi . hex bgaimna caranya?

  2. kharis says:

    mas untuk setting d codevision avrnya gmna ya..apa setting timer juga slain adc sma lcdnya

  3. kharis says:

    boleh mnta di kirim email mas programnya..
    msalah sudah tak complie mlah eror mas

  4. risyan salfano says:

    gan kalo tampilan nya menggunakan 7 segment , gimana ya gan ?

    • admin says:

      Di artikel sudah ada tampilan 7 segment walaupun bukan thermostat, tapi sensor suhu juga. Silakan dipelajari trus digabung mas.
      Trims

  5. mam says:

    keren banget bro, buat pressure ada ga??? hehe

  6. widodo says:

    error gan di compli…., mohon kirimi codingnya (azahraaptriwida@gmail.com) trimakasih..

Leave a Reply