Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Selasa, 04 Juni 2013

Tutorial: ADC lanjutan - Termometer dengan LM35 dan ATmega8

Kita akan melanjutkan pembahasan dasar ADC sebelumnya, dengan merubah inputan trimpot sebagai voltage divider menjadi inputan dari sensor temperatur yg sangat umum yaitu LM35.




LM35 sangatlah gampang dipakai , hanya dengan memberikan tegangan VCC (kali ini pake 5V) dan ground, maka di pin output akan terjadi perubahan tegangan sebesar 10mV tiap perubahan 1 derajat Celcius.

Skematik dari termometer tidak jauh berbeda dengan project sebelumnya, hanya mengganti trimpot dengan LM35



klik untuk memperbesar



Karena LM35 menggunakan step per derajat sebesar 10mili volt dan mega 8 memiliki resolusi 10 bit dan step per bit adalah 4,9 mili volt, maka secara mudah pembacaan ADC dari LM 35 dapat langsung dirumuskan sebagai 


SUHU = PEMBACAAN ADC / 2

Skrip dibawah ini merupakan cuplikan dari main program, untuk inisialisasi dan lainnya dapat dibaca pada pembahasan dasar adc sebelumnya.

int main(void)
{

uint16_t baca,decimal,pecahan;

char derajat = 0xDF; // karakter derajat
char dum;


lcd_init(LCD_DISP_ON);
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts("TEST ADC ATMEGA8");


initADC();
  

   while(1)
   {

      baca=ReadADC(0); //baca ADC

      lcd_gotoxy(0,1);
      lcd_puts("Suhu=");

   itoa(baca/2,&dum); // konversi ke suhu
   lcd_puts(&dum);
    
   lcd_putc(',');
      
   itoa((baca%2)*5,&dum); // kasi resolusi 0.5
   lcd_puts(&dum);
    
      lcd_putc(' ');
      lcd_putc(derajat);
   lcd_putc('C');
  

      _delay_ms(100);

   }







return 0;

}


hasilnya seperti berikut :






MEMBUAT PEMBACAAN ADC LEBIH STABIL






Dari video diatas, kita lihat hasil pengukuran terlalu loncat2 ....wahh parah, walaupun mengikuti saran menambah filter LC ke AVCC seperti di datasheet dan C ke Aref



wahhh ...pusing juga belom sukses...akhirnya kita baca lagi datasheet dibagian "ADC NOISE CANCELER"

yang aku lakukan dengan menambah LC filter dinamakan analog noise canceler. Yang belum aku lakukan adalah menambahkan "ADC NOISE REDUCTION" yaitu memberikan posisi "SLEEP" saat sebelum konversi dilakukan ...

dan satu lagi, ketika sleep mode dan konversi, penggunaan output di minimalkan seperti dengan mematikan output ke 7 segment


void initADC()

{

ADMUX=(1<<REFS0);// Aref=AVcc;

ADCSRA|=(1<<ADEN)|(1<<ADIE)|(7<<ADPS0); //interupt aktif

sei();

}



uint16_t ReadADC(uint8_t ch)

{

  

  posisi(0);  //MATIKAN OUTPUT KE 7 SEGMENT



  MCUCR |= _BV(SE);  // Sleep Enable, jadi abis ini processor diturunkan loadnya



 MCUCR |=_BV(SM0);  // mode ADC NOISE REDUTION

  

   //Select ADC Channel ch must be 0-7

   ch=ch&0b00000111;

   ADMUX|=ch;



   //Start Single conversion



   ADCSRA|=(1<<ADSC);



   //Wait for conversion to complete

   while(!(ADCSRA & (1<<ADIF)));



   //Clear ADIF by writing one to it

   ADCSRA|=(1<<ADIF);



   return(ADC);



   MCUCR &= ~_BV(SE) ;  //BANGUN DARI SLEEP

}










dan voilaaa .....pembacaan ADC dari LM 35 menjadi lebih stabil


SELAMAT MENCOBA
Share:

1 komentar:

  1. Klu untuk menampilakan nilai pecahan pada seven segmentnya gimn ya...misal nilai suhu menjadi 33.4 C...

    BalasHapus

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (74) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika