LA 1 - M2





Laporan Akhir Percobaan 4
== Percobaan 4 Kondisi 3 ==
Kontrol Motor Servo dengan PWM


  1. Membuka proteus
  2. Buka file proteus yang sudah disesuaikan dengan kondisi
  3. Running rangkaiannya
  4. Sesuaikan dengan kondisi yang diinginkan




Arduino Uno


LCD


Keypad











#include <Servo.h> 
#include <Keypad.h> 

Servo servoMotor; 
const int servoPin = 11; // Mendefinisikan PWM pin untuk servo 

const int numRows = 4;  // Number of rows in keypad 
const int numCols = 3;  // Number of columns in keypad 
char keys[numRows][numCols] = { 
  {'1', '2', '3'}, 
  {'4', '5', '6'}, 
  {'7', '8', '9'}, 
  {'*', '0', '#'} 
}; 

byte rowPins[numRows] = {9, 8, 7, 6}; // Rows 0 to 3 
byte colPins[numCols] = {5, 4, 3};     // Columns 0 to 2

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, numRows, numCols); 

// Calculate PWM step size
const int pwmStep = 255 / 8; // Jumlah tombol keypad minus 1, Langkah PWM 255/8 = 31 langkah

void setup() { 
  servoMotor.attach(servoPin); // Mendefinisikan pin yang akan digunakan untuk menghubungkan servo motor ke Arduino
  servoMotor.write(90); // Initial position 
  Serial.begin(9600); 

void loop() { //membaca tombol yang ditekan pada keypad dan menggerakkan servo sesuai dengan tombol
  char key = keypad.getKey(); 
   
  if (key != NO_KEY) { 
    Serial.println(key); 
     
    // Perform actions based on the key pressed 
    switch (key) { 
      case '1': 
        servoMotor.write(0); // PWM 0
        break; 
      case '2': 
        servoMotor.write(pwmStep * 1); // PWM 28
        break; 
      case '3': 
        servoMotor.write(pwmStep * 2); // PWM 56
        break; 
      case '4': 
        servoMotor.write(pwmStep * 3); // PWM 84
        break; 
      case '5': 
        servoMotor.write(pwmStep * 4); // PWM 112
        break; 
      case '6': 
        servoMotor.write(pwmStep * 5); // PWM 140
        break; 
      case '7': 
        servoMotor.write(pwmStep * 6); // PWM 168
        break; 
      case '8': 
        servoMotor.write(pwmStep * 7); // PWM 196
        break; 
      case '9': 
        servoMotor.write(pwmStep * 8); // PWM 224
        break; 
      default: 
        break; 
    } 
  } 
}


Modul 2: Percobaan 4 Kondisi 3
"Kontrol Motor Servo dengan PWM"



Percobaan 4

1. Analisa Kenapa Inputan PWM bisa mengatur pergerakan sudut dari motor servo, sedangkan pwm ini biasanya digunakan untuk mengatur kecepatan motor? 
Jawab:

Pulse Width Modulation (PWM) adalah teknik dimana sinyal dapat digunakam untuk menghasilkan sinyal analogdengan mengontrol lebar pulsa sinyal digital tersebut. Meskipun, pwm sering digunakan untuk mengatur kecepatan motor dc dengan mengatur lebar pulsa sinyal pwm, namun pada motor servo pada pwm digunakan untuk mengatur sudut motor atau posisi motor.

2. Pada percobaan apa yang terjadi ketika kita membuat servowrite ( 255 ) pada program?
Jawab:

Jika pada percobaan menggunakan servowrite(255) maka ini mengatur posisi motor servo ke posisi maksimum. Biasanya, nilainya berkisar antara 0-180. Maka, saat menjalankan servowrite(255) nilai yang diterima adalah 180 derajat atau berputar 180 derajat.

3. Bisakah ADC (pengganti PWM)di gunakan untuk membuat motor servo berputar?
Jawab:

Jawabannya adalah bisa, adc bisa menggantikan pwm untuk mengendalikan motor servo. Ini dikarenakan adc mengubah sinyal analog menjadi data digital yang bisa diinterpretasikan sebagai sinyal analog. Yang mana ini berarti kita dapat menggunakan hasil adc untuk mengatur posisi motor servo secara langsung tanpa memerlukan pwm.



Tidak ada komentar:

Posting Komentar

  PRATIKUM SISTEM DIGITAL TAHUN 2022 OLEH : Tyas Ananda Putri 2010952036 JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS ANDALAS PADANG 2021