Laporan Akhir 2 modul 2


Percobaan VI

Kontrol Putaran Motor Stepper

1. Prosedur [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Tekan PushButton dan amati keluarannya pada Motor Stepper

  • Gambar 1. Rangkaian Hardware
     

       1. Arduino Uno

        2. Push Buton

        3. Motor Stepper


        4. Modul ULN2003A



        4. Kabel jumper

        5. Breadboard


       


    Diagram Blok:









  • Dalam eksperimen ini, kami menggunakan push button yang beroperasi pada konfigurasi pulldown sebagai input, sementara untuk outputnya kami mengandalkan motor stepper. Saat push button tertentu ditekan dalam kondisi spesifik, motor stepper akan bergerak dengan pergerakan step tertentu dan arah yang ditentukan, entah maju atau mundur. Hal ini diatur melalui modul ULN2003A dan disesuaikan dengan pengaturan input yang telah ditentukan dalam program Arduino.
     
Flowchart:




Listing Program:

#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
#define PB1 2
#define PB2 3
#define PB3 4
#define PB4 5
int step = 100;
int delaytime=5; //makin kecil delay, makin cepat motor berputar

void setup(){
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(PB1, INPUT);
pinMode(PB2, INPUT);
pinMode(PB3, INPUT);
pinMode(PB4, INPUT);
}

void loop(){
int b4 = digitalRead(PB4);
int b3 = digitalRead(PB3);
int b2 = digitalRead(PB2);
int b1 = digitalRead(PB1);

if (b4 == HIGH){
  maju();
}
else if (b3 == HIGH){
  mundur();
}
else if (b2 == HIGH){
  for (int i = 0; i < 60; i ++){
    maju();
  }
  for (int i = 0; i < 60; i++){
    mundur();  
  }
}
else if (b1 == HIGH){
  for (int i = 0; i < 50; i++){
    maju();
  }
  delay(2000);
  for (int i = 0; i < 50; i++){
    mundur();
  }
}
}


void maju(){
//step 4
step1();
delay(delaytime);
//step 3
step2();
delay(delaytime);
//step 2
step3();
delay(delaytime);
//step 1
step4();
delay(delaytime);
}

void mundur(){
//step 4
step4();
delay(delaytime);
//step 3
step3();
delay(delaytime);
//step 2
step2();
delay(delaytime);
//step 1
step1();
delay(delaytime);
}

void step1(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
}
void step2(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
void step3(){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
void step4(){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}

6. Kondisi [Kembali]

    Ketika push button dengan kondisi tertentu di tekan dengan dibantu menggunakan modul ULN2003A maka pada motor stepper akan bergerak dengan pergerakan step dan arah tertentu maju atau mundur sebanyak step yang di setting sesuai dengan setting nilai input yang digunakan pada program arduino tersebut.

7. Download File [Kembali]

᭒ HTML↠ klik disini
᭒ Gambar Rangkaian ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Datasheet Arduino ↠ klik disini
᭒ Datasheets Motor Stepper ↠ klik disini
᭒ Datasheets Push Button ↠ klik disini
᭒ Datasheest ULN2003A ↠ klik disini








Laporan Akhir 1 modul 2


Percobaan V

Kontrol Putaran Motor DC

1. Prosedur [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Putar potensiometer dan amati keluarannya pada Dot Matriks dan Motor dc





  • Gambar 1. Rangkaian Hardware
     

       1. Arduino Uno

        2. DIP Switch


        3. Motor DC




        4. Dot Matriks



        4. Kabel jumper

        5. Breadboard


       


    Diagram Blok:







  •      Tentu, berikut adalah versi parafrase dari deskripsi tersebut:

    "Percobaan ini memanfaatkan potensiometer sebagai input untuk mengatur output yang terdiri dari dot matriks dan motor DC melalui modul L293D. Saat potensiometer diputar pada rentang nilai tertentu, akan menampilkan gambar panah pada dot matriks sesuai dengan arah yang ditentukan, dan dengan bantuan modul L293D, motor dapat berputar ke kanan atau kiri sesuai dengan nilai input yang diatur dalam program Arduino."

  • 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 potensio = 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 adc = analogRead(potensio); Serial.println(adc); // Membaca nilai dari infrared int infrarednya = digitalRead(infrared); // Mengendalikan arah motor berdasarkan nilai dipswitch if(infrarednya == HIGH){ digitalWrite(enable, HIGH); if (adc <= 256) { // Maju digitalWrite(motor1Pin1, HIGH); digitalWrite(motor1Pin2, LOW); displayArrowRight(); } else if (adc >= 768) { // 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]); } }

6. Kondisi [Kembali]

 Ketika potensiometer diubah ubah nilainya dengan cara memutar maka akan dibaca oleh Arduino dan, arduino akan memberikan perintah untuk menampilkan panah dengan arah tertentu pada dot matriks dan motor dc yang berputar dengan arah tertentu sesuai nilai potensiometer yang di setting pada program arduino.

7. Download File [Kembali]

᭒ HTML↠ klik disini
᭒ Gambar Rangkaian ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Datasheet Dot Matriks  ↠ klik disini
᭒ Datasheet Infrared ↠ klik disini
᭒ Datasheet Arduino Uno  ↠ klik disini
᭒ Datasheet Potensiometer ↠ klik disini








Tugas Pendahuluan 2 Modul 2



Percobaan V

Kontrol Putaran motor DC 

1. Prosedur
[Kembali]
  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino
  • Kombinasikan dipswitch dan amati hasil
2. Hardware dan Diagram Blok [Kembali]
  1. Arduino Uno

    2. LCD 2x16


    3. Switch


    4. Power supply

    5. Ground


Diagram Blok:
 1. Arduino Uno

    2. Sensor Infrared






    3. Motor DC



    4.  Dip Switch 8



    5. Dot Matrix


    6. MAX7219



    7. L293D



    8. Power supply

    9. Ground


Diagram Blok:







3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]





Gambar 1. Rangkaian Simulasi.

Prinsip Kerja:

   Ketika sensor infrared aktif, Arduino Uno akan menerima input dari Dip Switch. Jika nilai input Dip Switch di switch 1, 2, dan 4 adalah pull up, maka output yang dihasilkan adalah motor DC yang berputar ke arah kanan. Sementara itu, dot matrix akan aktif dan menyalakan LED pada setiap titik yang membentuk panah mengarah ke kiri. Di sisi lain, jika nilai input Dip Switch di switch 1, 2, dan 3 adalah pull up, output yang dihasilkan adalah motor DC yang berputar ke arah kiri, sementara dot matrix menunjukkan tanda panah mengarah ke kanan.
4. Flowchart dan Listing Program [Kembali]
Flowchart:








Listing Program:



#include <LedControl.h>

// Inisialisasi modul MAX7219
LedControl lc = LedControl(9, 10, 11); // Pin DIN, CLK, LOAD (CS) dihubungkan ke Arduino

// Inisialisasi servo motor
Servo servoMotor;

// Pengaturan pin untuk dipswitch dan motor
const int switch1 = A0;
const int switch2 = A1;
const int switch3 = A2;
const int switch4 = A3;
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);
  
  // Mengatur pin-pin sebagai input dengan pull-up untuk dipswitch
  pinMode(switch1, INPUT_PULLUP);
  pinMode(switch2, INPUT_PULLUP);
  pinMode(switch3, INPUT_PULLUP);
  pinMode(switch4, INPUT_PULLUP);
  
  // Attach servo motor ke pin 5
  servoMotor.attach(5);
  
  Serial.begin(9600);
}

void loop() {
  // Membaca nilai dari infrared
  int infrarednya = digitalRead(infrared);
  
  // Mengendalikan arah motor berdasarkan nilai dipswitch
  if (infrarednya == HIGH) {
    digitalWrite(enable, HIGH);
    if (digitalRead(switch1) == LOW && digitalRead(switch2) == LOW && digitalRead(switch4) == LOW) {
      // Motor ke kanan
      digitalWrite(motor1Pin1, HIGH);
      digitalWrite(motor1Pin2, LOW);
      displayArrowLeft(); // Panah ke kiri
    } 
    else if (digitalRead(switch1) == LOW && digitalRead(switch2) == LOW && digitalRead(switch3) == LOW) {
      // Motor ke kiri
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, HIGH);
      displayArrowRight(); // Panah ke kanan
    } 
    else {
      // Berhenti
      digitalWrite(motor1Pin1, LOW);
      digitalWrite(motor1Pin2, LOW);
      displayLetterX(); // Tidak ada panah
    }
  } 
  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);
  }
}

// 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 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 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]);
  }
}
5. Kondisi [Kembali]
Semua switch pull up, switch 1, 2, 4 motor ke kanan dan panah ke kiri, switch 1, 2, 3 motor kekiri dan panah ke kanan
6. Video Simulasi [Kembali]



7. Download File [Kembali]
᭒ HTML↠ klik disini
᭒ Rangkaian Simulasi ↠ klik disini
᭒ Gambar Simulasi ↠ klik disini
᭒ Video Simulasi ↠ klik disini
᭒ Listing Program ↠ klik disini

UTS 3

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan 5. Video 6. Download File...