Pengukuran Frekuensi ADC internal pada Arduino Nano ATmega328
berikut ini kode yang dipakai untuk pengukuran
int counter; // how many iterations
int time_begin = 0;
int time_end = 0;
int duration;
int sensorPin = A0; // select the input pin for the potentiometer
int ledPin = 13; // select the pin for the LED
void setup() {
Serial.begin(115200);
counter = 0;
pinMode(2, OUTPUT);
Serial.println("start benchmark");
}
//---------------------------------------------------
void loop() {
int value; // angka yang ditulis
value = 0; // minimum value
analogRead(sensorPin);
PORTD=0; // langsung akses port supaya lebih cepat
analogRead(sensorPin);
PORTD=255;
counter = counter + 1;
if (counter >= 10000) {
float period;
int time_now = millis();
counter = 0;
duration = time_now - time_begin;
period = duration / 10000.0 /2;
Serial.print("period (ms): ");
Serial.println(period);
// prepare next round
time_begin = time_now;
}
}
Hasil Pengukuran
Pengukuran output pada pin D2 dengan osiloskop menghasilkan sinyal berikut
Dari data port serial, didapatkan angka perioda 0,11 ms
start benchmark
period (ms): 0.11
period (ms): 0.11
period (ms): 0.11
period (ms): 0.11
period (ms): 0.11
Dengan osiloskop didapatkan sinyal kotak dengan frekuensi 4,45532 kHz . Artinya frekuensi ADC adalah dua kalinya, yaitu 8,91064 kHz
Angka 8900 Hz ini sesuai dengan pengukuran di artikel lain: https://chisight.wordpress.com/2016/03/25/speeding-up-the-adc-on-an-arduino-atmega-328p/
Kesimpulan
Frekuensi ADC adalah 8,91064 kHz
Frekuensi ini jauh di bawah kecepatan teoritis. Kemungkinan kelambatan karena library yang dipakai.
Pada percobaan ini diukur frekuensi & perioda konversi DAC (Digital to Analog Converter) tipe MCP4725 pada modul Arduino Nano dengan prosesor ATmega328.
Rangkaian sistem adalah sebagai berikut
Kode yang dipakai untuk pengujian adalah sebagai berikut:
// idea from https://learn.sparkfun.com/tutorials/mcp4725-digital-to-analog-converter-hookup-guide/all
#define MCP4725_ADDR 0x60
#include <Wire.h> //Include the Wire library to talk I2C
int counter; // how many iterations
int time_begin = 0;
int time_end = 0;
int duration;
void setup() {
Wire.begin();
Serial.begin(115200);
counter = 0;
Serial.println("start benchmark");
}
//---------------------------------------------------
void loop() {
int value; // angka yang ditulis
value = 0; // minimum value
Wire.beginTransmission(MCP4725_ADDR);
Wire.write(64); // cmd to update the DAC
Wire.write(value >> 4); // the 8 most significant bits...
Wire.write((value & 15) << 4); // the 4 least significant bits...
Wire.endTransmission();
value = 4095; // maximum value
Wire.beginTransmission(MCP4725_ADDR);
Wire.write(64); // cmd to update the DAC
Wire.write(value >> 4); // the 8 most significant bits...
Wire.write((value & 15) << 4); // the 4 least significant bits...
Wire.endTransmission();
counter = counter + 1;
if (counter >= 10000) {
float period;
int time_now = millis();
counter = 0;
duration = time_now - time_begin;
period = duration / 10000.0 / 2.0 ;
Serial.print("period (ms): ");
Serial.println(period);
// prepare next round
time_begin = time_now;
}
}
I2C 100 kHz
ATmega328 menggunakan 2 frekuensi I2C: 100 kHz dan 400 kHz. Percoban pertama menggunakan kecepatan default adalah 100 kHz.
Sinyal yang dihasilkan pada output MCP4725 adalah sebagai berikut:
Tampilan pada serial monitor adalah sebagai berikut:
start benchmark
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43
period (ms): 0.43
Pengukuran dengan osiloskop menunjukkan sinyal persegi dengan frekuensi 1,166 kHz
Jumlah transisi adalah 2x frekuensi ini, jadi frekuensi konversi adalah 1,166 x 2 = 2,332 kHz
I2C 400 kHz
Pada pengukuran ini, kecepatan I2C dinaikkan menjadi 400 kHz. Caranya menggunakan fungsi Wire.setClock()
Perioda menjadi 0,15 ms
start benchmark
period (ms): 0.15
period (ms): 0.15
period (ms): 0.15
period (ms): 0.15
period (ms): 0.15
Output DAC diukur dengan osiloskop, dengan hasil sebagai berikut
Frekuensi output adalah 3,41733 kHz, sehingga frekuensi DAC adalah 2x 3,417 = 6,834 kHz
alternatif motor driver https://www.micros.com.pl/mediaserver/UITA6586_0001.pdf https://www.micros.com.pl/mediaserver/UITA6586_0001.pdf Motor Driver RZ7889 http://www.rz-mic.com/uploadfile/fj/2011122615211.pdf
# Applying the filter to a signal s can be as simple as writing # s = np.convolve(s, h)
x = np.linspace(0,1, 20001)
# filter digital signal_frequency=8000 # diubah-ubah sesuai keperluan y=np.sin(x*2*math.pi * signal_frequency) # Applying the filter to a signal s can be as simple as writing y_out = np.convolve(y, h) plt.figure(figsize=(16,6)) plt.plot(x, y_out[0:20001],label="output") plt.plot(x, y[0:20001],label="input") plt.title("signal:{} Hz".format(signal_frequency)) plt.legend() plt.axis('tight') plt.xlim([0, 0.01]) plt.savefig("simulasi-signal-{}.jpg".format(signal_frequency))
Hasil simulasi untuk frekuensi 8 Hz
Hasil simulasi untuk frekuensi 80 HzHasil simulasi untuk frekuensi 800 Hz
Hasil simulasi untuk frekuensi 8000 Hz
Simulasi dengan C di Desktop
Pada percobaan ini filter disimulasikan di Desktop PC untuk mengecek ketepatan perhitungan dibandingkan dengan versi Python.
// zeros y_history for (i=0; i<orde_filter; i++) { y_history[i]=0; } for (i=0; i<20000; i++) { printf("."); float t,y; t=(float)i/(float)20000; // time axis y=sin(2 * M_PI *signal_frequency* t); // fprintf(fp,"%f,%f\n",t,y);
// hitung history signal for (j=orde_filter-1; j>=1; j--) { int src=j-1; int dst=j; y_history[dst]=y_history[src]; // printf("%d %d\n",src,dst); } y_history[0]=y;
sinyal 80 Hz nampak teredam sedikit sekali dan ada lag
Tampilan Visualisasi untuk sinyal 800 Hz
nampak sinyal 800 Hz teredam sekitar 50%
Tampilan Visualisasi untuk sinyal 8000 Hz
nampak sinyal 8000 Hz teredam hampir semuanya
Simulasi dengan C di ESP32
pada percobaan ini kode dijalankan di ESP32 namun input adalah simulasi bukan dari generator sinyal. Output direkam ke port serial, bukan ke osiloskop.
Kode ESP32 adalah sebagai berikut
#define ORDE_FILTER 53
void setup() {
Serial.begin(115200);
//
int i, j, k;
char filename[100];
// simulasi 1 detik saja
float signal_frequency = 8; // frekuensi input signal
Saya mau kontrol variabel dari tegangan negatif (-10) hingga (+10) DC menggunakan mikrokontroler (0 ~ 3,3 VDC). Rangkaian apa yang saya butuhkan?
Jawaban:
Untuk membangkitkan tegangan analog anda bisa pakai DAC (Digital to Analog Converter). Ada mikrokontroler yang sudah ada DACnya, misal ESP32. Kalau belum ada, bisa pakai DAC tambahan seperti MCP4725 . Jadi di sini kita sudah dapat tegangan analog 0 ~ 3,3 volt. Kemudian tegangan ini dikurangi dengan 1,65 volt dengan rangkaian penjumlah op-amp dan sumber tegangan -1,65 volt. Di sini kita dapat tegangan analog -1,65 V ~ 1,65V. Tegangan ini kemudian dikalikan dengan op-amp non inverting supaya menghasilkan rentang -10V ~ +10V.
3500 VA artinya 3500 volt-ampere, yang mengindikasikan ukuran daya aparent (volt-ampere) dari perangkat atau sistem. Volt-ampere (VA) adalah hasil kali dari tegangan (volt) dan arus (ampere) yang mengalir dalam suatu rangkaian listrik.
Namun, penting untuk memahami bahwa daya tampak (VA) tidak sama dengan daya aktif (watt) yang sebenarnya digunakan oleh perangkat atau sistem. Faktor daya (power factor) digunakan untuk menggambarkan perbandingan antara daya aktif (watt) dan daya aparent (VA). Faktor daya dapat berkisar antara 0 hingga 1.
Jika kita asumsikan faktor daya adalah 1 (cos φ = 1), maka 3500 VA juga setara dengan 3500 watt (W), artinya perangkat atau sistem menggunakan atau menghasilkan daya sebesar 3500 watt. Namun, jika faktor daya lebih rendah dari 1, daya yang sebenarnya akan lebih rendah dari 3500 watt.
Jadi, 3500 VA berarti ukuran daya aparent (volt-ampere) dari perangkat atau sistem, tetapi untuk mengetahui daya aktif (watt) yang sebenarnya, Anda perlu mengetahui berapa sebenarnya faktor daya yang berlaku pada sistem anda.
Rumah dengan kapasitas daya 3500 VA biasanya menggunakan MCB (mini circuit breaker) dengan batas arus 16 ampere. Jadi sebenarnya dayanya adalah 2200 x 16 = 3520 VA, namun untuk mudahnya dibulatkan ke 3500 VA.
Untuk mengkonversi volt-ampere (VA) menjadi watt (W), Anda perlu mengetahui faktor daya (power factor) dari perangkat atau sistem yang sedang Anda ukur. Faktor daya menggambarkan sejauh mana daya yang disalurkan oleh perangkat berkontribusi pada melakukan kerja yang berguna.
Faktor daya dapat bernilai 0 (minimum) sampai 1 (maksimum)
Jika di rumah/pabrik banyak menggunakan motor AC, maka faktor daya dapat turun sampai ke 0,7
Jika di rumah/pabrik banyak menggunakan komputer, biasanya faktor daya di sekitar 0,9
Angka 7700 VA ini biasanya hasil kali dari 220 volt x 35 ampere, artinya rumah dengan listrik 1 fasa dan MCB (mini circuit breaker) berkapasitas 35 ampere.
Namun, jika asumsi kita adalah faktor daya 1 (cos φ = 1), maka 7700 VA juga setara dengan 7700 watt (W). Ini berarti daya yang dikonsumsi atau dihasilkan oleh perangkat atau sistem adalah 7700 watt. Namun, jika faktor daya kurang dari 1, daya sebenarnya akan lebih rendah daripada VA tersebut.
Perlu diperhatikan bahwa faktor daya pada umumnya berbeda untuk berbagai perangkat dan sistem.
Induktor adalah suatu komponen elektronik yang terdiri dari kumparan kawat atau kabel yang dililitkan pada suatu inti, biasanya terbuat dari bahan ferromagnetik atau bahan non-magnetik. Induktor sering juga disebut sebagai koil.
Secara bahasa, istilah induktor menurut KBBI adalah “peranti listrik berbentuk kumparan yang digunakan pada rangkaian listrik”
Induktor dapat menyimpan energi listrik dalam bentuk medan magnetik yang terbentuk ketika arus listrik mengalir melalui kumparan. Ketika arus listrik berubah atau dihentikan, medan magnetik akan memberikan arus listrik balik atau back EMF (Electromotive Force) yang berusaha mempertahankan besarnya arus agar konstan.
Contoh induktor kecil
Bahan inti induktor dapat dibuat dari berbagai bahan misalnya:
Induktor kumparan udara: induktor ini terdiri dari kawat yang dililitkan pada inti udara tanpa adanya inti magnetik tambahan.
Induktor kumparan ferromagnetik: induktor ini memiliki inti yang terbuat dari bahan ferromagnetik seperti besi, nikel, atau kobalt.
Induktor kumparan non-magnetik: induktor ini memiliki inti yang terbuat dari bahan non-magnetik seperti plastik, keramik, atau kaca.
Berikut ini contoh induktor dengan inti udara
Induktor dengan inti udara
Bentuk induktor ada bermacam-macam, misalnya:
Induktor Silinder.
Induktor Toroid
Induktor Berbentuk Silinder
Induktor silinder adalah jenis induktor yang memiliki bentuk silinder atau tabung. Induktor ini biasanya terdiri dari inti silinder yang terbuat dari bahan feromagnetik seperti besi atau ferit, dan lilitan kawat tembaga yang dililitkan secara rapat di sekitar inti.
Induktor silinder biasanya digunakan untuk aplikasi frekuensi rendah hingga menengah, seperti pada regulator daya, filter, dan pengkondisi sinyal. Keuntungan dari penggunaan induktor silinder adalah dapat menampung arus listrik yang cukup besar, dan karena bentuk silindernya, maka induktor ini dapat meminimalkan kebocoran medan magnetiknya.
Namun, kekurangan dari induktor silinder adalah memiliki induktansi yang rendah dibandingkan dengan bentuk inti lainnya, seperti bentuk toroid. Selain itu, induktor silinder juga kurang efektif dalam menahan interferensi elektromagnetik jika dibandingkan dengan induktor dengan bentuk inti khusus yang dirancang untuk menangani interferensi tersebut.
Secara keseluruhan, induktor silinder cocok untuk digunakan pada aplikasi frekuensi rendah hingga menengah yang membutuhkan induktor dengan bentuk yang kompak dan mampu menampung arus listrik yang cukup besar.
Induktor Berbentuk Toroid
Induktor toroid adalah jenis induktor yang memiliki bentuk donut atau cincin. Induktor ini terdiri dari inti toroid yang terbuat dari bahan ferit atau besi, dan lilitan kawat tembaga yang dililitkan rapat di sekitar inti.
Keuntungan dari induktor toroid adalah bentuknya yang dapat meminimalkan kebocoran medan magnetik dan interferensi elektromagnetik. Hal ini disebabkan oleh sifat geometris inti toroid yang memungkinkan medan magnetik yang dihasilkan oleh lilitan kawat dapat ditekan ke dalam inti dan tidak tersebar ke lingkungan sekitarnya.
Selain itu, induktor toroid juga memiliki induktansi yang relatif tinggi dibandingkan dengan bentuk inti lainnya dengan ukuran yang sama. Induktor toroid biasanya digunakan pada aplikasi frekuensi tinggi seperti pada rangkaian RF (Radio Frequency), pemrosesan sinyal, filter, dan dalam sirkuit daya.
Namun, kekurangan dari induktor toroid adalah sulit untuk dililitkan secara manual karena bentuknya yang khusus, sehingga seringkali dibutuhkan mesin khusus untuk melilitkannya. Selain itu, induktor toroid juga cenderung lebih mahal dibandingkan dengan bentuk inti lainnya.
Induktor sering digunakan dalam rangkaian elektronik untuk memfilter sinyal, atau menghasilkan osilasi. Misalnya, induktor dapat digunakan dalam rangkaian daya switching, regulator tegangan, sirkuit filter, dan banyak lagi aplikasi lainnya.
Fiting lampu adalah tempat memasang bola lampu listrik yang menghubungkan kabel listrik dengan lampu. Istilah ini juga dipakai untuk alat pembagi aliran listrik tiga arah atau lebih dari satu titik lampu.
Fiting lampu
Fiting lampu atau yang sering disebut sebagai soket lampu, adalah komponen elektronik yang digunakan untuk menghubungkan lampu dengan sumber daya listrik. Fitting lampu dirancang untuk memastikan lampu terpasang dengan aman dan mudah diganti jika rusak atau ingin diganti dengan jenis lampu yang berbeda.
Fitting lampu biasanya terdiri dari dua bagian yaitu bagian atas yang terhubung dengan kabel listrik dan bagian bawah yang terhubung dengan lampu. Setiap jenis lampu memiliki fitting yang berbeda-beda, dan untuk memasang lampu yang tepat, Anda harus menggunakan fitting yang sesuai dengan jenis lampu tersebut.
Beberapa jenis fitting lampu yang umum digunakan di antaranya Edison screw (E27/E14), bayonet (B22), GU10, dan wedge. Masing-masing jenis fitting ini memiliki desain dan ukuran yang berbeda-beda, sehingga Anda harus memilih fitting yang cocok dengan jenis lampu yang akan dipasang. Selain itu, ada juga fitting lampu yang dirancang khusus untuk lampu neon, lampu fluoro, dan lampu LED.
Fitting lampu juga memiliki peran penting dalam menjaga keamanan listrik di rumah atau bangunan Anda. Jika fitting lampu rusak atau tidak dipasang dengan benar, dapat menyebabkan kebocoran listrik, korsleting atau bahkan kebakaran. Oleh karena itu, penting untuk memilih fitting lampu yang berkualitas baik dan memastikan bahwa pasangannya benar-benar terpasang dengan kuat dan aman.
Jenis Fiting Lampu
Berikut ini beberapa macam jenis fiting lampu
Edison Screw (E10s ,E11s ,E12s ,E14s ,E17s ,E26s ,E26d ,E27s ,E39s ,E39d ,E40s) – jenis fitting yang umum digunakan pada lampu pijar atau lampu CFL.
Bi Pin (G4/G5.3/G9/GU5.3) – jenis fitting yang digunakan untuk lampu halogen atau LED dengan desain pin.
Fitting bayonet (B22) – jenis fitting yang umum digunakan pada lampu pijar atau lampu CFL.
Motor arus searah (DC) adalah jenis motor listrik yang mengubah energi listrik searah menjadi energi mekanik dalam bentuk putaran. Motor jenis ini umumnya menggunakan medan magnet yang dihasilkan oleh arus listrik yang mengalir melalui kumparan untuk menggerakkan bagian motor yang berputar. Hampir semua jenis motor DC memiliki mekanisme di dalamnya untuk secara periodik mengubah arah aliran listrik di sebagian motor. Mekanisme pengubahan ini dapat menggunakan teknik elektromekanik ataupun elektronik.
Motor DC adalah jenis motor listrik pertama yang banyak digunakan karena dapat pada awal adanya motor, listrik yang ada adalah dipasok oleh sistem distribusi tenaga listrik arus searah.
Kecepatan motor DC dapat dikontrol dalam rentang yang cukup luas. Pengendalian kecepatan dapat dilakukan dengan mengubah tegangan catu daya, ataupun dengan mengubah kekuatan arus pada gulungan medan.
Motor DC kecil sering digunakan pada peralatan seperti alat-alat, mainan, dan peralatan rumah tangga. Motor DC yang lebih besar saat ini digunakan dalam penggerak kendaraan listrik, lift dan alat angkat, serta dalam penggerak pabrik penggilingan baja.
Motor DC populer dipakai jika sumber listrik yang tersedia adalah DC. Kemajuan teknologi elektronika daya memungkinkan untuk menghasilkan arus AC dari arus DC dengan mudah. Hal ini menjadikan motor DC mulai dapat digantikan dengan motor arus bolak-balik (AC).
Bagaimana cara kerja motor Arus Searah?
Cara kerja motor arus searah
Cara kerja motor listrik arus searah dengan rotor dua kutub (angker) dan stator magnet permanen.“N” (North = Utara) dan “S” (South = Selatan) menunjukkan polaritas pada permukaan sumbu bagian dalam magnet;permukaan luar memiliki polaritas yang berlawanan.Tanda + dan – menunjukkan di mana arus DC diterapkan ke komutator yang menyuplai arus ke kumparan jangkar. Arus listrik masuk ke rotor melalui sikat (brush). Sikat berputar bersamaan dengan rotor. Setiap 180 derajat, terjadi pergantian kutub pada rotor sehingga rotor dapat tetap berputar.
Apa saja jenis-jenis motor Arus Searah?
Motor arus searah dengan sikat. Pada motor jenis ini, pembalikan polaritas dilakukan secara elektromekanik menggunakan sikat yang terhubung ke cincin belah pada rotor.
Motor arus searah tanpa sikat / BLDC (Brushless Direct Current). Pada motor jenis ini, pembalikan polaritas dilakukan secara elektronik menggunakan sakelar semikonduktor seperti transistor BJT (Bipolar Junction Transistor) ataupun MOSFET (Metal Oxyde Semiconductor Field Effect Transistor).
Berikut ini contoh motor BLDC pada floppy drive komputer
Motor floppy drive
Bagaimana cara mengendalikan motor Arus Searah dari mikrokontroler?
Motor dapat dikendalikan secara hanya on-off ataupun secara proporsional. Kendali on-off artinya motor hanya diatur untuk menyala dengan kecepatan penuh atau mati sama sekali. Kendali proporsional artinya kecepatan motor dapat diatur dari 0% sampai 100%.
Kendali on-off dapat dilakukan menggunakan relay ataupun transistor.
Kendali proporsional dapat menggunakan penguat analog yang menghasilkan tegangan / arus tertentu, atau pengendali digital dengan modulasi lebar pulsa (PWM = Pulse Width Modulation)
Berikut ini contoh rangkaian elektronik pengendali motor dengan konfigurasi “Jembatan-H” atau “H-Bridge”. Rangkaian ini dapat mengatur kecepatan dan arah gerakan motor arus searah.