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
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 ;)
# 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...!!!
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 ;)
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.
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 ;)
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