Selamat datang di ForSa! Forum diskusi seputar sains, teknologi dan pendidikan Indonesia.

Welcome to Forum Sains Indonesia. Please login or sign up.

Maret 29, 2024, 06:36:49 PM

Login with username, password and session length

Topik Baru

Artikel Sains

Anggota
Stats
  • Total Tulisan: 139,653
  • Total Topik: 10,405
  • Online today: 231
  • Online ever: 1,582
  • (Desember 22, 2022, 06:39:12 AM)
Pengguna Online
Users: 0
Guests: 224
Total: 224

Aku Cinta ForSa

ForSa on FB ForSa on Twitter

Konversi ADC pada mikrokontroler...????

Dimulai oleh cupu, Juni 16, 2011, 02:25:33 AM

« sebelumnya - berikutnya »

0 Anggota dan 1 Pengunjung sedang melihat topik ini.

cupu

MAsbro..., ane bingung nih konversi ADC di mikrokontroler..,
Ane punya data :
Tegangan Refrensi = 5 V.
adc 10 bit
Tegangan input = 2,4 V.

klo dr rumus: ADC = (Vin / Vref) x 1023
berarti : ADC = (2,4 / 5) x 1023
            ADC = 491

nah, ane pake mikrokontroler ATmega 128 pake bahasa C
dengan data seperti diatas
trus ane tampilin k LCD tp kok hasil'y :467.

dr nilai diatas berarti ada error pembacaan..??
nah yg ane bingung error'y itu apa...??
kira2 ada master yg bisa Jelasin...!!
mohon pencerahan'y coz bntr lagi ane sidang..!!
pliss

Too Payz

Kutip
Tegangan Refrensi = 5 V.
adc 10 bit
Tegangan input = 2,4 V.

klo dr rumus: ADC = (Vin / Vref) x 1023
berarti : ADC = (2,4 / 5) x 1023
           ADC = 491

nah, ane pake mikrokontroler ATmega 128 pake bahasa C
dengan data seperti diatas
trus ane tampilin k LCD tp kok hasil'y :467.
Hmmm...
Kalo nilainya secara perhitungan 491 dan kenyataannya 467 berarti bagus tuh..
errornya tergolong kecil.

Error = ((aktual - teori) / Skala penuh )x 100%
Error = ((467 - 491) / 1024) x 100% = -2.344 %

Beberapa masukan :

  • Nilai Referensi = 5 Vdc.
    Sudah di ukur menggunakan Voltmeter belum krn mungkin saja 4.x volt atau 5.x volt termasuk tegangan inputnya.
  • Tegangan input dan power supply dari transformator atau dari baterai.
    Karena jika dari transformator teganganya tidak stabil dan masih ada noisenya yang mempengaruhi pembacaan ADC.
    Perlu ditambahkan LPF (Low Pas Filter) untuk membuang sinyal AC / noise pada Vref maupun  pin Input ADC.
  • Untuk pembacaan ADC yang akurasi sebaiknya tidak menggunakan frekuensi ADC yang cepat.
    Kalo perlu gunakan frekuensi yang paling lambat (seusaikan kebutuhan).
    Kalo yang ekstrim lagi,.... Coba baca DataSheet mikronya tentang ADC..  ::)   ::)
  • Baca ADC-nya jangan 1 kali terus ditampilkan ke LCD.
    Coba baca ADC 10 kali lalu diambil nilai rata-ratanya kemudian ditampilkan ke LCD, errornya bisa lebih kecil lagi.
    Saya yakin pasti cupu seperti ini logika ADCnya
    ...Baca ADC>> tampilkan ke LCD >> delay_ms(xxx)...

CMIIWW n semoga manfaat.  :D   :D   ;)

cupu

# klo tegangan input saya pakai baterai mas.., tp tegangan'y 7,4 V.
   trus saya pake Regulator 7805 dan saya ukur tegangan'y skitar 5,1 V

# hmm., frekuensi juga mempengaruhi pembacaan ADC mas..??

# weeww.., hebat mas toopayz, :o  kok tau logika ADC saya seperti itu..!!
   ohya mas, maksudnya pembacaan ADC 10 kali trus diambil nilai rata-ratanya gmn mas..??
   bisa ksh cntoh coding'y mas..???

Terima kasih banyak mas...!!!
   

Too Payz

Kutip# klo tegangan input saya pakai baterai mas.., tp tegangan'y 7,4 V.
   trus saya pake Regulator 7805 dan saya ukur tegangan'y skitar 5,1 V
