Anda di halaman 1dari 5

MOTOR DC BRUSHLESS

Pengertian
Motor listrik Brushless DC ( motor BLDC, motor BL ) yang juga dikenal sebagai
motor yang diperhitungkan secara elektronik (ECM, motor EC) adalah motor sinkron yang
didukung oleh listrik DC melalui catu daya inverter / switching yang menghasilkan arus
listrik AC / bi-directional untuk mendorong masing-masing Fase motor melalui pengontrol
loop tertutup. Waktu pengontrolan pergantian (karenanya rpm) dan menciptakan bentuk
gelombang arus (karenanya torsi). Dalam konteks ini, arus bolak-balik tidak menyiratkan
tetapi mencakup bentuk gelombang sinusoidal, dengan batasan minimal pada bentuk
gelombang; Ini harus periodik, dan frekuensinya akan menentukan putaran motor, dan
bentuk gelombangnya mempengaruhi seberapa halus torsi yang dihasilkan serta efisiensi
motor dalam mentransformasikan energi listrik menjadi mekanik.
Motor Brushless Direct Current (BLDC) adalah salah satu jenis motor yang cepat
populer. BLDC motor digunakan di dunia industri seperti Permobilan, Atmosphere,
Konsumen, Otomasi Medis, Industri dan Peralatan Instrumentasi. Sesuai dengan namanya,
BLDC motor tidak menggunakan sikat atau Brush untuk pergantian medan magnet
(komutasi), tetapi dilakukan secara elektronis commutated. Motor BLDC mempunyai
banyak keuntungan dibandingkan dengan DC motor dan Motor induksi biasa. Keuntungan
itu antara lain:
- Kecepatan yang lebih baik untuk melawan karakteristik tenaga putaran.
- Tanggapan Dinamis tinggi.
- Efisiensi tinggi.
- Tahan lama atau usia pakainya lebih lama.
- Nyaris tanpa suara bila dioperasikan.
- Speed range yang lebih luas

Blok Diagram
Rangkaian Elektronik

Cara Kerja
Cara kerja pada motor BLDC cukup sederhana, yaitu magnet yang berada pada poros
motor akan tertarik dan terdorong oleh gaya elektromagnetik yang diatur oleh driver pada
motor BLDC. Hal ini membedakakn motor BLDC dengan motor DC yang menggunakan
sikat mekanis yang berada pada komutator untuk mengatur waktu dan memberikan medan
magnet pada lilitan. Motor BLDC ini juga berbeda dengan motor AC yang pada umumnya
menggunakan siklus tenaga sendiri untuk mengatur waktu dan memberi daya pada lilitan.
BLDC dapat memberikan rasio daya dan beban yang lebih tinggi secara signifikan dan
memberikan efisiensi yang lebih baik dibandingkan motor tanpa sikat tradisional.
Pada prinsip dasar medan magnet adalah kutub yang sama akan saling tolak menolak
sedangkan apabila berlainan kutub maka akan tarik menarik. Jadi jika kita mempunyai dua
buah magnet dan menandai satu sisi magnet tersebut dengan north (utara) dan yang lainnya
south (selatan), maka bagian sisi north akan coba menarik south, sebaliknya jika sisi north
magnet pertama akan menolak sisi north yang kedua dan seterusnya apabila kedua sisi
magnet mempunyai kutub yang sama .
Prinsip mengenai kutub magnet tersebut dapat diterapkan dalam prinsip kerja motor
BLDC. Secara umum motor BLDC memiliki medan magnet permanen pada rotor dan
magnet yang berasal dari gaya elektromagnet (magnet yang ditimbulkan dari pemberian
input arus listrik) pada bagian kumparan stator.
Pada motor BLDC, kontroler berfungsi untuk mengatur arus masukan yang harus
dialirkan ke kumparan stator untuk dapat menimbulkan medan elektromagnet yang sesuai
untuk memutar rotor. Hal inilah yang menjadi pembeda dengan motor DC konvensional, dan
menggantikan kerja komutasi mekanisnya.
Magnet permanen pada motor BLDC dilengkapi dengan kumparan tiga fase.
Kumparan-kumparan tersebut terletak di bagian stator. Magnet bergerak terletak di stator.
Fase kumparan diaktifkan dengan penyesuain gerakan rotor. Rotasi berbasis rotasi medan
magnet diilustrasikan pada Gambar dibawah, bagian kiri adalah fase pergerakan dan bagian
kanan adalah fase eksitasi. Fluks stator dihasilkan pada saat fase eksitasi, dan fluks rotor
dihasilkan oleh magnet permanen.
Cara Kerja (Algoritma)
Cara Kerja (Program)

