Praktikum up&uc_Modul 2_Kontrol Putaran Motor DC
Percobaan V
Kontrol Putaran Motor DC
1. Prosedur [Kembali]
- Rangkailah seperti rangkaian berikut.
- Buka Arduino IDE dan masukan listing program.
- Upload program ke arduino.
- Variasikan suhu dan logika sensor infrared dan amati keluarannya pada motor dan dotmatriks.
2. Hardware dan Diagram Blok [Kembali]
Diagram Blok:
Gambar 2. Rangkaian Simulasi. Prinsip Kerja: Jalan kerja rangkaian ini ialah sensor suhu berfungsi sebagai pengatur arahan motor sedangkan sensor infrared sebagai enable motor driver, ketika suhu < 30 maka akan memutarkan motor kearah kanan dan arahnya ditampilkan pada dotmatriks sedangkan ketika suhu >40 maka akan memutarkan motor kearah kiri dan arahnya ditampilkan pada dotmatriks. Ketika suhu diatara 30 dan 40 maka motor tidak bergerak dan ditampilkan 'x' pada dotmatriks. |
4. Flowchart dan Listing Program [Kembali]
Flowchart:
Listing Program:
#include <LedControl.h>
// Inisialisasi modul MAX7219
LedControl lc = LedControl(5,6,7,1); // Pin DIN, CLK, LOAD (CS) dihubungkan ke Arduino
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan
// Pengaturan pin untuk dipswitch dan motor
const int LM35 = A0;
const int infrared = 8;
const int enable = 4;
const int motor1Pin1 = 2;
const int motor1Pin2 = 3;
void setup() {
// Set up dot matrix module
lc.shutdown(0, false); // Mengaktifkan modul
lc.setIntensity(0, 8); // Mengatur kecerahan (0-15)
lc.clearDisplay(0); // Membersihkan tampilan
// Mengatur pin-pin sebagai output untuk motor
pinMode(enable, OUTPUT);
pinMode(infrared, INPUT);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Membaca nilai dari lm35
float suhu = analogRead(LM35);
Serial.println(suhu);
// Membaca nilai dari infrared
int infrarednya = digitalRead(infrared);
// Mengendalikan arah motor berdasarkan nilai dipswitch
if(infrarednya == HIGH){
digitalWrite(enable, HIGH);
if (suhu < 62) {
// Maju
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
displayArrowRight();
}
else if (suhu > 82) {
// Mundur
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
displayArrowLeft();
}
else {
// Berhenti
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
displayLetterX();
}
}
else{
digitalWrite(enable, LOW);
}
}
// Fungsi untuk menampilkan panah pada dot matrix
void displayArrow(byte pattern) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, pattern);
}
delay(500); // Mengatur kecepatan animasi
lc.clearDisplay(0);
delay(500); // Jeda sebelum membaca input lagi
}
// Menampilkan panah ke kanan
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]);
}
}
// Menampilkan panah ke kiri
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]);
}
}
// Menampilkan huruf "X"
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]);
}
}
Ketika infrared mendeteksi sesuatu maka akan mengaktifkan driver motor yang membuat motor dapat diberikan logika pada driver, ketika suhu < 30 maka motor akan berputar kearah kanan dan ketika suhu > 40 maka motor akan berputar kearah kiri dan ketika suhunya diantara 30 - 40 maka akan mematikan motor.
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listring Program ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listring Program ↠ klik disini
Komentar
Posting Komentar