Jumat, 29 Maret 2024





PERCOBAAN 6
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 (Verify and Upload)
  4. jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
  5. Selesai

2. Hardware dan diagram blok [Kembali]

A. Hardware

1. Motor Stepper




2. PushButton 





3. Arduino Uno



4. ULN2003A




                                                


B. Digram Blok





3. Rangkaian Simulasi dan Prinsip kerja [Kembali]







Prinsip Kerja 

   Dalam eksperimen kami yang keenam, kami berhasil mengatur gerakan motor stepper dengan menggunakan sebuah tombol sebagai pengendali. Kami memilih driver motor servo yang dilengkapi rotor dengan gigi lebih banyak dibandingkan motor DC atau servo biasa, yang memberikan keakuratan lebih pada motor stepper. Program Arduino yang kami kembangkan memungkinkan operasi ini, disesuaikan untuk keperluan eksperimental kami.

   Kami menggunakan tombol untuk mengendalikan motor stepper dengan presisi. Driver motor servo yang kami gunakan, yang memiliki rotor dengan lebih banyak gigi, merupakan faktor penting dalam mencapai presisi yang kami butuhkan. Ini memungkinkan motor stepper beroperasi dengan akurasi yang lebih tinggi.

   Dengan pemrograman Arduino yang cermat, kami dapat mengendalikan motor stepper dengan sangat akurat. Ini memungkinkan penyesuaian gerakan motor stepper untuk memenuhi kebutuhan eksperimen kami. Eksperimen ini tidak hanya meningkatkan pemahaman kami tentang motor stepper, tetapi juga menekankan pentingnya pemilihan komponen yang tepat untuk presisi yang diperlukan dalam aplikasi khusus.


4. FlowChart [Kembali]

A. 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);
}

      

B. Flowchart









5. Video Demo [Kembali]





6. Kondisi [Kembali]

        Percobaan 6 sesuai dengan modul


7. Download File [Kembali]

Download HMTL klik disini
Download Simulasi Rangkaian klik disini
Download Video Demo klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet Push Button klik disini
Download Datasheet ULN2003A klik disini
Data sheet Motor Stepper klik disini






-
  




PERCOBAAN 3
TIMER Arduino 


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 (Verify and Upload)
  4. jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
  5. Selesai

2. Hardware dan diagram blok [Kembali]

a. hardware
                                                                    
1. Dip-SW
2. Arduino Uno



3. 2 Digit 7-Segment






  b. Digram Blok






3. Rangkaian Simulasi dan Prinsip kerja [Kembali]







Prinsip Kerja 
Sistem  yang disebut juga  timer Arduino ini terdiri dari program dan sirkuit untuk mengontrol tampilan 7 segmen menggunakan mikrokontroler Arduino.
 Program ini menggunakan saklar DIP sebagai input untuk mengubah angka yang ditampilkan pada layar.
 Tujuan utamanya adalah memungkinkan pengguna menyesuaikan tampilan pada tampilan 7 segmen  menggunakan empat tombol sebagai input.
 Proses ini dibagi menjadi tiga fase utama: 
1) Inisialisasi (di bagian setup()): Pada fase ini, pin-pin yang terhubung ke segmen tampilan dan angka (common katoda) dihubungkan .
 .
 Ini ditetapkan sebagai OUTPUT.
 Selain itu, pin saklar DIP diatur ke INPUT_PULLUP, sehingga inputnya berlogika HIGH ketika saklar ON DIP tidak ditekan.
 2) Eksekusi (dalam fungsi 'number(int display)'): Fungsi ini mengontrol output pin segmen berdasarkan nomor yang  ditampilkan.
 Array digitPatterns menyimpan pola pencahayaan untuk setiap digit (0-9) dalam tampilan 7-segmen.
 3) Loop utama ('loop()'): Program melanjutkan eksekusi dalam loop utama ini.
 Setiap saklar mempunyai fungsi spesifik.
 – ``sw1'' dan ``sw3'' digunakan untuk mengubah angka yang ditampilkan pada tampilan dengan penundaan 1 detik (1000 milidetik) setelah setiap penambahan.
 – “sw2” dan “sw4” digunakan untuk menampilkan serangkaian digit dari 9 hingga 0 pada layar, dengan jeda 200 ms di antara setiap digit.
 Pembacaan tombol dimulai setiap kali sakelar ditekan.
 Tergantung pada modulnya, pengaturan kondisi yang diinginkan  adalah "SW1=ON" dan "SW2=SW3=SW4=OFF.
