MIKROKONTROLLER
Jumat, 15 Juli 2016
KUIS
Diketahui : Pada suatu sistem pemanas berbasis mikrokontroler, diketahui bahwa elemen pemanas dari suatu heater elektrik dapat menaikkan suhu suatu metal sebesar 10o C tiap Ampere arus listrik yang diberikan. Metal tersebut memuai sebesar 0.0005 cm tiap setengah derajat Celcius. Metal tersebutmendorong sensor beban yang memiliki output sebesar 1 Volt tiap 0.005 centimeter tekanan yang diberikan.
Ditanya :
Hitunglah fungsi transfer total dari sistem tersebut!
TF₁ = output/input = (output suhu )/(input arus) =(10⁰C)/(1 A) = 10⁰C/A
TF₂ = output/input = (output muai )/(input suhu) = (0,0005 cm )/(0,05⁰C) = 0,001cm/⁰C
TF₂ = output/input = (output muai )/(input suhu) = (0,0005 cm )/(0,05⁰C) = 0,001cm/⁰C
TF₃ = output/input = (output sensor)/(input suhu) = (1 )/(0,005 cm) =200 v/cm
TFtotal = TF₁ X TF₂ X TF₃ = 10⁰C/A X 0,0010,001cm/⁰C X 200 v/cm
= 2 V/A
PENGETAHUAN UMUM MIKROKONTROLER
1. Pengertian Mikrokontroler
Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol rangkaian elektronik dan umunya dapat menyimpan program didalamnya. Mikrokontroler umumnya terdiri dari CPU (Central Processing Unit), memori, I/O tertentu dan unit pendukung seperti Analog-to-Digital Converter (ADC) yang sudah terintegrasi di dalamnya. Kelebihan utama dari mikrokontroler ialah tersedianya RAM dan peralatan I/O pendukung sehingga ukuran board mikrokontroler menjadi sangat ringkas. Mikrokontroler MCS51 ialah mikrokomputer CMOS 8 bit dengan 4 KB Flash PEROM (Programmable and Erasable Only Memory) yang dapat dihapus dan ditulisi sebanyak 1000 kali. Mikrokontroler ini diproduksi dengan menggunakan teknologi high density non-volatile memory. Flash PEROM on-chip tersebut memungkinkan memori program untuk diprogram ulang dalam sistem (in-system programming) atau dengan menggunakan programmer non-volatile memory konvensional. Kombinasi CPU 8 bit serba guna dan Flash PEROM, menjadikan mikrokontroler MCS51 menjadi microcomputer handal yang fleksibel
Bentuk Fisik Mikrokontroler Keluarga MCS51 40 Pin
Arsitektur perangkat keras mikrokontroler MCS51 mempunyai 40 kaki, 32 kaki digunakan untuk keperluan 4 buah port pararel. 1 port terdiri dari 8 kaki yang dapat di hubungkan untuk interfacing ke pararel device, seperti ADC, sensor dan sebagainya, atau dapat juga digunakan secara sendiri setiap bitnya untuk interfacing single bit septerti switch, LED, dll.
2. Karakteristik lainya dari mikrokontroler MCS51 sebagai berikut :
-Low-power
- 32 jalur masukan/keluaran yang dapat deprogram
- Dua timer counter 16 bit
-RAM 128 byte
-Lima interrupt
Tidak seperti sistem komputer, yang mampu menanganiberbagai macam program aplikasi (misalnya pengolah kata, pengolah angkadan lain sebagainya), mikrokontroler hanya bisa digunakan untuk suatu aplikasi tertentu saja (hanya satu program saja yang bisa disimpan). Perbedaan lainnya terletak pada perbandingan RAM dan ROM. Pada sistem komputer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relatif besar, sedangkan rutin-rutin antarmuka perangkat keras disimpan dalam ruang ROM yang kecil. Sedangkan pada Mikrokontroler, perbandingan ROM dan RAM-nya yang besar, artinya program kontrol disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpan sementara, termasuk register-register yang digunakan pada mikrokontroler yang bersangkutan.
3. Kelebihan Sistem Dengan Mikrokontroler
a. Penggerak pada mikrokontoler menggunakan bahasa pemograman assembly dengan berpatokan pada kaidah digital dasar sehingga pengoperasian sistem menjadi sangat mudah dikerjakan sesuai dengan logika sistem (bahasa assembly ini mudah dimengerti karena menggunakan bahasa assembly aplikasi dimana parameter input dan output langsung bisa diakses tanpa menggunakan banyak perintah). Desain bahasa assembly ini tidak menggunakan begitu banyak syarat penulisan bahasa pemrograman seperti huruf besar dan huruf kecil untuk bahasa assembly tetap diwajarkan.
b. Mikrokontroler tersusun dalam satu chip dimana prosesor, memori, dan I/O terintegrasi menjadi satu kesatuan kontrol sistem sehingga mikrokontroler dapat dikatakan sebagai komputer mini yang dapat bekerja secara inovatif sesuai dengan kebutuhan sistem.
c. Sistem running bersifat berdiri sendiri tanpa tergantung dengan komputer sedangkan parameter komputer hanya digunakan untuk download perintah instruksi atau program. Langkah-langkah untuk download komputer dengan
mikrokontroler sangat mudah digunakan karena tidak menggunakan banyak perintah.
d. Pada mikrokontroler tersedia fasilitas tambahan untuk pengembangan memori dan I/O yang disesuaikan dengan kebutuhan sistem.
e. Harga untuk memperoleh alat ini lebih murah dan mudah didapat
Arsitektur perangkat keras mikrokontroler MCS51 mempunyai 40 kaki, 32 kaki digunakan untuk keperluan 4 buah port pararel. 1 port terdiri dari 8 kaki yang dapat di hubungkan untuk interfacing ke pararel device, seperti ADC, sensor dan sebagainya, atau dapat juga digunakan secara sendiri setiap bitnya untuk interfacing single bit septerti switch, LED, dll.
Mirkokontroler merupakan sebuah sistem mikroprosesor lengkap yang terkandung di dalam sebuah chip. Mikrokontroler berbeda dari mikroprosesor serba guna yang digunakan dalam sebuah PC, karena di dalam sebuah mikrokontroler umumnya juga telah berisi komponen pendukung sistem minimal mikroprosesor, yakni memori dan antarmuka I/O, sedangkan di dalam mikroprosesor umumnya hanya berisi CPU saja.
4. Jenis-Jenis Mikrokontroler
secara umum mikrokontroler terbagi menjadi 3 keluarga besar yang ada di pasaran. Setiap keluarga memepunyai ciri khas dan karekteriktik sendiri sendiri, berikut pembagian keluarga dalam mikrokontroler:
a. Keluarga MCS51
Mikrokonktroler ini termasuk dalam keluarga mikrokonktroler CISC. Sebagian besar instruksinya dieksekusi dalam 12 siklus clock. Mikrokontroler ini berdasarkan arsitektur Harvard dan meskipun awalnya dirancang untuk aplikasi mikrokontroler chip tunggal, sebuah mode perluasan telah mengizinkan sebuah ROM luar 64KB dan RAM luar 64KB diberikan alamat dengan cara jalur pemilihan chip yang terpisah untuk akses program dan memori data.
Salah satu kemampuan dari mikrokontroler 8051 adalah pemasukan sebuah mesin pemroses boolean yang mengijikan operasi logika boolean tingkatan-bit dapat dilakukan secara langsung dan secara efisien dalam register internal dan RAM. Karena itulah MCS51 digunakan dalam rancangan awal PLC (programmable Logic Control).
b. AVR
Mikrokonktroler Alv and Vegard’s Risc processor atau sering disingkat AVR merupakan mikrokonktroler RISC 8 bit. Karena RISC inilah sebagian besar kode instruksinya dikemas dalam satu siklus clock. AVR adalah jenis mikrokontroler yang paling sering dipakai dalam bidang elektronika dan instrumentasi.
Secara umum, AVR dapat dikelompokkan dalam 4 kelas. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral dan fungsinya. Keempat kelas tersebut adalah keluarga ATTiny, keluarga AT90Sxx, keluarga ATMega dan AT86RFxx.
c. PIC
PIC ialah keluarga mikrokontroler tipe RISC buatan Microchip Technology. Bersumber dari PIC1650 yang dibuat oleh Divisi Mikroelektronika General Instruments. Teknologi Microchip tidak menggukana PIC sebagai akronim,melaikan nama brandnya ialah PICmicro. Hal ini karena PIC singkatan dari Peripheral Interface Controller, tetapi General Instruments mempunyai akronim PIC1650 sebagai Programmabel Intelligent Computer.
PIC pada awalnya dibuat menggunakan teknologi General Instruments 16 bit CPU yaitu CP1600. * bit PIC dibuat pertama kali 1975 untuk meningkatkan performa sistem peningkatan pada I/). Saat ini PIC telah dilengkapi dengan EPROM dan komunikasi serial, UAT, kernel kontrol motor dll serta memori program dari 512 word hingga 32 word. 1 Word disini sama dengan 1 instruki bahasa assembly yang bervariasi dari 12 hingga 16 bit, tergantung dari tipe PICmicro tersebut. Silahkan kunjungi www.microchip.com untuk melihat berbagai produk chip tersebut.
Pada awalnya, PIC merupakan kependekan dari Programmable Interface Controller. Tetapi pada perkembangannya berubah menjadi Programmable Intelligent Computer. PIC termasuk keluarga mikrokonktroler berarsitektur Harvard yang dibuat oleh Microchip Technology. Awalnya dikembangkan oleh Divisi Mikroelektronik General Instruments dengan nama PIC1640. Sekarang Microhip telah mengumumkan pembuatan PIC-nya yang keenam.
PIC cukup popular digunakan oleh para developer dan para penghobi ngoprek karena biayanya yang rendah, ketersediaan dan penggunaan yang luas, database aplikasi yang besar, serta pemrograman (dan pemrograman ulang) melalui hubungan port serial yang terdapat pada komputer.
Mikrokontroler adalah suatu chip yang dibuat dengan ciri-ciri kekhasannya, biasanya adalah -Memiliki memory internal relatif sedikit.-Memiliki unit I/O langsung
-Pemroses bit, selain byte
-Memiliki perintah / program yang langsung berhubungan dengan I/O
-Program relatif sederhana.
Beberapa varian memiliki memori yang tidak hilang bila catu padam didalamnya untuk menyimpan program
Sedangkan dalam hal aplikasi, sistem mikokontroler memiliki karakteristik sebagai berikut
Memiliki program khusus yang disimpan dalam memori untuk aplikasi tertentu, tidak seperti PC yang multifungsi karena mudahnya memasukan program. Program mikrokontroler relatif lebih kecil daripada program-program pada PC.
-Konsumsi daya kecil.
-Rangkaian sederhana dan kompak
-Murah, karena komponen sedikit
-Unit I/O yang sederhana, misalnya keypad, LCD, LED, Latch.
-Lebih tahan terhadap kondisi lingkungan ekstrem misalnya temperatur, tekanan, kelembaban dan sebagainya.
Untuk mempelajari mikrokontroler perlu praktek, atau minimal dengan suatu simulatornya, tanpa praktek tidak akan didapat apa-apa. Untuk mempelajari suatu mikrokontroler atau ingin mengaplikasikan mikrokontroler untuk kendali atau kontrol harus diperhatikan hal-hal sebagai berikut;
Layaklah digunakan suatu sistem mikrokontroler ?. Jika rangkaian terlalu sederhana cobalah dengan rangkaian diskrit saja. Sebagai contoh, jika ingin membuat flasher (lampu kedap-kedip), tidaklah perlu dengan rangkaian mikrokontroler, tetapi jika durasi kedap-kedip diinginkan sangat presisi dan mudah diubah, maka dengan mikrokontroler adalah solusi yang baik.
Apakah mikrokontroler mudah didapat dipasaran ?. Faktor keberadaan barang sangat mendukung untuk berekperimen.
Apakah harganya terjangkau ?.
Berekperimen dengan mikrokontroler kemungkinan membuat chip menjadi gampang rusak, jadi sebaiknya gunakan yang harganya relatif murah. Kecuali bagi kalangan industri, dimana harga tidak menjadi masalah.
Adakah tersedia perangkat pengembangannya ?. Belajar mikrokontroler tidak hanya belajar hardware, tetapi juga software. Data Hardware bisa didapat dari internet, sebab setiap pabrik pembuat chip mikrokontroler, pasti memberikan data sheet di website nya, ini tidak menjadi masalah. Daftar perintah software biasanya juga disediakan di website , tetapi ini belum menjamin bisa membuat program, karena diperlukan latihan dan pengalaman untuk menyusun perintah-perintah menjadi suatu program yang berhasil guna.
Adakah, atau seberapa banyak kah forum-forum atau situs di internet yang membahas atau mendiskusikan tentang mikrokontroler tersebut ?. Tukar menukar pengalaman, berdiskusi, bertanya melalui forum di internet adalah sarana efektif saat ini untuk mempercepat mempelajari mikrokontroler.
Perangkat pengembangan suatu sistem mikrokontroler adalah sangat penting untuk melatih dan berekperimen dengan mikrokontroler yang dipilih, adapun yang disebut perangkat pengembangan atau dalam bahasa Inggris disebut development tools, bisa terdiri dari;
1. Compiler atau penterjemah (Software).
Mikrokontroler bekerja dalam bahasa mesin, sedangkan manusia sulit untuk mengerti bahasa mesin, untuk mudahnya dibuat program dengan bahasa yang lebih tinggi tingkatnya, yaitu C, BASIC, atau ASSEMBLER, selanjutnya dengan bantuan Compiler, program akan diterjemahkan dalam bahasa mesin, tentu saja butuh
PC (Personal Computer)
2. Simulator (Software),
adalah program komputer yang mensimulasikan kerja dari mikrokontroler. Dengan memasukan program dan dijalankan, maka register, memori dan input-output (I/O) yang nampak dilayar PC akan menunjukan isi, sesuai dengan program yang dijalankan.
3. Emulator (Software dan Hardware),
suatu alat yang berhubungan dengan PC yang dapat mengemulasikan kerja mikrokontroler, artinya program-program dibuat dan di compile di PC setelah itu di download ke emulator (istilahnya target), dan emulator akan bekerja secara sendiri (stand alone), hubungan dengan PC bisa dilepas. Jika ada kesalahkan program, maka cukup melakukan koreksi di PC, dan didownload ulang. Dengan demikian menghemat waktu reprogramming.
4. In Circuit Emulator (ICE),
adalah pengembangan dari emulator, hubungan dengan PC tetap ada, karena PC dianggap sebagai chip mikrokontroler bayangan, artinya bila kita membuat suatu rangkaian yang menggunakan suatu chip mikrokontroler sebagai komponen utamanya, chip tersebut dapat kita cabut dari soketnya, dan digantikan oleh konektor berbentuk chip yang terhubung kabel-kabel ke PC (emulator card), sekarang PC menggantikan chip tersebut. Selama program dijalankan, isi register-register dalam mikrokontroler ditampilkan dilayar, program juga dapat diperlambat, sehingga mempermudah penyelusuran kesalahan (bug).
5. Programmer,
adalah alat yang digunakan untuk mengisi program dalam suatu mikrokontroler, biasanya alat ini menggunakan PC sebagai terminal pintarnya, selanjutnya melalui serial port, paralel port, USB atau card khusus antarmuka ke programmer, kode-kode mesin dimasukkan dalam memory ROM, EPROM yang berada diluar MCU atau Flash memory yang jadi satu kemasan dengan MCU.
LAPORAN PRAKTIKUM MIKROKONTROLLER
LAPORAN PRAKTIKUM
Matakuliah
Mikrokontroler
Nama
|
:
|
PUTU ADI SUARSANA
|
Nim
|
:
|
1415313051
|
Dosen Pengampu
|
:
|
I Nyoman Kusuma Wardana, M.Sc
|
Program Studi Teknik Listrik
Jurusan Teknik
Elektro
Politeknik Negeri
Bali
2016Praktikum 1
Digital Input/Output
I. Dasar Teori
Digital
berarti sinyal yang dikirimkan/diterima bernilai 1 atau 0, on atau off,
HIGH atau LOW. Berbeda dengan sinyal analog yang nilainya bersifat
kontinyu, yakni nilai antara 0 dan 1 dipertimbangkan atau terdapat rentangan
nilai dari 0 sampai 1. Secara umum pin pada Arduino dapat dikonfigurasi ke
dalam dua mode, yaitu mode input dan output. Mode input berarti mengeset pin
agar dapat digunakan untuk menerima masukan sinyal dari komponen yang terhubung ke board arduino. Mode output
berarti mengeset pin agar dapat mengirimkan sinyal dari arduino ke komponen
lain atau ke rangkaian digital. Untuk mengeset mode pin, kita gunakan fungsi pinMode(). Fungsi ini biasanya
digunakan di dalam fungsi setup().
fungsi ini memerlukan dua parameter, pinMode([nomorPin], [mode]). Parameter pertama diisi oleh nomor pin,
dan parameter kedua diisi oleh konstanta INPUT atau OUTPUT,
sesuai dengan mode yang ingin kita gunakan. Sebagai contoh, jika ingin membuat
LED berkedip, LED tersebut bisa dipasang pada salah satu pin digital dari
arduino dan ground. Karena kita ingin membuat led menyala berkedip jadi kita
konfigurasi pin yang terhubung ke LED menjadi output.
Pada
gambar diatas dapat dilihat untuk pin yang berwarna hijau tua (dari pin 0
sampai pin ke 13) merupakan digital pin dari board arduino uno. Sedangkan untuk
yang berwarna hijau muda merupakan ground (GND).
Dan beberapa
pin juga memiliki fungsi khusus :
- Serial, terdiri dari 2 pin : pin 0 (RX) dan pin 1 (TX) yang digunakan untuk menerima (RX) dan mengirim (TX) data serial.
- External Interrups, yaitu pin 2 dan pin 3. Kedua pin tersebut dapat digunakan untuk mengaktifkan interrups. Gunakan fungsi attachInterrupt()
- PWM: Pin 3, 5, 6, 9, 10, dan 11 menyediakan output PWM 8-bit dengan menggunakan fungsi analogWrite()
- SPI : Pin 10 (SS), 11 (MOSI), 12 (MISO), dan 13 (SCK) mendukung komunikasi SPI dengan menggunakan SPI Library
- LED : Pin 13. Pada pin 13 terhubung built-in led yang dikendalikan oleh digital pin no 13.
- TWI : Pin A4 (SDA) dan pin A5 (SCL) yang mendukung komunikasi TWI dengan menggunakan Wire Library
II. Alat dan Bahan
Alat
dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
No
|
Alat dan Bahan
|
Jumlah
|
1
|
Board Arduino Uno R3
|
1
|
2
|
Modul/Rangkaian Percobaan
|
1
|
3
|
Kabel USB
|
1
|
4
|
Kabel jumper
|
Secukupnya
|
III. Langkah Percobaan
III.1 Percobaan Blink LED
a.
Koneksi Hardware
Dengan
menggunakan kabel jumper, koneksikan Led pada mudul (rangkaian) ke pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:
- Menghubungkan salah satu kaki resistor dengan pin 13 dari Arduino
- Menghubungkan kaki resistor yang lagi satu dengan kaki anoda dari led
- Menghubungkan kaki katoda led dengan ground pada arduino
Gambar 2. Skematik Percobaan Blink Led
Gambar 3. Breadboard
Percobaan Blink Led
b. Pemrograman Pada Arduino
Sketch program pada arduino dapat dilihat dibawah ini:
int Led1 =
13;
void setup() {
pinMode(Led1,
OUTPUT); // konfigurasi atau
mensetting pin 13 sebagai output
}
void loop() {
digitalWrite(Led1, HIGH); //
Untuk menghidupkan LED
delay(1000); //
waktu tunda
digitalWrite(Led1, LOW); //
untuk mematikan LED
delay(1000); //
tunda waktu
}
|
III.2 Percobaan PushButton ON/OFF
a.
Koneksi Hardware
Dengan
menggunakan kabel jumper, koneksikan Led dan Pushbutton pada mudul(rangkaian) ke pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:
- Menghubungkan kaki Anoda Led1 ke pin 13 Arduino
- Menghubungkan Pushbutton1 ke pin 2 Arduino Gambar 4. Skematik Percobaan Pushbutton ON/OFFGambar 5. Breadboard Percobaan Pushbutton ON/OFF
b. Pemrograman Pada ArduinoSketch program pada arduino dapat dilihat dibawah ini:int pushButton = 2;int LedPin = 13;void setup() {pinMode(pushButton, INPUT);pinMode(LedPin,OUTPUT);}void loop() {digitalRead(pushButton);if (pushButton == HIGH) {digitalWrite(LedPin,HIGH);}elsedigitalWrite(LedPin,LOW);}
III.3 Percobaan Kombinasi Multi Pushbutton Dan Multi Leda. Koneksi HardwareDengan menggunakan kabel jumper, koneksikan Led dan Pushbutton pada mudul(rangkaian) ke pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:- Menghubungkan kaki Anoda Led1 ke pin 13 Arduino
- Menghubungkan kaki Anoda Led2 ke pin 12 Arduino
- Menghubungkan kaki Anoda Led3 ke pin 11 Arduino
- Menghubungkan kaki Anoda Led4 ke pin 10 Arduino
- Menghubungkan Pushbutton1 ke pin 2 Arduino
- Menghubungkan Pushbutton2 ke pin 3 Arduino
Gambar 6. Skematik Percobaan Kombinasi Multi Pushbutton Dan Multi Led - Pemrograman Pada Arduino
Sketch program pada arduino dapat dilihat dibawah ini:const int buttonPin1 = 2;const int buttonPin2 = 3;const int ledPin1 = 13;const int ledPin2 = 12;const int ledPin3 = 11;const int ledPin4 = 10;void setup() {pinMode(ledPin1, OUTPUT);pinMode(ledPin2, OUTPUT);pinMode(ledPin3, OUTPUT);pinMode(ledPin4, OUTPUT);pinMode(buttonPin1, INPUT);pinMode(buttonPin2, INPUT);}void loop() {digitalRead(buttonPin1);digitalRead(buttonPin2);if (buttonPin1 == HIGH) {// jalan kanandigitalWrite(ledPin1,HIGH);digitalWrite(ledPin2,LOW);digitalWrite(ledPin3,LOW);digitalWrite(ledPin4,LOW);delay (1000);digitalWrite(ledPin1,LOW);digitalWrite(ledPin2,HIGH);digitalWrite(ledPin3,LOW);digitalWrite(ledPin4,LOW);delay (1000);digitalWrite(ledPin1,LOW);digitalWrite(ledPin2,LOW);digitalWrite(ledPin3,HIGH);digitalWrite(ledPin4,LOW);delay (1000);digitalWrite(ledPin1,LOW);digitalWrite(ledPin2,LOW);digitalWrite(ledPin3,LOW);digitalWrite(ledPin4,HIGH);delay (1000);}else {digitalWrite(ledPin1,LOW);digitalWrite(ledPin2,LOW);digitalWrite(ledPin3,LOW);digitalWrite(ledPin4,LOW);delay (1000);}}
IV. Hasil dan PembahasanPada percobaan kali ini menggunakan pin-pin digital dari arduino, dimana pin- pin tersebut akan dipakai baik sebagai input maupun output. Seperti percobaan diatas Pushbutton dipakai sebagai input dan Led dipakai sebagai output. Dan jika kita ingin membuat pin digital arduino sebagai input, maka pada program di arduino.ide kita dapat menulis “ pinMode (pushbutton1,INPUT); “ , dan untuk membaca hasil inputan dari pushbuttonnya dapat digunakan “digitalRead (pushbutton); “ . Kemudian jika kita ingin membuat pin arduino sebagai output maka untuk pin mode kita dapat tuliskan “pinMode (Led1,OUTPUT); “
Praktikum 2
Analog Input/Output
1. DASAR TEORI
Pada saat kita menggunakan tombol sebagai sinyal input/masukan pada pin input Arduino maka sebenarnya kita hanya memberikan dua kemungkinan kondisi sinyal masukan yaitu tombol tertekan atau tombol tidak tertekan. Pada saat tombol tertekan kita menghubungkan atau memberikan tegangan 5 volt pada masukan sedangkan sebaliknya pada saat tombol dilepas hanya memberikan tegangan 0 volt.
Kondisi input yang demikian dikenal sebagai digital input dengan logika 1 dan 0, dimana 1 untuk tegangan HIGH atau 5 volt dan 0 untuk tegangan LOW atau 0 volt. Begitu juga halnya pada sisi output, jika hanya melibatkan dua kondisi keluaran seperti misalnya saat menghidupkan dan memadamkan led pada suatu saat tertentu maka kita hanya melibatkan dua kondisi output digital. Output digital 1 atau HIGH dengan output tegangan 5 volt dan output digital 0 atau LOW dengan output tegangan 0 volt.
Pada beberapa sistim kontrol, pengolahan input dan output secara digital mungkin sudah memenuhi kinerja yang dibutuhkan. Akan tetapi pada kondisi tertentu ada kemungkinan dihadapkan pada kondisi input dan output yang membutuhkan besaran yang berubah-ubah dengan nilai yang kontinyu dan tidak lagi hanya dengan dua keadaan seperti halnya sinyal digital. Sinyal semacam ini disebut sebagai sinyal analog, sebagai contoh saat kita menghubungkan sensor yang tegangan keluarannya bervariasi dalam kisaran dari 0 volt sampai 5 volt. Maka dalam hal ini Arduino sebagai kontroler harus mampu mengidentifikasi/mengolah semua variasi tegangan keluaran dari sensor yang dihubungkan pada pin inputnya tersebut. Begitu juga halnya saat diperlukan tegangan output yang membutuhkan nilai tegangan yang bervariasi, seperti misalnya saat kita menginginkan mengatur tingkat keterangan sebuah led atau berubahnya kecepatan sebuah motor.
ANALOG INPUT
Arduino khusus menyediakan 6 kanal (8 kanal pada model Mini dan Nano, dan 16 pada model Mega) untuk difungsikan sebagai analog input. Analog ke digital converternya menggunakan resolusi 10 bit yang berarti range nilai analog dari 0 volt sampai 5 volt akan dirubah kenilai integer 0 sampai 1023, atau resolusinya adalah 5 volt/1024=4,9mV per unit dimana itu berarti nilai digital yang dihasilkan akan berubah setiap perubahan 4,9mV dari tegangan input analognya. Akan tetapi range input analog dan resolusi tersebut dapat dirubah dengan fungsi analogReference().Perintah yang digunakan untuk fungsi analog input ini adalah:- analogRead(pin): berfungsi untuk membaca nilai analog pada input pin yang akan menghasilkan nilai integer antara 0-1023.
- analogReference(parameter): berfungsi untuk menentukan referensi yang digunakan. Parameternya meliputi:
- DEFAULT: default analog reference yaitu 5V (pada board Arduino 5V) atau 3,3 volt (pada board Arduino 3,3 V)
- INTERNAL: built-in referensi internal tergantung pada jenis mikrokontroler yang terpasang pada board Arduino, 1.1 volt pada ATmega168 atau ATmega328 dan 2.56 volt pada ATmega8.
- INTERNAL1V1: a built-in referensi internal 1.1V (khusus Arduino Mega)
- INTERNAL2V56: a built-in referensi internal 2,56V (khusus Arduino Mega)
- EXTERNAL: pilihan referensi yang tergantung pada tegangan yang diberikan pada pin AREF(hanya dengan range tegangan 0 sampai 5V).
Perlu untuk diperhatikan, jangan menggunakan referensi dibawah 0 volt atau lebih dari 5 volt dan pastikan memilih referensi external sebelum perintah analogRead() jika menghubungkan pin AREF dengan referensi eksternal karena jika tidak akan bisa merusak mikrokontrol.ANALOG OUTPUTSecara teori suatu analog output akan mengeluarkan output tegangan bervariasi sesuai dengan nilai yang dikehendaki, maka seharusnya pin output analog Arduino seharusnya mampu mengeluarkan tegangan output dengan kisaran tegangan dari 0 V sampai 5V. Akan tetapi tidak demikian adanya, karena pin-pin Arduino yang difungsikan sebagai output sebenarnya hanya mampu sebagai digital output yaitu hanya mampu mengeluarkan tegangan 0V atau 5V. Lalu bagaimana Arduino menangani Analog Output tersebut? Arduino menggunakan cara Pulsa Wide Modulasi (PWM) atau modulasi lebar pulsa untuk menghasilkan analog output yang dikehendaki. Metode PWM ini menggunakan pendekatan perubahan lebar pulsa untuk menghasilkan nilai tegangan analog yang diinginkan. Pin yang difungsikan sebagai PWM analog output akan mengeluarkan sinyal pulsa digital dengan frekwensi 490 Hz dimana nilai tegangan analog diperoleh dengan merubah Duty Cycle atau perbandingan lamanya pulsa HIGH terhadap periode (T) dari sinyal digital tersebut. Jika pulsa HIGH muncul selama setengah dari periode sinyal maka akan menghasilkan duty cycle 5o% yang berarti sinyal analog yang dihasilkan sebesar setengah dari tegangan analog maksimal yaitu 1/2 dari 5 V atau sama dengan 2,5 V begitu juga halnya jika pulsa HIGH hanya seperempat bagian dari periode sinyal maka tegangan analog identik yang dihasilkan adalah 1/4 dari 5V = 1,25 V dan seterusnya.Perintah yang digunakan untuk output analog adalah analogWrite (pin,value), dimana:- Pin: nomor pin Arduino yang akan digunakan sebagai analog output
- value: nilai duty cycle yang diinginkan dengan nilai 0-255, yang berarti nilai 0 untuk 0Volt dan 255 untuk tegangan keluaran maksimum atau 5Volt.
Berikutnya mari kita mencoba aplikasi input output analog ini secara langsung pada Arduino. Untuk yang pertama saya menggunakan potensiometer yang dihubungkan pada analog pin 0 seperti pada gambar berikut ini:
Pada gambar diatas dapat dilihat untuk pin yang biru (dari pin 0 sampai pin ke 5) merupakan analog pin dari board arduino uno. Sedangkan untuk yang berwarna coklat tua merupakan VCC, dan yang berwarna coklat muda merupakan ground (GND).
II. Alat dan Bahan
Alat dan bahan percobaan diperlihatkan pada Tabel 2:
Tabel 2. Alat dan Bahan Praktikum
NoAlat dan BahanJumlah1Arduino Uno R312Modul /Rangkaian percobaan13Kabel USB14Kabel jumperSecukupnya
III. Langkah Percobaan
III.1 Percobaan Input Potensiometer
a. Koneksi Hardware
Dengan menggunakan kabel jumper, koneksikan Potensiometer yang ada pada mudul(rangkaian) ke pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:
Ø Menghubungkan kaki 1 potensiometer dihubungkan ke sumber tegangan (VCC)Ø Menghubungkan kaki 2 potensiometer dihubungkan ke pin A1 dari arduino unoØ Menghubungkan kaki 3 potensiometer dihubungkan ke groun (GND)
Gambar 2. Skematik Percobaan Input Potensiometer
Gambar 3. Breadboard Percobaan Input Potensiometer
b. Pemrograman Pada Arduino
Sketch program pada arduino dapat dilihat dibawah ini:int pinPot = A2;//pin untuk menerima sinyal analog dari potensiometerint val = 0;//variabel untuk menyimpan nilai konversi analog ke digitalvoid setup() {Serial.begin(9600);//setup koneksi serial}void loop() {val = analogRead(pinPot); //baca nilai analog dari potensiometerSerial.println(val); //kirim nilai val ke koneksi serialdelay(100);//jeda waktu}
III.2 Percobaan Input Potensiometer Output Led
a. Koneksi Hardware
Dengan menggunakan kabel jumper, koneksikan Potensiometer dan Led yang ada pada mudul(rangkaian) ke pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:
Pemrograman pada Arduino diperlihatkan sebagai berikut:
Ø Menghubungkan kaki 1 potensiometer dihubungkan ke sumber tegangan (VCC)
Ø Menghubungkan kaki 2 potensiometer dihubungkan ke pin A1 dari arduino uno
Ø Menghubungkan kaki 3 potensiometer dihubungkan ke groun (GND)
Ø Menghubungkan Led ke pin 13 dari arduino
Gambar 2. Skematik Percobaan Input Potensiometer Out Led
Gambar 3. Breadboard Percobaan Input Potensiometer Out Led
b. Pemrograman Pada ArduinoSketch program pada arduino dapat dilihat dibawah ini:int led = 13;//memilih pin digital untuk lampu ledint pinPot = A2;//pin untuk menerima sinal analogint potVal = 0;//variabel untuk menyimpan nilai konversi analog ke digitalvoid setup() {pinMode(led,OUTPUT);}void loop() {potVal=analogRead(pinPot);//baca nilai analog dari potensiometerpotVal=map(potVal,0,1023,0,255);//ubah nilai (0-1023) menjadi (0-255)analogWrite(led,potVal);//ubah nilai vR untuk mengatur kecerahan led}
IV. Hasil dan PembahasanPada percobaan kali ini menggunakan pin-pin analog dari arduino yaitu dari pin A0 sampai dengan pin A5, dimana pin- pin tersebut akan dipakai sebagai analog input. Seperti percobaan diatas Potensiometer dipakai sebagai input dan Led dipakai sebagai output. Dan jika kita ingin membuat pin analog arduino sebagai input, maka pada program di arduino.ide kita dapat menulis “ pinMode (Potensiometer,INPUT); “ , dan untuk membaca hasil inputan dari potensiometer dapat digunakan “analogRead (Potensiometer); “ dan “int Val;” dipakai untuk menyimpan nilai konversi analog ke digital. Kemudian “potVal=map(potVal,0,1023,0,255);” dipakai untuk mengubah nilai dari (0-1023) menjadi (0-255). Dan jika kita ingin mengatur nyala Led dengan potensiometer maka pada program arduino dapat ditulis sebagai berikut “analogWrite(Led,potVal); “ .
Praktikum 3
Statement Control
I. Dasar TeoriPada dasarnya setiap bahasa pemrograman terdiri dari:a . Ekspresib . Statementc . Blok Statementd . Blok Fungsi
Pada praktikum kali ini saya mempraktekan tentang statement control dimana statement control ini merupakan sebuah statement yang terdiri dari kondisi-kondisi yang dimana jika kondisi tersebut terpenuhi program akan melakukan suatu instruksi tertentu. Jadi dapat di katakan statement control merupakan penunjuk arah bagi urutan suatu program.
Dalam bahasa C++ ada beberapa jenis statement control sebagai berikut :
1. Kontruksi if
Pada konstruksi if sebuah konstruktur program hanya memiliki sebuah kondisi, artinya dimana suatu instruksi atau beberapa instruksi akan di jalankan apabila sebuah kondisi tersebut di penuhi, namun apabila kondisi tersebut tidak terpenuhi maka instruksi yang ada tidak akan di jalankan.
Berikut sintaks dari konstruksi if :if (kondisi){Instruksi/statement;}
2. Konstruksi if – else
Pada konstruksi if else sedikit berbeda dengan konstruksi if karena pada konstruksi if else . jika sebuah kondisi tidak terpenuhi maka program akan mencari kondisi lain yang ada atau menjalankan instruksi yang berada di luar bagian dari kondisi yang tidak terpenuhi.
Berikut sintaks dari konstruksi if-else :if (kondisi){Statement/instruksi;}else{Statement/instruksi;}
3. Konstruksi if – else bersarang
Pada konstruksi ini terdapat lebih dari satu buah kondisi jadi pabila sebuah kondisi tidak terpenuhi maka akan berlanjut ke kondisi berikutnya tergantung berapa banyak kondisi yang ada.
Berikut sintaks konstruksi if –else bersarang :if (kondisi){Statement/instruksi;}else if (kondisi){Statement/instruksi;}else{Statement/instruksi;}
4. Konstruksi switch – caseKonstruksi switch – case sedikit berbeda dengan konstruksi if – else, di mana konstruksi switch – case lebih menguntungkan digunakan pada program yang memiliki banyak pilihan kondisi dalam satu step dan jumlah kondisi sudah pasti.jadi berbeda dengan statement if else yang hanya memiliki 2 pilihan kondisi pada satu step.Berikut sintaks konstruksi switch – case :Switch (variabel){Case konstanta1{Statement;Break;}Case konstanta ke-n{Statement;Break;}}
III. Langkah PercobaanIII.1 Percobaan For Control (Kombinasi nyala Led berdasarkan button yang ditekan)a. Koneksi HardwareDengan menggunakan kabel jumper, koneksikan Led dan Pushbutton pada mudul(rangkaian) ke pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:Ø Menghubungkan kaki Anoda Led1 ke pin 7 ArduinoØ Menghubungkan kaki Anoda Led2 ke pin 8 ArduinoØ Menghubungkan kaki Anoda Led3 ke pin 9 ArduinoØ Menghubungkan kaki Anoda Led4 ke pin 10 ArduinoØ Menghubungkan Pushbutton1 ke pin 3 ArduinoØ Menghubungkan Pushbutton2 ke pin 4 ArduinoØ Menghubungkan Pushbutton3 ke pin 5 ArduinoØ Menghubungkan Pushbutton4 ke pin 6 Arduino
Gambar 2. Breadboard Percobaan For Controll
b. Pemrograman Pada ArduinoSketch program pada arduino dapat dilihat dibawah ini:int tombol1=3;int tombol2=4;int tombol3=5;int tombol4=6;int led1=7;int led2=8;int led3=9;int led4=10;void setup() {pinMode (tombol1,INPUT);pinMode (tombol2,INPUT);pinMode (tombol3,INPUT);pinMode (tombol4,INPUT);pinMode (led1,OUTPUT);pinMode (led2,OUTPUT);pinMode (led3,OUTPUT);pinMode (led4,OUTPUT);}void loop() {if (digitalRead(tombol1)==LOW){digitalWrite(7,HIGH);digitalWrite(8,LOW);digitalWrite(9,LOW);digitalWrite(10,LOW);}else if (digitalRead(tombol2)==LOW){digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,LOW);digitalWrite(10,LOW);}else if (digitalRead(tombol3)==LOW){digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,LOW);}else if (digitalRead(tombol4)==LOW){digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);}delay (30);}
IV. Hasil dan PembahasanPada praktikum kali ini menggunakan fungsi if-else dimana program akan berjalan ketika kondisinya terpenuhi, dan ketika kondisi pertama tidak terpenuhi maka program akan mencari kondisi yang lain, kemudian jika kondisinya terpenuhi program akan terus berjalan. Dalam hal ini program akan memeriksa kondisi dari pushbutton yang ditekan. Ketika pushbutton 1 ditekan maka hanya satu Led yang akan menyala, kemudian ketika pushbutton 2 ditekan maka dua Led yang akan menyala, terus ketika pushbutton 3 ditekan maka tiga Led yang akan menyala, terakhir ketika pushbutton 4 ditekan maka empat Led akan menyala.
Praktikum 4
Sensor InterfacingI. Dasar TeoriInterface atau dalam istilah Indonesianya Antar Muka dapat diartikan sebagai sebuah titik, di mana dua komponen atau benda berbeda bertemu. Dalam hubungannya dengan perangkat lunak, interface dapat diartikan sebagai sarana atau medium atau sistem operasi yang digunakan untuk menghubungkan antara perangkat mikroprosesor agar dapat berkomunikasi dengan pengguna (user). Sedangkan pada konteks perangkat keras interface berarti komponen elektronika yang menghubungkan atau mengkomunikasikan prosesor dengan komponen atau perangkat lain dalam suatu sistem. Dalam praktikum kali ini saya akan mempraktekan tentang interfacing arduino dengan sensor. Dan untuk menampilkan hasil pembacaan dari sensor yang dipakai saya akan mengggunakan sebuah LCD.Pertama saya akan bahas mengenai sensor. Sensor adalah jenis transduser (mengubah suatu energi menjadi energi yang lain) seperti mengubah variasi mekanis, magnetis, panas, sinar dan kimia menjadi tegangan dan arus listrik. Ada banyak sensor yang ada, namun pada praktikum kali ini saya akan menggunakan sensor Flowmeter (sensor aliran) dan sensor suhu (DS18B20).
Flowmeter merupakan alat yang berfungsi untuk mengukur kecepatan aliran dan volume fluida liquid maupun gas. Kerja dari flowmeter ini yaitu fluida berupa gas menggerakkan kincir yang dihubungkan dengan motor sehingga saat kincir berputar maka motor juga ikut berputar dan dapat menghasilkan ggl induksi. Pengkondisi sinyal membuat sinyal tegangan ggl induksi dari motor dapat terbaca oleh arduino, lalu LCD dapat manampilkan hasil pengukuran dari flow meter tersebut.Gambar 1. Sensor Flowmeter
Keterangan:
Pada gambar sensor flowmeter diatas untuk babel berwarna merah untuk VCC, kemudian kabel yang berwarna hitam untuk grunding (GND), dan kabel berwarna kuning untuk data.DS1820 adalah sensor suhu yang dikeluarkan oleh Dallas Semiconductor. Untuk membacanya menggunakan protokol 1 wire communication. Dimana hanya ada tiga kabel yang terdiri dari +5V, GND dan DQ (Data Input/Output). Keunggulan dari DS1820 adalah, output berupa data digital dengan nilai ketelitian 0,5 derajat Celcius sehingga mempermudah pembacaan oleh mikrokontroller.Gambar 2. Sensor DS18B20
Dan komponen yang dipakai untuk menampilkan hasil pembacaan sensor yaitu LCD. LCD atau Liquid Crystal Display adalah suatu jenis media tampilan yang menggunakan kristal cair sebagai penampil utama. Dan pada percobaan kali ini saya menggunakan LCD 16x2 yang artinya LCD tersebut terdiri dari 16 kolom dan 2 baris karakter (tulisan).
Gambar 3. LCD (Liquid Crystal Display)
I. Alat dan BahanAlat dan bahan percobaan diperlihatkan pada Tabel 2:Tabel 2. Alat dan Bahan PraktikumNoAlat dan BahanJumlah1Arduino Uno R312Modul /Rangkaian percobaan13Kabel USB14Sensor Suhu (15Sensor Aliran (Flow Meter)16Kabel jumperSecukupnya
III. Langkah PercobaanIII.1 Percobaan Interfacing Arduino Dan Sensor
a. Koneksi HardwareDengan menggunakan kabel , koneksikan Sensor Flowmeter dan Sensor Suhu (DS18B20) pada pin-pin Arduino Uno R3 dengan konfigurasi sebagai berikut:Ø Menghubungkan kabel merah dari sensor Flowmeter ke sumber tegangan (VCC).Ø Menghubungkan kabel hitam dari sensor Flowmeter ke ground (GND).Ø Menghubungkan kabel kuning dari sensor Flowmeter ke pin 2 Arduino.Ø Menghubungkan kabel merah dari sensor DS18B28 ke sumber tegangan (VCC).Ø Menghubungkan kabel hitam dari sensor DS18B28 ke sumber ground (GND).Ø Menghubungkan kabel kuning dari sensor DS18B28 ke pin 7 Arduino.Ø Menghubungkan pin RS LCD ke pin 12 ArduinoØ Menghubungkan pin E LCD ke pin 11 ArduinoØ Menghubungkan pin D4 LCD ke pin 5 ArduinoØ Menghubungkan pin D5 LCD ke pin 4 ArduinoØ Menghubungkan pin D6 LCD ke pin 3 ArduinoØ Menghubungkan pin D7 LCD ke pin 6 ArduinoØ Menghubungkan pin RW LCD ke Ground (GND) ArduinoØ Menghubungkan pin VSS LCD ke Ground (GND) ArduinoØ Menghubungkan pin VCC LCD ke sumber tegangan (VCC) Arduino
Gambar 2. Skematik Percobaan Interfacing Sensor Dan ArduinoGambar 3. Breadboard Percobaan Interfacing Sensor Dan Arduino
- Pemrograman Pada Arduino
Pemrograman pada Arduino diperlihatkan sebagai berikut:// include the library code:#include <LiquidCrystal.h>// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 6);volatile int flow_frequency; // Measures flow sensor pulsesunsigned int l_hour; // Calculated litres/hourunsigned char flowsensor = 2; // Sensor Inputunsigned long currentTime;unsigned long cloopTime;void flow () // Interrupt function{flow_frequency++;}void setup(){pinMode(flowsensor, INPUT);digitalWrite(flowsensor, HIGH); // Optional Internal Pull-UpSerial.begin(9600);attachInterrupt(0, flow, RISING); // Setup Interruptsei(); // Enable interruptscurrentTime = millis();cloopTime = currentTime;// set up the LCD's number of columns and rows:lcd.begin(16, 2);// Print a message to the LCD.lcd.print("SUHU: BELUM ADA");}void loop (){currentTime = millis();// Every second, calculate and print litres/hourif(currentTime >= (cloopTime + 1000)){cloopTime = currentTime; // Updates cloopTime// Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.l_hour = (flow_frequency * 60 / 7.5); // (Pulse frequency x 60 min) / 7.5Q = flowrate in L/hourflow_frequency =0; // Reset Counterlcd.setCursor(0, 1);lcd.print(" ");lcd.setCursor(0, 1);lcd.print("Flow: ");lcd.print(l_hour); // Print litres/hourlcd.setCursor(12, 1);lcd.print("L/H");//lcd.clear();}}
IV. Hasil dan Pembahasan
Pada praktikum kali ini saya belajar tentang interfacing sensor dengan arduino,dimana pada praktikum ini sensor akan terhubung dengan arduino sehingga sensor dapat mengirim data hasil pengukuran suhu dan aliran kemudian data tersebut diterima oleh arduino untuk seterusnya ditampilkan pada LCD. Pada program untuk menampilkan hasil pembacaan sensor pada LCD dapat dituliskan ‘’ lcd.print ( “ sensor terpasang” ) ; ‘’ . Kemudian program untuk mengatur letak penampilan tulisan ( hasil pembacaan sensor ) yaitu ‘’ lcd.setCursor (0,1); ‘’ . maksud dari lcd.setCursor (0,1); ini adalah kita akan menulis di LCD pada number colom ke 0, number baris ke 1.
Langganan:
Postingan (Atom)