Bincika Lambar

Koyarwar ESP32 17/55 - Sarrafa Motar Servo ta amfani da ESP32 da Potentiometer - Kayan Koyon IoT na ESP32

Koyarwar ESP32 17/55 - Sarrafa Motar Servo ta amfani da ESP32 da Potentiometer - Kayan Koyon IoT na ESP32

A cikin wannan koyawa, za mu koyi yadda ake sarrafa motar servo ta amfani da microcontroller na ESP32 da potentiometer daga kayan aikin IoT na ESP32 na SunFounder. A ƙarshen wannan aikin, za ka iya daidaita kusurwar motar servo cikin sauƙi ta amfani da potentiometer, wanda zai ba da damar sarrafawa daidai. Wannan hanya ce mai kyau don bincika iyawar ESP32 da yadda take haɗawa da motoci.

Yayin da muke zurfafa cikin bayanai, za mu rufe abubuwan hardware da ake buƙata, umarnin haɗin waya, da misalan code don samun komai yana aiki. Don ƙarin bayani na gani, tabbatar da duba bidiyon da ke da alaƙa da wannan koyawa (a cikin bidiyo a 0:30).

Bayanin Hardware

Abubuwan farko na wannan aikin sun haɗa da ESP32 microcontroller, motar servo (SG90), da potentiometer. ESP32 microcontroller ne mai ƙarfi wanda ke ba da Wi-Fi da Bluetooth na ciki, wanda ya dace da ayyukan IoT. Yana iya sarrafa na'urori daban-daban, gami da motoci, da daidaito mai girma.

Motar servo SG90 abu ne da ake amfani da shi sosai wanda zai iya juyawa kusan digiri 270. Yana aiki akan siginar pulse-width modulation (PWM), inda kusurwar juyawa ke ƙayyade ta girman pulse ɗin da aka aika masa. Potentiometer yana aiki azaman resistor mai canzawa, yana ba ka damar daidaita wutar lantarki da aka aika zuwa ESP32, wanda hakan ke sarrafa matsayin servo.

Bayanan Datasheet

Manufacturer SG
Part number SG90
Logic/IO voltage 3.3 V (ESP32)
Supply voltage 5 V
Output current (per channel) 1.2 A
Peak current (per channel) 2.5 A
PWM frequency guidance 50 Hz
Input logic thresholds 0.2 V (low), 2.5 V (high)
Voltage drop / RDS(on) / saturation 0.5 V
Thermal limits 85 °C max
Package Plastic
Notes / variants Available in different gear types

 

  • Tabbatar da cewa an kunna servo da wutar lantarki mai dacewa (5V).
  • Haɗa ƙasan servo zuwa ƙasan ESP32 don samun ma'anar gama gari.
  • Yi amfani da siginonin PWM masu dacewa don sarrafa matsayin servo.
  • Yi hankali da buƙatun wutar lantarki na servo; yi amfani da wutar lantarki ta waje idan ya cancanta.
  • Duba don daidaitattun sassan pin lokacin haɗin waya don guje wa kuskuren tsari.

Umarnin Haɗin Waya

ESP32-17-Sevo_motor-wiring

Don haɗa motar servo da potentiometer zuwa ESP32, fara da haɗa wayar ƙasa na servo (yawanci baƙar fata ko launin ruwan kasa) zuwa ɗaya daga cikin pins na ƙasa akan ESP32. Na gaba, haɗa wayar wutar lantarki (yawanci ja) na servo zuwa pin 5V akan ESP32. A ƙarshe, haɗa wayar sigina (yawanci orange ko fari) daga servo zuwa pin 25 akan ESP32.

Don potentiometer, haɗa ɗaya pin na waje zuwa pin 3.3V akan ESP32 da ɗayan pin na waje zuwa ƙasa. Pin na tsakiya na potentiometer ya kamata a haɗa shi zuwa pin 34 akan ESP32. Wannan saitin yana ba da damar ESP32 ya karanta canjin wutar lantarki daga potentiometer, wanda za a yi amfani da shi don sarrafa matsayin servo.

Misalan Code & Bayani

Wannan ɓangaren code na gaba yana fara servo kuma yana saita sigogi don sarrafa motsinsa:

#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); // Standard 50Hz servo
}

A cikin wannan code, mun haɗa da ESP32Servo library kuma mun ƙirƙiri misalin servo da sunan myServo. Mun ayyana lambar pin don servo kuma mun saita mafi ƙanƙanta da mafi girman pulse widths waɗanda suka dace da iyakokin kusurwar servo.

ESP32_servo_lib

Na gaba, bari mu duba loop ɗin da ke motsa servo gaba da baya akai-akai:

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);
  }
}

Wannan loop yana canza kusurwa a hankali daga 0 zuwa digiri 180 kuma ya dawo, ta amfani da aikin map don canza kusurwa zuwa pulse width daidai don servo. Kowane canji yana biye da ɗan jinkiri don ba da damar servo ya kai sabon matsayinsa cikin sauƙi.

Nuni / Abin da za ka Yi Tsammani

Da zarar an haɗa komai kuma an ɗora code ɗin, ya kamata ka ga motar servo tana motsawa cikin sauƙi daga 0 zuwa digiri 180 kuma ta dawo. Idan ka daidaita potentiometer, servo ya kamata ya nuna sabon matsayi bisa ga wutar lantarki da potentiometer ke bayarwa. Yi hankali da juyar da polarity lokacin haɗin waya, domin yana iya lalata abubuwan ka (a cikin bidiyo a 3:45).

Lokutan Bidiyo

  • 00:00 Farawa
  • 1:56 Menene motar servo
  • 5:00 Shafin takardu
  • 6:33 Bayanin haɗin waya don servo
  • 7:45 Zaɓin tashar COMP don ESP32 a cikin Arduino IDE
  • 9:27 Bayanin lambar Arduino
  • 14:31 Nunin sarrafa servo ta amfani da ESP32
  • 16:04 Samar da wutar lantarki ga servo banda 5V
  • 18:47 Sarrafa Servo ba tare da madauki ba
  • 20:15 Sarrafa Servo da Potentiometer
  • 21:37 Bayanin lambar Arduino na servo da pot

Hotuna

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
Harshe: 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);
  }
}

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Takardar bayanai (pdf)

Sauran fayiloli