Tugas Pendahuluan 2




Percobaan6
Kontrol Putaran Motor Stepper

1. Prosedur
[Kembali]

1. Rangkai semua komponen sesuai kondisi yang dipilih
2. buat program di aplikasi arduino IDE
3. setelah selesai masukkan program ke arduino di proteus
4.  jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
5. Selesai

2. Hardware dan diagram blok [Kembali]
      1. Arduino Uno

            
    

      2. SW-SPDT
       
 



      3. Seven Segment


      4. Resistor

        
 
 
      5. Power Supply
      6. Ground

7. ULN2003A


8. LM35


9. Motor Stepper


Diagram Blok :



3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

→ Gambar Rangkaian Sebelum Disimulasikan
                                    


→ Gambar Rangkaian Setelah Disimulasikan
       




PRINSIP KERJA
    Prinsip kerja pada kondisi tersebut menggambarkan suatu sistem yang menggunakan sensor suhu LM35 dan display 7-Segment untuk mengontrol gerakan motor. Ketika suhu yang terdeteksi oleh sensor LM35 melebihi nilai ambang batas, misalnya >30 derajat Celsius, sistem akan mengirimkan sinyal untuk menggerakkan motor dalam arah searah jarum jam. Informasi suhu yang diperoleh dari LM35 diolah oleh mikrokontroler atau rangkaian elektronik lainnya, kemudian hasilnya ditampilkan pada 7-Segment untuk memberikan informasi visual kepada pengguna. Dengan demikian, prinsip kerja sistem ini memberikan respons terhadap perubahan suhu yang terdeteksi, yang kemudian diolah dan ditampilkan, serta menggerakkan motor sesuai dengan kondisi yang ditetapkan untuk menjaga suhu dalam kisaran tertentu atau untuk tujuan lainnya.

4. FlowChart [Kembali]

a. Listing Program 

#include <Stepper.h>

// Definisi pin untuk motor stepper
#define A 8
#define B 9
#define C 10
#define D 11

// Konfigurasi motor stepper
const int stepsPerRevolution = 2048; // Jumlah langkah per putaran motor
Stepper stepper(stepsPerRevolution, A, B, C, D); // Inisialisasi objek stepper dengan pin kontrol motor

// Pin untuk sensor suhu LM35
const int LM35 = A0;

// Pin untuk display 7-segmen
const int segA = A1;
const int segB = A2;
const int segC = A3;
const int segD = A4;
const int segE = A5;
const int segF = 7;
const int segG = 6;
const int digit1 = 1;
const int digit2 = 13;

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

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

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

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

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

// Fungsi untuk menampilkan angka pada satu digit 7-segmen
void displayDigit(int digit, bool segments[7]) {
  int segmentPins[7] = {segA, segB, segC, segD, segE, segF, segG};
  for (int i = 0; i < 7; i++) {
    digitalWrite(segmentPins[i], segments[i] ? HIGH : LOW);
  }
  // Aktifkan digit yang sesuai
  digitalWrite(digit1, digit == 1 ? LOW : HIGH);
  digitalWrite(digit2, digit == 2 ? LOW : HIGH);
}

// Fungsi untuk menampilkan angka pada 7-segmen 2 digit
void displayNumber(int number) {
  bool numbers[10][7] = {
    {0, 0, 0, 0, 0, 0, 1}, // 0
    {1, 0, 0, 1, 1, 1, 1}, // 1
    {0, 0, 1, 0, 0, 1, 0}, // 2
    {0, 0, 0, 0, 1, 1, 0}, // 3
    {1, 0, 0, 1, 1, 0, 0}, // 4
    {0, 1, 0, 0, 1, 0, 0}, // 5
    {0, 1, 0, 0, 0, 0, 0}, // 6
    {0, 0, 0, 1, 1, 1, 1}, // 7
    {0, 0, 0, 0, 0, 0, 0}, // 8
    {0, 0, 0, 0, 1, 0, 0}  // 9
  };
  
  int firstDigit = number % 10;
  int secondDigit = number / 10;
  
  // Tampilkan digit pertama
  displayDigit(1, numbers[firstDigit]);
  delay(5); // Delay singkat untuk multiplexing

  // Tampilkan digit kedua
  displayDigit(2, numbers[secondDigit]);
  delay(5); // Delay singkat untuk multiplexing
}

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(LM35, INPUT);
  
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
  pinMode(digit1, OUTPUT);
  pinMode(digit2, OUTPUT);

  stepper.setSpeed(60); // Kecepatan motor stepper
}

void loop() {
  int b4 = digitalRead(PB4);
  int b3 = digitalRead(PB3);
  int b2 = digitalRead(PB2);
  int b1 = digitalRead(PB1);
  
  // Baca suhu dari sensor LM35
  float voltage = analogRead(LM35) * (5.0 / 1023.0);
  float temperature = voltage * 100; // Konversi tegangan ke suhu
  
  // Tampilkan suhu pada display 7-segmen
  displayNumber(int(temperature));
  
  // Jika suhu lebih besar dari 30 derajat Celsius
  if (temperature > 30) {
    pergerakan_1(); // Motor berputar searah jarum jam
  } else {
    // Jika suhu kurang dari atau sama dengan 30 derajat Celsius
    // Atau tidak ada tombol ditekan
    if (b4 == LOW) {
      pergerakan_4();
    } else if (b3 == LOW) {
      pergerakan_3();
    } else if (b2 == LOW) {
      pergerakan_2();
    } else if (b1 == LOW) {
      pergerakan_1();
    } else {
      nonpergerakan(); // Tidak ada gerakan
      delay(100); // Delay sebelum membaca input lagi
    }
  }
}

b. Flowchart



5. Kondisi [Kembali]

Kondisi  : Percobaan 6 Kondisi 1

  

6. Video Simulasi [Kembali]



7. Download File [Kembali]
Download Simulasi Rangkaian Klik disini
Download HTML Klik disini
Download Video Simulasi Klik disini
Download Listing Code Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Seven Segment Klik disini
Download Datasheet SW - SPDT Klik Disini
Donwload Datasheet Resistor Klik Disini
Download Datasheet LM35 Klik disini
Download Datasheet ULN2003A Klik disini
Download Datasheet Motor Stepper Klik disini
 





Tidak ada komentar:

Posting Komentar

                       BAHAN PRESENTASI UNTUK MATA KULIAH ELEKTRONIKA  2021/2022 Oleh : Fauzan Alfitrah 2110952002 Dosen Pengampu : Dr. Darw...