TP M2 P6 K7




PERCOBAAN 6 
Kontrol Putaran Motor Stepper

1. Prosedur [Kembali]

1. Susun semua perangkat sesuai dengan kondisi yang dipilih.
2. Tulis kode di Arduino IDE.
3. Setelah selesai, input program ke papan Arduino dalam aplikasi Proteus.
4. Mulai jalankan program dalam simulasi dan uji sesuai dengan modul dan kondisinya.
5. Selesaikan proses tersebut.


2. Hardware dan diagram blok [Kembali]

A. Hardware

1. Button




2. Arduino Uno

3. ULN2003A

4. Motor Stepper

B. Digram Blok




3. Rangkaian Simulasi dan Prinsip kerja [Kembali]



 Prinsip Kerja 

    Pada rangkaian diatas, push button sebagai input yang akan mengatur sudut perpindahan dan touch sensor sebagai input yang mengatur arah putarnya. Output dari kedua input tersebut adalah motor stepper. Motor stepper dibantu oleh sebuah driver yaitu ULN2003A. Kode arduino diatur sesuai dengan datasheet ULN2003A sehingga ketika sensor touch berlogika low maka arduino akan memerintah bahwa motor akan bergerak searah jarum, sedangkan ketika sensor touch berlogika HIGH maka arduino akan menjalankan motor berlawanan jarum jam. Untuk perubahan sudut dipengaruhi input push button, misalnya push button pertama ditekan maka pin 2 arduino akan berlogika low yang akan membuat motor bergerak ke nol derajat, kemudian ketika kita tekan push button 2 maka pin 3 arduino akan berlogika LOW yang akan menggerakan motor 90 ketika touch berlogika low dan bergerak -90 derajat ketika touch berlogika HIGH, begitu juga pushbutoon 3 yang bergerak 180/-180 dan push button 4 bergerak 270/-270 derajat.


4. FlowChart [Kembali]

A. Listing Program 

#define A 8
#define B 9
#define C 10
#define D 11
#define PB1 2
#define PB2 3
#define PB3 4
#define PB4 5
#define TOUCH_SENSOR_PIN 6 // Contoh pin untuk touch sensor

void setup() {
    Serial.begin(9600);
    pinMode(A, OUTPUT);
    pinMode(B, OUTPUT);
    pinMode(C, OUTPUT);
    pinMode(D, OUTPUT);
    pinMode(PB1, INPUT_PULLUP);
    pinMode(PB2, INPUT_PULLUP);
    pinMode(PB3, INPUT_PULLUP);
    pinMode(PB4, INPUT_PULLUP);
    pinMode(TOUCH_SENSOR_PIN, INPUT); // Konfigurasi pin untuk touch sensor
}

void pergerakan_1() {
    digitalWrite(A, 0);
    digitalWrite(D, 1);
    digitalWrite(B, 0);
    digitalWrite(C, 1);
}

void kebalikan_pergerakan_1() {
    digitalWrite(A, 0);
    digitalWrite(D, 1);
    digitalWrite(B, 0);
    digitalWrite(C, 1);
}

void pergerakan_2() {
    digitalWrite(A, 1);
    digitalWrite(D, 1);
    digitalWrite(B, 0);
    digitalWrite(C, 0);
}

void kebalikan_pergerakan_2() {
    digitalWrite(A, 0);
    digitalWrite(D, 0);
    digitalWrite(B, 1);
    digitalWrite(C, 1);
}

void pergerakan_3() {
    digitalWrite(A, 1);
    digitalWrite(D, 0);
    digitalWrite(B, 1);
    digitalWrite(C, 0);
}

void kebalikan_pergerakan_3() {
    digitalWrite(A, 1);
    digitalWrite(D, 0);
    digitalWrite(B, 1);
    digitalWrite(C, 0);
}

void pergerakan_4() {
    digitalWrite(A, 0);
    digitalWrite(D, 0);
    digitalWrite(B, 1);
    digitalWrite(C, 1);
}

void kebalikan_pergerakan_4() {
    digitalWrite(A, 1);
    digitalWrite(D, 1);
    digitalWrite(B, 0);
    digitalWrite(C, 0);
}

void nonpergerakan() {
    digitalWrite(A, 0);
    digitalWrite(D, 0);
    digitalWrite(B, 0);
    digitalWrite(C, 0);
}

void loop() {
    int b4 = digitalRead(PB4);
    int b3 = digitalRead(PB3);
    int b2 = digitalRead(PB2);
    int b1 = digitalRead(PB1);
    int touchSensorState = digitalRead(TOUCH_SENSOR_PIN); // Baca status touch sensor

    if (touchSensorState == LOW) {

        if (b4 == LOW) {
            pergerakan_4(); // Pindahkan motor ke pergerakan 4
        } else if (b3 == LOW) {
            pergerakan_3(); // Pindahkan motor ke pergerakan 3
        } else if (b2 == LOW) {
            pergerakan_2(); // Pindahkan motor ke pergerakan 2
        } else if (b1 == LOW) {
            pergerakan_1(); // Pindahkan motor ke pergerakan 1  
        } else {
            nonpergerakan();
            delay(100);
        }
    }
    else { // motor berputar berlawanan jarum jam
   
        if (b4 == LOW) {
            kebalikan_pergerakan_4(); // Pindahkan motor ke arah sebaliknya
        } else if (b3 == LOW) {
            kebalikan_pergerakan_3(); // Pindahkan motor ke arah sebaliknya
        } else if (b2 == LOW) {
            kebalikan_pergerakan_2(); // Pindahkan motor ke arah sebaliknya
        } else if (b1 == LOW) {
            kebalikan_pergerakan_1(); // Pindahkan motor ke arah sebaliknya
        } else {
            nonpergerakan();
            delay(100);
        }
    }
}

B. Flowchart



5. Kondisi [Kembali]

Kondisi Percobaan 6 Kondisi 7 : Sertakan touch sensor, ketika berlogika HIGH putaran motor berlawanan jarum jam


6. Video Simulasi [Kembali]




7. Download File [Kembali]

Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet TOUCH SENSOR  klik disini










Tidak ada komentar:

Posting Komentar