Senin, 25 Maret 2024

TUGAS PENDAHULUAN 2 MODUL 2

Modul 2

PWM, ADC, INTTERUPT


 

  • Buatlah rangkaian sesuai dengan kondisi yang telah dipilih
  • Buat Program pada software Arduino IDE
  • Masukkan program yang telah dibuat pada software Arduino IDE sebagai library Arduino
  • Jalankan rangkaian, sesuai dengan kondisi yang diinginkan

a. Rangkaian Simulasi



Gambar Rangkaian Sebelum Disimulasikan




Gambar Rangkaian Disimulasikan

b. Prinsip Kerja

Disini kita menggunakan LDR sebagai input untuk menggerakan motor steper searah jarum jam, untuk inputnya diperlukan tegangan 2.5 dari LDR agar steper berputar, kemudian dari arduino akan memberikan output pada ULN dimana terhubung ke-4 buah kaki yang masing2 nya bernilai high atau low





untuk kondisinya sebagai berikut

  if (ldrVoltage >= 0.625 && ldrVoltage <= 1.24) {

    digitalWrite(D, HIGH);
    digitalWrite(C, HIGH);
    digitalWrite(B, LOW);
    digitalWrite(A, LOW);
  } else if (ldrVoltage > 1.24 && ldrVoltage <= 1.474) {
    digitalWrite(D, HIGH);
    digitalWrite(C, LOW);
    digitalWrite(B, LOW);
    digitalWrite(A, HIGH);
  } else if (ldrVoltage > 1.574 && ldrVoltage <= 2.4) {
    digitalWrite(D, LOW);
    digitalWrite(C, LOW);
    digitalWrite(B, HIGH);
    digitalWrite(A, HIGH);
  } else if (ldrVoltage > 2.5) {
    digitalWrite(D, LOW);
    digitalWrite(C, HIGH);
    digitalWrite(B, HIGH);
    digitalWrite(A, LOW);
  } else {
    // Jika tegangan di luar rentang yang diinginkan, berhenti motor
    digitalWrite(A, LOW);
    digitalWrite(B, LOW);
    digitalWrite(C, LOW);
    digitalWrite(D, LOW);
  }

a. Flowchart




b. 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 PB5 A1

const int stepsPerRevolution = 200; // Banyak langkah perputaran
// Inisialisasi objek Stepper
Stepper myStepper(stepsPerRevolution, A, B, C, D);

void pergerakan_1() {
  digitalWrite(A, LOW);
  digitalWrite(D, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, HIGH);
}

void pergerakan_2() {
  digitalWrite(A, HIGH);
  digitalWrite(D, HIGH);
  digitalWrite(B, LOW);
  digitalWrite(C, LOW);
}

void pergerakan_3() {
  digitalWrite(A, HIGH);
  digitalWrite(D, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, LOW);
}

void pergerakan_4() {
  digitalWrite(A, LOW);
  digitalWrite(D, LOW);
  digitalWrite(B, HIGH);
  digitalWrite(C, HIGH);
}

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

void pergerakan() {
  pergerakan_1();
  delay(100);
  pergerakan_2();
  delay(100);
  pergerakan_3();
  delay(100);
  pergerakan_4();
  delay(100);
}

void setup() {
  // Put your setup code here, to run once:
  pinMode(PB5, INPUT);
  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);
  Serial.begin(9600);
}

void loop() {
  int b4 = digitalRead(PB4);
  int b3 = digitalRead(PB3);
  int b2 = digitalRead(PB2);
  int b1 = digitalRead(PB1);
  int sensorLDRValue = analogRead(PB5); // Membaca nilai dari sensor LDR
  float voltage = sensorLDRValue * (5.0 / 1023.0); // Mengonversi nilai bacaan menjadi tegangan (diasumsikan 5V)

  Serial.print("Voltage: ");
  Serial.println(voltage); // Mencetak nilai tegangan (opsional)

  // Motor stepper
  if (b4 == LOW) {
    pergerakan_4(); // Pindahkan servo ke 45 derajat
  } else if (b3 == LOW) {
    pergerakan_3(); // Pindahkan servo ke 45 derajat
  } else if (b2 == LOW) {
    pergerakan_2(); // Pindahkan servo ke 45 derajat
  } else if (b1 == LOW) {
    pergerakan_1(); // Pindahkan servo ke 45 derajat
  } else {
    nonpergerakan();
    delay(100);
  }

  // Check nilai sensor LDR
  if (voltage > 2.5) {
    Serial.println("LDR SENSOR active. Stepper motor rotating.");
    // Eksekusi stepper
    pergerakan();
  } else {
    Serial.println("Stepper Motor rotating.");
    // Eksekusi stepper
    myStepper.step(0);
  }
  delay(100);
}


Sertakan dengan LDR ketika bernilai >2.50 putaran motor searah jarum jam







Download HTML klik disini
Download Rangkaian Proteus klik disini
Download Program Arduino klik disini
Download Video klik disini
Download Datasheet Driver IC ULN2003A klik disini
Download Datasheet Arduino klik disini
Download Datasheet Motor Stepper klik disini
Download Datasheet Sensor LDR klik disini
Download Datasheet Push Button klik disini



Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Laporan Akhir Project M4

Laporan Akhir Demo Project [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Percobaan   ...