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 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 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.

Gambar rangkaian :

Programnya kita buat dengan CVAVR :

#include <mega8535.h>

#include <delay.h>
#include <alcd.h>
#include <stdio.h>

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

#define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (0<<ADLAR))

// 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<<ADSC);
// Wait for the AD conversion to complete
while ((ADCSRA & (1<<ADIF))==0);
ADCSRA|=(1<<ADIF);
return ADCW;
}

void main(void)
{
 DDRC=0;
 PORTC=0xFF;
 DDRD.5=1;
 
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
SFIOR=(1<<ADHSM) | (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);

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<setpoint){
         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.

Tombol OK untuk melanjutkan proses.

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……

 

12 thoughts on “Thermostat dengan AVR ATmega8535

  • March 1, 2015 at 1:03 am
    Permalink

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

    Reply
    • March 11, 2015 at 9:06 am
      Permalink

      Tinggal copy paste saja di CVAVR, masukkan ke project kemudian compile.

      Reply
  • November 14, 2015 at 11:19 pm
    Permalink

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

    Reply
    • December 15, 2015 at 10:45 am
      Permalink

      Kalau seting di Config nya hanya LCD mas

      Reply
  • November 30, 2015 at 7:08 am
    Permalink

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

    Reply
  • June 1, 2016 at 1:19 pm
    Permalink

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

    Reply
    • June 4, 2016 at 7:30 am
      Permalink

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

      Reply
  • June 19, 2016 at 10:56 pm
    Permalink

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

    Reply
    • June 20, 2016 at 12:26 pm
      Permalink

      Makasih mas.. Belum mas kalau untuk pressure

      Reply
  • September 17, 2016 at 10:26 am
    Permalink

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

    Reply
    • September 23, 2016 at 9:11 pm
      Permalink

      Erornya dimana ?
      Versi CVAVR apakah sama ? (2.6 ?).

      Reply
    • September 23, 2016 at 9:13 pm
      Permalink

      Errornya dimana mas Wid ?
      Ini pakai CVAVR versi 2.5, jika versi sebelumnya untuk library lcd harap diperhatikan.

      Reply

Leave a Reply

WhatsApp chat
%d bloggers like this: