Pengarang artikel tersebut menulis buku kendali digital yang cukup lengkap, membahas dari teori kendali digital sampai source code, minus rotary encoder & PWM. Tim Wescott, Applied Control Theory for Embedded Systems, Newnes 2006
Beberapa masalah:
Kemarin saya sempat utak-atik beberapa jam, ringkasannya sebagai berikut.
Beberapa hal yang mungkin membuat masalah:
1. spesifikasi rotary encoder, sanggup sampai berapa rpm?
2. interfacing encoder ke mikroprosesor. apakah sinyal dari encoder diterima dengan baik di mikroprosesor?
3. setting interupsi eksternal, apakah sudah betul?
4. waktu untuk interupsi: apakah CPU cukup cepat mengolah data sebelum interupsi berikutnya datang? Apakah interupsi yang lebih rendah prioritasnya mendapat jatah CPU?
5. apakah ada proses lain di mikroprosesor yang rebutan jatah CPU?
Tahap-tahap simulasi pengolahan sinyal digital dengan LTSpice, dan compiler C
Dokumen ini fokus pada menunjukkan terjadinya proses di setiap tahap dan integrasi proses-proses tersebut, tidak membahas optimasi sistem ataupun subsistem.
Persiapan
install LTSpice
install JDK untuk Netbeans 8.2
Install Netbeans 8.2 untuk IDE compiler C
Install Cygwin dan compiler gcc di Cygwin
Install Python 3.x
Install library SciPy untuk melakukan konversi file WAV
Install Arduino IDE untuk kompilasi kode ATmega328
Proses aliran sinyal pada pengolahan sinyal digital lengkap adalah sebagai berikut (sumber):
Berikut ini diagram sinyal yang akan disimulasikan
Tahap simulasi ringkas:
Input AC dan rangkaian analog disimulasikan dengan LTSPice
Kuantisasi di ADC disimulasikan dengan program C
Filter digital disimulasikan dengan program bahasa C
DAC disimulasikan dengan program bahasa C
Reconstruction filter disimulasikan dengan LTSpice
Simulasi
ini hanya untuk menunjukkan kerangka kerja untuk melakukan simulasi
filter digital, maka dilakukan penyederhanaan sebagai berikut
Filter
anti aliasing menggunakan filter RC orde 1, tanpa menghitung nilai
frekuensi cut-offnya. Dalam tugas mesti diperhatikan frekuensi cut off,
orde filter dan jenis filter
Filter rekonstruksi menggunakan filter RC orde 1, tanpa menghitung nilai frekuensi cut-offnya.
Filter digital menggunakan moving average dengan 3 angka. Seharusnya menggunakan LPF,HPF BPF, BSF sesuai keperluan.
Hanya
menghitung respon pada 1 frekuensi. Seharusnya diukur respon pada
beberapa frekuensi untuk mendapatkan kurva respon frekunsi / Bode plot.
Output
WAV di LTSpice memiliki keterbatasan yaitu hanya mempunyai level
tegangan -1 volt sampai +1 volt, sehingga untuk subsistem yang memiliki
input/output melebihi rentang tersebut mesti dilakukan penyesuaian, atau
simulasi dilakukan hanya pada rentang -1 sampai +1 volt.
Tahap Simulasi Secara Detail
Simulasi di Komputer Desktop
Buat simulasi rangkaian analog bagian depan meliputi sumber tegangan
AC, LPF, level shift, penguat dan sebagainya. Output blok ini akan masuk
ke ADC, jadi seharusnya level tegangannya sudah sesuai dengan level
tegangan input ADC. ATmega328 dapat diatur referensinya di 2,56 volt
atau VCC. Dalam prakteknya, VCC kurang stabil, lebih baik pakai
referensi internal atau eksternal.
16 : bitrate jumlah bit, berapa saja karena nanti akan dipotong pada waktu kuantisasi
10000 : frekuensi sampling 10 kHz
VIN : nama label yang dijadikan winyal WAV (kanal 1)
OUTPUT : nama label yang dijadikan sinyal WAV (kanal 2)
Sampling rate disamakan dengan frekuensi sampling dari software (misal 10 kHz)
Bitrate pakai yang besar saja (misal 16 bit), nanti dapat dibulatkan di program C. Realitasnya adalah nanti dibulatkan sesuai dengan jumlah bit pada ADC (10 bit pada ATmega328)
Berikut tampilan V(vin) dan V(output). NampakV(output) teredam sedikit dan bergeser fase sedikit.
Seharusnya sinyal V(output) sudah dalam batas tegangan 0 sampai VREF.
Sinyal V(output) di atas belum cocok untuk dimasukkan ke ADC karena ADC
pada ATmega328 hanya menerima sinyal dengan tegangan 0 volt sampai
VREF.
Simulasi pada LTSPice di atas menghasilkan output time series dalam format WAV.
Periksai sinyal output pada file WAV dengan program yang dapat menampilkan file WAV (misal Audacity https://www.audacityteam.org/) , pastikan bahwa sinyal WAV yang dihasilkan ‘masuk akal’.
Berikut contoh tampilan file WAV (anti-aliasing-out.wav) dengan Audacity:
Selanjutnya file WAV diubah menjadi CSV supaya mudah dibaca oleh program simulator filter. Kalau ada librarynya, bisa juga file WAV langsung dibaca dengan program simulator filter.
Contoh converter: https://github.com/Lukious/wav-to-csv , diubah sedikit menjadi script wav2csv.py di repository. Install python, scipy dan panda untuk dapat menjalankan wav2csv.py
File anti-aliasing-out.wav diubah menjadi anti-aliasing-out.csv
Cek isi file CSV, bisa dilihat dengan Excel untuk melihat apakah hasilnya sesuai.
Berikut contoh file CSV dilihat di Excel: (anti-aliasing-out.xlsx)
Selanjutnya jalankan program simulator filter digital
(simulasi-filter/main.c) . Program ini membaca file CSV, kemudian data
time series dimasukkan ke fungsi filter_moving_average. Output ditulis
ke sebuah text file dalam format CSV (“simulasi-filter.csv”).
ADC
disimulasikan dengan melakukan kuantisasi sinyal LPF_OUT sejumlah
resolusi ADC yang dipakai. ATmega328 mempunyai resolusi 10 bit, sehingga
sinyal LPF_OUT mesti dikuantisasi menjadi angka 0 sampai 1023 (1024
tingkat).
Untuk
memastikan, dapat dibandingkan antara sinyal output dari generator
sinyal, sinyal masuk ke ADC, dan sinyal hasil filter digital.
Berikut grafik VIN, LPF_OUT dan FILTER_OUT (simulasi-filter.xlsx)
Tahap selanjutnya adalah membuat sinyal output DAC dalam format WAV dan kemudian simulasi reconstruction filter dengan LTSpice.
Output DAC adalah dalam bentuk zeroth order hold, contohnya seperti berikut ini: (sumber)
Untuk menghasilkan sinyal zeroth order hold, perlu dilakukan hal berikut
melakukan
kuantisasi output sesuai dengan resolusi DAC yang dipakai. Pada sistem
ini digunakan DAC MCP4725 mempunyai resolusi 12 bit. Jika dipakai ESP32,
maka mesti menggunakan resolusi 8 bit.
menaikkan sampling rate,
untuk simulasi terjadinya sinya berbentuk anak tangga (staircase).
Misal dengan menaikkan jadi 10x sinyal sampling saat ini menjadi 100
kHz.
Potensiometer dapat dipakai sebagai sumber tegangan sebagai sinyal untuk dimasukkan ke sistem mikroprosesor seperti Arduino.
Bandwidth suatu potensiometer perlu diukur untuk mengetahui apakah akan terjadi aliasing ketika sinyal analog dari potensiometer diubah menjadi digital dengan teknik sampling.
Berikut ini contoh grafik tegangan output dari potensiometer, diukur dengan ADC di Arduino Nano (ATmega328).
Berikut ini beberapa jenis display yang sering dipakai untuk sistem mikroprosesor berbasis Arduino:
Dot matriks 16×2
Dot matriks 20×4
E Paper / E-Ink display
OLED
LCD TFT / IPS
Antar muka yang dipakai ke display antara lain:
komunikasi paralel
komunikasi serial I2C
komunikasi serial SPI
Komunikasi paralel menggunakan banyak pin, karena setiap bit menggunakan 1 jalur. Antar muka serial hanya memerlukan pin sedikit. Display keluaran baru umumnya sudah menggunakan komunikasi serial.
Berikut ini contoh antar muka ESP32 LOLIN32 Lite dengan display E-INK, menggunakan protokol SPI.
Antar muka LOLIN32 LITE dengan display E-INK Heltec
Mikrokontroler ESP32 dapat berkirim data melalui jaringan dengan komputer lain. Untuk menjaga kerahasiaan data yang dikirim tersebut, maka perlu dilakukan enkripsi data yang dikirim. Pada tulisan ringkas ini akan ditinjau library enkripsi data yang kompatibel antara ESP32 dan Windows, sehingga memungkinkan pertukaran data dengan enkripsi antara keduanya.
menggunakan AES-128 dengan mode ECB (Electronic Codebook). Seperti diketahui, mode ECB ini punya banyak kelemahan, sehingga kalau mau lebih profesional kita mesti menggunakan mode lain seperti CBC (Cipher Block Chaining).
ukuran data harus kelipatan 16 byte. Jika ukuran data lebih dari 16 byte, maka fungsi mesti dipanggil berulangkali, dan kalau ukuran data bukan kelipatan 16, perlu dilakukan padding (pengisian) supaya menjadi kelipatan 16.
Selanjutnya bagaimana supaya data yang dienkripsi di ESP32 dapat dibaca di Windows? Untuk itu perlu diinstall library yang sama / kompatibel di Windows. Untuk mudahnya, pada contoh ini akan digunakan library yang sama supaya tidak perlu mengubah source code.
Library yang dipakai pada ESP32 tersebut adalah Mbed TLS(https://tls.mbed.org/) . Library Mbed TLS tersedia dalam bentuk source code, jadi dapat juga dicompile sendiri untuk platform lain. Untuk Windows, sudah ada library yang sudah dicompile, jadi tinggal diinstall saja. Versi yang tersedia untuk compiler GNU based (Cygwin, MinGW) dan Visual Studio.
Pada contoh berikut ini akan dipakai IDE Netbeans 8.2 dengan compiler Cygwin. Netbeans terbaru adalah versi 11, namun Netbeans yang sudah support C/C++ baru sampai versi 8.2, jadi versi 11 belum mendukung bahasa C / C++.
Library perlu diinstall dari program Setup dari Cygwin. Jalankan program instalasi Cygwin (setup-x86_64.exe), kemudian masuk ke menu pemilihan packages. Pilih View “Full”, dan Search di “mbedtls”. Pilih untuk install library mbedtls dan mbedtls-devel.
Cygwin Mbed TLS library
Nama library untuk Mbed TLS adalah libmbedcrypto. Selanjutnya tambahkan library tersebut di setting project dari Netbeans
Berikut ini tampilan library di Netbeans. Lokasi library tersebut adalah di C:/cygwin64/lib/libmbedcrypto.dll.a
/* * enkripsi data dengan AES-CBC * modifikasi dari https://everythingesp.com/esp32-arduino-tutorial-encryption-aes128-in-ecb-mode/ * menggunakan library mbedtls dari cygwin */ #include "mbedtls/aes.h" #include "string.h" #include "stdio.h"
printf("\n\nDeciphered text:\n"); for (int i = 0; i < 16; i++) { printf("%c", (char) decipheredTextOutput[i]); //printf("%c", (char) decipheredTextOutput[i]); } return 0; }
Perubahan yang dilakukan:
memindahkan isi setup() di Arduino ke main() di Netbeans
menambahkan header file stdio.h dan string.h
mengganti Serial.print() dengan printf()
Output di ESP32 Arduino
Output Windows 32
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0018,len:4 load:0x3fff001c,len:928 ho 0 tail 12 room 4 load:0x40078000,len:8740 load:0x40080400,len:5788 entry 0x4008069c Original plain text: Tech tutorials x Ciphered text: 567a3b23b683d8488d5d40d2a56e31d2 Deciphered text: Tech tutorials x
Original plain text: Tech tutorials x Ciphered text: 567a3b23b683d8488d5d40d2a56e31d2 Deciphered text: Tech tutorials x RUN SUCCESSFUL (total time: 70ms)
Dari hasil di atas, nampak bahwa ciphered text adalah identik, dan keduanya dapat melakukan proses dekripsi. Jadi dapat disimpulkan kedua program tersebut mempunyai fungsi yang sama, jadi data yang dienkripsi di ESP32 dapat dibaca di Windows dan sebaliknya.
Tahap selanjutnya adalah menambahkan proses komunikasi data dengan menggunakan UDP/TCP di ESP32 dan Windows, namun hal itu akan menjadi tulisan lain lagi.
Batere kotakl 9 volt ada yang dapat diisi ulang, ada juga yang tidak dapat diisi ulang
Tipe batere kotak 9 volt yang dapat diisi ulang adalah tipe sebagai berikut
NiMh (Nickel Manganese Hybrid)
LiPo (Lithium Polymer)
NiCd (Nickel Cadmium)
Timbal
Batere jenis berikut ini tidak dapat diisi ulang:
Seng mangan
Alkaline
Lithium
Cara yang mudah untuk mengisi ulang adalah dengan menggunakan charger standar yang memang sudah dirancang khusus untuk batere isi ulang.
Berikut ini contoh charger batere CHCC-EU dari Energizer, yang sudah dilengkap dengan konektor untuk batere kotak 9 volt. Jadi tinggal sambungkan batere kotak ke konektor tersebut, sambungkan ke jala-jala listrik, dan tinggal menunggu sampai batere selesai diisi ulang. Charger CHCC-EU ini hanya dapat mengisi batere NiMH saja, jadi kalau mau mengisi tipe lain mesti cari charger tipe lain.
Charger batere Energizer CHCC-E
Cara lain adalah menggunakan charger serbaguna, seperti IMAX-B6AC. Pengisian dengan charger ini agak sedikit repot, karena kita mesti menyambungkan kabel chargernya ke kutub yang benar pada batere, dan juga melakukan setting tipe batere yang benar pada charger tersebut. Mesti baca manualnya secara hati-hati. Namun enaknya dari charger ini adalah dapat mengisi segala macam tipe batere, seperti Pb (lead acid) untuk motor/mobil, NiMh, LiPo.
IMAX B6AC
Tahap pengisian:
Sambungkan kabel charger merah ke kutub positif batere (+)
Sambungkan kabel charger hitam ke kutub negatif batere (-). Penyambungan dapat menggunakan jepit buaya yang sudah disediakan dari charger tersebut, bisa juga menggunakan konektor batere kotak 9 volt.
Atur tipe batere, sesuaikan dengan tipe batere yang dipakai
Pada percobaan ini akan dibuat interupsi timer 1 pada ATmega328 dengan frekuensi 1 kHz, dan kemudian dilakukan pengukuran frekuensi yang dihasilkan.
Konfigurasi Timer 1 sebagai berikut
Frekuensi 1 kHz, atau perioda 1 ms
menggunakan Timer1
Clock Source: System Clock
Clock Value: 250 kHz (prescaler 64)
Mode: CTC top=OCR1A
Out A: Disconnected
Out B: Disconnected
Interrupt on: Compare A Match
tidak ada output langsung ke pin mikrokontroler
Frekuensi clock adalah 16 Mhz. Dengan prescaler 64, dihasilkan clock ke Timer1 sebesar 250 kHz. Untuk membuat frekuensi 1 kHz, perlu pembagi sebesar 250 (0xFA), untuk itu diperlukan angka 249 (0xF9) di register OCR1A. Mode timer1 menggunakan CTC (Clear Timer on Compare), jadi ketika angka counter mencapai 249, otomatis berikutnya menjadi 0, dibarengi dengan munculnya interupsi timer 1. Dengan demikian sinyal clock timer 1 250 kHz akan menghasilkan interupsi timer dengan frekuensi 1 kHz.
Kode dibuat dengan menggunakan CodeWizard pada compiler CodevisionAVR versi Evaluation. Berikut ini tampilan setting pada code wizard untuk Timer 1:
Konfigurasi Timer 1
Untuk menghasilkan sinyal output, digunakan port C sebagai output. Output pada port C dikomplemen setiap interupsi, sehingga akan timbul sinyal dengan frekuensi 500 Hz pada port C. Berikut kode ISR (interrupt service routine) untuk Timer 1:
Berikut ini sinyal yang dihasilkan, diukur dengan menggunakan osiloskop. Screen capture diambil langsung dari osiloskop (bukan difoto).
Hasil pengukuran port C
Frekuensi yang terukur adalah 500,026 Hz, sehingga frekuensi interupsi sebenarnya adalah 2 x 500,026 = 1000,052 Hz. Tidak sama persis dengan seharusnya (1 kHz), kemungkinannya antara frekuensi kristal yang tidak tepat, atau clock pada osiloskop yang tidak tepat.
Pengukuran frekuensi dengan osiloskop GDS 1042Pengukuran sinyal pada Arduino nano (ATmega328)
Salah satu parameter yang perlu diukur pada motor bakar adalah tekanan kompresi. Pertanyaan yang akan dicoba dijawab: apakah sensor tekanan air dapat dipakai mengukur tekanan kompresi , mengingat pengukur tekanan ini sangat berguna untuk dipakai di bengkel motor.
Pertama mari cek dulu apa yang terjadi pada kompresi motor bakar.
Ketika terjadi kompresi, maka tentu saja tekanan akan meningkat, dan juga temperatur ruang bakar meningkat. Peningkatannya dapat dihitung dengan rumus P.V = n.R.T , namun hasil pengukuran mungkin tidak tepat 100% dengan perhitungan karena ada ketidak idealan di sana-sini.
Tekanan awal ruang bakar adalah 1 atmosfer, ketika kompresi tekanan akan naik sesuai dengan rasio kompresi. Motor biasanya rasio kompresi antara 9,5 sampai 11,6, sehingga anggap saja tekanan akan naik dari 1 atmosfer menjadi 11,6 atmosfer. Temperatur juga akan naik, dari beberapa referensi angka temperatur sekitar 300 derajat Celcius.
Batas tekanan adalah 1,2 Mpa, atau 1,2 x 9,86923 = 11.843976 Atmosphere , sedangkan tekanan kompresi adalah 11,6 atmosfer, jadi sensor ini masih memenuhi syarat dari sisi temperatur.
Batas temperatur adalah 105 derajat Celcius, jadi sensor ini tidak dapat dipakai karena temperatur ruang bakar dapat mencapai 300 derajat Celcius.
Pulse Width Modulation (PWM) atau modulasi lebar pulsa sangat bermanfaat pada sistem mikrokontroler, salah satunya adalah untuk mengendalikan motor DC. Pada chip ATmega328, sinyal PWM ini dapat dibangkitkan dengan perangkat lunak, ataupun dapat dibangkitkan dari perangkat keras dengan menggunakan periferal Timer internal. PWM dari perangkat keras cukup praktis karena tidak membebani perangkat lunak, namun ada keterbatasan karena pada ATmega328 hanya terdapat 3 buah timer internal, sehingga tidak bisa memiliki banyak output PWM dari perangkat keras.
Berikut ini ujicoba output PWM (Pulse Width Modulation) dari Timer 0 pada ATmega328. Modul yang digunakan adalah Arduino Nano clone.
Konfigurasi pengujian PWM ini adalah sebagai berikut:
Perangkat keras menggunakan Timer 0 (8 bit)
Clock Source: System Clock
Clock Value 2000.000 kHz
Mode: Fast PWM top=0xFF
Out A: Non-Inverted PWM
Out B: Disconnected
tidak ada interupsi dari Timer0
output pada pin OC0A (pin PD6 pada ATmega328, D6 pada Arduino Nano)
Pengaturan register menggunakan Code Wizard dari CodeVision AVR Evaluation dengan detail sebagai berikut ini:
Source code terkait dengan Timer 0 adalah sebagai berikut:
Variable yang dapat diubah-ubah adalah OCR0A untuk mengatur duty-cycle dari PWM. Nilai register ini dapat diisi dari 0x00 sampai dengan 0xff (255)
Tahap selanjutnya adalah pengujian output PWM dengan cara melihat sinyal yang dihasilkan dengan osiloskop GW INSTEK GDS-1042
Berikut ini adalah output dengan nilai register OCR0A=0x00. Perioda PWM adalah 2000/256 = 0.128 ms
OCR0A=0x01
Nampak bahwa nilai register 0 akan memberikan sinyal yang paling pendek, yaitu dengan panjang pulsa 500 ns. Berikut ini adalah sinyal yang sama dilihat dengan time base 100 ns per div
OCR0A=0x01, zoom
Berikut ini adalah sinyal dengan OCR0A=0x80 atau duty cycle=50%
OCR0A=0x80
Berikut ini adalah sinyal dengan OCR0A=0xfe (254)
OCR0A=0xfe (254)
Terakhir adalah sinyal dengan duty cycle = 100% , dengan OCR0A=0xff (255)
OCR0A=0xff
Hal penting yang perlu diperhatikan: nilai duty cycle tidak pernah 0%, minimum adalah 1/256. Nilai maksimum duty cycle adalah 100%. Untuk membuat sinyal PWM duty cycle =0 dapat dilakukan dengan mematikan output PWM.
Pada tulisan ini diuraikan hasil dari membongkar raket nyamuk merek Kenmaster tipe KM-089, disertai dengan analisis ringkas tentang isi dari raket nyamuk tersebut.
Berikut ini adalah raket nyamuk Kenmaster KM-089.
Raket nyamuk Kenmaster KM-089
Raket nyamuk ini dapat dipisah menjadi bagian jaring, dan bagian senter. Bagian senter berisi batere, senter dan colokan untuk melakukan charging ulang batere dari raket nyamuk tersebut.
Jaring dan senter
Membongkar Raket Nyamuk
Tahap pertama pembongkaran adalah membuka bagian senter.
Bagian dalam bagian senter
Secara sepintas pada bagian senter terdapat batere, papan rangkaian yang nampaknya berisi rangkaian charger, dan lampu senter LED.
Rangkaian charger bagian atasRangkaian charger bagian bawah
Rangkaian charger nampak sederhana, berisi dioda penyearah, kapasitor, LED indikator dan resistor. PCB menggunakan single layer. Tertulis tipe PCBnya: “NX-089B”
Rangkaian charger tampak samping
Tahap selanjutnya adalah membuka bagian jaring.
PERHATIAN: kapasitor di rangkaian dapat berisi tegangan ribuan volt, sehingga sebelum membuka tutup, lakukan hubung singkat pada jaring supaya listrik yang tersimpan di kapasitor dapat dibuang dan tidak membahayakan. Proses hubung singkat dapat dilakukan dengan obeng.
Membuang muatan pada raket nyamuk
Berikut ini bagian jaring yang sudah dibuka tutupnya, sehingga dapat dilihat rangkaian di dalamnya.
Jaring dibuka
Berikut ini rangkaian elektronik pada bagian jaring raket nyamuk.
Rangkaian jaring raket nyamuk
Rangkaian pada jaring menerima masukan 4 volt dari bagian senter, dan kemudian menaikkan tegangan tersebut menjadi ribuan volt dengan rangkaian sederhana berbasis transistor, transformator, dioda dan kapasitor.
Kapasitor pada rangkaian penaik teganganKapasitor kecil pada rangkaian penaik tegangan
Transistor KJL 882 pada rangkaian jaring
Bagian bawah rangkaian jaring
Rangkaian pada jaring cukup sederhana, hanya menggunakan PCB single layer.
Analisis Rangkaian
Secara ringkas, sistem keseluruhan elektronik raket nyamuk adalah sebagai berikut ini:
Blok diagram rangkaian raket nyamuk
Tegangan jala-jala listrik 220 volt disearahkan dan diregulasi, untuk dapat mengisi batere SLA 4 volt. Tegangan dari batere dapat dipakai untuk menyalakan senter. Tegangan dari batere juga dapat dinaikkan menjadi ribuan volt untuk elektrifikasi jaring nyamuk.
Batere
Batere yang digunakan tidak jelas modelnya, namun dari hasil pencarian di internet dengan kata kunci ‘mosquito killer battery’ , didapatkan batere yang bentuknya mirip dengan yang dipakai di raket nyamuk tersebut.
Dari penelusuran di toko online, batere 4V dengan bentuk serupa juga dijual di beberapa tempat:
Batere 4V Emergency
Dari hasil pengukuran, didapatkan tegangan keluaran batere tersebut bervariasi antara 4 volt sampai 4,2 volt, jadi cocok dengan kisaran keluaran tegangan batere SLA (Sealed Lead Acid) yang terdiri dari 2 sel (masing-masing 2 volt).
Rangkaian Charger
Rangkaian charger berisi penyearah dari 220 volt untuk mengisi ulang batere, serta sakelar untuk memilih mode senter atau mode raket.
Sketsa rangkaian charger
Untuk mengisi batere SLA 4 volt diperlukan tegangan sekitar 4,4 volt. Tegangan 4,4 volt ini diperoleh dari input 220 volt dengan cara menghubungkan seri kapasitor 1 nF. Jadi tidak diperlukan transformator untuk menurunkan tegangan. Pada rangkaian charger ini tidak ada deteksi batere penuh, sehingga dapat terjadi pengisian berlebih (overcharge) pada batere. Pengguna mesti menghentikan pengisian kalau dirasa batere sudah penuh.
Lampu indikator pengisian menggunakan LED yang memerlukan tegangan sekitar 2 volt untuk dapat menyala. Penurunan tegangan ini dilakukan dengan menggunakan tangga resistor 4k7 dan 220k.
Rangkaian Penaik Tegangan
Rangkaian penaik tegangan pada jaring fungsinya adalah menaikkan tegangan batere dari 4 volt menjadi ribuan volt supaya dapat membunuh nyamuk.
Uraian setiap komponen adalah sebagai berikut
Transformator yang dipakai memiliki 3 kaki, namun tidak jelas tipenya. Kemungkinan juga transformator tersebut dibuat khusus.
Pada kapasitor besar tertulis 223J2.0KV, sehingga dapat disimpulkan kapasitasnya 22 nF dengan tegangan maksimum 2 kilovolt atau 2000 volt. Dari kedua kaki kapasitor dipasang kabel ke jaring-jaring, sehingga nampaknya tegangan kerja dari jaring adalah kurang dari 2000 volt.
Pada kapasitor yang lebih kecil berwarna biru tertulis 101 3KV, artinya kapasitas kapasitor itu adalah 100 pF dengan tegangan maksimuk 3000 volt.
Pada transistor di rangkaian jaring tertulis “KJL 882”. Dari hasil penelusuran, transistor tersebut tipenya adalah 2SD882. [Datasheet 2SD882]
Dioda pada rangkaian jaring menggunakan tipe “RFC4K”. Kemampuan utama dioda ini adalah arus maksimum 200 mA, tegangan 4.0kV, switching 500 ns. Detail keterangan dapat dilihat di datasheet RFC4K. Dioda RFC4K dan kapasitor 100 nF dipasang dengan konfigurasi rangkaian doubler.
Terdapat resistor 1k5 yang merupakan bagian dari osilator, dan resistor 33 ohm yang diseri dengan LED indikator.
Sketsa rangkaian penaik tegangan
Skema rangkaian penaik tegangan
Rangkaian penaik tegangan terdiri dari 2 bagian, yaitu osilator dan penaik tegangan.
Rangkaian osilator yang digunakan sangat sederhana, hanya menggunakan 1 transistor NPN, 1 resistor dan 1 transformator. Jenis rangkaiannya kemungkinan adalah “Blocking Oscillator“.
Untuk mendapatkan daya (watt) dari arus (ampere), perlu diketahui berapa tegangannya (volt).
Rumus daya:
P = V x I
P: daya (watt)
V: tegangan (volt)
I: arus (ampere)
Berikut ini beberapa tegangan yang umum dipakai:
Perangkat
Tegangan
Daya untuk 1 ampere
Baterai seng mangan / alkaline
1,5 volt
1,5 watt
Baterai Lithium Ion
3,7 volt
3,7 watt
Baterai Timbal ( 1 sel)
2 volt
2 watt
Baterai NiCd (Nickel Cadmium)
1,2 volt
1,2 watt
Baterai alkaline 9 volt
9 volt
9 watt
Jala-jala listrik 220 volt
220 volt (rms)
220 watt
Parameter penting pada suatu batere di antaranya adalah ampere dan watt. Timbul pertanyaan, kalau kita tahu ampere dari suatu batere, apakah dapat diketahui watt dari batere tersebut? Jadi 1 ampere itu sebenarnya berapa watt?
Batere 9 volt Lithium Polymer 720 mAh
Ampere adalah besaran arus listrik, sedangkan watt adalah besaran/ satuan daya. Penghubung antara arus dengan daya adalah tegangan dengan satuan volt.
Dari rumus listrik, diketahui sebagai berikut:
daya = tegangan x arus
atau dengan simbol:
P (daya) = V (tegangan) x I (arus)
Jadi misalkan diketahui arus 1 ampere dengan tegangan batere 12 volt, maka dayanya adalah 1 x 12 = 12 watt. Arah daya ini dapat keluar dari batere ketika batere dipakai, atau bisa juga masuk ke dalam batere ketika batere diisi ulang (dicas).
Rumus di atas hanya berlaku untuk arus searah (DC / Direct Current). Jika arus yang digunakan bolak-balik (AC / alternating current), maka ada parameter lain yg penting yaitu faktor daya:
daya = tegangan x arus x faktor daya
Faktor daya ini adalah suatu angka dari 0 sampai 1 yang ditentukan oleh sifat dari beban listrik yang dipakai. Pengukuran dan perhitungan daya pada arus bolak-balik (AC) lebih rumit karena adanya faktor daya ini.
Perangkat listrik dengan beban yang murni resistor mempunyai faktor daya 1 atau mendekati 1. Contohnya setrika listrik, kompor listrik, lampu pijar.
Perangkat yang di dalamnya mempunyai kumparan ataupun motor biasanya mempunyai faktor daya sekitar 0,7. Contohnya mesin cuci, pompa air, AC (untuk kompresor), kulkas (kompresor).
Pompa air dengan tegangan input 220 volt. Faktor daya sekitar 0,7
Perangkat elektronik seperti komputer bervariasi, model yang bagus mempunyai faktor daya 0,9 atau lebih, sedangkan yang kurang bagus dapat memiliki faktor daya 0,7 sampai 0,8.
Angka-angka tersebut hanya perkiraan saja, untuk pastinya mesti diukur dengan alat khusus.
Beberapa rangkaian elektronik memerlukan clock dengan frekuensi tertentu untuk dapat bekerja, contohnya adalah sistem mikroprosesor/mikrokontroler dan rangkaian digital sinkron. Pada artikel ini diuraikan beberapa sumber clock dengan berbagai akurasi.
Secara ringkas sumber clock yang umum dipakai adalah sebagai berikut
Osilator berbasis induktor/kapasitor
Osilator berbasis kristal: kristal saja, kristal dengan kompensasi temperatur (TCXO dan MCXO), kristal dengan oven (OCXO), kristal dengan GPS (GPSDO)
Osilator Berbasis Induktor / Kapasitor
Osilator menghasilkan gelombang sinusoidal dengan frekuensi tertentu. Umumnya osilator dibuat dengan komponen pasif resistor, induktor dan kapasitor, serta komponen aktif transistor ataupun op-amp.
Frekuensi sinyal yang dihasilkan pada rangkaian jenis ini tergantung pada nilai induktor / kapasitor yang dipakai. Nilai induktor/kapasitor ini dapat berubah karena waktu ataupun pengaruh temperatur, sehingga frekuensi sinyal yang dihasilkan juga berubah, maka ketepatan frekuensi yang dihasilkan rendah.
Berikut ini contoh rangkaian osilator dengan komponen aktif transistor [sumber].
Osilator dengan transistor
Berikut ini adalah contoh relaxation oscillator dengan komponen aktif op-amp. [sumber]
Osilator dengan op-amp
Osilator Berbasis Kristal
Pada osilator jenis ini, sinyal clock dihasilkan menggunakan bahan piezoelektrik yang bergetar dengan suatu frekuensi tertentu. Frekuensi getaran pada bahan piezoelektrik ditentukan oleh ukurannya, sehingga frekuensi sinyal yang dihasilkan dapat sangat tepat.
Nilai frekuensi kristal umumnya dinyatakan untuk temperatur tertentu. Ukuran fisik kristal terpengaruh oleh temperatur, jadi jika temperatur berubah, maka frekuensi sinyal clock yang dihasilkan juga berubah.
Untuk dapat menghasilkan sinyal clock, kristal masih perlu disambung dengan beberapa komponen. Contoh rangkaian osilator berbasis kristal misalnya sebagai berikut [sumber]
Osilator Colpitts Crystal
Pada kebanyakan mikrokontroler, sudah disiapkan rangkaian clock di dalam mikrokontroler tersebut, sehingga untuk mengaktifkan kristal cukup disambung ke mikrokontroler dan ditambahkan 2 buah kapasitor. Nilai kapasitor umumnya disesuaikan dengan jenis & ukuran kristal yang digunakan, dan sudah ditentukan di datasheet mikrokontroler tersebut. [sumber]
Osilator kristal untuk mikrokontroler/mikroprosesor
Osilator Kristal Dengan Kompensasi Temperatur
Osilator kristal biasa mempunyai kelemahan, yaitu nilai frekuensinya masih berubah terhadap temperatur. Untuk mengatasi hal tersebut, dapat digunakan kristal yang frekuensinya dikompensasi terhadap perubahan temperatur. Komponen ini disebut sebagai Temperature Compensated Crystal (TCXO). Pada TCXO, kompensasi dilakukan secara analog dengan menambahkan rangkaian tertentu.
Ada juga kompensasi yang dilakukan secara digital dengan menambahkan mikroprosesor, dengan teknologi Microcontroller Compensation (MCXO).
TCXO dan MCXO sudah tersedia dalam bentuk modul, sehingga memudahkan untuk dipakai.
Contoh TCXO yang populer dipakai sebagai real time clock adalah DS3231 dari Maxim Integrated. DS3231 ini banyak dijual dalam bentuk modul yang sudah dilengkapi dengan batere Lithium sehingga waktu yang disimpan di dalamnya tidak hilang jika sumber listrik dimatikan.
Osilator Kristal Dengan Pengendalian Temperatur (OCXO)
Pada osilator jenis ini, sebagai sumber frekuensi digunakan kristal yang temperaturnya dijaga dengan suatu sistem pengendalian temperatur. Sistem ini disebut juga sebagai Crystal Oven ataupun Oven Controlled Crystal Oscillator (OCXO)
Dimensi OCXO cukup besar, karena di dalamnya mesti ada rangkaian pemanas, pengendali temperatur dan isolator supaya temperatur stabil.
Bentuk fisik OCXO
Perbandingan ketepatan osilator kristal dapat dilihat pada tabel berikut [sumber]
Perbandingan osilator
Osilator Kristal Dengan GPS
Jika ketepatan kristal OCXO masih kurang, maka ketepatannya masih dapat ditingkatkan dengan menggunakan bantuan sinyal GPS. Sistem ini disebut sebagai GPS Clock atau GPS disciplined oscillator (GPSDO).
Blok diagram sistem GPSDO adalah sebagai berikut [sumber]
Pengukuran sudut / putaran pada suatu poros dapat dilakukan dengan berbagai macam sensor, di antaranya sebagai berikut:
Optical Incremental Rotary Encoder. Sensor ini mengukur posisi relatif, bukan posisi absolut.
Optical Absolute Rotary Encoder
Potensiometer Analog
Hall Effect Potensiometer
Magnetic Rotary Encoder
Optical Incremental Rotary Encoder
Sensor jenis ini mengukur posisi relatif, bukan posisi absolut. Contohnya dibahas di artikel Rotary Encoder
Rotary Encoder G40B-6-400
Optical Absolute Rotary Encoder
Sensor ini mirip dengan jenis incremental, namun outputnya sudah berupa posisi poros.
Magnetic Rotary Encoder
Sensor jenis ini mengukur medan magnet pada poros, dan dari situ dapat diukur posisi absolute poros tersebut. Contoh sensor jenis ini adalah AS5600.
Modul AS5600 dari SeeedstudioModul AS5600 dari Seeedstudio
AS5600 ex Aliexpress
Potensiometer
Potensiometer dapat dipakai sebagai sensor sudut, dengan cara menyambung poros potensiometer ke poros yang akan diukur. Potensiometer yang dipakai sebagai sensor tentunya harus lebih kokoh dibandingkan potensiometer biasa. Porosnya juga dibuat supaya mudah disambung ke poros lain.
Sebelum ada mikrokontroler, jika kita ingin bikin game, maka seluruh algoritma dan logika game tersebut mesti dibuat dengan menggunakan rangkaian gerbang TTL. Contohnya adalah rangkaian game PONG,
Berikut ini tampilan game PONG:
Tampilan game PONG
Berikut ini rangkaian elektronik permainan PONG
Rangkaian permainan PONG
Rangkaiannya nampaknya ruwet. Kalau jaman sekarang, game PONG dapat dibuat dengan cepat menggunakan Arduino dan display LCD matrix / OLED sederhana.
Dalam dunia kelistrikan dan elektronik, dikenal besaran W (watt) dan Wh (watt-hour). Arti dari besaran tersebut adalah sebagai berikut:
W (watt) adalah satuan daya.
W (watt-hour) atau (watt-jam) adalah satuan energi. Secara rumus, energi adalah daya x waktu, atau E=P x t.
Contoh penggunaan satuan daya:
pada motor listrik, untuk menyatakan kekuatan motor. Pada motor bakar seperti mesin disel dan mesin bensin, dipakai juga satuan tenaga kuda / PK
pada lampu, untuk menyatakan listrik yang dikonsumsi. Biasanya makin tinggi nilai watt nya, maka makin terang lampu tersebut.
Contoh penggunaan satuan energi (Wh) / (watt-hour)
pada batere, menyatakan jumlah energi yang disimpan pada sebuah batere
Satuan energi yang standar adalah J (joule), namun seringkali dipakai juga adalah Wh (watt-hour) dan juga Ah (ampere hour) pada tegangan tertentu.
Berikut ini contoh power bank yang menuliskan kapasitas energinya dalam berbagai satuan:
16000 mAh (3.6 volt) . mAh (milli-ampere-hour) bukan satuan energi, maka supaya dapat dipakai untuk mengukur energi, mesti diketahui berapa tegangan kerjanya. Pada kasus ini, tegangan kerja adalah 3.6 volt sehingga dapat dihitung daya dari arus-tegangan-waktu.
57.6 Wh
Powerbank 1600 mAh
Berikut ini contoh aki motor yang menuliskan kapasitasnya dalam Ah (5 Ah). Diketahui tegangan kerjanya adalah 12 volt, sehingga energi tersimpan pada aki tersebut dapat dihitung.
Aki motor 12 volt 5 Ah
Berikut ini contoh lampu LED
Tertulis 18W, 6500K 2000lm 150 mA 220-240 VAC. Artinya lampu tersebut memerlukan daya sebesar 18 watt. Biasanya suatu lampu makin besar dayanya, maka makin terang.
Energi yang dipakai lampu tersebut dapat diukur dengan menggunakan kWh meter, baik kWh biasa (elektromekanik) maupun kWh elektronik. Berikut ini contoh kWh elektromekanik yang biasa dipakai di rumah-rumah, terutama untuk meteran listrik pasca-bayar.
kWh meter biasa
Berikut ini meteran listrik pra-bayar, yang di dalamnya terdapat kWh meter elektronik.
Meteran listrik pra-bayar
Berikut ini contoh kWh meter elektronik yang bukan untuk meteran prabayar.