سرو MG996R — ارزانترین سرو قوی بازار
MG996R یک سرو با گشتاور ۹.۴–۱۱kg.cm، زاویه ۱۸۰° و فریم فلزی است. برای فرمان UGV تا ۵kg عالی است. با یک پالس PWM (۱–۲ms) کنترل میشود. کتابخانه Servo.h آردوینو آن را بسیار ساده میکند.
مشکل رایج: Jitter (لرزش خفیف سرو حتی در حالت ثابت) که از نویز در خط سیگنال است. با یک مقاومت ۱kΩ سری روی خط سیگنال + خازن ۱۰۰nF به GND این مشکل حل میشود.
🛠️ کارت پروژه
| مشخصات | ۵V، ۲.۵A peak، ۹.۴kg.cm، ۱۸۰° |
| قیمت | ~۱۵۰K تومان |
| نکته برق | از USB آردوینو تغذیه نکن — خازن ۴۷۰μF روی 5V |
کالیبراسیون نقطه صفر سرو
#include <Servo.h>
Servo steer;
void setup(){
steer.attach(9);
Serial.begin(9600);
Serial.println("Enter angle (0-180):");
}
void loop(){
if(Serial.available()){
int angle = Serial.parseInt();
steer.write(angle);
Serial.print("Set to: "); Serial.println(angle);
// وقتی فرمان مستقیم بود، این عدد = CENTER شما
}
}
فیلتر Jitter + کنترل نرم
#include <Servo.h>
Servo steer;
const int CENTER = 92; // عدد کالیبرهشده شما
float smoothAngle = CENTER;
void setSteer(int targetAngle, float smoothFactor=0.15){
// EWMA filter — حرکت نرم و بدون jitter
smoothAngle = smoothFactor*targetAngle + (1-smoothFactor)*smoothAngle;
steer.write((int)smoothAngle);
}
void setup(){
steer.attach(9, 500, 2500); // محدوده دقیق microseconds
steer.write(CENTER);
}
// مثال استفاده:
// هر ۲۰ms این تابع را با مقدار جدید صدا بزن:
// setSteer(CENTER + steeringCommand);
نگاشت دستور LoRa به زاویه سرو
// rcSteering: -100 تا +100 از LoRa
// CENTER ±35 درجه زاویه فرمان
void applySteer(int rcSteering){
int angle = CENTER + map(rcSteering, -100, 100, -35, 35);
angle = constrain(angle, CENTER-35, CENTER+35);
setSteer(angle);
}