VESC چیست و چرا از ESC معمولی بهتر است؟
VESC (Vedder Electronic Speed Controller) یک درایور موتور BLDC متنباز است که توسط Benjamin Vedder طراحی شده. برخلاف ESCهای ارزان هواپیمایی که فقط سرعت را تنظیم میکنند، VESC میتواند گشتاور، موقعیت و سرعت را با دقت کنترل کند، از طریق UART/CAN/PPM فرمان بگیرد، و حتی برق ترمزی برگردانده شود. برای UGV که نیاز به کنترل دقیق دارد عالی است.
FOC (Field Oriented Control) روشی است که مطمئن میشود جریان الکتریکی همیشه در بهترین زاویه نسبت به مگنتهای روتور باشد — کارایی بالاتر، گشتاور بیشتر در RPM پایین، و صدا کمتر.
🛠️ کارت پروژه
| ولتاژ کاری | ۸–۶۰V (VESC 4.12 تا ۵۷V) |
| جریان پیک | تا ۱۲۰A (VESC 4.12 ≈ ۵۰A continuous) |
| قیمت | ~۵۰۰–۱۲۰۰K (تکی یا Dual) |
مراحل تنظیم VESC با VESC Tool
- دانلود: vesc-project.com/vesc_tool — نسخه رایگان کافی است.
- باتری را وصل کن، VESC را با USB به کامپیوتر وصل کن.
- کلیک Connect (پورت USB/Serial را انتخاب کن).
- از منوی Setup: Motor Wizard → نوع موتور = BLDC یا Inrunner/Outrunner.
- کلیک Detect Motor Parameters — موتور به آرامی میچرخد و پارامترها شناسایی میشوند.
- در تب Motor Settings → General: جریان موتور = ۰.۸ × جریان نامی موتور.
- FOC را در تب FOC فعال کن — Hall Sensor Detect را اجرا کن اگر حسگر دارد.
- در App Settings → UART: بودریت را ۱۱۵۲۰۰ کن.
کد آردوینو — کنترل از طریق UART
// کتابخانه: arduino-vesc (GitHub: solidGeek)
#include "VescUart.h"
VescUart VESC;
void setup(){
Serial1.begin(115200);
VESC.setSerialPort(&Serial1);
}
void loop(){
// کنترل سرعت — RPM
VESC.setRPM(3000); // جلو ۳۰۰۰RPM
delay(2000);
VESC.setRPM(0);
delay(500);
VESC.setRPM(-3000); // برعکس
delay(2000);
VESC.setRPM(0);
delay(1000);
// خواندن تلهمتری
if(VESC.getVescValues()){
Serial.print("RPM: "); Serial.println(VESC.data.rpm);
Serial.print("Voltage: "); Serial.println(VESC.data.inpVoltage);
Serial.print("Current: "); Serial.println(VESC.data.avgMotorCurrent);
}
}
جدول جریان پیشنهادی برای موتورهای رایج
| موتور | جریان Motor Max | جریان Battery Max |
|---|---|---|
| Hub Motor Hoverboard 250W | 40A | 20A |
| BLDC Outrunner 5065 | 50A | 25A |
| BLDC Inrunner 5045 | 60A | 30A |