## Pembangkit Pulsa Pemicu Berdasarkan Detektor Persilangan Nol yang Diperoleh dari

## Analog to Digital Converter dan Interrupt

## Darmawan Utomo
Program Studi Sistem Komputer, Fakultas Teknik Elektronika dan Komputer, Universitas Kristen Satya Wacana, Salatiga darmawan@staff.uksw.edu

## Ringkasan
Pada  makalah  ini  diusulkan  sebuah  teknik  yang  memanfaatkan  port  dari  mikrokontroler sebagai  pembangkit  pulsa  pemicu  berdasarkan  detektor  persilangan  nol  dengan  cara menganalisa  transisi  nilai-nilai  analog  to  digital  converter  dan  teknik  interrupt.  Percobaan dilaksanakan  dengan  sumber  tegangan  ac  12  volt  yang  diseri  dengan  resistor  20  k Ω  lalu dihubungkan dengan masukan analog dan interrupt dari arduino UNO.  Untuk transisi dari rendah ke tinggi,  pada teknik adc   dan interrupt masing-masing tertunda +0,5 ms terhadap nilai nol. Pada teknik adc dari tinggi ke rendah, nilai nol terdeteksi 0,3 ms sebelum kejadian sedangkan pada interrupt +0,25 ms setelah 0 volt terlewati.
Kata kunci:analog to digital converter, zero crossing, interrupt, sudut-picu, mikrokontroler

## 1. Pendahuluan
Pada  rangkaian  pengubah  tegangan  yang  dapat  diatur  dari  sumber  ac  ke  dc,  baik yang  fasa  tunggal  maupun  tiga,  dibutuhkan  pemicu  yang  didasarkan  pada  persilangan tegangan nol [1]. Persilangan ini menjadi acuan kapan sudut picu harus diberikan. Hasil deteksi persilangan  yang terlambat/setelah persilangan, mengakibatkan  sudut picu kecil tidak  dapat  ditargetkan.  Sebaliknya,  jika  terlalu  cepat/sebelum  persilangan,  dibutuhkan waktu tunda sebagai kompensasinya.
Untuk  menghasilkan persilangan tegangan nol diperlukan Detektor  Persilangan Nol (DPN).  Dalam  sistem  berbasis  mikrokontroler,  DPN  dapat  direalisasikan  dengan  untai eksternal maupun secara internal. Ada dua macam masukan yang bisa digunakan, lewat pin  I/O,  interrupt,  dan  ADC.  Teknik  DPN  dengan  pin  I/O  dan  interrupt  memanfaatkan kondisi dari logika rendah (L), tinggi (H), dan transisinya.

## Techné Jurnal Ilmiah Elektroteknika Vol. 16 No. 1 April 2017 Hal 59 - 65

## Gambar 1. Hasil 500 sampel tegangan yang diperoleh ADC.
Dua  teknik  ini  memiliki  peluang  adanya  kesalahan  akibat  kejadian  luar  seperti munculnya  tegangan  sesaat  yang  dapat  mengganggu  picuan.  Teknik  menunda  dan membaca  kondisi  pin  beberapa  kali  biasa  diterapkan  untuk  mengatasi  gangguan  ini. Kelemahan  lain  adalah  deteksi  nol  muncul  setelah  titik  persilangan  nol  pada  transisi rendah  ke  tinggi,  dan  mendekati  nol  dari  transisi  tinggi  ke  rendah.  Hal  ini mengakibatkan  hasil  persilangannya  tidak  bisa  segera  dimanfaatkan  untuk  memicu karena menunggu siklus berikutnya.
Pada teknik ADC, sinyal masukan disampel puluhan kali di atas frekuensi sumber ac. Gambar  1  adalah  salah  satu  hasil  pengambilan  500  sampel  tegangan  12  volt  ac.  Ada empat macam hasilnya yaitu, kondisi aras rendah, kondisi transisi ke tinggi, kondisi aras tinggi,  dan  kondisi  transisi  ke  rendah.  Kondisi  aras  rendah  diperoleh  karena  tegangan masukan  lebih  rendah  dari  GND-0,5V  sedangkan  kondisi  aras  tinggi  diperoleh  karena tegangan  masukan  lebih  tinggi  dari  VCC+0,5V.  Kondisi-kondisi  transisi  diperoleh  saat tegangan bernilai di antara 0 V hingga 5 V.
Dari Gambar 1 tampak jelas bahwa transisi dari aras tinggi ke rendah atau dari aras rendah  ke  tinggi  memiliki  banyak  hasil  adc  yang  dapat  digunakan  untuk  menentukan sebelum dan setelah terjadinya persilangan nol.

