Modul 2 LTF 02
Modul 2 LTF 02
2 ANALOG I/O
Dalam dunia nyata, terdapat besaran seperti panjang, suhu, tegangan listrik dan lain-lain yang semuanya bersifat
kontinyu (dapat memiliki harga berapa saja). Sementara itu dalam dunia komputer digital, data bersifat diskrit
(memiliki rentang nilai sesuai banyak bit). Oleh karena itu, agar besaran dari dunia nyata dapat dimasukkan ke /
dikeluarkan dari mikroprosesor, diperlukan antarmuka (interface) khusus. Dalam hal ini ada:
Kita perlu memahami cara kerja berbagai antarmuka tersebut, agar dapat mengaplikasikannya dengan tepat
ke berbagai kasus.
2.2 KOMPETENSI
Kompetensi yang akan dikuasai peserta setelah menyelesaikan praktikum ini dengan baik adalah:
• Mampu menggunakan DAC untuk mengeluarkan tegangan yang tepat.
• Mampu mengukur tegangan dengan ADC dan melaporkan tegangannya yang benar.
• Mampu mengukur tegangan, arus, dan daya dengan INA219.
• Mampu mengambil data dan memrogram kalibrasi ADC dan DAC.
• Mampu memrogram operasi pengukuran operating point.
• Mampu memrogram operasi pengukuran DC-sweep.
TF2207/Modul-2/1
2.3 ALAT & BAHAN
2.4.1.1 ESCOPE
ESCOPE adalah board pengembangan berbasis ESP32 yang dilengkapi dengan beberapa piranti standar, dan
didesain agar mudah dikoneksikan ke breadboard.
Selanjutnya terdapat soket AO, AI, dan DI untuk sambungan kabel ke breadboard.
TF2207/Modul-2/2
Detail skema EScope adalah sebagai berikut.
2.4.1.2 BREADBOARD
Skema rangkaian dan foto komponen yang perlu dirangkai pada breadboard adalah sebagai berikut.
AI0
AI1
DI0
DI1
DI2
DI3
TF2207/Modul-2/3
Nampak bahwa ini adalah rangkaian pembagi tegangan dengan dua resistor biasa. Koneksi rangkaian adalah:
• Output dari AO0 dikoneksikan ke VIN+ (INA219), seraya diukur oleh AI0
• Output dari VIN- (INA219) dikoneksikan ke R8, seraya diukur oleh AI1
• Pin lain R8 dikoneksikan ke R10, seraya diukur oleh DI0
• Pin lain R10 dikoneksikan ke ground
2.4.2.1 DAC
Digital to Analog Converter (DAC) adalah komponen keluaran yang mampu menghasilkan tegangan listrik sesuai
dengan masukan angka digital (biner) yang diberikan padanya. Spesifikasi DAC pada ESP32 adalah:
Pada EScope, luaran DAC ini disambung ke op-amp sebagai buffer impedance dengan arus maksimum 20 mA.
Konektor untuk DAC ini adalah AO0 dan AO1.
2.4.2.2 ADC
Analog to Digital Converter (ADC) adalah komponen masukan, mampu menerima tegangan listrik dan
mengubahnya menjadi angka digital. Spesifikasi ADC pada ESP32 adalah:
• Input: tegangan sesuai VCC (tipikal 0 – 3.3 Volt). Namun ada non-linearitas di tegangan rendah
(<100mV) dan tinggi (>3100mV).
• Output: angka digital 12 bit (0 – 4095)
• Waktu konversi : 100 mikro detik.
• Banyak ADC: 6 buah.
• Pin ADC1 : 8 kanal
• Pin ADC2 : 10 kanal
Pada EScope 22, kita bisa menggunakan ADC sebanyak 6 pin, tersedia di konektor AI0-AI1 dan DI0 – DI4. Untuk
memrogram ADC, Teknik dasarnya adalah:
int ad_d = analogRead(AI0); // baca dari pin AI0-AI1 atau DI0 – DI4
int ad_mv = (long) ad_d * ad_mv_max / AD_MAX; // konversi ke tegangan
TF2207/Modul-2/4
2.4.2.3 INA219
INA219 adalah modul bantu untuk membaca tegangan, arus, dan daya listrik; dan terkoneksi ke mikro-kontroller
melalui I2C. Skema INA219 adalah sebagai berikut:
Tampak bahwa pada INA219 ini terdapat sebuah Rshunt (harga 10 ohm) yang dialiri listrik dari Supply (pin VIN+)
ke Load (pin VIN-). Tegangan pada VIN+ dan VIN- dapat diukur oleh suatu ADC. Dengan demikian:
void loop() {
// selanjutnya untuk membaca ada 4 fungsi utama
float shunt_mv = ina219.getShuntVoltage_mV();
float bus_v = ina219.getBusVoltage_V();
float current_ma = ina219.getCurrent_mA();
float power_mw = ina219.getPower_mW();
}
TF2207/Modul-2/5
2.4.2.4 DATA INTEGER & OPERATOR
Untuk memproses data analog digunakan tipe data integer (bulat) sesuai dengan resolusi ADC maupun DAC.
Dalam hal ini :
• DAC memiliki resolusi 8 bit, maka cukup menggunakan tipe data byte.
• ADC memiliki resolusi 12 bit, maka setidaknya harus diproses dengan tipe data word atau int.
Contoh:
dacWrite(AO0, data1); // OK
dacWrite(AO1, data2); // output overflow !
Selanjutnya dalam memproses data tersebut, bisa digunakan operator aritmatika dengan tetap memperhatikan
kemampuan tipe data dan precedence operator. Ada kalanya, kita harus menggunakan tipe data long (32 bit)
selama operasi. Misalnya saja:
#define AD_MAX 4095
int ad_mv_max = 3200;
int ad = analogRead(AI0);
Jika data memang akan menjadi pecahan, maka perlu digunakan tipe data float atau double. Meski demikian,
data float memerlukan memori dan proses yang lama. Karena itu hindarilah menggunakannya selama masih
bisa digunakan tipe data integer (byte, word, int, long, dll).
Ketika harus menggunakan campuran data float dan integer, perhatikan benar kapan harus meng-casting
menjadi tipe data lain. Contoh penggunaan:
TF2207/Modul-2/6
2.4.3 ALGORITMA KHUSUS
Agar dapat menghasilkan luaran tegangan (dalam milivolt) yang benar dengan DAC, maka kita perlu melakukan
konversi dari milivolt ke angka biner terdekat. Dalam hal ini, kurva input/output antara tegangan ke biner adalah linier,
sehingga kita cukup melakukan interpolasi linier, di mana rumusan matematikanya adalah sebagai berikut:
Rumus dasar:
Dengan demikian, dalam kalibrasi kita perlu mencari tahu harga tegangan maksimum ADC, yang dalam hal ini
bisa diukur dengan INA219. Setelah itu konversi cukup dengan operasi sederhana:
Dari hasil bacaan ADC yang berupa angka biner, perlu dilakukan konversi agar bisa diperoleh harga tegangan
yang sebenarnya. Sayangnya, pihak pembuatnya (Espressif) mengakui bahwa ADC ESP32 tidak linier.
TF2207/Modul-2/7
Untuk mengatasi hal ini, salah satu eknik konversi yang mudah adalah membagi daerah kerja ADC menjadi
beberapa area/segmen, dan melakukan interpolasi linier di masing-masing area. Dalam pemrogramannya,
segmen ini disimpan sebagai array look-up table seperti Gambar berikut.
tabel look-up i x y
6000
0 0 0
1 100 500
5000
Y[4] 2 200 2260
Y 3 300 3600
4000
• Berikan masukan tegangan pada ADC dari minimum sampai maksimum dengan kenaikan
tertentu
• Ukur tegangan masukan memakai INA219
• Baca luaran ADC
Susun hasil kalibrasi tersebut sebagai tabel look-up. Kemudian untuk proses pembacaannya:
Pengukuran operating point pada suatu sistem (dalam hal ini rangkaian elektronik) adalah proses di mana alat
ukur (dalam hal ini EScope) melakukan operasi:
Diagram aliran data dan output yang diharapkan nampak sebagai berikut:
TF2207/Modul-2/8
OP 250
Mulai DA(mV) Vi+(mV) AD(mV)
250 245 125
Tulis Output 250 256 124
(Masukan sistem) 250 255 127
250 251 124
for 250 249 129
N 250 252 123
--------------------
Baca Input Analisis Data AVG 251,3 125,3
(Luaran Sistem) Print Analisis STDEV 4,0 2,3
Konversi Data
Print Data Selesai
Pengukuran DC-sweep pada suatu sistem (dalam hal ini rangkaian elektronik) adalah proses di mana alat ukur
(dalam hal ini EScope) melakukan operasi:
1. mengumpankan masukan dari harga awal tertentu (v_min) ke sistem (melalui DAC).
2. menunggu sistem merespon sampai tunak (steady state).
3. mengukur beberapa besaran dari sistem (dengan ADC).
4. mengolah data pengukuran dan menampilkannya (ke Serial Monitor).
5. Mengulang Langkah 1-4 beberapa kali (ndata), dengan menaikkan harga output secara step hingga
mencapai harga maksimum (v_max).
6. Jika perlu, menganalisis hasil pengukuran (misalnya mencari trendline input/output)
DC 0 500
DA(mV) Vi+(mV) AD(mV)
0 36 0
100 96 92
200 188 187
300 296 290
400 392 387
500 488 484
---------------------
TF2207/Modul-2/9
2.5 TUGAS AWAL
Siapkan rangkaian praktikum (sesuai 1.4.1.2) pada breadboard, potret bahwa itu sudah siap.
Sebelum memulai praktikum ini, kerjakan tugas awal berikut:
1. Pelajari rangkaian INA219. Jelaskan bagaimana caranya bisa mengetahui harga tegangan Vsupply.
2. Perhatikan contoh yang diberikan pada data integer (sub 1.4.2.4). Paparkan apa itu overflow, lalu
jelaskan mengapa dan mengapa error ini bisa terjadi ?
dacWrite(AO1, data2); // output overflow !
data1 = analogRead(AI0); // bisa error overflow
3. Pelajari tentang range tipe data int maupun long. Paparkan apa itu operator precedence dan type
casting, lalu jelaskan mengapa operasi ini bisa benar maupun salah
int mv1 = ad * ad_mv_max / AD_MAX; // bisa error !
int mv2 = (long) ad * ad_mv_max / AD_MAX; // OK
int mv3 = (long) ad / AD_MAX * ad_mv_max; // selalu error !!
4. Pelajari tipe data float dan double, dan konversinya ke integer. Jelaskan mengapa operasi ini bisa
benar maupun error:
float ad_div1 = ad_mv_max / AD_MAX; // selalu error !
float ad_div2 = (float) ad_mv_max / AD_MAX; // OK
6. Ambil kode sumber OP yang diberikan pada praktikum ini sebagai bahan awal. Coba modifikasi agar
dapat menjadi program DC-SWEEP untuk dilaksanakan pada akhir praktikum ini.
TF2207/Modul-2/10
2.6 PRAKTIKUM
Pada praktikum ini kita ingin mempelajari dasar pemrograman ADC. Sebagaimana dijelaskan pada Modul 1,
EScope versi 2022 memiliki 3 buah button yang ada pada papan EScope, yaitu S0, S1, dan S2. Masing-masing
button terhubung dengan satu buah resistor berharga tertentu sehingga membuat suatu rangkaian pembagi
tegangan yang mengalirkan arus dari sumber ke pin BT0 dan ground apabila button ditekan. Berikut ini adalah
skematik dari button yang ada pada EScope versi 2022,
dengan harga R2 = 2,7 kΩ, R7 = 1,2 kΩ, dan R10 = 1 kΩ. Dengan demikian, apabila asumsi VCC sebesar 3300
mV, maka nilai tegangan yang dihasilkan pada variasi skenario penekanan tombol S0, S1, dan S2 adalah :
Pada percobaan 1 ini kita akan membaca nilai analog tegangan yang dihasilkan dari skenario penekanan tombol
S0, S1, dan S2 menggunakan mikrokontroller dengan perintah analogRead(). Nilai yang dibaca oleh
analogRead() masih dalam bilangan digital (0 – 4095), untuk mengubahnya ke nilai tegangan dalam milivolt,
perlu dilakukan konversi menggunakan rumus:
Voltagereference
Voltage = × Digital Input Number
2N − 1
Di mana voltagereference adalah 3300 mV, N adalah bit ADC ESP32 (12 bit), dan digital input number adalah nilai
digital yang dibaca melalui perintah analogRead().
Pada percobaan 1 ini tidak menggunakan komponen dan breadboard sama sekali, jadi lepaskan semua jumper
dari EScope.
TF2207/Modul-2/11
Unduh kode M2-01 AnalogInput dan unggah ke EScope. Program ini akan:
• Memunculkan pesan di Serial Monitor untuk menekan tombol secara berurutan sesuai dengan skenario
penekanan tombol pada tabel di atas.
• Nilai input digital (AD) dan nilai tegangan (mv) berdasarkan skenario penekanan ketiga tombol akan
muncul di layar OLED.
Catat nilai AD yang muncul di OLED pada setiap skenario penekanan ketiga tombol. Nilai AD ini akan digunakan
sebagai threshold ketiga analog button ini.
Dari percobaan 1 ini, coba buat analisis mengapa kita perlu mengukur dan menentukan tegangan threshold dari
setiap skenario penekanan tombol?
Pada percobaan 2, akan dipelajari penggunaan class AnalogButton dan MultiLED. Kedua class ini sudah
dibuatkan di library TFScope22, sehingga kita tinggal menggunakannya saja. Selain itu, pada percobaan 2 ini kita
akan:
• Memilah tegangan yang dibaca pada pin BT0 menjadi 3 tombol (S0, S1, dan S2) dan menyalakan tiga
buah LED (LED0 – LED1) yang ada pada papan EScope sesuai dengan tombol yang ditekan
• Menampilkan nilai tegangan dari setiap skenario penekanan tombol di OLED
Melalui percobaan 2 ini, kita juga akan dapat mengonversi nilai analog dari setiap skenario penekanan tombol
menjadi nilai digital, kemudian mengatur nyala LED pada papan EScope sesuai dengan nilai digitalnya. Konversi
tersebut ditampilkan pada tabel di bawah ini,
Sama dengan percobaan 1, percobaan ini belum menggunakan komponen dan breadboard. Unduh kode M2-02
AnalogButton dan unggah ke EScope. Perhatikan yang terjadi pada LED dan yang tampil di OLED ketika tombol
ditekan berdasarkan skenario penekanan tombol pada tabel di atas. Buatlah analisis dari apa yang tampil pada
setiap skenario penekanan tombol.
2.6.3 DA-INA
Pada percobaan 3 ini kita ingin mempelajari dasar pemrograman DAC dan INA219, dan membuat tampilan ke
Serial Monitor. Sebelum memulai percobaan, koneksikan jumper sebagai berikut:
• Koneksikan AO0 ke V+;
• V- ke salah satu kaki seri resistor R1+R2 (220+220 ohm);
• Salah satu kaki seri resistor lainnya ke GND
Untuk praktikum gunakan kode sumber M2-03-DA_INA. Pelajari kode sumber itu sebentar, di mana
algoritmanya cukup sederhana menggunakan multi-loop.
Coba unggah kode tersebut ke EScope. Gunakan tombol S0 dan S2 untuk menaikkan dan menurunkan bilangan
output digital. Amati keluaran (bilangan output digital, Vbus, Vshunt, I, dan P) dari Serial Monitor.
TF2207/Modul-2/12
a. Apakah pengukuran Vbus nampak stabil? Makin stabil makin baik, menandakan tegangan DA konstan,
dan pengukuran INA konsisten.
b. Apakah pengukuran Vshunt dan arus (I) cukup signifikan? Mengapa demikian?
c. Apakah pengukuran daya (P) cukup tepat (sesuai rumus perhitungan daya)?
2.6.4 DA-INA-AD
Pada percobaan 4 ini, mulai dilakukan pengukuran dengan ADC. Namun seperti diketahui, ADC ESP32 tidak
linier. Oleh karena itu pada program ini juga dilakukan tahap pertama dari kalibrasi, yaitu mendapatkan data
untuk membuat tabel look-up. Skema rangkaian berbeda dengan percobaan 3 (tidak menggunakan resistor
pada breadboard), di mana pada percobaan 4 ini akan dilakukan:
• EScope mengumpan tegangan dari AO0, yang tersambung ke VIN+ dan AI0.
• EScope membaca tegangan dari AI0 dan INA219.
Untuk praktikum ini gunakan kode sumber M2-04-DA_INA_AD. Bagian kode yang perlu mendapat perhatian
adalah bagian berikut.
• Dipakai loop for untuk mengubah da_out dari minimum hingga maksimum (dalam nilai digital)
• Mengeluarkan sinyal DA (ke AO0)
• Membaca AD (dari AI0) memakai perintah standar.
• Untuk INA, dibaca tegangan shunt dan tegangan bus, lalu dihitung tegangan supply (VIN+).
// baca INA
float shunt_mv = ina219.getShuntVoltage_mV();
float bus_v = ina219.getBusVoltage_V();
printData();
}
Sementara itu untuk menampilkan hasil ke serial monitor, digunakan fungsi printData(). Dalam hal ini kita
ingin menampilkan data yang mudah di-copy-paste ke spreadsheet, atau nantinya dipakai sebagai kode sumber.
TF2207/Modul-2/13
// sprintf(buff,"{%4d, %4d, %4d},", ad_in, ina_mv, da_out);
Serial.println(buff);
}
150
2000
100 1500
50 1000
500
0
0 500 1000 1500 2000 2500 3000 3500
0
-50 0 500 1000 1500 2000 2500 3000 3500 4000 4500
a. ubah sedikit pada kode program, yaitu dengan memastikan printData() memakai format ke
Array
b. jalankan program, amati luarannya dengan Serial Monitor.
c. Siap-siap menyalin luarannya ke program berikutnya
2.6.5 KALIBRASI
Pada prosedur ini, kita akan memanfaatkan hasil program sebelumnya untuk mendapatkan hasil pengukuran
yang sudah terkalibrasi. Skema pengukuran masih sama, hanya saja algoritma program sedikit berubah.
• Dipakai loop for untuk mengubah da_mv dari minimum hingga maksimum (dalam nilai mV).
• Konversi da_mv ke nilai digital, lalu mengeluarkan sinyal DA (ke AO0) .
• Membaca AD (dari AI0) dalam biner, lalu dikonversi ke mV.
• Untuk INA, dibaca tegangan shunt dan tegangan bus, lalu dihitung tegangan supply (VIN+).
Penambahan konversi dengan kalibrasi ini membuat program cukup kompleks. Sebagai kode sumber awal,
ambillah program M2-05-KALIBRASI. Pertama-tama, perhatikan table lookup. Tabel dengan 3 kolom ini dibuat
dengan menyalin-tempel dari luaran program sebelumnya.
TF2207/Modul-2/14
// index kolom array kalibrasi
enum {I_AD, I_MV, I_DA, N_COL};
#define N_ROW 256
Perhatikan bahwa ada non-lineritas pada awal data (banyak AD = 0) maupun akhir data (ada tiga AD = 4083).
Secara fisis, itu artinya pengukuran hanya cukup valid setelah tegangan 104 mV (baris AD = 0 terakhir) dan 3100
mV (baris AD = 4083 pertama).
Namun untuk memperbaiki converter ini, tabel perlu diperbaiki agar nilai tiap baris unik dan selalu naik
(ascending). Oleh karena itu jika ada data yang sama, sebaiknya diperkirakan secara manual. Misalnya saja
adanya beberapa 0 di awal, diedit sebagai berikut:
TF2207/Modul-2/15
{ 5, 68, 3},
{ 7, 80, 4},
{ 9, 88, 5},
{ 28, 104, 6},
{ 38, 116, 7},
. . . . seterusnya sampai 256 baris ...
{4080, 3008, 253},
{4082, 3110, 254}, // ubah 4083 jadi 4082
{4083, 3120, 255}
};
Selanjutnya, pelajari proses konversi DA sebagai berikut, menggunakan interpolasi linier. Dalam hal ini titik awal
diambil dari baris-0 tabel, sementara titik akhir dari baris terakhir tabel; dengan asumsi awal DA selalu 0. Dalam
kalkulasi ini, digunakan tipe data float, namun jika bisa sebaiknya pakai bilangan bulat saja.
return constrain(da,0,DA_MAX);
}
Kode 5. Konversi mV ke DA
Proses konversi AD sedikit lebih rumit, karena harus melakukan interpolasi linier multi-segmen. Pelajari bagian
kode sumbernya sebagai berikut:
// konversi ke mV
TF2207/Modul-2/16
int mv = . . .;
return mv;
}
Kode 6. Konversi AD ke mV
Selanjutnya dibanding program sebelumnya, loop pengukuran kini dilakukan dalam mV.
void loop() {
// Header Plot
Serial.println("DA DA(mV) Vi+(mV) AD(mV)");
// baca AD
ad_in = analogRead(AI0);
ad_mv = adToMv(ad_in);
// baca INA
float shunt_mv = ina219.getShuntVoltage_mV();
float bus_v = ina219.getBusVoltage_V();
printData();
}
//...
}
TF2207/Modul-2/17
Gambar 2-11 Contoh analisis error
2.6.4 PENGUKURAN OP
Pada prosedur ini, kita akan memanfaatkan hasil program sebelumnya untuk mendapatkan hasil pengukuran
yang sudah terkalibrasi. Perhatikan sekali lagi skema rangkaian, yaitu:
• EScope mengumpan tegangan dari AO0, yang tersambung ke VIN+ dan AI0
• Luaran dari INA VIN- disambung ke R8 (220 Ω) lalu diukur oleh AI1
• R8 disambung ke R9 (220 Ω), diukur oleh DI0
• R9 ke ground
TF2207/Modul-2/18
Mengingat bahwa program ini cukup kompleks, maka kode sumbernya dipecah menjadi beberapa tab. Arduino
IDE dapat membuat tab ini dengan menggunakan menu “Tab”. Keuntungan menggunakan multitab ini adalah
organisasi kode yang lebih sistematis / berlapis. Dalam hal ini, Arduino IDE akan meng-kompile tab dari awal
(kiri) ke akhir (kanan). Jadi secara lapisan program, letakkan fungsi-fungsi dasar di tab lebih kiri.
Ambillah kode sumber M2-06-OP. Perhatikan bahwa ada 6 tab. Coba simak isinya masing-masing:
• M2-06-OP : file pertama selalu sama dengan nama sketch. Di sini muat library yang diperlukan
program, dan definisikan konstanta dasar.
• 10_escope : berisi fungsi-fungsi dasar escope, seperti sudah dipelajari sebelumnya. Termasuk di
sini adalah tabel kalibrasi dan fungsi konversi.
• 60_serial : fungsi dasar Serial, juga sudah dipelajari sebelumnya.
• 70_data : deklarasi data global, yaitu pin IO dan data pengukuran.
• 71_op : fungsi untuk operasi OP.
• 99_main : program utama berisi setup() dan loop().
// banyak pin DA
#define N_DA 3
// Pin I/O
int p_ad[N_DA] = {AI0, AI1, DI0};
int p_da = AO0;
// banyak data
pengukuran int ndata=10;
// data pengukuran
int ad_mv[N_DA];
int da_mv;
int ina_mv;
Kode 8. Tab 70_data
Data itu kemudian diolah oleh bagian operasi OP yang ada di tab 71_op. Nampak bahwa isinya adalah satu
fungsi opAction(), sesuai dengan algoritma yang telah dijelaskan.
/*
* Action Operating Condition
*/
void opPrintHeader() {
Serial.println("VDA Vi+ V0 V1 V2");
}
void opPlot() {
char buff[40];
sprintf(buff, "%4d %4d %4d %4d %4d",
da_mv, ina_mv, ad_mv[0], ad_mv[1],
ad_mv[2]); Serial.println(buff);
}
TF2207/Modul-2/19
// Melaksanakan prosedur OP
// Kirim output tertentu ke DA
// lalu ukur dan print ke Serial sebanyak ndata
// lalu hitung rata-rata
void opAction(int op_mv) {
opPrintHeader();
// output konstan
dacWriteMv(p_da, da_mv);
delay(100); // tunggu tunak
// tulis baris
opPlot();
}
Sementara itu tab 99_utama berisi fungsi setup() dan loop(), dengan algoritma yang cukup sederhana.
Cobalah pahami kode sumber tersebut, lalu.
TF2207/Modul-2/20
3. Program melakukan operasi DC sweep dan menampilkan hasilnya ke Serial Monitor.
4. Program mengulang dari Langkah 1
Kode sumber untuk pengukuran DC-Sweep ini belum ada. Untuk membuatnya :
2. 7 TUGAS TANTANGAN
Pilih salah satu tugas tantangan berikut (tiap orang dalam 1 regu pilih tantangan berbeda), kerjakan dan laporkan
hasilnya
1. Buatlah program agar EScope dapat menjadi VAW Meter (Voltage-Ampere-Watt), menampilkan
pengukuran dengan INA219 ke OLED.
2. Pada program OP, coba tambahkan kemampuan untuk langsung menghitung rata-rata dan standar
deviasi.
3. Pada program DC-Sweep, coba tambahkan kemampuan untuk analisis regresi linier.
2. 8 PUSTAKA
• ADC : https://docs.espressif.com/projects/esp-idf/en/release-
v4.2/esp32s2/api-reference/peripherals/adc.html
• ADC: https://randomnerdtutorials.com/esp32-adc-analog-read-arduino-ide/
• OLED : https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/
• INA219 : https://www.best-microcontroller-projects.com/ina219.html
• INA219: https://diyi0t.com/ina219-tutorial-for-arduino-and-esp/
• Linier Interpolation: https://en.wikipedia.org/wiki/Linear_interpolation
• Linier Regression: https://en.wikipedia.org/wiki/Simple_linear_regression
TF2207/Modul-2/21