BAB I
PENDAHULUAN
1.1 Latar Belakang
Dalam dunia teknologi dan otomasi, pengendalian kecepatan motor menjadi salah satu
aspek penting yang sering diaplikasikan pada berbagai sistem, seperti robotika, industri manufaktur,
dan perangkat elektronik rumah tangga. Kemampuan untuk mengukur putaran motor secara akurat
dan mengatur kecepatannya sesuai kebutuhan menjadi hal yang esensial dalam memastikan efisiensi
dan kinerja sistem [Link] dengan perkembangan teknologi, kebutuhan akan sistem
pengendalian motor yang presisi semakin meningkat. Dalam berbagai industri, motor digunakan
untuk menggerakkan mesin produksi dengan kecepatan yang harus dikontrol agar menghasilkan
produk berkualitas tinggi. Di sisi lain, dalam aplikasi robotika, kecepatan motor yang akurat
diperlukan untuk mencapai pergerakan yang stabil dan terarah. Hal ini menunjukkan pentingnya
pengembangan teknologi yang mampu mengukur dan mengatur putaran motor secara efektif dan
efisien.
Salah satu teknologi yang dapat digunakan untuk mengukur kecepatan motor adalah sensor
inframerah (IR). Sensor IR bekerja dengan mendeteksi perubahan intensitas cahaya yang dipantulkan
dari objek yang bergerak. Teknologi ini memiliki beberapa keunggulan, seperti kemampuan untuk
bekerja tanpa kontak langsung, keandalan tinggi, serta tahan terhadap gangguan mekanis. Dengan
memanfaatkan sensor IR, pengukuran kecepatan motor dapat dilakukan dengan akurasi tinggi, yang
sangat mendukung pengembangan sistem kontrol kecepatan [Link] hal pengaturan kecepatan
motor, potensiometer adalah komponen yang sering digunakan. Potensiometer memberikan
kemudahan bagi pengguna untuk mengatur kecepatan motor secara manual melalui perubahan
resistansi. Dengan integrasi antara sensor IR dan potensiometer, sistem pengendalian kecepatan
motor dapat dibuat lebih fleksibel dan user-friendly. Selain itu, pengaturan manual menggunakan
potensiometer dapat diterapkan pada berbagai skenario aplikasi, baik untuk tujuan eksperimen
maupun penggunaan praktis.
Mikrokontroler ATmega16A, sebagai bagian dari keluarga AVR, merupakan platform yang
ideal untuk mengimplementasikan sistem ini. Mikrokontroler ini dilengkapi dengan fitur-fitur
unggulan, seperti ADC (Analog-to-Digital Converter), timer, dan port I/O yang dapat digunakan untuk
membaca sinyal dari sensor IR dan potensiometer. Dengan kemampuan pemrosesan real-time,
ATmega16A memungkinkan integrasi komponen-komponen tersebut untuk membangun sistem yang
efisien dan terintegrasi. Selain itu, dukungan perangkat lunak yang luas untuk ATmega16A
mempermudah proses pengembangan perangkat lunak untuk mengontrol sistem [Link]
sistem pengukuran putaran motor menggunakan sensor IR dengan pengaturan kecepatan melalui
potensiometer pada mikrokontroler ATmega16A memiliki potensi besar untuk digunakan dalam
berbagai aplikasi. Sistem ini tidak hanya relevan untuk keperluan akademik dan penelitian, tetapi
juga dapat diterapkan pada industri kecil hingga besar. Sebagai contoh, dalam industri manufaktur,
sistem ini dapat digunakan untuk mengontrol kecepatan motor pada lini produksi. Di bidang
pendidikan, proyek ini dapat menjadi media pembelajaran yang efektif untuk memahami prinsip
dasar pengendalian motor dan pemrograman mikrokontroler.
1.2 Tujuan
1. Mahasiswa mengetahui pemrograman meggunakan bahasa C.
2. Mahasiswa mengetahui pengaplikasian aplikasi code vision.
3. Mahasiswa mengetahui serta mampu membuat alat untuk mengukur kecepatan RPM dan
KM pada motor yang kecepatan nya diatur oleh potensiometer.
BAB II
PEMBAHASAN
2.1 Teori Dasar.
1. Motor Listrik
o Prinsip Kerja Motor DC: Motor DC bekerja berdasarkan prinsip elektromagnetik, di
mana arus listrik yang mengalir melalui kumparan menghasilkan medan magnet
yang menyebabkan rotor berputar. Hubungan antara tegangan, arus, dan kecepatan
putaran motor (RPM) dipengaruhi oleh beban dan karakteristik motor.
o Kecepatan Motor: Kecepatan putaran motor berbanding lurus dengan tegangan
masukan. Faktor-faktor seperti beban, resistansi internal, dan kualitas sumber daya
memengaruhi kecepatan putaran motor.
2. Sensor Inframerah (IR)
o Prinsip Kerja Sensor IR: Sensor IR mendeteksi objek yang bergerak melalui pantulan
cahaya inframerah. Cahaya inframerah dipancarkan dan dipantulkan kembali oleh
objek, kemudian ditangkap oleh detektor sensor.
o Fungsi Sensor IR dalam Mengukur Kecepatan: Sensor IR menghitung kecepatan
putaran motor berdasarkan frekuensi sinyal pantulan yang diterima dari objek
bergerak. Data ini diolah menjadi satuan RPM.
o Keunggulan Sensor IR: Sensor IR memiliki keunggulan seperti keandalan tinggi,
presisi dalam pengukuran, dan ketahanan terhadap gangguan mekanis karena
bekerja tanpa kontak langsung.
3. Potensiometer
o Prinsip Kerja Potensiometer: Potensiometer adalah komponen elektronik yang
berfungsi sebagai pembagi tegangan. Dengan mengubah posisi wiper, nilai resistansi
variabel dihasilkan, yang memengaruhi keluaran tegangan.
o Aplikasi Potensiometer dalam Pengaturan Kecepatan: Dalam sistem kontrol motor,
potensiometer digunakan untuk mengatur tegangan masukan yang menentukan
kecepatan putaran motor secara manual.
4. Mikrokontroler ATmega16A
o Arsitektur Mikrokontroler ATmega16A: Mikrokontroler ini memiliki fitur utama
seperti ADC (Analog-to-Digital Converter), timer, port I/O, dan memori yang
memungkinkan integrasi dengan berbagai perangkat.
o Pemrograman Mikrokontroler dengan Bahasa C: Bahasa C digunakan untuk menulis
program yang mengendalikan fungsi-fungsi mikrokontroler, seperti membaca data
sensor dan mengatur keluaran ke motor.
o Peran Mikrokontroler dalam Sistem: Mikrokontroler membaca data dari sensor IR
dan potensiometer, memproses data secara real-time, dan mengontrol kecepatan
motor berdasarkan parameter yang ditentukan.
5. Pengolahan Sinyal
o Konversi Sinyal Analog ke Digital: ADC pada mikrokontroler mengubah sinyal analog
dari potensiometer menjadi data digital untuk diproses lebih lanjut.
o Penghitungan RPM: Penghitungan kecepatan putaran motor dilakukan dengan
mendeteksi jumlah pulsa yang diterima dari sensor IR dalam interval waktu tertentu
dan mengonversinya ke dalam satuan RPM.
6. Sistem Kontrol
o Konsep Sistem Kontrol Loop Terbuka dan Loop Tertutup: Sistem loop terbuka tidak
memiliki mekanisme umpan balik, sedangkan sistem loop tertutup menggunakan
umpan balik dari sensor untuk mengatur kecepatan secara otomatis.
o Implementasi Sistem Kontrol dalam Proyek: Sistem kontrol pada proyek ini dirancang
untuk mengukur putaran motor secara real-time dan menyesuaikan kecepatan
berdasarkan pengaturan potensiometer.
7. Penggunaan Aplikasi CodeVisionAVR
o Fungsi CodeVisionAVR: Aplikasi ini digunakan untuk membuat, mengompilasi, dan
mengunggah kode ke mikrokontroler ATmega16A. CodeVisionAVR mendukung
antarmuka grafis yang mempermudah konfigurasi perangkat keras.
o Penggunaan dalam Proyek: Dalam proyek ini, CodeVisionAVR digunakan untuk
mendesain program yang membaca data dari sensor IR, mengolah data dari
potensiometer, dan mengontrol kecepatan motor.
BAB 3
PERANCANGAN SISTEM
3.1 Alat Dan Bahan.
1. [Link] Sistem AtMega16A
2. [Link] PCB
3. [Link] IR
4. [Link] DC
5. [Link]
6. [Link]
7. [Link] Jumper
8. [Link]
9. [Link] header
10. [Link] Motor IC l293D
3.2 Desain Alat.
3.3 Flow chart Program
3.4 Diagram Blok Alat.
3.5 Skematik
[Link] dari PCB RPM
[Link] dari Minsis Mikrokontroller
3.6 Board
[Link] RPM
[Link] MINSIS
3.7 PROGRAM
#include <mega16a.h>
#include <stdio.h>
#include <alcd.h>
#include <delay.h>
#include <stdint.h>
#include <stdbool.h>
#define JPR 18 /* Jumlah Pulsa per Rotasi */
#define KELILING_RODA 0.169646 /* Keliling roda dalam meter (diameter 54 mm)
*/
#define ADC_VREF_TYPE ((0 << REFS1) | (0 << REFS0) | (1 << ADLAR))
unsigned char n, timer = 0; /* Variabel counter dan timer */
unsigned char lcd_tampil[20];
float rpm, kecepatan;
/* Fungsi untuk membaca nilai ADC */
unsigned char read_adc(unsigned char adc_input)
{
ADMUX = adc_input | (ADC_VREF_TYPE & 0xFF);
delay_us(10); // Delay untuk stabilisasi tegangan input ADC
ADCSRA |= 0x40; // Memulai konversi ADC
while ((ADCSRA & 0x10) == 0); // Menunggu hingga konversi selesai
ADCSRA |= 0x10;
return ADCH;
}
/* Fungsi untuk inisialisasi PWM */
void pwm_init(void)
{
TCCR1A = (1 << WGM10) | (1 << COM1A1); // Fast PWM 8-bit, output non-
inverted pada OC1A (PD5)
TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10); // Prescaler 64
DDRD |= (1 << 5); // Mengatur PD5 (OC1A) sebagai output PWM
}
/* Fungsi untuk kontrol motor */
void motor_control(bool aktif) {
if (aktif) {
PORTD |= (1 << PORTD0); /* 1A = HIGH (Motor maju) */
PORTD &= ~(1 << PORTD1); /* 2A = LOW */
} else {
PORTD &= ~((1 << PORTD0) | (1 << PORTD1)); /* 1A = LOW, 2A = LOW (motor
stop) */
}
}
/* Interrupt untuk sensor rotasi */
interrupt [EXT_INT2] void ext_int2_isr(void) {
static unsigned char last_state = 0;
if (!last_state) {
last_state = 1;
n++; /* Tambahkan pulsa hanya jika valid */
}
delay_us(100); /* Debounce kecil */
last_state = 0;
}
/* Interrupt untuk Timer0 Overflow */
interrupt [TIM0_OVF] void timer0_ovf_isr(void) {
TCNT0 = 0xA3; /* Reset nilai Timer0 */
timer++;
if (timer == 126) { /* Hitung setiap 1 detik */
rpm = (float)n * 60.0 / JPR; /* Hitung RPM */
kecepatan = (float)n * KELILING_RODA * 3600.0 / JPR; /* Hitung kecepatan
dalam KM/jam */
/* Tampilkan nilai RPM */
sprintf(lcd_tampil, "RPM = %.0f", rpm);
lcd_gotoxy(0, 0);
lcd_puts(lcd_tampil);
/* Tampilkan nilai Kecepatan */
sprintf(lcd_tampil, "KM/h = %.2f", kecepatan);
lcd_gotoxy(0, 1);
lcd_puts(lcd_tampil);
timer = 0; /* Reset timer */
n = 0; /* Reset counter */
}
}
void main(void) {
unsigned char data_adc; // Hasil pembacaan ADC
float Vadc, x; // Perhitungan tegangan dan nilai ADC yang dinormalisasi
/* Inisialisasi port */
DDRA = 0x00; PORTA = 0x00; /* Port A sebagai input */
DDRB = 0x00; PORTB = 0xFF; /* Port B sebagai input pull-up */
DDRC = 0xFF; PORTC = 0x00; /* Port C sebagai output */
DDRD = 0x13; PORTD = 0x00; /* Pin D0, D1, D4 sebagai output */
/* Inisialisasi Timer0 */
TCCR0 = (1 << CS02) | (1 << CS00); /* Prescaler 1024 */
TCNT0 = 0xA3; /* Nilai awal Timer0 */
TIMSK = (1 << TOIE0); /* Aktifkan interrupt Timer0 Overflow */
/* Inisialisasi Interrupt Eksternal INT2 */
GICR |= (1 << INT2); /* Aktifkan INT2 */
MCUCSR &= ~(1 << ISC2); /* Falling edge trigger untuk INT2 */
/* Inisialisasi ADC */
ADMUX = ADC_VREF_TYPE & 0xFF;
ADCSRA = 0xA4; /* Mengaktifkan ADC, prescaler 16 */
SFIOR &= 0x0F;
/* Inisialisasi LCD */
lcd_init(16);
/* Inisialisasi PWM */
pwm_init();
/* Aktifkan interrupt global */
#asm("sei")
/* Motor mulai dalam mode maju */
motor_control(true);
while (1) {
/* Membaca nilai ADC dari kanal 2 (terhubung ke potensiometer) */
data_adc = read_adc(2); // Menggunakan kanal 2 (PA2)
/* Menormalisasi nilai ADC dan menghitung tegangan */
x = data_adc / 255.0;
Vadc = x * 5.0;
/* Mengatur siklus kerja PWM untuk mengontrol kecepatan motor */
OCR1A = data_adc; // Siklus kerja PWM diatur oleh nilai ADC (0-255)
delay_ms(100); // Delay untuk pembaruan
}
}
BAB IV
PENUTUP
4.1 Analisa
1. Keberhasilan Implementasi Proyek
Proyek ini berhasil mengintegrasikan beberapa komponen elektronik untuk membangun
sebuah sistem pengukuran RPM (putaran per menit) motor DC sekaligus mengontrol
kecepatan motor menggunakan potensiometer. Berdasarkan uraian dan program yang
diberikan, sistem ini telah memenuhi tujuan yang diinginkan, yaitu:
A. Pengukuran RPM Motor:
o Sistem menggunakan sensor inframerah (IR) untuk mendeteksi perubahan
intensitas cahaya pantulan dari objek yang berputar (seperti encoder roda).
Sensor ini membaca jumlah pulsa yang dihasilkan dari rotasi motor, yang
kemudian diproses menjadi nilai RPM menggunakan formula yang sudah
diterapkan dalam program.
o Nilai RPM dihitung berdasarkan jumlah pulsa per detik yang dikalikan dengan
konstanta (60 detik/jumlah pulsa per rotasi).
o Kecepatan motor dalam satuan km/jam juga dihitung menggunakan formula
berbasis keliling roda.
B. Kontrol Kecepatan Motor:
o Potensiometer digunakan sebagai pengatur tegangan masukan, yang
diterjemahkan menjadi duty cycle pada PWM (Pulse Width Modulation). Nilai
ADC yang dibaca dari potensiometer diubah menjadi sinyal PWM dengan
menggunakan fitur Fast PWM pada Timer1 ATmega16A.
o Duty cycle PWM memengaruhi kecepatan motor dengan mengatur tegangan
rata-rata yang diberikan ke motor. Ini menunjukkan bahwa sistem kontrol
kecepatan manual telah berhasil diimplementasikan.
C. Penggunaan Mikrokontroler ATmega16A:
o Mikrokontroler ini berfungsi sebagai pusat pemrosesan utama dalam sistem.
Semua komponen, seperti sensor IR, potensiometer, driver motor (IC L293D),
dan LCD, terhubung dan dikendalikan melalui ATmega16A.
o Mikrokontroler membaca data dari sensor IR (menggunakan interrupt
eksternal INT2) dan potensiometer (melalui ADC), kemudian mengolah data
tersebut untuk menghasilkan nilai RPM, kecepatan motor (KM/h), serta
mengatur duty cycle PWM untuk kontrol motor.
o Timer0 digunakan untuk menghasilkan interrupt setiap 1 detik untuk
menghitung RPM secara periodik. Ini menunjukkan bahwa sistem memiliki
kemampuan pemrosesan real-time yang baik.
D. Antarmuka Pengguna (LCD):
o Nilai RPM dan kecepatan motor ditampilkan secara real-time pada LCD 16x2,
sehingga memudahkan pengguna untuk memantau kinerja motor.
2. Keunggulan Sistem
Efisiensi dan Fleksibilitas:
o Sistem ini memanfaatkan sensor inframerah (IR) yang bekerja tanpa kontak
langsung, sehingga lebih tahan terhadap gangguan mekanis dibandingkan
sensor mekanis konvensional.
o Potensiometer memungkinkan pengaturan kecepatan motor secara manual,
membuat sistem lebih mudah digunakan oleh operator.
Akurasi Tinggi:
o Dengan menggunakan mikrokontroler yang dilengkapi fitur ADC dan
interrupt, sistem dapat melakukan pengukuran RPM dan penghitungan
kecepatan motor dengan akurasi tinggi.
Kompatibilitas dan Skalabilitas:
o Sistem ini dirancang modular dengan menggunakan komponen yang banyak
tersedia, seperti sensor IR, potensiometer, dan driver motor IC L293D. Hal ini
memudahkan integrasi dengan aplikasi lain, seperti robotika, lini produksi,
atau proyek akademik.
3. Analisis Keberhasilan Berdasarkan Fungsi
1. Fungsi ADC:
o ADC digunakan untuk membaca nilai tegangan dari potensiometer. Nilai ADC
(0-255) berhasil dikonversi menjadi duty cycle PWM untuk mengatur
kecepatan motor.
2. Fungsi Interrupt (INT2):
o Interrupt eksternal INT2 berfungsi untuk mendeteksi pulsa dari sensor IR,
yang digunakan untuk menghitung jumlah rotasi roda. Fungsi ini bekerja
dengan baik, terbukti dari nilai RPM yang diperbarui setiap detik.
3. Fungsi Timer:
o Timer0 digunakan untuk menghasilkan interrupt periodik setiap 1 detik.
Timer ini memastikan sistem mampu menghitung jumlah pulsa secara
periodik dan memperbarui nilai RPM dan kecepatan motor.
4. Fungsi PWM:
o PWM dihasilkan menggunakan Timer1 (mode Fast PWM) dengan duty cycle
yang ditentukan oleh nilai ADC. PWM ini secara efektif mengontrol tegangan
rata-rata pada motor, memungkinkan pengguna mengatur kecepatan motor
secara manual.
4. Evaluasi Keberhasilan Sistem
Keberhasilan:
o Sistem berhasil mengukur RPM dan kecepatan motor dengan akurasi tinggi,
serta memberikan antarmuka yang user-friendly melalui potensiometer dan
LCD.
o Sistem dirancang menggunakan komponen yang umum dan mikrokontroler
yang efisien, sehingga biaya pengembangan tetap rendah.
o Fungsi real-time berjalan dengan baik, berkat penggunaan interrupt untuk
penghitungan pulsa dan Timer untuk pembaruan nilai RPM.
Peluang Peningkatan:
o Sistem dapat ditingkatkan dengan menambahkan fitur kontrol loop tertutup
(closed-loop) untuk memastikan kecepatan motor tetap stabil meskipun
terjadi perubahan beban.
o Penyempurnaan algoritma pengolahan sinyal, seperti filter digital, dapat
dilakukan untuk mengurangi noise dari sensor IR.
o Penambahan fitur komunikasi, seperti Bluetooth atau Wi-Fi, memungkinkan
pemantauan dan pengaturan sistem secara jarak jauh.
4.2 Kesimpulan
Proyek sistem pengukuran RPM dan pengendalian kecepatan motor DC menggunakan
mikrokontroler ATmega16A telah berhasil diimplementasikan dengan baik. Sistem ini mampu
memenuhi tujuan utama, yaitu mengukur putaran motor secara akurat dan mengatur kecepatannya
menggunakan potensiometer. Berbagai komponen, seperti sensor inframerah (IR), potensiometer,
driver motor IC L293D, dan LCD, berhasil diintegrasikan dalam sistem ini untuk menciptakan solusi
yang efisien, fleksibel, dan mudah digunakan.
Beberapa poin utama dari keberhasilan proyek ini adalah:
1. Pengukuran RPM dan Kecepatan Motor yang Akurat
Dengan menggunakan sensor IR, sistem mampu mendeteksi perubahan rotasi motor
secara real-time. Data yang diperoleh dari sensor diolah untuk menghitung nilai RPM
dan kecepatan motor dalam satuan km/jam dengan presisi tinggi.
2. Kontrol Kecepatan Motor yang Efisien
Pengaturan kecepatan motor dilakukan melalui potensiometer yang dihubungkan ke
mikrokontroler untuk menghasilkan sinyal PWM. Duty cycle PWM yang dihasilkan
memungkinkan kontrol tegangan rata-rata yang diberikan pada motor, sehingga
kecepatan motor dapat disesuaikan secara manual.
3. Pemanfaatan Mikrokontroler ATmega16A yang Optimal
Mikrokontroler ATmega16A digunakan secara maksimal dengan fitur-fitur seperti
ADC untuk membaca sinyal analog dari potensiometer, interrupt eksternal untuk
menghitung pulsa dari sensor IR, dan timer untuk memastikan pembaruan data
secara periodik. Fungsi-fungsi ini telah diimplementasikan dengan baik untuk
mendukung kinerja sistem secara real-time.
4. Antarmuka Pengguna yang Sederhana dan User-Friendly
Sistem menampilkan nilai RPM dan kecepatan motor secara real-time pada LCD,
sehingga pengguna dapat memantau kinerja sistem dengan mudah. Integrasi
potensiometer juga memberikan fleksibilitas pengaturan manual.
Rekomendasi Peningkatan
Meskipun sistem ini telah sukses diimplementasikan, masih ada beberapa peluang untuk
meningkatkan performa dan fungsionalitas sistem di masa depan:
1. Penambahan Sistem Loop Tertutup (Closed-Loop)
Dengan menambahkan mekanisme umpan balik dari sensor IR, sistem dapat
memastikan kecepatan motor tetap stabil meskipun terjadi perubahan beban.
2. Peningkatan Ketahanan terhadap Noise
Algoritma pengolahan sinyal seperti filter digital dapat diterapkan untuk
meminimalkan gangguan atau noise dari sensor IR, sehingga meningkatkan akurasi
pengukuran.
3. Penambahan Fitur Komunikasi Jarak Jauh
Fitur seperti Bluetooth atau Wi-Fi dapat ditambahkan agar pengguna dapat
memantau dan mengontrol kecepatan motor dari jarak jauh.