Proyek 13 – Simple Motor Control

Proyek SImple Motor Control bertujuan mengatur kecepatan Motor DC, hanya 1 arah, menggunakan komponen power transistor, diode dan eksternal power supply (untuk memberi daya pada motor) dan potentiometer untuk mengatur kecepatan motor.

Transistor TIP120 dapat digantikan dengan transistor namun pastikan menggunakan transistor untuk beban arus tinggi. Sesuaikan dengan voltage dan arus yang digunakan motor. Disarankan menggunakan heat sink pada transistor jika arus yang digunakan >= 1 amp.

External power supply bisa berupa baterai atau external DC power supply. Pastikan cukup voltage dan ampere untuk menjalankan motor namun tidak melebihi spek motor.

Pada proyek ini digunakan DC power supply dengan spek 5V dan 500mA. Bila volt lebih besar akan berisiko merusak motor.

Komponen

  • DC Motor
  • 10kΩ Potentiometer
  • TIP120 Transistor*
  • 1N4001 Diode*
  • Jack Plug
  • External Power Supply
  • 1K Resistor

Skema

Penting, pastikan Arduino tidak terhubung dengan arus listrik saat merangkai skema.
Pastikan skema dengan benar. Salah rangkaian dapat menyebabkan kerusakan pada komponen atau pada Arduino.

Diode penting untuk menjaga Arduino dari EMF.

Proyek Arduino Simple Motor Control

Sketch

Perhatian: Sebelum upload code, matikan eksternal power supply ke motor dan pastikan potentiometer mentok di 0 (putar habis arah balik jarum jam hingga mentok)

Setelah upload, hubungkan eksternal power supply. Sekarang potentiometer dapat diputar untuk mengatur kecepatan motor.

int potPin = 0; // Analog in 0 connected to the potentiometer
int transistorPin = 9; // PWM Pin 9 connected to the base of the transistor
int potValue = 0; // value returned from the potentiometer

void setup() {
// set the transistor pin as output:
pinMode(transistorPin, OUTPUT);
}

void loop() {
// read the potentiometer, convert it to 0 - 255:
potValue = analogRead(potPin) / 4;
// use that to control the transistor:
analogWrite(transistorPin, potValue);
}

Penjelasan Sketch

Deklarasikan 3 variable untuk menyimpan nilai dari analog pin yang terhubung dengan potentiometer, PWM pin yang terhubung dengan kaki base transistor dan variable untuk menyimpan value yang dibaca dari potentiometer

int potPin = 0; // Analog in 0 connected to the potentiometer
int transistorPin = 9; // PWM Pin 9 connected to the base of the transistor
int potValue = 0; // value returned from the potentiometer

Pada setup( ) function atur pin mode transistor sebagai output.

 void setup() {
 // set the transistor pin as output:
 pinMode(transistorPin, OUTPUT);
 }

Pada main loop potValue diisi oleh nilai yang dibaca dari analog pin 0 (the potPin) kemudian dibagi 4.

analogWrite(transistorPin, potValue);

Karena range nilai analog diantara 0 (0 volts) hingga 1023 (5 volts), perlu membagi dengan 4. Sedangkan range nilai yang akan ditulis pada pin transistor (digital pin 9) adalah 0 – 255.

Selanjutnya, program akan menulis nilai dari potentiometer.

analogWrite(transistorPin, potValue);

Jadi, saat potentiometer diputar, nilai antara 0 -1023 akan terbaca, kemudian diconvert menjadi 0-255. Nilai tersebut digunakan untuk mengubah kecepatan motor.

Putar arah balik jarum jam akan memperlambat motor, putar searah jarum jam akan menambah kecepatan motor.

Sharing is caring: