LAPORAN AKHIR 2
Percobaan 5 (Kontrol Putaran Motor DC)
1. Rangkai semua komponen sesuai dengan percobaan yang dipilih
2. Buat program di aplikasi aduino IDE
3. Hubungkan perangkat arduino ke perangkat laptop
4. Jalankan program pada arduino dan uji cobakan sesuai dengan modul
2. Hardware dan Diagram Blok [Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Pada percobaan 5 menggunakan modul LedControl dan komponen lainnya untuk mengontrol dot matrix dan motor berdasarkan nilai yang diterima dari potensiometer dan infrared. Pada tahap awal, pin-pin motor dan potensiomenter diatur sesuai kebutuhan, dan modul LedControl diinisialisasi untuk mengendalikan dot matrix.
Setiap kali motor bergerak, tampilan pada dot matrix akan diubah sesuai dengan arah gerak motor, yaitu panah ke kanan, panah ke kiri, atau huruf "X". Animasi pada dot matrix diberikan melalui fungsi displayArrowRight(), displayArrowLeft(), dan displayLetterX(), yang mengatur tampilan dot matrix sesuai dengan arah gerak motor. Jeda waktu juga diberikan untuk mengatur kecepatan animasi agar tampilan dot matrix dapat dilihat dengan jelas.
Selama loop program, nilai dari potensiometer dibaca untuk ditampilkan melalui output serial. Selain itu, nilai dari sensor infrared juga dibaca untuk menentukan apakah motor harus bergerak maju, mundur, atau berhenti. Jika sensor infrared mendeteksi keberadaan objek, motor akan diaktifkan dan arah geraknya ditentukan berdasarkan nilai yang diterima dari potensiometer. Sebagai contoh, jika nilai potensiometer kurang dari atau sama dengan 256, motor akan bergerak maju dan ditampilkan panah ke kanan pada dot matrix. Jika nilai potensiometer lebih besar atau sama dengan 768, motor akan bergerak mundur dan ditampilkan panah ke kiri. Jika nilai potensiometer berada di antara kedua nilai tersebut, motor akan berhenti dan ditampilkan huruf "X" pada dot matrix.
4. Flowchart [Kembali]
A. Listing Program
#include <LedControl.h>
LedControl lc = LedControl(5, 6, 7, 1);
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0};
const int potensio = A0;
const int infrared = 8;
const int enable = 4;
const int motor1Pin1 = 2;
const int motor1Pin2 = 3;
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 8);
lc.clearDisplay(0);
pinMode(enable, OUTPUT);
pinMode(infrared, INPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
Serial.begin(9600);
}
void loop() {
float adc = analogRead(potensio);
Serial.println(adc);
int infrarednya = digitalRead(infrared);
if (infrarednya == HIGH) {
digitalWrite(enable, HIGH);
if (adc <= 256) {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
displayArrowRight();
} else if (adc >= 768) {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
displayArrowLeft();
} else {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
displayLetterX();
}
} else {
digitalWrite(enable, LOW);
}
}
void displayArrow(byte pattern) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, pattern);
}
delay(500);
lc.clearDisplay(0);
delay(500);
}
void displayArrowRight() {
byte arrowRight[8] = {
B00011000,
B00001100,
B00000110,
B11111111,
B00000110,
B00001100,
B00011000,
B00000000
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, arrowRight[row]);
}
}
void displayArrowLeft() {
byte arrowLeft[8] = {
B00011000,
B00110000,
B01100000,
B11111111,
B01100000,
B00110000,
B00011000,
B00000000
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, arrowLeft[row]);
}
}
void displayLetterX() {
byte letterX[8] = {
B10000001,
B01000010,
B00100100,
B00011000,
B00011000,
B00100100,
B01000010,
B10000001
};
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, letterX[row]);
}
}
B. Flowchart
5. Kondisi [Kembali]
Percobaan 5: Kontrol Putaran Motor DC
6. Video Demo [Kembali]
7. Analisa [Kembali]
1. Bagaimana cara potensio mengubah nilai ADC yang masuk ke arduino?
jawab: Dalam percobaan yang telah dilakukan, potensiometer terhubung ke arduino dan digunakan untuk mengatur nilai yang masuk ke pin analog arduino (A0). Ketika pootensiometer diputar, maka besar arus listrik yang mengalir melalui potensiometer. Arduino akan mengukur seberapa besar arus listrik ini dan mengonversinya menjadi nilai angka. Nilai bisa berkisar dari 0 hingga 1023 pada arduino. Dalam program, praktikan menggunakan kode 'analogRead(potensio)" untuk melihat nilai yang diberikan potensiometer. Nilai tersebut disimpan dalam variabel adc.
2. Kenapa ada perbedaan arah putaran motor DC, bagaimana mengatur kecepatan motor dengan PWM?
Jawab: Untuk mengatur kecepatan motor DC menggunakan PWM dengan arduino, kita perlu menginisialisasi pin PWM arduino ke motor. Pada percobaan, kita menggunakan pin 2 dan 3 untuk mengontrol arah putaran motor. Dalam fungsi setup (), kita perlu menginisialisasi pin PWM sebagai output dan mengatur nilai awal kecepatan motor ke 0 dengan menggunakan fungsi "analogWrite(motorSpeedPin, 0)". Kita dapat mengatur kecepatan motor dengan nilai PWM antara 0 (berhenti) hingga 255 (maksimum). Pada program, dibuat kondisi jika nilai adc yang terbaca 0-256, maka motorPin 1 akan aktif dan motorPin 2 akan tidak aktif, sehingga motor bergerak ke kanan. Untuk kondisi kedua, jika nilai adc yang terbaca mulai dari 768 ke atas, maka motorPin 1 tidak aktif dann motorPin 2 akan aktif sehingga motor bergerak ke kiri. Untuk kondisi terkahir, jika tidak memenuhi salah satu kondisi 1 dan 2, maka motor akan berhenti bergerak.
3. Bagaimana dotmatrix bisa menampilkan banyak kombinasi seperti pada percobaan?
Jawab: Dalam percobaan yang dilakukan, digunakan dotmatrix yang terhubung ke modul MAX7219 yang merupakan pengontrolan LED untuk dotmatrix. Dalam program yang dibuat, terdapat fungsi yang digunakan untuk menampilkan berbagai kombinasi pada dotmatrix. Fungsi "displayArrow()", "displayArrowRight()", "displayArrowLeft()", dan "displayArrowX()" mengatur tampilan pada dotmatrix sesuai byte pattern yang dibuat. Misalnya, "displayArrowRight()" menampilkan panah ke kanan pada dotmatrix. Setiap fungsi tersebut menggunakan byte pattern yang merepresentasikan pola tampilan yang diinginkan pada dotmatrix.
8. Download File [Kembali]
Download Html klik disini
Download Video Simulasi klik disini
Download Datasheet Arduino Uno klik disini
Download Datasheet Driver Motor L293D klik disini
Download Datasheet LED Matrix klik disini
Download Datasheet LCD klik disini
Download Datasheet Potensiometer klik disini
Download Datasheet sensor Infrared klik disini
Tidak ada komentar:
Posting Komentar