" Jika kondisi ini terpenuhi, maka: - Debounce akan dilakukan.
 Artinya, tunggu beberapa saat untuk menghindari efek pantulan sakelar.
 – Nomor yang ditampilkan di layar (D1 atau D2) telah berubah.
 Terlihat dua digit ruas 7 dihitung secara bergantian dari 0 hingga 9 pada setiap sisi ruas 7.
 Nomor ini ditampilkan berdasarkan fungsi nomor (int display).


4. FlowChart [Kembali]

#define a 6
#define b 7
#define c 8
#define d 9
#define e 10
#define f 11
#define g 12
#define dp 13
#define D1 4
#define D2 5
#define Dsw1 A0
#define Dsw2 A1
#define Dsw3 A2
#define Dsw4 A3
bool sw1,sw2,sw3,sw4;
int segments[] = {a, b, c, d, e, f, g};
byte digitPatterns[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
};
void setup() {
 for (int i = 0; i < 7; i++) {
 pinMode(segments[i], OUTPUT);
 }
 pinMode(dp, OUTPUT);
 pinMode(D1, OUTPUT);
 pinMode(D2, OUTPUT);
 pinMode(Dsw1, INPUT_PULLUP);
 pinMode(Dsw2, INPUT_PULLUP);
 pinMode(Dsw3, INPUT_PULLUP);
 pinMode(Dsw4, INPUT_PULLUP);
 Serial.begin(9600);
}
void number(int display) {
 if (display >= 0 && display <= 9) {
 for (int i = 0; i < 7; i++) {
 digitalWrite(segments[i], digitPatterns[display][i]);
 }
 }
}
void loop() {
 int sw1 = digitalRead(Dsw1);
 int sw2 = digitalRead(Dsw2);
 int sw3 = digitalRead(Dsw3);
 int sw4 = digitalRead(Dsw4);
 static int digit = 1; // Digit yang sedang ditampilkan (1 atau 2)
 static int count = 0; // Counter untuk digit
 static unsigned long lastTime = 0; // Waktu terakhir pembacaan tombol
if (sw1 == LOW) {
 if (millis() - lastTime > 1000) { // Debouncing
 lastTime = millis();
 count++;
 if (count > 9) {
 count = 0;
 }
 if (digit == 1) {
 digitalWrite(D1, HIGH);
digitalWrite(D2, LOW);
 number(count);
 digit = 2;
 } else {
 digitalWrite(D1, LOW);
 digitalWrite(D2, HIGH);
 number(count);
 digit = 1;
 }
 }
}
else if (sw2 == LOW) {
 if (millis() - lastTime > 1000) { // Debouncing
 lastTime = millis();
 digitalWrite(D1, HIGH);
 digitalWrite(D2, LOW);
 for (int i = 9; i >= 0; i--) {
 number(i);
 delay(1000); // Delay agar Anda bisa melihat perubahan digit
 }
 }
}
if (sw3 == LOW) {
 if (millis() - lastTime > 2000) { // Debouncing
 lastTime = millis();
 count++;
 if (count > 9) {
 count = 0;
 }
 if (digit == 1) {
 digitalWrite(D2, HIGH);
 digitalWrite(D1, LOW);
 number(count);
 digit = 2;
 } else {
 digitalWrite(D2, LOW);
 digitalWrite(D1, HIGH);
 number(count);
 digit = 1;
 }
 }
}
else if (sw4 == LOW) {
 if (millis() - lastTime > 2000) { // Debouncing
 lastTime = millis();
 digitalWrite(D2, HIGH);
 digitalWrite(D1, LOW);
for (int i = 9; i >= 0; i--) {
 number(i);
 delay(200); // Delay agar Anda bisa melihat perubahan digit
 }
 }
}
}

b. Flowchart




5. Video Demo [Kembali]




6. Kondisi [Kembali]

        Percobaan 3 Timer Audio


7. Download File [Kembali]
Download HMTL klik disini
Download Simulasi Rangkaian klik disini
Download Video Demo klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet DipSwitch klik disini
Download Datasheet 2 Digit 7-Segment klik disini














Senin, 25 Maret 2024




MODUL 2
PERCOBAAN 5 KONDISI 2

1. Prosedur
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.


2. Hardware dan diagram blok [Kembali]
         a. hardware
                                                                 
1. SW SPDT


2. Arduino Uno
                                   

3. Driver Motor L293D


4. Motor DC


5. Max7219


6. Dot Matrix


  b. Digram Blok



3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

Gambar Rangkaian Sebelum Disimulasikan



                                    

Gambar Rangkaian Setelah Disimulasikan

                                        





