Control Motor Brushless With Arduino Uno


Pada dasarnya sebuah motor BLDC atau Motor brushless ini sering kita jumpai pada mainan Multirotor seperti Drone maupun Pesawat Aeromodeling lainnya. pada kesempatan ini saya akan menunjukkan cara mengedalikan sebuah motor Brushless dengan Arduino. karen seperti yang kita ketahui pada Drone sudah terdapat Controller Khusus yang digunakan. namun pada kesempatan kali ini saya menggunakan Arduino uno sebagai Controllernya. dan ini merupakan permulaan dari Research saya yang akan membuat Drone Berbasis Arduino. langsung saja untuk bahan bahan yang digunakan adalah:
1. Motor Brushless (BLDC Motor)
2. ESC (Electronic Speed Controller)
3. Battery 3S 11,1V
4. Arduino Uno
5. LCD 16x2
6. Potensio
namun pada skematik dibawah ini masih rangkaian utama untuk motor karena belum sempat menambahkan LCD 16x2.
Image result for brushless motor arduino

Listing Program




Program Utama

=================================Source Code================================

#include "Servo.h"
#include "LiquidCrystal.h"
Servo esc;
int PWM;
LiquidCrystal lcd(13,12,11,10,8,7);
byte potPin = 0;

byte graph [8][8] = 
{ 
  { 0x00, 0x03, 0x05, 0x19, 0x11, 0x19, 0x05, 0x03 }, // simbol speaker
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00 }, // 1 bar
  { 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00 }, // 2 bar
  { 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00 }, // 3 bar
  { 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, // 4 bar
  { 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, // 5 bar
  { 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }, // 6 bar
  { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00 }  // 7 bar
};
     
void setup(){
  lcd.begin(16, 2);
  esc.attach(3);
  for (int a = 0; a < 8; a++)      
    lcd.createChar(a, graph[a]);  // pembuatan karakter khusus bar volume
}
     
void loop()
{
  lcd.clear();                                        // clear untuk merefresh lcd
  int readADC = analogRead(potPin);                   // baca pin Potensio
  int bar = map(readADC, 0, 1023, 1, 8);              // perbandingan readADC dengan jumlah bar
  int vol = map(readADC, 0, 1023, 0, 100);            // perbandingan readADC dengan persen (%)
  int PWM = analogRead(potPin);
  PWM = map(PWM, 0,1023,0,255);
  esc.write(PWM);
  for(int b = 0; b

Hal lain yang perlu diperhatikan adalah kita tidak bisa langsung memberi PWM ke ESC agar motor dapat berputar. namun kita perlu mengkalibrasi ESC terlebih dahulu, untuk lebih jelasnya silahkan lihat pada video dibagian bawah postingan ini. 

Video Hasil

No comments

Dicky B_Mz. Powered by Blogger.