ESP32 பயிற்சி 17/55 - ESP32 மற்றும் பொட்டென்ஷியோமீட்டரைப் பயன்படுத்தி சர்வோ மோட்டாரைக் கட்டுப்படுத்துதல் -ESP32 IoT கற்றல் கிட்
இந்த டுடோரியலில், SunFounder நிறுவனத்தின் ESP32 IoT கற்றல் கிட்டில் இருந்து ESP32 மைக்ரோகண்ட்ரோலர் மற்றும் பொட்டென்ஷியோமீட்டரைப் பயன்படுத்தி ஒரு சர்வோ மோட்டாரை எவ்வாறு கட்டுப்படுத்துவது என்பதைக் கற்றுக்கொள்வோம். இந்த திட்டத்தின் முடிவில், பொட்டென்ஷியோமீட்டரைப் பயன்படுத்தி சர்வோ மோட்டாரின் கோணத்தை சீராக சரிசெய்ய முடியும், இது துல்லியமான கட்டுப்பாட்டை அனுமதிக்கிறது. ESP32 இன் திறன்களையும், அது மோட்டார்களுடன் எவ்வாறு இடைமுகப்படுகிறது என்பதையும் ஆராய இது ஒரு சிறந்த வழியாகும்.

விவரங்களுக்குள் செல்லும்போது, தேவையான வன்பொருள் கூறுகள், வயரிங் வழிமுறைகள் மற்றும் குறியீடு எடுத்துக்காட்டுகளை உள்ளடக்குவோம், இவை அனைத்தையும் இயக்குவதற்கு. மேலும் காட்சி பிரதிநிதித்துவத்திற்கு, இந்த டுடோரியலுடன் தொடர்புடைய வீடியோவைப் பார்க்கவும் (வீடியோவில் 0:30).
வன்பொருள் விளக்கம்
இந்த திட்டத்திற்கான முதன்மை கூறுகளில் ESP32 மைக்ரோகண்ட்ரோலர், ஒரு சர்வோ மோட்டார் (SG90) மற்றும் ஒரு பொட்டென்ஷியோமீட்டர் ஆகியவை அடங்கும். ESP32 என்பது ஒரு சக்திவாய்ந்த மைக்ரோகண்ட்ரோலர் ஆகும், இது உள்ளமைக்கப்பட்ட Wi-Fi மற்றும் புளூடூத்தை வழங்குகிறது, இது 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
வளங்கள் மற்றும் மேற்கோள்கள்
-
ஆவணங்கள்ESP32 Tutorial 17/55 - SunFounder Servo motor documentationdocs.sunfounder.com
கோப்புகள்📁
தரவியல் அட்டவணை (பிடிஎப்)
-
DS5160 Servo motor datasheet
DS5160_datasheet.pdf0.33 MB
மற்ற கோப்புகள்
-
Download SG90 datasheet (PDF)
robojax-servo-sg90_datasheet.pdf