Jumat, 16 Desember 2011

Kendali Kecepatan Kipas Menggunakan Mikrokontroler dan Sensor Suhu LM35

Postingan kali ini berjudul Kendali Kecepatan Kipas Menggunakan Mikrokontroler dan Sensor Suhu LM35. Proyek kali ini yaitu kita akan mengatur kecepatan putar kipas berdasarkan sensor suhu LM35. Ketika suhu yang diterima sensor suhu LM35 tinggi maka kecepatan putar kipas akan tinggi, ketika suhu menurun maka kecepatan putar kipas juga akan menurun. Untuk skematiknya bisa dilihat dibawah ini:






 untuk programnya bisa dilihat berikut ini,


#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <stdio.h>
#include "lcd.h"




void delay_ms(int ms)
{for (int i=0;i<ms;i++){_delay_ms(1);}}




void adc_init(void)
{
ADMUX= (0<<REFS1)|(1<<REFS0)| //Tegangan referensi
(0<<ADLAR)| //Format hasil konversi
(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0);//PIN INPUT ADC




ADCSRA= (1<<ADEN)| //1= ADC enable
(0<<ADIE)| //1= interupsi ADC
(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
}


int baca_suhu(void)
{
adc_init();
_delay_ms(20);
ADCSRA |=(1<<ADSC);
loop_until_bit_is_set(ADCSRA, ADIF); //cek ADIF =1?
ADCSRA |=(1<<ADIF);
return ADCW;
}


int main (void)
{
lcd_init();
delay_ms(10);
DDRD=0xFF;
PORTD=0x00;


TCCR1A= (1<<WGM11)|(1<<WGM10)|
(1<<COM1A1)|(0<<COM1A0)|
(1<<COM1B1)|(0<<COM1B0);

TCCR1B= (0<<WGM13)|(1<<WGM12)|
(0<<CS12)|(0<<CS11)|(1<<CS10);
TCNT1=0x0000;
OCR1A=0;
OCR1B=0;
sei( );


while(1)
{
if (((baca_suhu()/2)-10)<0)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SANGAT RENDAH");
delay_ms(500);
OCR1A=0;
}




else if(((baca_suhu()/2)-10)>0&&((baca_suhu()/2)-10)<30)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("RENDAH");
delay_ms(500);
OCR1A=250;
}


else if (((baca_suhu()/2)-10)>30&&((baca_suhu()/2)-10)<60)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SEDANG");
delay_ms(500);
OCR1A=500;
}


else if (((baca_suhu()/2)-10)>60&&((baca_suhu()/2)-10)<100)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("TINGGI");
delay_ms(500);
OCR1A=750;
}


else if (((baca_suhu()/2)-10)>100)
{
clrscr();
goto_xy(1,1);
printf("Suhu = %4d ",(baca_suhu()/2)-10);
LCD(223);
printf("C");
goto_xy(2,1);
printf("SANGAT TINGGI");
delay_ms(500);
OCR1A=1000;
}
}
}


atau silahkan download proyek ini disini 

 penjelasan to be continued......

5 komentar:

  1. Komentar ini telah dihapus oleh administrator blog.

    BalasHapus
  2. assalamualaikum..
    saya ingin minta tolong untuk tugas akhir saya,
    bagaimana program C untuk kipas yang AC,
    apakah sama ato berbeda..
    dan dari segi schematik apakah sama atau berbeda..
    trimakasih

    BalasHapus
  3. aku boleh tanya gan.. bagai mana cara membuat pengendali AC dengan menggunakan mikrokontroller... apakah itu sama

    BalasHapus
  4. putaran kipas ga mau berubah(pwm tetap) walupun suhu lm35 d ubah
    apakah ada yg salah d hexnya??

    BalasHapus
  5. I love this post. It is very informative and so detailed. I also love that you have shared pieces of code. Some resumeperk company can have interest to this material

    BalasHapus

Silahkan isi komentar yang dapat membangun blog ini. Atas komentarnya saya ucapkan terimakasih

Related Posts Plugin for WordPress, Blogger...