Berarti dalam rumus nilai Vrefnya = 5,1 Volt.
Kutip# hmm., frekuensi juga mempengaruhi pembacaan ADC mas..??
Iya semakin cepat semakin tidak stabil.
Tetapi untuk masalah stabilitas dan presisinya, ya ketika membaca ADC pada mikro maka semua fungsi lainnya dimatikan dan khusus hanya ADC saja.
Seperti di datasheetnya tuh..
(Lom pernah nyoba juga nih   ;D   ;D)
Kutip# weeww.., hebat mas toopayz, :o  kok tau logika ADC saya seperti itu..!!
Kayaknya itu program umum deh jadi mudah ditebak.
Dulu juga ya seperti itu coding saya jadi akuransinya memang masih kurang baik.
Kutipohya mas, maksudnya pembacaan ADC 10 kali trus diambil nilai rata-ratanya gmn mas..??
   bisa ksh cntoh coding'y mas..???

#incude <math.h>    //menggunakan library matematika.
...
// karena adc 10 bit maka unsigned int jika 8 bit unsigned char
unsigned int BACA_adc(char loop, char adc_ke)
{
  unsigned int hasil=0, tmp;
  float rata=0;
  unsigned char x;
     for (x=0; x<loop; x++)
     {
         tmp = read_adc(adc_ke);
         hasil = tmp + hasil;
         delay_ms(10);       // optional tapi recomended..
     }
     rata = (float)hasil / (float)loop;
  return floor(rata);  // pembulatan ke bawah
}

// program utama
while(1)
{
// jangan lupa buat variabel unsigned int nilaiADC.
// loop 10 kali yang di baca ADC PORTA.1
    nilaiADC = BACA_adc(10, 1);
// lalu tapilin ke LCD
    delay_ms(500);                           
}

kira-kira seperti itu lah...
Ga di coba langsung nih jadi CMIWW aja ya..   ::)   ::)

Semoga manfaat...  :D   :D   ;)

cupu

Ok., Mas thanks berat..

ohya saya mau tanya,
Mikrokontroler bisa konversi tegangan yg nilai'y diatas 5 V gak..??
atau konversi teganganyg nilainya minus..??

coz, saya baca datasheet,
untuk range tegangan input ADC: 0 - VCC.
nah itu berarti ADC cuma bisa konversi dgn range teg. 0 - 5 V.
bener gak..??

klo kyk gtu tegangan refrensi Aref pada mikro fungsi'y untuk apa..??
bkn'y cukup menggunakan AVCC.

Too Payz

Kutipohya saya mau tanya,
Mikrokontroler bisa konversi tegangan yg nilai'y diatas 5 V gak..??
atau konversi teganganyg nilainya minus..??

coz, saya baca datasheet,
untuk range tegangan input ADC: 0 - VCC.
nah itu berarti ADC cuma bisa konversi dgn range teg. 0 - 5 V.
bener gak..??

klo kyk gtu tegangan refrensi Aref pada mikro fungsi'y untuk apa..??
bkn'y cukup menggunakan AVCC.
Yap Bener..
Vref maksimal = VCC atau 5Vdc dan tidak bisa minus (Mikronya malah rusak lo.. Cobain aja  ;D).

Maksudnya itu justru yang dipakai tegangan diantara 0 - 5Vdc misalnya 2,7 Vdc, 3Vdc, 3,3 Vdc, dst.
Karena Umumnya 5Vdc maka seolah-olah Vref tidak begitu penting.

Ok... Dah..   :D :D   ;)

Ahmad Saefullah Noer

Kutip dari: cupu pada Juni 16, 2011, 10:06:47 PM
# klo tegangan input saya pakai baterai mas.., tp tegangan'y 7,4 V.
   trus saya pake Regulator 7805 dan saya ukur tegangan'y skitar 5,1 V

# hmm., frekuensi juga mempengaruhi pembacaan ADC mas..??

# weeww.., hebat mas toopayz, :o  kok tau logika ADC saya seperti itu..!!
   ohya mas, maksudnya pembacaan ADC 10 kali trus diambil nilai rata-ratanya gmn mas..??
   bisa ksh cntoh coding'y mas..???

Terima kasih banyak mas...!!!
   

sore mas, mau bertanya nih, maap kalo pertanyaannya nda berbobot maklum masih baru di dunia permikroan hehe...
itu nilai keluaran mikro yang 491 satuannya apa sama bilangan apa yah?
makasih...heheh