PRINSIP KERJA
   Dalam rangkaian ini, menggunakan konfigurasi INPUT PULL DOWN dimana switch terhubung ke tegangan eksternal dan resistor terhubung ke ground. Sebuah resistor diletakkan di antara switch dan Arduino, membolehkan aliran arus dari tingkat potensial yang tinggi ke tingkat potensial yang rendah. Ketika switch dihidupkan, tegangan dari luar mengalir melalui switch dan tidak menuju ke ground karena adanya hambatan. Hal ini menyebabkan input Arduino ketika switch dalam posisi ON menjadi HIGH. Namun, ketika beralih ke mode mati, Arduino tidak mendapatkan suplai listrik dari luar dan sinyal input-nya berada dalam keadaan rendah. Pull Down Configuration ini bertolak belakang dengan Pull Up.
Pada proyek ini, Arduino dan modul MAX7219 digunakan untuk mengontrol motor DC dan menampilkan gambar pada dot matrix. Proses awal dimulai dengan mengatur modul MAX7219 menggunakan objek LedControl. Pin yang terhubung ke saklar dan mesin ditentukan apakah sebagai masukan atau keluaran. Dalam bagian utama perulangan, nilai dari setiap saklar didapat dengan menggunakan fungsi digitalRead(). Jika semua sakelar dalam keadaan aktif (HIGH), motor akan dimatikan dan tampilan dot matrix akan dikosongkan. Jika tidak, program akan memperoleh arah pergerakan motor berdasarkan kombinasi switch yang sedang aktif. Dalam hal mengendalikan putaran motor DC:
Jika switch1 dan switch3 dalam keadaan aktif, motor akan bergerak ke arah kanan.
Apabila switch2 dan switch4 dalam keadaan hidup, maka displayArrowRight() akan dipanggil untuk menampilkan gambar panah menghadap kanan pada dot matrix, sementara motor tidak bergerak.
Array byte mengandung informasi dari panah dan akan ditampilkan menggunakan metode setRow() dari objek LedControl.

4. FlowChart [Kembali]

a. Listing Program 

#include <LedControl.h>

// Inisialisasi modul MAX7219
LedControl lc = LedControl(5, 6, 7, 1); // Pin DIN, CLK, LOAD (CS) dihubungkan ke Arduino

const int switch1Pin = A0; // Switch 1 connected to pin A0
const int switch2Pin = A1; // Switch 2 connected to pin A1
const int switch3Pin = A2; // Switch 3 connected to pin A2
const int switch4Pin = A3; // Switch 4 connected to pin A3

const int pin3Output = 3; // Output pin connected to pin 3 (motor control)
const int pin4Output = 4; // Output pin connected to pin 4 (motor control)

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

  // Set up pins for motor
  pinMode(pin3Output, OUTPUT);
  pinMode(pin4Output, OUTPUT);
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);

  pinMode(switch1Pin, INPUT);
  pinMode(switch2Pin, INPUT);
  pinMode(switch3Pin, INPUT);
  pinMode(switch4Pin, INPUT);

  Serial.begin(9600);
}

void loop() {
  int switch1State = digitalRead(switch1Pin);
  int switch2State = digitalRead(switch2Pin);
  int switch3State = digitalRead(switch3Pin);
  int switch4State = digitalRead(switch4Pin);

  // Check if all switches are active (LOW)
  if (switch1State == HIGH && switch2State == HIGH && switch3State == HIGH && switch4State == HIGH) {
    digitalWrite(pin3Output, LOW);
    digitalWrite(pin4Output, LOW);
    lc.clearDisplay(0);
  } else {
    if (switch1State == HIGH && switch3State == HIGH) {
      digitalWrite(pin3Output, HIGH);
      digitalWrite(pin4Output, LOW);
      lc.clearDisplay(0);
    } else {
      digitalWrite(pin3Output, LOW);
    }

    if (switch2State == HIGH && switch4State == HIGH) {
      digitalWrite(pin3Output, LOW);
      digitalWrite(pin4Output, LOW);
      displayArrowRight();
    }
  }
}

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]);
  }
  delay(500);
  lc.clearDisplay(0);
  delay(500);
}

b. Flowchart




5. Kondisi [Kembali]

Kondisi  →Percobaan 5 Kondisi 2
        Semua Switch pull-down, switch 1 dan 3 motor ke kanan, switch 2 dan 4 panah ke kanan

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 Driver Motor L293D klik disini
Download Datasheet dotmatrix klik disini
Download Datasheet MAX7219 klik disini
Download Datasheet  motor dc klik disini




Mikro 2024 Modul  4 [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI     1. Pendahuluan     2. Tujuan     3. Alat dan Bahan     4. Dasar...