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.
Pada suatu rangkaian elektronika, jika diperlukan suatu sakelar yang dikendalikan secara listrik , maka salah satu cara yang umum adalah menggunakan relay mekanik sebagai sakelar. Relay mekanik menggunakan suatu kumparan untuk menghasilkan medan magnet, dan medan magnet ini menggerakkan suatu sakelar mekanik.
Relay
Relay mekanik tidak dapat dihubungkan langsung ke suatu mikrokontroler, karena arus output dari mikrokontroler tidak cukup kuat untuk menggerakkan relay tersebut. Pada umumnya dapat digunakan transistor BJT ataupun MOSFET untuk memperkuat sinyal dari output mikrokontroler supaya dapat menggerakkan relay. Berikut ini contoh rangkaian transistor NPN yang dipakai untuk menggerakkan relay.
Relay dikendalikan transistor NPN
Relay mekanik cukup mudah digunakan, namun memiliki beberapa kekurangan:
ada komponen yang bergerak secara mekanik, sehingga ada potensi lama kelamaan aus dan rusak
fungsi sakelar relatif lambat dibandingkan dengan komponen semikonduktor
dimensi cukup besar dibandingkan komponen semikonduktor.
Sebagai alternatif relay mekanik, dapat digunakan komponen semikonduktor yang difungsikan seperti relay sebagai sakelar. Berikut ini beberapa alternatif sakelar menggunakan komponen semikonduktor
Optocoupler Triac
Berikut ini rangkaian pengganti relay dengan menggunakan kompnen utama TRIAC dan Opto-triac
Rangkaian Triac dengan Optotriac
Opto triac berfungsi mengisolasi rangkaian batere 5 volt dengan rangkaian jala-jala listrik di sebelah kanan. Jika LED di dalam opto-triac menyala, maka opto-triac akan bersifat konduktif. Triac berfungsi sebagai sakelar. Kelebihan utama Triac adalah dapat berfungsi sebagai sakelar pada tegangan AC, tidak seperti transistor bipolar (BJT) ataupun MOSFET yang hanya dapat dilewati arus searah.
Resistor 33 ohm dan kapasitor 33 nF berfungsi sebagai snubber, yaitu untuk membuang lonjakan tegangan yang muncul pada beban terutama pada beban induktif seperti motor dan solenoid.
Batere 5 volt berfungsi sebagai sumber tegangan untuk menyalakan LED pada optotriac. Pada rangkaian sesungguhnya, batere 5 volt ini dapat diganti dengan mikrokontroler seperti Arduino atau ATmega.
Modul Solid State Relay (SSR)
Untuk praktisnya, umumnya rangkaian optotriac dan Triac dikemas dalam 1 kemasan yang kompak sebagai suatu modul, yang dikenal sebagai Solid State Relay (SSR).
Berikut ini contoh modul SSR yang ukurannya relatif besar, dapat menangani arus beban sampai dengan 40 ampere AC, dengan input kendali cukup fleksibel, berupa tegangan DC dari 3 volt sampai 32 volt.
Pada penggunaan SSR, perlu diperhatikan beban yang dipakai DC atau AC, karena SSR untuk AC hanya dapat dipakai untuk arus bolak-balik, terutama karena di dalamnya menggunakan komponen utama Triac yang hanya berfungsi baik pada arus bolak-balik.
Modul SSR yang lebih kecil juga ada, seperti OMRON G3MB berikut ini.
SSR Omron G3MB-202P
Modul SSR ini juga dijual sebagai modul yang sudah disolder, sehingga pengguna cukup menyambungkan kabel ke terminal yang sudah disediakan.
Modul SSR Omron G3MB202P
Rangkaian di dalam SSR pada umumnya menggunakan komponen semikonduktor Triac. Berikut ini contoh rangkaian SSR berbasis TRIAC (sumber)
Rangkaian SSR berbasis Triac
Rangkaian di atas mirip dengan rangkaian “Optocoupler Triac”, namun rangkaian ini sudah dilengkapi dengan beberapa fitur pengamanan:
Pada input DC dipasang D1 sebagai pengaman jika polaritas tegangan masuk terbalik
TR1 dan R2 berfungsi sebagai pengaman terhadap tegangan lebih dari input. Jika tegangan input tinggi, maka arus pada R2 tinggi, sehingga TR1 akan ON, dan dengan demikian mengurangi arus yang mengalir pada LED. Jika tidak ada TR1, ada kemungkinan LED akan rusak jika tegangan masuk terlalu tinggi
R1 berfungsi sebagai resistor pembatas arus pada LED
Dioda TVS (Transient Voltage Suppresion) berfungsi menekan tegangan lebih yang muncul pada AC Supply dan beban, terutama jika SSR ini dipakai untuk mengendalikan beban dengan sifat induktif.
RC Snubber berfungsi mengurangi tegangan lebih dari AC supply dan beban (LOAD).
Meskipun SSR umumnya menggunakan komponen utama Triac, ada juga yang menggunakan MOSFET. Berikut ini contoh rangkaian SSR berbasis MOSFET (sumber)
Rangkaian Solid State Relay berbasis MOSFET (sumber)
Contoh MOSFET SSR adalah PVT412 dari International Rectifier.
Berikut ini keuntungan SSR dibandingkan relay elektromekanik
SSR tidak menggunakan kumparan, sehingga otomatis SSR tidak menghasilkan medan magnet di sekitar SSR. Medan magnet dari relay elektromagnetik dapat mengganggu rangkaian lain.
SSR tidak menggunakan kontak mekanik, sehingga tidak timbul loncatan api seperti pada relay elektromekanik
SSR tidak bersuara
SSR seluruhnya menggunakan semikonduktor, tidak ada komponen mekanik, sehingga tidak ada masalah aus pada komponen mekanik
Tidak ada masalah ‘contact bounce’ yang muncul pada sakelar mekanik
SSR lebih cepat
SSR dapat dibuat supaya hanya melakukan fungsi sakelar ketika tegangan 0 pada kontak (zero crossing), sehingga mengurangi lonjakan tegangan (voltage spike)
SSR lebih kecil untuk ukuran arus yang sama
Berikut ini kekurangan SSR dibandingkan relay elektromekanik
Ada resistansi pada SSR ketika ON, sehingga SSR menghasilkan panas ketika sedang dalam kondisi ON
Ada arus bocor pada SSR ketika kondisi OFF. Hal ini berpengaruh pada keselamatan.
Sakelar SSR berfungsi sangat cepat, sehingga dapat menimbulkan interferensi
SSR jika rusak umumnya menjadi ON / short circuit, sedangkan relay umumnya ketika rusak menjadi OFF. Hal ini berpengaruh pada keselamatan.
Transistor BJT Sebagai Sakelar
Jika tidak diperlukan isolasi antara input dengan output, maka dapat digunakan transistor BJT (Bipolar Junction Transistor) ataupun MOSFET (Metal Oxide Semiconductor Field Effect Transistor) tanpa menggunakan optocoupler.
Berikut ini contoh transistor NPN yang dipakai sebagai sakelar.
Penguat output digital dengan transistor NPN
Untuk dapat mengoperasikan transistor BJT sebagai sakelar, perlu diperhatikan bahwa transistor ada dalam 2 kondisi : ON dan OFF. Untuk transistor menjadi ON, maka arus basis pada transistor harus cukup besar. Pada rangkaian di atas, supaya transistor ON, maka dari mikrokontroler (pin OUT) perlu diberi tegangan tinggi (5 volt atau 3.3 volt). Nilai resistor pada basis perlu dipilih supaya transistor berada dalam kondisi saturasi. Untuk transistor menjadi OFF, dapat dilakukan dengan mengirimkan tegangan rendah pada basis transistor.
Untuk perhitungan detail, perlu memperhatikan karakteristik BJT yang dipakai, misalnya dengan menggunakan diagram karakteristik V-I pada transistor.
Transistor MOSFET Sebagai Sakelar
Berikut ini contoh rangkaian MOSFET kanal n sebagai sakelar.
Output Digital Mikrokontroler Dengan MOSFET
MOSFET hanya memerlukan tegangan pada gate (G), tidak memerlukan arus pada gate, jadi berbeda dengan transistor yang memerlukan arus pada basis. Pada rangkaian di atas, MOSFET akan aktif (sakelar = ON) jika diberi tegangan tinggi dari mikrokontroler pada pin OUT. Tegangan yang dberikan harus lebih tinggi dari tegangan ambang pada gate MOSFET (Vth).
Untuk perhitungan detail, perlu memperhatikan karakteristik MOSFET yang dipakai, misalnya dengan menggunakan diagram karakteristik V-I pada transistor.
Power Functions Medium Motor adalah salah satu jenis motor listrik dari LEGO. Motor ini menggunakan kabel pita dengan 4 kabel untuk sambungan ke power supply 9 volt.
Power Functions Medium Motor
Motor ini secara umum berfungsi baik, namun salah satu kelembahannya adalah sambungan kabelnya, karena sering ditekuk-tekuk, maka akhirnya kabel mudah putus di bagian sambungan antara kabel ke motor.
Sambungan kabel yang putus
Solusinya sebenarnya mudah: bongkar motornya, potong kabelnya sedikit, kemudian disambung ulang.
Prosedur membuka motor ini banyak di youtube. Proses pertama adalah membuka 1 sekrup di bagian bawah, kemudian mencongkel kaitan plastik di casing.
Motor Lego setelah dibuka
Setelah itu proses membongkar solderan kabel
Proses membongkar solderan kabel
Setelah itu kabel dipotong di bagian yang terputus.
Kemudian proses menyolder ulang
Terakhir proses menutup kembali casingnya. Jangan lupa sekrup dipasang lagi.
Sekrup casing motor Lego Medium
Bagian blok konektor lego juga bisa putus dengan sebab yang sama: kabel yang tertekuk berulang kali ketika digunakan. Solusinya sama: buka casingnya, potong kabel sedikit, kemudian dipasang lagi.
Kotak sambungan yang sudah berhasil dibuka
Kotak sambungan ini tidak menggunakan solderan, hanya menggunakan konektor khusus yang ditusukkan ke kabel pita. Logam di konektor akan menembus isolator plastik, dan terhubung ke kabel di bagian dalam. Prosesnya mudah, namun perlu berhati-hati supaya tidak salah.
Pemasangan kabel dibantu dengan obeng minus
Demikian proses perbaikan kabel pada motor Lego Medium. Lumayan dibandingkan membeli produk baru, karena modul motor saja yang paling murah harganya sudah sekitar Rp 750 ribu.
Di dalam modul motor ada komponen menarik, dengan tulisan “R030”
Setelah dicek, ternyata komponen ini adalah resistor PTC (Positive Temperature Coefficient) yang berfungsi untuk pembatas arus. Nama lengkapnya: “PTC Resettable Fuse 0.3A (hold) 0.6A (trip) 60 volt 40A 0.5 Watt“. Fungsi alat ini untuk pembatas arus yang mengalir pada motor sampai di 0.3 ampere saja. Arus pada motor dapat membesar terutama kalau motor diberi beban sangat berat sehingga tidak dapat berputar. Pada kondisi ini arus dapat membesar sehingga dapat menyebabkan motor dan kabel menjadi panas dan membahayakan pemakai.
Mikrokontroler/mikroprosesor berbasis ESP32 mempunyai fitur on-chip-debugging dengan protokol JTAG. Supaya ESP32 ini dapat didebug, maka perlu ada komponen JTAG Adapter. Petunjuk pemilihan JTAG adapter terdapat di artikel “Selecting JTAG Adapter“. Cara termudah adalah menggunakan board ESP32-WROVER-KIT yang sudah mempunyai JTAG adapter di dalamnya. Cara lain adalah menambahkan JTAG adapter pada board ESP32 yang belum dilengkapi dengan JTAG Adapter. Daftar JTAG Adapter yang dapat dipakai dapat dilihat antara lain di artikel “Debug Adapter Hardware“.
Pada tulisan ini diuraikan cara menyambungkan ESP32 ke JTAG Adapter berbasis FT2232HL.
Cara termudah melakukan debugging pada ESP32 adalah menggunakan board ESP32-WROVER-KIT yang sudah ada JTAG Adapter built-in di dalamnya. Sayangnya harga board ini agak mahal (sekitar USD 50). Jika Espressif sendiri menggunakan FT2232 untuk JTAG Adapter, nampaknya kemampuan FT2232 cukup bagus sebagai debugger.
Harga board ESP32 yang murah sekitar USD 7, sedangkan breakout board untuk FT2232 harganya sekitar USD 7, jadi dengan USD 14 sudah memperoleh ESP32 lengkap dengan JTAG debugger. Hanya saja perlu merangkai sendiri ESP32 dengan FT2232.
Hardware
Berikut ini teknik penyambungan ESP32 ke FT2232 menurut beberapa sumber.
#1 Analisis Skematik ESP32 WROVER KIT
Contoh cara menyambungkan antara ESP32 dengan FT2232 dapat dilihat dari skematik ESP32 WROVER KIT di situs Espressif. Berikut ini adalah pin JTAG pada ESP32, yaitu:
MTCK
MTDI
MTDO
MTMS
EN
Pin JTAG pada ESP32
Berikut ini adalah bagian dari skematik ESP32 WROVER KIT, khususnya yang tersambung ke JTAG. Pin yang dipakai adalah ADBUS0, ADBUS1, ADBUS2, ADBUS3, ACBUS1, yang tersambung ke sinyal TCK, TDI, TDO, TMS dan R_RST
Pin JTAG pada FT2232HL
Tabel berikut berisi hasil analisis daftar pin dan sinyal JTAG pada skematik ESP32 WROVER KIT tersebut:
Pin FT2232HL
Sinyal
Sinyal
Pin ESP32
ADBUS0
TCK
MTCK
R_IO13
ADBUS1
TDI
MTDI
R_IO12
ADBUS2
TDO
MTDO
R_IO15
ADBUS3
TMS
MTMS
R_IO14
ACBUS2
RST
EN
R_nTRST
#2 Situs PlatformIO
Penyambungan JTAG juga dijelaskan di situs PlatformIO sebagai berikut:
FT2232H Mini-Module Pin
Board JTAG Pin
Description
GND [CN2-2]
GND
Digital ground
AD0 [CN2-7]
TCK
JTAG Return Test Clock
AD1 [CN2-10]
TDI
Test Data In
AD2 [CN2-9]
TDO
Test Data Out
AD3 [CN2-12]
TMS
Test Mode State
AC2 [CN2-20]
RESET
Connect this pin to the (active low) reset input of the target CPU (EN for ESP32)
Modul FT2232 yang dipakai pada artikel tersebut adalah “FT2232H Mini Module” yang diproduksi oleh FTDI.
FT2232H Mini Modul
Produk breakout board serupa juga dibuat oleh CJMCU seperti pada foto berikut:
CJMCU-2232HL
#3 Forum Platformio
Sebagai perbandingan, berikut ini daftar koneksi JTAG ke ESP32 menurut artikel forum PlatformIO (Debugging ESP32 – How), modul FT2232 yang digunakan adalah “FTDI2232 minimodule”:
To debug ESP32 using FTDI2232 minimodule, here is the required connection: FTDI AD0 -> ESP32 GPIO13 (TCK) FTDI AD1 -> ESP32 GPIO12 (TDI) FTDI AD2 -> ESP32 GPIO15 (TDO) FTDI AD3 -> ESP32 GPIO14 (TMS) FTDI AC2 -> ESP32 EN (RST) FTDI GND -> ESP32 GND
Penggunaan FT2232H sebagai JTAG juga dijelaskan secara ringkas di datasheet FT2232H sebagai berikut:
Konfigurasi pin FT2232H
Software
Setelah mendapatkan kepastian cara menyambungkan hardware JTAG debugger, selanjutnya adalah setting software untuk melakukan debugging.
Status saat ini baru melakukan studi software apa saja yang perlu disiapkan. Beriktu ini penjelasan software untuk debugging ESP32:
Penggunaan software debugger Eclipse/Command Line: https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/using-debugger.html https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/configure-other-jtag.html
Penggunaan Debugger dengan PlatformIO: http://docs.platformio.org/en/latest/plus/debug-tools/minimodule.html
Debugging ESP32 secara umum: https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/jtag-debugging/
Hasil debugging menyusul.
Kesimpulan
Kesimpulan sementara ini:
Menurut studi literatur, ESP32 dapat didebug dengan hardware FT2232HL, dengan biaya total USD 14, lebih murah daripada harus memakai ESP WROVER KIT seharga USD 50.
Penyambungan antara ESP32 dan FT2232 dijelaskan di beberapa situs, dengan isi konsisten.
Proses debugging belum dilakukan, namun dari pengalaman selama ini, isi artikel di situs Espressif cukup lengkap dan mudah diikuti. Nampak bahwa Espressif cukup serius mengusahakan agar produk ESP32nya mudah dipakai oleh ‘orang biasa’.