د ESP32 ټیوټوریل 17/55 - د ESP32 او پوټینشیومیټر په کارولو سره د سروو موټر کنټرول - د ESP32 IoT زده کړې کټ
په دې ټیوټوریل کې به موږ زده کړو چې څنګه د ESP32 مایکروکنټرولر او د SunFounder د ESP32 IoT زده کړې کټ څخه د پوټینشیومیټر په کارولو سره د سروو موټور کنټرول کړو. د دې پروژې په پای کې به تاسو وکولای شئ چې د پوټینشیومیټر په کارولو سره د سروو موټور زاویه په نرمۍ سره تنظیم کړئ، چې دقیق کنټرول ته اجازه ورکوي. دا د ESP32 وړتیاوو او د موټورونو سره د هغې د اړیکو د سپړلو لپاره یوه ښه لار ده.

لکه څنګه چې موږ په تفصیل کې ګورو، موږ به اړین هارډویر اجزا، د تارونو د نښلولو لارښوونې، او د کوډ مثالونه پوښو ترڅو هرڅه چمتو او روان شي. د لا زیات بصري استازیتوب لپاره، ډاډ ترلاسه کړئ چې د دې ټیوټوریل سره تړلی ویډیو وګورئ (په ویډیو کې په 0:30 کې).
هارډویر تشریح شوی
د دې پروژې لومړني اجزا کې د ESP32 مایکروکنټرولر، یو سروو موټور (SG90)، او یو پوټینشیومیټر شامل دي. ESP32 یو پیاوړی مایکروکنټرولر دی چې جوړ شوی Wi-Fi او Bluetooth وړاندې کوي، چې دا د IoT پروژو لپاره مناسب کوي. دا د لوړ دقت سره د مختلفو وسایلو، په شمول د موټورونو، کنټرول وړتیا لري.
د SG90 سروو موټور یوه پراخه کارول شوې برخه ده چې کولی شي نږدې 270 درجې وګرځي. دا د پلټس-وډټ موډولیشن (PWM) سیګنال باندې کار کوي، چیرې چې د ګرځېدو زاویه د هغه پلټس د پلنوالي لخوا ټاکل کیږي چې ورته لیږل کیږي. پوټینشیومیټر د متغیر مقاومت په توګه کار کوي، چې تاسو ته اجازه درکوي ESP32 ته لیږل شوي ولتاژ تنظیم کړئ، کوم چې په پایله کې د سروو موقعیت کنټرولوي.
د ډیټاشیټ تفصیلات
| جوړونکی | SG |
|---|---|
| د برخې شمېره | SG90 |
| منطق/IO ولتاژ | 3.3 V (ESP32) |
| د برېښنا رسولو ولتاژ | 5 V |
| د تولید جریان (په هر چینل) | 1.2 A |
| د لوړ جریان (په هر چینل) | 2.5 A |
| د PWM فریکونسي لارښوونه | 50 Hz |
| د داخلې منطق حدونه | 0.2 V (ټیټ)، 2.5 V (لوړ) |
| د ولتاژ کمښت / RDS(on) / سنتریت | 0.5 V |
| حرارتي حدونه | 85 °C اعظمي |
| بسته بندي | پلاستیک |
| یادښتونه / بڼې | په مختلفو ګیر ډولونو کې شتون لري |
- ډاډ ترلاسه کړئ چې سروو د مناسب ولتاژ (5V) سره برېښنا کیږي.
- د سروو ځمکه د مشترک حوالې لپاره د ESP32 ځمکې سره وصل کړئ.
- د سروو موقعیت کنټرول لپاره مناسب PWM سیګنالونه وکاروئ.
- د سروو د جریان اړتیاوو څخه خبر اوسئ؛ که اړتیا وي بهرنی برېښنا رسول وکاروئ.
- د غلط تنظیم څخه مخنیوي لپاره د تارونو د نښلولو پر مهال د پن سمونونه وګورئ.
د تارونو د نښلولو لارښوونې

