Praktikum
Sistem Pengendalian
Otomatis
Kontrol Berbasis Arduino
Teknik Mesin - Polines
Giyanto, S.T, M.T, [Link]
Mechanical Engineering, POLINES - Semarang
Sistem Pengendalian Otomasi
(Teori & Praktek)
Kelas MS-3A Hari Jumat Jam 1-5
⚫ Pengantar dan Teori Secara Umum (Minggu 1 dan 2)
⚫ Praktek SPO berbasis Arduino (Minggu 3 -10) – Paket
Arduino + Laptop
⚫ Praktek SPO berbasis PLC (Minggu 11-18) – Laptop (Cx
Programmer)
Group 1 Absen 1-9 _Minggu Ganjil _Absen 8 Mandiri
Group 2 Absen 10-19 _Minggu Genap
1
Materi (Pokok Bahasan)
1. Pengantar Arduino
✓ Pengantar Arduino (Teori Dasar)
✓ LCD Display
✓ Komunikasi Serial
✓ Digital & Analog Input
✓ Analog to Digital Converter (ADC)
✓ Dasar Logika Program Arduino
2. Aplikasi Penggunaan Sensor pada Arduino
✓ Sensor Temperatur DHT-11
✓ Sensor Temperatur LM35
✓ Sensor Cahaya LDR
✓ Sensor Ultrasonic PING
3. Aplikasi Penggunaan Aktuator pada Arduino
✓ LED, Buzzer
✓ Relay
✓ Motor DC & Motor Stepper
✓ PWM Kontrol
Introduction
Arduino
Platform physical computing open source yang
terdiri dari hardware (Arduino Board) dan sortware
(Arduino IDE) untuk memudahkan penggunaan
elektronik dalam berbagai bidang aplikasi.
[Link]
2
Classification
Arduino Uno Arduino Leonardo Arduino Nano
Arduino Duemilanove Arduino Diecimila Arduino Mega
[Link]
Physical Layout
Arduino Uno Atmega Arduino Uno SMD
[Link]
3
Arduino Pinout
[Link]
Arduino Specification
4
Arduino Wiring Architecture
[Link]
Atmega328 PinOut
5
Atmega328 SMD PinOut
Blok Diagram Atmega328
RS232, RS-422, RS-485
Non-Volatile Memory
Volatile Memory
Non-Volatile Memory Bootloader:
Program inisiasi awal
6
Arduino IDE (Software)
[Link]
7
Arduino IDE Installation
Peralatan:
a. Komputer/PC/Laptop dengan Port USB
b. Arduino Board + Kabel
c. Software Arduino IDE
Arduino IDE Installation
Pengecekan Port Komunikasi (COM)
8
Arduino IDE Installation
Tampilan Awal Arduino IDE
Tampilan Awal Arduino IDE
Set up tipe data, variabel,
inisisalisasi (nilai awal), dll ➔
dieksekusi sekali
Isi program utama ➔ dieksekusi
berkali-kali
9
Tipe Data
Contoh Pemakaian Tipe Data
10
Operasional
Input Output (I/O)
• 14 Digital Input Output (I/O)
• 6 Analog Input
• 6 Analog Output PWM Mode
11
Digital I/O
A. Pin Mode (pin, Mode)
Sebelum menggunakan digital input/output dan analog
output, harus disetting terlebih dahulu mengenai status
PIN. Default konfigurasi pin disetting sebagai input.
Contoh:
pinMode(pin,OUTPUT); //mengeset pin sebagai output;
pinMode(13,INPUT); // mengeset pin 13 sebagai input;
Digital Input
B. Digital Read (pin)
Digunakan untuk membaca nilai pin yang kita kehendaki
dengan hasil HIGH atau LOW.
Contoh:
Value = digitalRead(pin); //membaca ‘value’ pin HIGH atau LOW
x = digitalRead(12); //membaca ‘x’ pada pin 12 HIGH atau LOW
pinMode(12,INPUT); mengeset pin 12 sebagai input;
12
Digital Output
C. Digital Write (pin)
Digunakan untuk mengsetting pin digital sesuai dengan
masukan yang kita kehendaki (HIGH atau LOW).
Contoh:
digitalWrite(pin, HIGH); //set pin to HIGH
digitalWrite(12, LOW); //set pin 12 to LOW
Digital I/O
13
Digital I/O
Digital I/O
Example Program: Blink
14
Analog I/O
Analog Input
A. Analog Read (pin)
Digunakan untuk membaca nilai pin analog yang memiliki
resolusi 10-bit. Hasil dari pembacaan berupa nilai integer
dengan range 0 - 1023.
Value/2n-1 *5V
Contoh: 500/1023*5 Volt
analogRead(0); // Membaca nilai input dari pin A0
analogRead(4); // Membaca nilai input dari pin A4
Value = analogRead (pin); // membaca ‘value’ sama dengan nilai analog pin
15
Analog Input
Resolusi Analog (ADC) pada ArduinoUno adalah 10 bit, yaitu
sama dengan 2^10=1024.
Nilai yang dibaca berada pada range 0-1023 yg setara
dengan 0-5 Volt.
Sehingga nilai sebenarnya = nilai ADC X ([5/1023] atau
0.0049 V).
Analog Output
A. Analog Write (pin, value)
Digunakan untuk mengirimkan nilai analog pada pin analog
Arduino. Nilai analog yang dikirimkan berupa nilai integer
dengan range 0 - 1023.
Pin Arduino yang digunakan adalah 3, 5, 6, 9, 10, dan 11.
Contoh:
analogWrite(pin, value) // menulis ke pin analog
analogWrite(3,500); //Output tegangan pin 3 yaitu: 500x(5/1023)= 2.44V
analogWrite(5,1023); //Output tegangan pin 5 yaitu: 1023x(5/1023)= 5.00V
16
Analog I/O
Nilai dari Input Analog (A0) dikeluarkan ke Output Analog 9
Analog I/O
Nilai dari Input Analog (A0) dikeluarkan ke Output Analog 9
17
If
Digunakan untuk menguji kondisi tertentu, apakah suatu
kondisi sudah terpenuhi atau belum.
Jika terpenuhi ➔ bagian { } akan dieksekusi,
Jika tidak ➔ akan dilanjut ke script program selanjutnya.
Syntax :
If (comparison operator) {
... Isi intruksi jika terpenuhi
}
18
If
Contoh: Jika input > 500, Led PIN 5,6 dan 9 menyala berkedip
If-else
Memungkinkan pengendalian program yang lebih dari ‘if’ dengan menguji dua
kondisi sekaligus.
Contoh:
Jika nilai x = 500 ➔ akan mengeksekusi perintah tertentu.
Jika tidak (x>=500) ➔ akan mengeksekusi perintah lainnya.
Syntax :
If (comparison operator) {
... Isi intruksi jika kondisi 1 atau comparison operator terpenuhi
}
else
{
.... Isi intruksi jika kondisi 2 (kebalikan dari kondisi comparison operator 1)
}
19
If-else
Contoh:
Jika nilai x < 500 ➔ ledpin 5,6,9 akan berkedip
jika tidak (x >=500) ➔ ledpin 5,9 akan berkedip bergantian dengan ledpin6
If-else-If-else
Memungkinkan pengendalian program yang lebih spesifik dari ‘if’ dan ‘if-else’
dgn menguji lebih dari dua kondisi sekaligus.
Misal,
Jika nilai x < 500 ➔ akan mengeksekusi perintah tertentu.
Jika x diantara 500 dan 800 ( x>=500; x<800 ) ➔ akan mengeksekusi perintah tertentu.
Jika selain dua kondisi tersebut (x>=800) ➔ akan mengeksekusi perintah lainnya.
Syntax : If (comparison operator) {
... Isi intruksi jika kondisi 1 atau comparison operator terpenuhi
}
else if
{
.... Isi intruksi jika kondisi 2 terpenuhi
}
else
{
... Isi intruksi jika kondisi 3 terpenuhi
}
20
If-else-If-else
Contoh:
Jika nilai x < 500 ➔ ledpin kuning berkedip (ledpin5)
Jika x diantara 500 dan 800 ( x>=500; x<800 ) ➔ led hijau berkedip (ledpin6)
Jika selain dua kondisi tersebut (x>=800) ➔ akan merah berkedip (ledpin9)
While
Intruksi didalam {...} akan dieksekusi sampai pernyataan didalam () atau
‘expression’ bernilai salah.
Contoh:
Selama (while) nilai ‘input’ <200, led
akan berkedip
21
For
Digunakan untuk mengulangi pengeksekusian intruksi dalam suatu blok, {}
Operator for digunakan dalam blok pengulangan tertutup.
Syntax :
for (nilai awal; batas nilai
akhir; besarnya kenaikan)
{
... Isi intruksi
}
For
Contoh1:
Ledpin5 ➔ berkedip 2 kali
Ledpin6 ➔ berkedip 3 kali
Ledpin9 ➔ berkedip 5 kali
22
For
Contoh2:
Ledpin5 (PWM) ➔ nilai naik dari 0-255
Ledpin6 (PWM) ➔ nilai turun dari 255-0
Ledpin9 (PWM) ➔ nilai naik dari 0-255
Aplikasi Sistem Kontrol
Berbasis Arduino
1. Kontrol gelap terang nyala LED dengan potensiometer
atau bisa dikombinasi dengan sensor LDR (aplikasi lampu
taman otomatis)
2. Kontrol RPM atau putaran kipas kecil (kipas laptop)
berdasarkan sensor temperatur (dht11 atau lm35) +
modifikasi tambahan alarm buzzer
3. Kontrol kecepatan motor dc pakai mode pwm
4. Kontrol sudut pergerakan motor stepper (kombinasi sensor
limit switch atau potensiometer)
23