Percobaan 6
Kontrol Putaran Motor Stepper
1. Prosedur [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing program
- Upload program ke arduino
- Variasikan nilai ADC dan amati keluarannya pada LCD
2. Hardware dan Diagram Blok [Kembali]
1. Arduino Uno
2. Sensor LM35
3. ULN2003A
4. 7 Segment
6. Ground
Prinsip Kerja :
Pada rangkaian ini menggunakan input perupa sensor suhu LM35, dan ouutputnya berupa 7segment dan motor steper.
Prinsip kerja dari rangkaian ini yaitu arduino telah di program sebelumnya agar saat suhu pada LM35 menunjukkan nilai <25 maka motor akan berputar berlawanan arah jarum jam dan 7-Segment akan menampilkan karakter berupa angka di digit 1 7-Segment. Ketika suhu bernilai >= 25, maka motor akan berputar searah jarum jam dan 7-Segment akan menampilkan karakter berupa angka di digit 2 7-Segment.
4. Flowchart dan Listing Program [Kembali]
Flowchart:
Listing Program:
#define A 8
#define B 9
#define C 10
#define D 11
#define LM A0
// Deklarasi pin 7-segment
const int segPins[7] = {1, 2, 3, 4, 5, 6, 7};
int digitPins[] = {12, 13};
void setup() {
// Inisialisasi pin output dan baud rate
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
Serial.begin(9600);
// Inisialisasi 7-segment
for (int i = 0; i < 7; i++) {
pinMode(segPins[i], OUTPUT);
}
// Inisialisasi pin digit
for (int i = 0; i < 2; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void pergerakan_1() {
digitalWrite(A, LOW);
digitalWrite(D, HIGH);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
}
void pergerakan_2() {
digitalWrite(A, HIGH);
digitalWrite(D, LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
}
void pergerakan_3() {
digitalWrite(A, HIGH);
digitalWrite(D, LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
}
void pergerakan_4() {
digitalWrite(A, LOW);
digitalWrite(D, HIGH);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
}
void nonpergerakan() {
digitalWrite(A, LOW);
digitalWrite(D, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
}
void displayNumber(int number, int digit) {
// Array untuk menampilkan angka pada 7-segment
const int numSegments[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
// Pilih digit yang aktif
for (int i = 0; i < 2; i++) {
digitalWrite(digitPins[i], LOW);
}
digitalWrite(digitPins[digit], HIGH);
// Menampilkan angka pada 7-segment
for (int i = 0; i < 7; i++) {
digitalWrite(segPins[i], numSegments[number][i]);
}
}
void loop() {
int suhu = analogRead(LM) * 500 / 1024;
// Menampilkan angka pada 7-segment
if (suhu < 25) {
displayNumber(0, 0); // Digit 1 menunjukkan angka 0
displayNumber(0, 1); // Digit 2 menunjukkan angka 0
} else {
displayNumber(0, 1); // Digit 1 menunjukkan angka 0
displayNumber(0, 0); // Digit 2 menunjukkan angka 0
}
Serial.print("Nilai Suhu: ");
Serial.println(suhu);
if (suhu < 25) {
nonpergerakan();
delay(300);
pergerakan_1();
delay(300);
pergerakan_4();
delay(300);
pergerakan_3();
delay(300);
pergerakan_2();
delay(300);
} else {
nonpergerakan();
delay(300);
pergerakan_2();
delay(300);
pergerakan_3();
delay(300);
pergerakan_4();
delay(300);
pergerakan_1();
delay(300);
}
}
Pada percobaan kali ini yaitu percobaan 6 kondisi 2. Sertakan dengan LM35 dan 7-Segment, ketika suhu bernilai <25 motor berlawanan arah jarum jam
HTML↠ klik disini
Rangkaian Simulasi ↠ klik disini
Video Simulasi ↠ klik disini
Listing Program ↠ klik disini
Listing Program ↠ klik disini
Tidak ada komentar:
Posting Komentar