Modul 4
Modul IV
Membuat Radar Mini dengan Sensor Ultrasonik dan Motor Servo
1.Tujuan [Kembali]
- Praktikan dapat merancang sebuah sistem secara detail sehingga rancangan tersebut dapat menjadi sebuah alat.
- Praktikan dapat mengkombinasikan berbagai sensor, aktuator dan display.
- Praktikan dapat membuat sebuah sistem menggunakan mikrokontroller.
2. Alat dan bahan [Kembali]
a. Mikrokontroler Arduino Uno
b. Input: Sensor Ultrasonic
c. Output: LED (display) & Motor Servo (aktuator)
d. Bread Board
3. Landasan Teori [Kembali]
1. Arduino UNO
Arduino adalah pengendali mikro single-board yang bersifat opensource, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardware arduino memiliki prosesor Atmel AVR dan software arduino memiliki bahasa pemrograman C. Memori yang dimiliki oleh Arduino Uno sebagai berikut : Flash Memory sebesar 32KB, SRAM sebesar 2KB, dan EEPROM sebesar 1KB. Clock pada board Uno menggunakan XTAL dengan frekuensi 16 Mhz. Dari segi daya, Arduino Uno membutuhkan tegangan aktif kisaran 5 volt, sehingga Uno dapat diaktifkan melalui koneksi USB. Arduino Uno memiliki 28 kaki yang sering digunakan. Untuk Digital I/O terdiri dari 14 kaki, kaki 0 sampai kaki 13, dengan 6 kaki mampu memberikan output PWM (kaki 3,5,6,9,10,dan 11). Masing-masing dari 14 kaki digital di Uno beroperasi dengan tegangan maksimum 5 volt dan dapat memberikan atau menerima maksimum 40mA.
Untuk Analog Input terdiri dari 6 kaki, yaitu kaki A0 sampai kaki A5. Kaki Vin merupakan tempat input tegangan saat menggunakan sumber daya eksternal selain USB dan adaptor.Spesifikasi arduino uno R3 dapat dilihat pada tabel:
2. SENSOR ULTRASONIC
Sensor ultrasonik PING terdiri dari tiga bagian utama yaitu :
- Transmitter Gelombang Ultrasonik
- Receiver Gelombang Ultrasonik
- Rangkaian kontrol
Transmitter berfungsi sebagai pemancar gelombang ultrasonik. Gelombang yang dipancarkan memiliki frekuensi 40KHz. Gelombang ini akan dipancarakan dengan kecepatan 344.424m/detik atau 29.034uS per centimeter. Jika didepan terdapat halangan atau objek maka gelombang tersebut akan memantul. Pantulan gelombang akan dideteksi oleh receiver. Rangkaian kontrol akan mendeteksi pantulan gelombang dan menghitung lama waktu saat gelombang dipancarkan dan gelombang terdeteksi pantulannya. Lama waktu pemantulan gelombang ini akan dikonversi menjadi sinyal digital dalam bentuk pulsa. Sinyal inilah yang nantinya diolah oleh mikrokontroler atau mikroprosesor sehingga didapat nilai jarak antara objek dan sensor. Nilai jarak dapat diperoleh melalui rumus berikut ini :
Jarak (cm) = Lama Waktu Pantul (uS) / 29.034 / 2
Rumus jarak didapat dari pembagian lama waktu pantul dengan kecepatan gelombang ultrasonik dan dibagi 2 karena pada saat pemantulan terjadi dua kali jarak tempuh antara sensor dengan objek. Yaitu pada saat gelombang dipancarkan dari transmitter ke objek dan pada saat gelombang memantul ke receiver ultrasonik.
3. LED
4. MOTOR SERVO
4. Listing Program [Kembali]
#include <Servo.h>
Servo myservo;
int i;
const int triggerPin = 10;
const int echoPin = 11;
const int ledA = 3;
const int ledB = 4;
long duration;
int distance;
void setup() {
// put your setup code here, to run once:
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(ledA, OUTPUT);
pinMode(ledB, OUTPUT);
Serial.begin(9600);
myservo.attach(12);
}
void loop() {
// put your main code here, to run repeatedly:
for (i = 00; i < 180; i += 1)
{
myservo.write(i);
calculateDistance();
delay (15);
}
for (i = 180; i >= 1; i -= 1)
{
myservo.write(i);
calculateDistance();
delay(15);
}
}
void calculateDistance()
{
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance <= 30 && distance >= 20)
{ Serial.println("a");
digitalWrite(ledA, HIGH);
digitalWrite(ledB, LOW);
}
else if (distance < 20 && distance >= 10)
{ Serial.println("b");
digitalWrite(ledA, LOW);
digitalWrite(ledB, HIGH);
}
else if (distance < 10)
{ Serial.println("c");
digitalWrite(ledA, LOW);
digitalWrite(ledB, LOW);
}
Serial.print("jarak :");
Serial.print(distance);
Serial.println("cm");
}
Tidak ada komentar:
Posting Komentar