#include <PWM.h>
int32_t frequency = 20000; //pwm frequency in Hz
unsigned int n = 0, timer2_initial_value, s = 0;
void setup(){
InitTimersSafe();
bool success = SetPinFrequencySafe(9, frequency);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(13, OUTPUT);
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(10, INPUT_PULLUP);
pinMode(11, INPUT_PULLUP);
pinMode(12, INPUT_PULLUP);
// initialize timer2 interrupt for adc reading
noInterrupts(); // disable all interrupts
TCCR2A = 0;
TCCR2B = 0;
timer2_initial_value = 0;
TCNT2 = timer2_initial_value; // preload timer
TCCR2B |= (1 << CS22) |(1 << CS21) | (1 << CS20); // 1024 prescaler
TIMSK2 |= (1 << TOIE2); // enable timer overflow interrupt
interrupts(); // enable all interrupts
}
ISR(TIMER2_OVF_vect) // interrupt service routine
{
TCNT2 = timer2_initial_value; // preload timer
n++;
if (n>20){
n = 0;
if (s != analogRead(A0)){
s = analogRead(A0);
pwmWrite(9,s/4);}}
}
int fwd(){
while(1){
if (digitalRead(2)==1){
if (digitalRead(1)==0){
if (digitalRead(0)==1){
digitalWrite(8,0);digitalWrite(7,0);digitalWrite(6,0);
digitalWrite(5,1);digitalWrite(4,1);digitalWrite(3,0);}
else {
digitalWrite(8,1);digitalWrite(7,0);digitalWrite(6,0);
digitalWrite(5,1);digitalWrite(4,0);digitalWrite(3,0);}}

if (digitalRead(1)==1){
if (digitalRead(0)==0){
digitalWrite(8,1);digitalWrite(7,0);digitalWrite(6,0);
digitalWrite(5,0);digitalWrite(4,0);digitalWrite(3,1);}}}

if (digitalRead(2)==0){
if (digitalRead(1)==1){
if (digitalRead(0)==0){
digitalWrite(8,0);digitalWrite(7,0);digitalWrite(6,1);
digitalWrite(5,0);digitalWrite(4,0);digitalWrite(3,1);}
else {
digitalWrite(8,0);digitalWrite(7,1);digitalWrite(6,1);
digitalWrite(5,0);digitalWrite(4,0);digitalWrite(3,0);}}

if (digitalRead(1)==0){
if (digitalRead(0)==1){
digitalWrite(8,0);digitalWrite(7,1);digitalWrite(6,0);
digitalWrite(5,0);digitalWrite(4,1);digitalWrite(3,0);}}}
if (digitalRead(12)==0) break;}
}
int bwd(){
while(1){
if (digitalRead(2)==1){
if (digitalRead(1)==0){
if (digitalRead(0)==1){
digitalWrite(8,0);digitalWrite(7,0);digitalWrite(6,1);
digitalWrite(5,0);digitalWrite(4,0);digitalWrite(3,1);}
else {
digitalWrite(8,0);digitalWrite(7,1);digitalWrite(6,1);
digitalWrite(5,0);digitalWrite(4,0);digitalWrite(3,0);}}

if (digitalRead(1)==1){
if (digitalRead(0)==0){
digitalWrite(8,0);digitalWrite(7,1);digitalWrite(6,0);
digitalWrite(5,0);digitalWrite(4,1);digitalWrite(3,0);}}}

if (digitalRead(2)==0){
if (digitalRead(1)==1){
if (digitalRead(0)==0){
digitalWrite(8,0);digitalWrite(7,0);digitalWrite(6,0);
digitalWrite(5,1);digitalWrite(4,1);digitalWrite(3,0);}
else {
digitalWrite(8,1);digitalWrite(7,0);digitalWrite(6,0);
digitalWrite(5,1);digitalWrite(4,0);digitalWrite(3,0);}}

if (digitalRead(1)==0){
if (digitalRead(0)==1){
digitalWrite(8,1);digitalWrite(7,0);digitalWrite(6,0);
digitalWrite(5,0);digitalWrite(4,0);digitalWrite(3,1);}}}
if (digitalRead(12)==0) break;}
}

void loop(){
digitalWrite(13, LOW);
pwmWrite(9,s);
digitalWrite(8,0);digitalWrite(7,0);digitalWrite(6,0);
digitalWrite(5,0);digitalWrite(4,0);digitalWrite(3,0);
if (digitalRead(10)==0) {digitalWrite(13, HIGH);bwd();}
if (digitalRead(11)==0) {digitalWrite(13, HIGH);fwd();}
}