Search Code

د ESP32 ټیوټوریل 17/55 - د ESP32 او پوټینشیومیټر په کارولو سره د سروو موټر کنټرول - د ESP32 IoT زده کړې کټ

د 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-17-Sevo_motor-wiring

د سروو موټور او پوټینشیومیټر د 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 په نوم د سروو یوه بیلګه جوړوو. موږ د سروو لپاره د پن شمېره تعریف کوو او لږ تر لږه او اعظمي پلټس پلنوالی ټاکو چې د سروو د زاویې حدونو سره مطابقت لري.

ESP32_servo_lib

بیا، راځئ چې هغه لوپ ته وګورو چې په دوامداره توګه سروو شاته او مخ ته حرکت کوي:

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 کوډ تشریح شوی

Images

ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32-17-Sevo_motor-wiring
ESP32_servo_lib
ESP32_servo_lib
816-ESP32 Tutorial 17/55- Arduino code for controling servo motor
Language: C++
#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);
  }
}

Files📁

Datasheet (pdf)

Other files