BAB II. DASAR TEORI
3.2 Perancangan Perangkat Lunak
3.2.2 Kerangka Utama Program Mikrokontroler II
3.2.2 Kerangka Utama Program Mikrokontroler II
Kerangka utama program mikrokontroler I tampak pada gambar 3-6. Secara garis besar, program dimulai dengan inisialisasi LCD. Program kemudian mengambil nilai tegangan dan arus dengan 256 kali pencuplikan dengan kecepatan pengambilan data yang konstan. Nilai tegangan dan arus digunakan untuk mencari nilai root mean square dengan cara menghitung kuadrat nilai-nilai tegangan dan arus, kemudian mencari reratanya dan akhirnya mencari akar kuadrat. Proses mencari nilai root mean square
dilakukan sebanyak 16 kali. Mikrokontroler akan mencari rerata dari enam belas nilai root mean square yang telah didapatkan. Hasil rerata tersebut
diolah kembali untuk menghasilkan keluaran berupa Prms yang akan dikirimkan dan ditampilkan pada LCD. Selanjutnya program kembali melakukan pencuplikan nilai tegangan.
Gambar 3-6. Diagram alir kerangka utama program mikrokontroler I.
a. Inisialisasi LCD
Diagram alir subrutin inisialisasi LCD ditunjukkan pada gambar 3-7. LCD memerlukan waktu untuk memproses instruksi-instruksi dan waktu tunda sebelum dapat memproses instruksi-instruksi selanjutnya. Tunda waktu untuk memproses instruksi pada LCD adalah 1,52mS, maka untuk mengatasi ketidakidealan LCD, dipilih waktu sebesar 2mS
Mulai 10 x Delay 2mS Akumulator = #38H Kirim Perintah Akumulator = #0DH Akumulator = #03H Akumulator = #08H Kirim Perintah Kirim Perintah Kirim Perintah Kembali Gambar 3-7.
Diagram alir subrutin inisialisasi LCD. Mulai P2 = Akumulator Delay 2mS Kembali RS = #0 ECLK = #1 ECLK = #0 ECLK = #1 Gambar 3-8.
Diagram alir subrutin kirim perintah
Data-data yang diperlukan untuk memberi instruksi pada LCD adalah: 1. Pemilihan fungsi : 8bit, 2 baris, dan 5x8 dots (00111000b = 38H) 2. Pemilihan mode kursor (00000011b = 03H)
3. Pemilihan kondisi kursor : ditampilkan, dan berkedip (00001101b = 0DH)
Pada diagram alir subrutin inisialisasi LCD terdapat subrutin kirim perintah. Diagram alir subrutin kirim perintah ditunjukkan pada gambar 3-8. Subrutin inisialisasi LCD digunakan untuk mengatur operasi LCD. Data yang dikirimkan untuk mengatur operasi LCD merupakan data-data instruksi LCD, sehingga pin RS harus mendapat logika rendah. LCD memerlukan waktu untuk menunggu VCC naik mencapai 4,5Volt sebesar 15mS, maka untuk mengatasi LCD yang tidak ideal, digunakan tunda waktu sebesar 20mS. Waktu tunda 20mS dapat menggunakan subrutin delay 2ms yang dipanggil sebanyak 10 kali. Pin R/W tidak perlu diberi logika rendah karena pada perangkat keras sudah dihubungkan ke ground, yang berarti selalu menulis ke LCD. Hal ini bisa dilakukan, karena setelah pengiriman instruksi ke LCD selalu diikuti dengan tunda waktu. Subrutin kirim perintah digunakan untuk memberi logika rendah pada pin RS, mengirim data instruksi ke LCD, dan digunakan untuk membuat perubahan pada masukkan enable clock LCD.
b. Ambil Nilai tegangan dan Arus, Kuadratkan, dan Jumlahkan
Diagram alir subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan ditunjukkan pada gambar 3-9. Subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan berfungsi untuk mengambil pencuplikan amplitudo tegangan dan arus masukkan dalam bentuk digital sebanyak 256 kali dengan kecepatan pengambilan data yang konstan, mengkuadratkan tiap data dan menjumlahkan setiap kuadrat data. Waktu konversi ADC0804 berdasarkan datasheet sebesar 100µS, dan untuk
mengatasi IC ADC0804 yang tidak ideal, digunakan waktu konversi sebesar 114 µS (waktu konversi maksimal IC ADC0804).
Gambar 3-9. Diagram alir subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan
Pengambilan data dilakukan dengan memberi logika rendah pada pin
WR IC ADC0804 dan menunggu selama 114µS sebelum data dapat diambil oleh mikrokontroler. Setelah data diambil oleh mikrokontroler, pin WR IC ADC0804 diberi logika tinggi agar ADC0804 berhenti menulis ke LCD. Data yang diambil langsung dikuadratkan dan dijumlahkan dengan kuadrat data sebelumnya. Proses pengambilan data, mengkuadratkan data dan menjumlahkan data akan diulang sampai 256
kali. Berdasarkan waktu konversi sebesar 114µS dan waktu tunggu sebelum data dapat diambil oleh mikrokontroler sebesar 114µS, didapatkan laju pencuplikan sebesar 228µS (4385Hz). Dengan frekuensi tegangan masukan maksimum yaitu 1550Hz, maka laju pencuplikan yang digunakan telah memenuhi syarat cukup supaya tegangan masukan bisa didapatkan kembali seutuhnya dari sinyal diskret tercuplik. Dengan kata lain, laju pencuplikan yang digunakan telah memenuhi kriteria Niquist dan telah memenuhi persamaan 2-12.
c. Hitung Rerata dan Akar
Mulai
Kembali Akarkan
Jumlah = Jumlah1(jumlah tegangan)
Nilai akar tegangan
Akarkan Jumlah 256
Jumlah = Jumlah 2 (jumlah arus)
Nilai akar arus
E
E
Jumlah 256
Gambar 3-10. Diagram alir subrutin hitung rerata dan akar.
Diagram alir subrutin hitung rerata dan akar ditunjukkan pada gambar 3-10. Subrutin hitung rerata dan akar berfungsi untuk menghitung
nilai rerata dari hasil subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan dan menghitung akar dari nilai rerata tersebut.
Proses yang pertama adalah menghitung nilai rata-rata, yaitu dengan menggunakan 256 sebagai pembagi dari hasil subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan. Proses yang kedua dari subrutin hitung rerata dan akar adalah menghitung akar. Proses menghitung akar menggunakan subrutin akarkan yang diawali dengan menentukan alamat tempat menyimpan data hasil akar. Selanjutnya memberi logika tinggi pada MSB dari alamat tempat menyimpan data hasil akar. Setelah itu, data hasil akar dikuadratkan dan kemudian dibandingkan dengan dengan hasil rerata dari subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan. Apabila hasil perbandingan menyatakan bahwa hasil rata-rata dari subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan lebih kecil atau sama besar dengan data hasil akar, maka nilai MSB dari alamat tempat menyimpan data hasil akar adalah 0. Apabila hasil perbandingan menyatakan bahwa hasil rata-rata dari subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan lebih besar, maka nilai MSB dari alamat tempat menyimpan data hasil akar adalah 1.
Mulai
Set bit 7 data hasil akar Clr bit 7 data hasil akar
Set bit 6 data hasil akar Set bit 7 data hasil akar
Set bit 6 data hasil akar Clr bit 6 data hasil akar
Set bit 5 data hasil akar
Set bit 5 data hasil akar Clr bit 5 data hasil akar
Y T
Y T
Y T
F
Set bit 4 data hasil akar
Y T
Clr bit 4 data hasil akar Set bit 4 data hasil akar rerata2<= (data hasil akar)2? rerata2<= (data hasil akar)2? rerata2<= (data hasil akar)2? rerata2<= (data hasil akar)2?
Set bit 3 data hasil akar
Y T
Set bit 2 data hasil akar
Y T
F
Clr bit 3 data hasil akar Set bit 3 data hasil akar
Clr bit 2 data hasil akar Set bit 2 data hasil akar
Set bit 1 data hasil akar
Y T
Clr bit 1 data hasil akar Set bit 1 data hasil akar
Set bit 0 data hasil akar
Y T
Clr bit 0 data hasil akar Set bit 0 data hasil akar
Kembali rerata2<= (data hasil akar)2? rerata2<= (data hasil akar)2 ? rerata2<= (data hasil akar)2? rerata2<= (data hasil akar)2?
Setelah nilai MSB dari alamat tempat menyimpan data hasil akar diketahui, kemudian bit 6 dari alamat tempat menyimpan data hasil akar diberi logika tinggi. Data hasil akar dikuadratkan kemudian dibandingkan dengan dengan hasil rerata dari subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan. Apabila hasil perbandingan menyatakan bahwa hasil rata-rata dari subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan lebih kecil atau sama besar dengan data hasil akar, maka nilai bit 6 dari alamat tempat menyimpan data hasil akar adalah 0. Apabila hasil perbandingan menyatakan bahwa hasil rata-rata dari subrutin ambil nilai tegangan dan arus, kuadratkan, dan jumlahkan lebih besar, maka nilai bit 6 dari alamat tempat menyimpan data hasil akar adalah 1. Setelah MSB, dan bit 6 dari alamat tempat menyimpan data hasil akar sudah diketahui maka bit 5, bit 4, bit 3, bit 2, bit 1, dan bit 0 dari alamat tempat menyimpan data hasil akar kemudian dicari nilainya dengan cara yang sama.
d. Hitung Hasil Akhir
Diagram alir subrutin hitung hasil akhir berfungsi untuk mencari nilai rerata dari 16 nilai akar Irms dan Vrms yang dihasilkan oleh proses sebelumnya. Hasil nilai rerata dari Irms dan Vrmsakan dikalikan sehingga menghasilkan nilai Prms yang nantinya akan ditampilkan pada LCD.
Gambar 3-12. Diagram alir subrutin hitung hasil akhir
Gambar 3-13. Diagram alir subrutin kirim data.
e. Kirim Data
Proses selanjutnya hasil akhir dikirimkan menuju LCD. Pengiriman hasil akhir dilakukan dengan memberi pin RS logika tinggi dan membuat perubahan pada masukan enable clock LCD. Proses pengiriman data dan pengiriman perintah akan berakhir saat seluruh hasil akhir sudah ditampilkan.