د سروو موټور او پوټینشیومیټر د ESP32 سره د نښلولو لپاره، لومړی د سروو ځمکنی تار (معمولا تور یا نسواري) د ESP32 په یوه ځمکني پن سره وصل کړئ. بیا، د سروو د برېښنا تار (معمولا سور) د ESP32 په 5V پن سره وصل کړئ. په پای کې، د سروو سیګنال تار (معمولا نارنجي یا سپین) د ESP32 په پن 25 سره وصل کړئ.
د پوټینشیومیټر لپاره، یو بهرنی پن د ESP32 په 3.3V پن سره او بل بهرنی پن ځمکې سره وصل کړئ. د پوټینشیومیټر منځنی پن باید د ESP32 په پن 34 سره وصل شي. دا ترتیب ESP32 ته اجازه ورکوي چې د پوټینشیومیټر څخه بدلیدونکی ولتاژ ولولي، کوم چې د سروو موقعیت کنټرول لپاره به وکارول شي.
د کوډ مثالونه او تفصیلي سپړنه
لاندې کوډ ټوټه سروو پیل کوي او د هغې د حرکت کنټرول لپاره پیرامیټرې ټاکي:
#include
Servo myServo;
const int servoPin = 25;
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms
void setup() {
myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
myServo.setPeriodHertz(50); // معیاري 50Hz سروو
}
په دې کوډ کې، موږ د ESP32Servo کتابتون شامل کوو او د myServo په نوم د سروو یوه بیلګه جوړوو. موږ د سروو لپاره د پن شمېره تعریف کوو او لږ تر لږه او اعظمي پلټس پلنوالی ټاکو چې د سروو د زاویې حدونو سره مطابقت لري.
بیا، راځئ چې هغه لوپ ته وګورو چې په دوامداره توګه سروو شاته او مخ ته حرکت کوي:
void loop() {
for (int angle = 0; angle <= 180; angle++) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
for (int angle = 180; angle >= 0; angle--) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
}
دا لوپ په تدریجي ډول زاویه له 0 څخه تر 180 درجو او بیا بیرته بدلوي، د map فنکشن په کارولو سره زاویه د سروو لپاره په اړونده پلټس پلنوالي بدلوي. هر بدلون د یو لنډ ځنډ سره تعقیب کیږي ترڅو سروو په نرمۍ سره خپل نوي موقعیت ته ورسیږي.
مظاهره / څه تمه ولرئ
یوځل چې هرڅه وصل شي او کوډ پورته شي، تاسو باید وګورئ چې سروو موټور په نرمۍ سره له 0 څخه تر 180 درجو او بیرته حرکت کوي. که تاسو پوټینشیومیټر تنظیم کړئ، سروو باید د پوټینشیومیټر لخوا چمتو شوي ولتاژ پر بنسټ نوی موقعیت منعکس کړي. د تارونو د نښلولو پر مهال د قطبيت د بیرته راګرځولو څخه محتاط اوسئ، ځکه چې دا ممکن ستاسو اجزا ته زیان ورسوي (په ویډیو کې په 3:45 کې).
د ویډیو وخت نښې
- 00:00 پیل
- 1:56 سروو موټور څه شی دی
- 5:00 د اسنادو پاڼه
- 6:33 د سروو لپاره تارونه تشریح شوي
- 7:45 په Arduino IDE کې د ESP32 لپاره د COMP بندر غوره کول
- 9:27 د Arduino کوډ تشریح شوی
- 14:31 د ESP32 په کارولو سره د سروو کنټرول نندارې
- 16:04 د 5V پرته د سروو بریښنا رسول
- 18:47 د لوپ پرته د سروو کنټرول
- 20:15 د پوټینشیومیټر سره د سروو کنټرول
- 21:37 د پوټینشیومیټر سره د سروو Arduino کوډ تشریح شوی
#include <ESP32Servo.h>
// Define the servo and the pin it is connected to
Servo myServo;
const int servoPin = 25;
// Define the minimum and maximum pulse widths for the servo
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms
void setup() {
// Attach the servo to the specified pin and set its pulse width range
myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
// Set the PWM frequency for the servo
myServo.setPeriodHertz(50); // Standard 50Hz servo
}
void loop() {
// Rotate the servo from 0 to 180 degrees
for (int angle = 0; angle <= 180; angle++) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
// Rotate the servo from 180 to 0 degrees
for (int angle = 180; angle >= 0; angle--) {
int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);
delay(15);
}
}
Common Course Links
Common Course Files
Resources & references
-
DocumentationESP32 Tutorial 17/55- SunFunder Servo motor documentationdocs.sunfounder.com
Files📁
Datasheet (pdf)
-
DS5160 Servo motor datasheet
DS5160_datasheet.pdf0.33 MB
Other files
-
Download SG90 datasheet (PDF)
robojax-servo-sg90_datasheet.pdf