## 1.1. Kajian Pustaka
Salah  satu  teknik  secara  eksternal  adalah  dengan  menggunakan  optocoupler,  dimana saat  mendekati  persilangan  nol,  diode  tidak  memancarkan  cahaya  sehingga  transistor masuk  pada  fase  cut-off  atau  dari  tegangan  nol  yang  melalui  diode  menuju  bias  maju yang  membuat  transistor  masuk  ke  fase  saturasi  [2].  Keluaran  dari  transistor  biasanya digandeng dengan rangkaian darlington untuk memberikan tanggapan yang lebih cepat. Cara  lain  adalah  dengan  menggunakan  komparatorop-amp  dengan  tegangan pembanding  yang  dapat  diatur.  Cara  kerjanya  adalah  saat  mencapai  tegangan  nol  dari tegangan  positif  komparator  lebih  tinggi  dari  tegangan  pembanding  diatur  untuk menghasilkan keluaran positif. Keluaran ini digunakan untuk menggerakkan monostabil sebagai tanda adanya persilangan nol [3].
DPN dapat juga dibuat berdasarkan respon terhadap pin-pin masukan yang terdapat di mikrokontroler. Pin-pin yang dapat digunakan adalah pin masukan, interrupt, dan pin analog.  Sebelum  masuk  ke  masing-masing  pin,  sinyal  ac/dc  harus  melewati  pengondisi sinyal  supaya  tidak melewati  batas  masukan  maksimum  yang  diizinkan.  Secara  umum, pin-pin  masukan  dari  mikrokontroler  sudah  mendapat  pengaman  dua  buah  diode clamping. Fungsinya adalah jika ada tegangan yang lebih besar dari pada VCC+0,5V atau lebih  kecil  dari  GND-0,5V  akan  dipaksa  menjadi  VCC+0,5V  atau  GND-0,5V.  Arus
0.00 2.00 4.00 0 45 90 135 180 225 270 315 360 405 450 495

## TEGANGAN MASUKAN TERHADAP 500 SAMPEL ADC
Darmawan Utomo
maksimal yang direkomendasikan adalah 1 mA, jika lebih dimungkinkan merusak diode clamping[4].
Setelah  melewati  pengondisi  sinyal,  jalur  ini  dapat  dihubungkan  dengan  pin-pin yang  terdapat  di  mikrokontroler.  Teknik  yang  umum  digunakan  untuk  mendeteksi melalui jalur pin masukan adalah dengan mendeteksi nilai rendah (nol) atau hinggi (satu) secara terus-menerus. Jika ditemukan kondisi yang diinginkan misalnya nol, yang berarti ditemukan  silang  nol,  maka  mikrokontroler  dapat  menunda  selama  sudut  picu  yang diinginkan, baru kemudian memberikan  picuan ke bagian penggerak (driver). Teknik ini memaksa mikrokontroler bekerja terus-menerus mengawasi pin ini sehingga tidak dapat mengerjakan  pekerjaan  lain.  Kelemahan  lain  adalah  mikrokontroler  sangat  responsif dengan gangguan tegangan sesaat yang dapat menyebabkan kesalahan sudut picu.
Secara  umum  teknik  menggunakan  pin  interrupt  hampir  sama  dengan  deteksi melalui  pin  masukan.  Perbedaan  utama  terletak  pada  mikrokontroler  masih  bisa melakukan  pekerjaan  lain  selama  menunggu  adanya  DPN.  Saat  munculnya  interupsi, rutin  pelayanan  interrupt  dipanggil.  Rutin  ini  dapat  digunakan  untuk  mengaktifkan fungsi penunda picuan sesuai dengan parameter yang diinginkan.

## 2. Perancangan

## 2.1. Diagram Rancangan
Gambar 2. Diagram perancangan detector persilangan nol melalui INT dan ADC.
Pada Gambar 2 ditunjukkan sebuah perancangan pengujian detector persilangan nol. Pembangkit  gelombang ac diperoleh dari sekunder trafo 12 Vac. Rangkaian ini sanggup untuk  menerima  masukan  hingga  20  Vac  berdasarkan  kemampuan  diode  clamping melewatkan  1  mA.  Mikrokontroler  [4].  Tegangan  dari  trafo  dihubungkan  dengan pengondisi  sinyal  seperti  yang  ditunjukkan  pada  Gambar  3.  Dioda  clamping  tambahan dipergunakan  sebagai  pengaman  tambahan.  Keluaran  dari  pengondisi  sinyal dihubungkan  dengan  pin-2  (INT-0)  dari  modul  Arduino  Uno  untuk  percobaan  DPN dengan  interrupt,  dan  pin-A0  untuk  percobaan  DPN  dengan  ADC.  Sumber  daya  untuk modul  Arduino  dan  monitor  evaluasi  melalui  data  serial  menggunakan  jalur  USB  dari PC, dan aplikasi Arduino Serial Monitor.
12 volt AC Pengondisi Sinyal
Modul Arduino Uno INT-0        PIN-7 AIN-0 OSILOSKOP
Techné Jurnal Ilmiah Elektroteknika Vol. 16 No. 1 April 2017 Hal 59 - 65

