LA 1
== Percobaan 4 ==
Kontrol Motor Servo dengan PWM


  1. Siapkan alat dan bahan yang akan digunakan pada saat praktikum seperti Arduino Uno, Keypad, LCD
  2. Rangkai sesuai gambar percobaan
  3. Rancang kerja rangkaian menggunakan flowchart
  4. Running rangkaian simulasi sesuai dengan kondisi pada saat praktikum


Blok Diagram

Arduino Uno


LCD


Keypad

Motor Servo








#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
"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:
    PWM adalah teknik modulasi sinyal dimana dapat digunakan untuk menghasilkan sinyal analog dengan mengontrol lebar pulsa sinyal digital. PWM bisa digunakan untuk mengatur kecepatan dan mengatur pergerakan sudut motor servo. Jika ingin menggunakan PWM pada motor servo maka harus diberi pulsa high atau low dengan lebar tertentu

2. Pada percobaan apa yang terjadi ketika kita membuat servowrite ( 255 ) pada program
Jawab:
    Untuk servowrite (255) tetap bisa dijalankan, akan tetapi pada motor servo hanya bisa bergerak sebesar 180 derajat dikarenakan sudut maksimal pada motor servo itu hanya 180 derajat

3. Bisakah ADC (pengganti PWM)di gunakan untuk membuat motor servo berputar
Jawab:
    Bisa, tapi tidak seakurat PWM. Dikarenakan ADC mengubah sinyal analog menjadi data digital dimana ADC ini hanya memiliki 2 kondisi yaitu high atau low saja. Contohnya motor servo hanya dapat berputar pada 2 kondisi saja yaitu pada kondisi 0 derajat dan 180 derajat saja    




Rangkaian Proteus [Download]
Listing Program [Download]
Datasheets Komponen [Download]
Library [Download]
Video Demo [Download]