راه اندازی سروو sg90 با استفاده از برد های esp

دوستان سلام
امیدوارم کسی پیدا بشه اینجا که این کارو انجام داده باشه
من که هرکاری کردم نشد
با برد uno کار میکنه اما با هر esp که داشتم نشد
چیز هایی که من تست کردم
-پایه های مختلف که خروجی PWM دارن
-پایه هایی که خروجی PWM ندارن :)

- استفاده از analogWrite و تغییر فرکانس پیش فرض به 50Hz با دستور analogWriteFreq (طبق دیتاشیت سروو) -> فکر نکنم جواب بده این دستور اصن چون جایی خوندم که باید بین بازه 100Hz to 40000Hz باشه اگه کسی راهی برای این هم سراغ داره بگه عااالی مشه چون ی جای دیگه نیاز دارم بهش PLS :))))

-تقویت ولتاژ سیگنال از 3.3 به 5 با استفاده از گیت های منطقی مثل nand gate

-استفاده از چند کلاس لایبری متفاوت

چیز های که تست نکردم
- استفاده از تایمر (کتابخانه سروو خودش از تایمر استفاده میکنه البته)

-تولید پالس در لوپ اصلی برنامه (این ایده همین الان به ذهنم رسید)

برد هایی که باهاشون تست کردم wemo d1 , ESP01 , NodMCU همه هم درواقع برپایه ESP8266 هستن

سلام

میشه لطفا کد یا لایبراری های که تست کردید رو اینجا قرار بدید که بهتر کمکتون کنم.

دقیقا pwm رو چطور generat کردید ؟ از پروگرام شدن برد esp تون مطمئن هستین؟ کد دیگه ایی رو باهاش تست کردید؟

خروجی pwm که میسازید رو میتونید ببینید؟

uint8_t ServoMotorpin = 12;
uint16_t dutycycle = 0;
void setup(){
analogWrite(ServoMotorpin, 512);
analogWriteFreq(50); /* Set PWM frequency to 50Hz */
uint16_t dutycycle ;
}
void loop(){

//uint16_t dutycycle= analogRead(A0); /* Read potentiometer to control servo motor /
//if(dutycycle> 1023) dutycycle = 1023;
//dutycycle = 25+((85
dutycycle/1023)); /* make it in range 20 to 110 /
for (dutycycle = 20; dutycycle <= 110; dutycycle += 1)
{ // goes from 0 degrees to 180 degrees
// in steps of 1 degree
analogWrite(ServoMotorpin, dutycycle); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
for (dutycycle = 110; dutycycle >= 0; dutycycle -= 1)
{ // goes from 0 degrees to 180 degrees
// in steps of 1 degree
analogWrite(ServoMotorpin, dutycycle); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
/
Write duty cycle to pin */
delay(100);
}
ممنون از کامنت شما
مثلا این
در اصل این کد قراره با قراره با یک پتانسیومتر موقعیت سروو رو تغییر بده
من یک سری تغییر توش دادم که بدون پتانسیومتر کار کنه
توابع دیگه برنامه خیلی خوب کار میکنه
رو esp یک وب سرور هست که بخوبی اجرا میشه فقط اون قسمت سروو کار نمیکنه
از پروگرام شدن ESP مطمعنم ولی از خروجی PWM نه
ولی نکته ای که هست وقتی خروجی PWM رو که به سروو میره رو به یک LED میزدم LED به صورت خیلی ضعیف روشن میشد(فکر میکنم PWM داره)
طول پالس مورد نیاز برای این سروو از 1ms تا 2ms
چون طول پالسش بیشتر از این نمیشه نور ال ایدی هم طبیعتا خیلی تغییر نمیکنه و انگار که ثابته
ولی هنوز سعی نکردم باهاش ی مثال PWM رو تست کنم ببینم درست کار میکنه یا نه
شما تونستی با ESP سروو راه اندازی کنی ؟!

با سلام لطفا با ویرایش سوال خود کد را قرار بدهید.