## 2.2. Kode Program
Arduino diberi dua macam kode untuk interrupt (Kode 1) dan adc (Kode 2). Masing- masing  kode  dibuatkan  variasi  untuk  kondisi  dari  rendah  ke  tinggi  dan  dari  tinggi  ke rendah. Pada Kode interrupt, detektor nol kondisi tinggi ke rendah direalisasikan dengan membuat kode bagian attachInterrupt(0, ISR0, FALLING);  dan rendah ke tinggi dengan instruksi  attachInterrupt(0,  ISR0,  RISING);.  Jalur  pin  2  dari  Arduino  dihubungkan dengan  INT-0  seperti  yang  diperlihatkan  pada  Gambar  3.  Untuk  mengamati  hasil eksperimen,  osiloskop  saluaran  1  (CH-1)  dihubungkan  dengan  12  Vac,  dan  saluran  2 (CH-2)  dihubungkan  dengan  pin-7  Arduino  Uno.  Aksi  variasi  keluaran  dapat dimodifikasi  untuk  pin  yang  berbeda  baik  yang  satu fasa  maupun  tiga  fasa  atau  variasi lainnya.
Gambar 3. Untai Pengondisi masukan 12Vac supaya tidak melebihi syarat masukan dari pin INT-0 dan AIN-0 dari Modul Arduino Uno.
const byte zxdPulse = 7; // pin keluaran pulsa const byte interruptPin = 2; // pin masukan interrupt
void setup() { pinMode(zxdPulse, OUTPUT); pinMode(interruptPin, INPUT_PULLUP); attachInterrupt(0, ISR0, FALLING); //Untuk Rising Edge, ganti FALLING dengan RISING } void loop(){ } void ISR0(){ digitalWrite(zxdPulse,HIGH); delayMicroseconds(1000); digitalWrite(zxdPulse,LOW); }
Kode 1. DetektorNoldenganteknik interrupt danpembangkitpulsapicuselama 1 ms.
Kode  2  adalah  kode  percobaan  untuk  mendeteksi  DPN  dengan  adc,  detector persilangan  nol  tinggi  ke  rendah  dengan  membuat  kode  bagian  checkZXD_fall();    dan rendah ke tinggi dengan instruksi checkZXD_rise();  Masukan adc diperoleh dari pin-A0, dan  keluaran  pulsanya  dihasilkan  dari  pin-7.  Pada  teknik  adc  diperlukan  waktu  untuk mengambil  data  dan  menganalisa  apakah  sinyal  telah  melewati  batas  rendah  ke  tinggi atau  tinggi  kerendah  atau  belum.  Transisi  rendah  ke  tinggi  dapat  ditentukan  dari  nilai
Darmawan Utomo
adc  awal  nol  dan  berikutnya  harus  lebih  dari  nol.  Sedangkan  transisi  tinggi  (H)  ke rendah  (L) ditentukan dari awal 1023 dan akhir harus kurang dari 1023.
const byte tespin = 7; unsignedint Vsense0 = A0;
#define datamax 8 intibuff[datamax]; void setup() { pinMode(tespin, OUTPUT); } int index; intcheckZXD_rise(){ index = index & 7; ibuff[index] = analogRead(Vsense0); if ((ibuff[index] > 0) && (ibuff[(index - 1) & 7] == 0 )) { index++; return 1;} index++; return 0; } intcheckZXD_fall(){//tunggu pulse dari tinggi ke rendah index = index & 7; // indeks buffer disediakan hanya 8. ibuff[index] = analogRead(Vsense0); if ((ibuff[index] < 1023) && (ibuff[(index - 1) & 7] > 1022 )) { index++; return 1;} index++; return 0; } void loop(){ while (!checkZXD_rise()); //tunggu pulse dari rendah ke tinggi digitalWrite(tespin,HIGH); //ganti dengan subrutin _fall untuk deteksi dari tinggi ke rendah delayMicroseconds(1000);//Bangkitkan pulsa 0-1-0 selama 1 ms digitalWrite(tespin,LOW); }
Kode 2. Detektor Nol dengan teknik adc dan pembangkit pulsa picu selama 1 ms.

## 3. Langkah dan HasilPercobaan

## 3.1. Langkah Percobaan
Langkah percobaan dari model ini adalah sebagai berikut:
1.  Siapkan  rangkaian  dari  sumber  tegangan  ac,  pengondisi  sinyal,  Arduino  Uno, dan osiloskop 2 saluran.
2.  Unggah  Kode program 2 keArduino  untuk pengujian  DPN melalui  analog input A0.
3.  Atur  osiloskop  sinkron  dengan  masukan  CH1  (tegangan  12Vac),  5V/Div,  dan 2,5ms/Div.
4.  Simpan  hasilnya  (a.1),  dan  ubah  T/Div-nya  menjadi  1ms,  dan  simpan  hasilnya (a.2).
5.  Modifikasi Kode program 2 dari deteksi while (!checkZXD_rise()); menjadi while (!checkZXD_fall());
6.  Unggah Kode program 2 hasil modifikasi.
Techné Jurnal Ilmiah Elektroteknika Vol. 16 No. 1 April 2017 Hal 59 - 65
7.  Atur  osiloskop  sinkron  dengan  masukan  CH1  (tegangan  12Vac),  5V/Div,  dan 2,5ms/Div.
8.  Simpan  hasilnya  (a.3),  dan  ubah  T/Div-nya  menjadi  1ms,  dan  simpan  hasilnya (a.4).
9.  Unggah Kode program 1 ke Arduino untuk pengujian DPN melalui INT-0.
10.  Atur  osiloskop  sinkron  dengan  masukan  CH1  (tegangan  12Vac),  5V/Div,  dan 5ms/Div.
11.  Simpan  hasilnya  (b.1),  dan  ubah  T/Div-nya  menjadi  1ms,  dan  simpan  hasilnya (b.2).
12.  Modifikasi Kode program 1 dari deteksi argument RISING ke FALLING.
13.  Unggah Kode program 1 hasil modifikasi.
14.  Atur  osiloskop  sinkron  dengan  masukan  CH1  (tegangan  12Vac),  5V/Div,  dan 2,5ms/Div.
15.  Simpan  hasilnya  (b.3),  dan  ubah  T/Div-nya  menjadi  1ms,  dan  simpan  hasilnya (b.4).

## 3.2.   Hasil Percobaan
Gambar 4 mewakili teknik adc (a) dan interrupt (b). Hasil yang didapatkan diperoleh dari pemicuan yang disinkronkan dengan CH 1. Lebar pulsa diatur selama 1 ms. Tampak Trig’d  pada  bagian  atas  osiloskop  yang  berarti  bahwa  pulsa  picu  yang  dihasilkan selalusinkron dengan sumber 12 Vac.
4.a.1. adc L  H 4.b.1. INT L  H 4.a.2. AdcH  L
4.b.2. INT H  L
Gambar 4. Pulsa Picu dari teknik adc (a) dan teknik interrupt (b), dengan transisi rendah ke tinggi (1) dan transisi tinggi ke rendah (2).
Analog to Digital Converter dan Interrupt
Darmawan Utomo
Tabel 1. Awal pulsa terhadap titik silang nol. JenisPercobaan ADC L  H ADC H  L INT L  H INT H  L Waktu awal Pulsa terhadap titik silang nol (ms) +0,5 -0,3 +0,5 +0,25
Dari  hasil  pengamatan  seperti  yang  diperlihatkan  pada  Tabel  1,  dapat  diprediksi bahwa  ADC  L  H,  INT  L  H,  dan  INT  H  L  menghasilkan  tundaan  terhadap persilangan nol karena untuk pindah keadaan selalu membutuhkan titik nol. Untuk ADC H  L tidak membutuhkan titik nol  untuk mendeteksi transisi  ke nol sehingga bisa lebih cepat  0,3ms  terhadap  titik  nol.  Hal  ini  bisa  dimanfaatkan  untuk  memperluas  jangkauan picuan karena bisa dimulai sebelum titik nol.

## 4. Kesimpulan
Penggunaan  titik  nol  sebagai  acuan  detector  persilangan  nol  akan  menghasilkan waktu  tunda  positif  sebesar  0,5  ms  baik  untuk  teknik  ADC  dan  interrupt  pada  saat transisi dari kondisi rendah ke tinggi.  Untuk transisi dari tinggi ke rendah, waktu tunda negative sebesar 0,3 ms diperoleh dengan menggunakan teknik ADC dan positif 0,25 ms dengan teknik interrupt.

## DaftarPustaka
[1]  Hart, D.W., “Power Electronics”, McGraw-Hill, 2011.
[2]  Elektuur, “303 Circuits”, U. Elektuur B.V., 1988.
[3]  Texas Instruments, “LM393/D Rev.31”, Texas Instruments, 2016.
[4]  Atmel, “AVR182: Zero Cross Detector”, Atmel Corp., 2016.