குறியீட்டை தேடு

பாடம் 86: பொட்டென்சியோமீட்டரைப் பயன்படுத்தி சர்வோ மோட்டரின் நிலையைக் கட்டுப்படுத்துதல்

பாடம் 86: பொட்டென்சியோமீட்டரைப் பயன்படுத்தி சர்வோ மோட்டரின் நிலையைக் கட்டுப்படுத்துதல்

ஒரு எளிய குமிழியைத் திருப்பும்போது, ஒரு இயந்திர கை உங்கள் ஒவ்வொரு அசைவையும் துல்லியமாகப் பின்பற்றுவதை கற்பனை செய்து பாருங்கள். அதுதான் பொட்டென்டியோமீட்டரை ஒரு சர்வோ மோட்டருடன் இணைப்பதன் மாயாஜாலம். Robojax இன் Arduino Step by Step பாடநெறியின் ஒரு பகுதியான இந்த திட்டம், மின்னணுவியலில் ஒரு அடிப்படை மற்றும் மிகவும் பயனுள்ள கருத்தை நிரூபிக்கிறது: ஒரு அனலாக் உள்ளீட்டை துல்லியமான இயற்பியல் இயக்கமாக மாற்றுவது. ஒரு பொட்டென்டியோமீட்டரிலிருந்து மாறக்கூடிய மின்னழுத்தத்தை எவ்வாறு படிப்பது, அந்த மதிப்பை கோணங்களின் வரம்பிற்கு வரைபடமாக்குவது, மற்றும் ஒரு சர்வோ மோட்டாரை அந்த சரியான நிலைக்கு சுழற்றும்படி கட்டளையிடுவது எப்படி என்பதை நீங்கள் கற்றுக்கொள்வீர்கள். கைமுறை கட்டுப்பாடு தானியக்கத்தை சந்திக்கும் இடத்தில் உள்ளுணர்வு மற்றும் ஊடாடும் திட்டங்களை உருவாக்குவதற்கான உங்கள் நுழைவாயில் இதுவாகும்.

இந்த திறனுக்கான பயன்பாடுகள் மிகப்பரந்த மற்றும் நடைமுறைக்குரியவை. உங்களை ஊக்குவிக்க சில யோசனைகள் இங்கே:

  • ரோபோ கை கட்டுப்பாடு: துல்லியமான எடுத்து-வைக்கும் செயல்பாடுகளுக்காக ஒரு ரோபோ கையின் ஒவ்வொரு மூட்டையும் கைமுறையாக நிலைநிறுத்த ஒரு பொட்டென்டியோமீட்டரைப் பயன்படுத்தவும்.
  • கேமரா பேன் மற்றும் டில்ட் அமைப்பு: டைம்-லேப்ஸ் அல்லது கண்காணிப்புக்காக தொலை கட்டுப்பாட்டு கேமரா மவுண்ட்டை உருவாக்கவும், ஒரு டயலைத் திருப்புவதன் மூலம் மென்மையாக பேன் மற்றும் டில்ட் செய்யவும்.
  • அனலாக் கேஜ் நகல்: சென்சார் தரவின் அடிப்படையில் நகரும் ஒரு இயற்பியல் டாஷ்போர்டு கேஜை (ஸ்பீடோமீட்டர் அல்லது வெப்பநிலை டயல் போன்றவை) உருவாக்கவும், பொட்டென்டியோமீட்டர் கைமுறை மேலோட்டம் அல்லது அளவீட்டு கருவியாக செயல்படுகிறது.
  • ஊடாடும் கலை நிறுவல்கள்: பார்வையாளர் உள்ளீட்டிற்கு பதிலளிக்கும் இயக்க சிற்பங்களை உருவாக்கவும், ஒரு டயலைத் திருப்புவது நகரும் பகுதிகளின் நிலையை மாற்றுகிறது.
  • மாடல் வாகன திசைமாற்றி: ஒரு மாடல் கார் அல்லது படகின் திசைமாற்றி கோணத்தை தொலைவிலிருந்து கட்டுப்படுத்தவும், டிஜிட்டல் பொத்தான்களை விட மிகவும் உள்ளுணர்வு மற்றும் அனலாக் உணர்வை வழங்குகிறது.

இந்த வழிகாட்டி Robojax இன் வீடியோ டுடோரியல் Lesson 86: Control position of a servo motor using potentiometer (வீடியோவில் 00:00) அடிப்படையில் அமைந்துள்ளது. வயரிங்கைப் புரிந்துகொள்வது முதல் அனைத்தையும் செயல்படுத்தும் குறியீட்டை விளக்குவது வரை முழு செயல்முறையையும் இது உங்களுக்கு வழிநடத்துகிறது. தொடங்குவோம்.

வன்பொருள் மற்றும் கூறுகள்

இந்த திட்டத்துடன் தொடர, உங்களுக்கு பின்வரும் கூறுகள் தேவைப்படும்:

  • ஒரு Arduino பலகை (எ.கா., Uno, Nano)
  • ஒரு நிலையான சர்வோ மோட்டார் (எ.கா., SG90 அல்லது MG996R)
  • ஒரு பொட்டென்டியோமீட்டர் (மாறக்கூடிய மின்தடை, பொதுவாக 10kΩ)
  • ஜம்பர் கம்பிகள்
  • ஒரு பிரெட்போர்டு (விருப்பம், எளிதான இணைப்புகளுக்கு)

வயரிங்கைப் புரிந்துகொள்வது

இந்த திட்டத்திற்கான வயரிங் நேரடியானது. சர்வோ மற்றும் பொட்டென்டியோமீட்டர் இரண்டிற்கும் சரியான மின்சாரம் மற்றும் சிக்னல் இணைப்புகளை வழங்குவதே முக்கியமானது. சர்வோ ஒரு அதிக மின்சாரம் தேவைப்படும் சாதனம், எனவே அது Arduino இன் 5V பின்னிலிருந்து நேரடியாக மின்சாரத்தைப் பெறுகிறது. பொட்டென்டியோமீட்டர் ஒரு மின்னழுத்த பிரிப்பானாக செயல்படுகிறது, மேலும் அதன் நிலையை தீர்மானிக்க அதன் வைப்பர் (நடுத்தர பின்) மின்னழுத்தத்தை நாம் படிக்கிறோம். (வீடியோவில் 01:05)

இந்த திட்டம் பயன்படுத்தும் ஒரு புத்திசாலித்தனமான தந்திரம் என்னவென்றால், சில Arduino பலகைகளில் ஒரே ஒரு பிரத்யேக 5V பின் மட்டுமே இருப்பதால், பொட்டென்டியோமீட்டருக்கு மின்சாரம் வழங்க ஒரு டிஜிட்டல் பின்னில் கூடுதல் 5V மூலத்தை உருவாக்குவது. இது குறியீட்டில் ஒரு டிஜிட்டல் பின்னை (பின் 8) HIGH ஆக அமைப்பதன் மூலம் செய்யப்படுகிறது, இது 5V ஐ வெளியிடுகிறது. (வீடியோவில் 00:39)

வீடியோவில் குறிப்பிடப்பட்ட வயரிங் வரைபடம் இங்கே:

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot

இணைப்புகளை விரிவாகப் பார்ப்போம்:

  • சர்வோ மோட்டார்:
    • மின்சாரம் (சிவப்பு கம்பி) → Arduino 5V பின்
    • தரை (பழுப்பு/கருப்பு கம்பி) → Arduino GND பின்
    • சிக்னல் (ஆரஞ்சு/மஞ்சள் கம்பி) → Arduino பின் 3 (PWM திறன் கொண்ட பின்)
  • பொட்டென்டியோமீட்டர்:
    • இடது பின் → Arduino GND பின்
    • நடுத்தர பின் (வைப்பர்) → Arduino அனலாக் பின் A0
    • வலது பின் → Arduino பின் 8 (குறியீட்டில் VCC2 என வரையறுக்கப்பட்டுள்ளது)

குறியீடு விளக்கம்

இந்த திட்டத்திற்கான குறியீடு நேர்த்தியாக எளிமையானது. பொட்டென்டியோமீட்டரைப் படிக்கவும் சர்வோவைக் கட்டுப்படுத்தவும் இது சில முக்கிய Arduino செயல்பாடுகளைப் பயன்படுத்துகிறது. உங்கள் சொந்த திட்டங்களுக்காக நீங்கள் சரிசெய்யக்கூடிய பயனர்-கட்டமைக்கக்கூடிய பகுதிகளில் கவனம் செலுத்துவோம். (வீடியோவில் 03:00)

ஸ்கெட்ச்சின் மேற்புறத்தில், நீங்கள் பின்களை வரையறுத்து சர்வோ பொருளை உருவாக்குவீர்கள். உங்கள் வயரிங்கின் அடிப்படையில் நீங்கள் மாற்றும் முதன்மை மாறிகள் இவை:

#include <Servo.h>

Servo myservo;  // ஒரு சர்வோவைக் கட்டுப்படுத்த சர்வோ பொருளை உருவாக்கவும்

int potpin = A0;  // பொட்டென்டியோமீட்டரை இணைக்க பயன்படுத்தப்படும் அனலாக் பின்
int servoPin = 3; // சர்வோவிற்கு ஒரு டிஜிட்டல் பின்னை (PWM உடன்) வரையறுக்கவும். பின் 3, 5, 6, 9, 10, 11 மட்டுமே பயன்படுத்தலாம்
int VCC2 = 8;// பொட்டென்டியோமீட்டருக்கு கூடுதல் VCC ஐ வரையறுக்கவும்
int val;    // அனலாக் பின்னிலிருந்து மதிப்பைப் படிக்க மாறி

ஒவ்வொரு பகுதியும் என்ன செய்கிறது என்பது இங்கே:

  • Servo myservo;: இந்த வரி myservo என்ற பெயரில் ஒரு பொருளை உருவாக்குகிறது, இதை நம் குறிப்பிட்ட சர்வோ மோட்டாரைக் கட்டுப்படுத்த பயன்படுத்துவோம். நீங்கள் அதை மறுபெயரிடலாம், ஆனால் பின்னர் குறியீட்டில் அதே பெயரைப் பயன்படுத்த வேண்டும்.
  • int potpin = A0;: பொட்டென்டியோமீட்டரின் வைப்பர் எந்த அனலாக் பின்னுடன் இணைக்கப்பட்டுள்ளது என்பதை இது வரையறுக்கிறது. கம்பியை வேறு அனலாக் பின்னுக்கு நகர்த்தினால், இந்த எண்ணை புதுப்பிக்க வேண்டும்.
  • int servoPin = 3;: சர்வோவின் சிக்னல் கம்பிக்கான டிஜிட்டல் பின்னை இது அமைக்கிறது. PWM திறன் கொண்ட பின்னைப் பயன்படுத்துவது மிகவும் முக்கியம் (பொதுவாக பலகையில் '~' குறியிட்டவை). கருத்து பெரும்பாலான Arduino களுக்கு செல்லுபடியாகும் பின்களை பட்டியலிடுகிறது.
  • int VCC2 = 8;: பொட்டென்டியோமீட்டருக்கான இரண்டாம் நிலை 5V மூலமாக நாம் பயன்படுத்தும் பின் இது. பல 5V பின்கள் கொண்ட பலகை இருந்தால், அதை நேரடியாக இணைத்து குறியீட்டின் இந்த பகுதியை அகற்றலாம்.

setup() செயல்பாட்டில், குறியீடு சர்வோவை துவக்கி கூடுதல் மின்சார பின்னை அமைக்கிறது. myservo.attach(servoPin) செயல்பாடு மிக முக்கியமானது, ஏனெனில் இது Arduino-விற்கு எந்த பின் சர்வோவின் சிக்னல் கம்பியுடன் இணைக்கப்பட்டுள்ளது என்பதை கூறுகிறது.

void setup() {
  Serial.begin(9600);          //  சீரியலை அமைக்கவும்
  myservo.attach(servoPin);  // பின் 3-ல் உள்ள சர்வோவை சர்வோ பொருளுடன் இணைக்கிறது

  pinMode(VCC2, OUTPUT);// பின் 8-ஐ வெளியீடாக அமைக்கவும்
  digitalWrite(VCC2, HIGH);// பின் 8-ஐ HIGH ஆக அமைக்கவும், இதனால் அது 5V பின்னாக செயல்படும்
}

முக்கிய தர்க்கம் loop() செயல்பாட்டில் உள்ளது. இது பொட்டென்டியோமீட்டரின் மதிப்பை படித்து, அதை கோணமாக மாற்றி, சர்வோவை நகர்த்த கட்டளையிடுகிறது. இங்கு முக்கியமான இரண்டு செயல்பாடுகள் analogRead() மற்றும் map() ஆகும். (வீடியோவில் 04:27-ல்)

void loop() {
  val = analogRead(potpin);            // பொட்டென்டியோமீட்டரின் மதிப்பை படிக்கிறது (0 மற்றும் 1023 க்கு இடையிலான மதிப்பு)
  val = map(val, 0, 1023, 0, 180);     // சர்வோவுடன் பயன்படுத்த அளவிடுகிறது (0 மற்றும் 180 க்கு இடையிலான மதிப்பு)
  myservo.write(val);                  // அளவிடப்பட்ட மதிப்பின் படி சர்வோ நிலையை அமைக்கிறது
  Serial.print(val);
  Serial.println();
  delay(50);                           // சர்வோ அங்கு செல்ல காத்திருக்கிறது
}

இது எவ்வாறு செயல்படுகிறது என்பது இங்கே:

  • analogRead(potpin): இந்த செயல்பாடு பொட்டென்டியோமீட்டரின் வைப்பரிலிருந்து மின்னழுத்தத்தை படித்து 0 (0V) மற்றும் 1023 (5V) க்கு இடையிலான மதிப்பை திருப்பி அனுப்புகிறது.
  • map(val, 0, 1023, 0, 180): இது முழு திட்டத்திற்கும் முக்கியமானது. இது பொட்டென்டியோமீட்டரின் மூல மதிப்பை (0 முதல் 1023) எடுத்து, அதை விகிதாசாரமாக சர்வோ கோணமாக (0 முதல் 180 டிகிரி) மாற்றுகிறது. எடுத்துக்காட்டாக, பொட்டென்டியோமீட்டர் 511 (சுமார் பாதி) படித்தால், map() செயல்பாடு 90-ஐ திருப்பி அனுப்பும், சர்வோவை அதன் மைய நிலைக்கு நகர்த்தும்.
  • myservo.write(val): இந்த செயல்பாடு கணக்கிடப்பட்ட கோணத்தை (இப்போது val-ல் சேமிக்கப்பட்டுள்ளது) எடுத்து, சர்வோவை அந்த நிலைக்கு சுழற்ற கட்டளையிடுகிறது.
  • delay(50): இது ஒவ்வொரு லூப்பின் முடிவிலும் ஒரு சிறிய இடைவெளியை சேர்க்கிறது. இது புதுப்பிப்பு விகிதத்தை கட்டுப்படுத்துகிறது. பெரிய தாமதம் (200ms போன்றவை) சர்வோவை படிகளில் நகர்த்தும், அதே நேரத்தில் சிறிய தாமதம் (50ms போன்றவை) இயக்கத்தை மிகவும் மென்மையாக்கும். பதிலளிப்பை மாற்ற இதை நீங்கள் சரிசெய்யலாம். (வீடியோவில் 07:26-ல்)

நேரடி திட்ட செயல்விளக்கம்

வீடியோவில், திட்டம் செயல்படுவதை நீங்கள் காணலாம். பொட்டென்டியோமீட்டர் குமிழ் திருப்பப்படும்போது, சர்வோ மோட்டாரின் கை அதன் நிலையை விகிதாசாரமாக பின்பற்றுகிறது. சீரியல் மானிட்டர் தற்போதைய கோணத்தை அச்சிடுகிறது, இது மேப்பிங் சரியாக செயல்படுவதை உறுதிப்படுத்துகிறது. பொட்டென்டியோமீட்டர் அதன் குறைந்தபட்ச நிலையில் இருக்கும்போது, சர்வோ 0 டிகிரியில் உள்ளது. குமிழை அதன் அதிகபட்சத்திற்கு திருப்பும்போது, சர்வோ மென்மையாக 180 டிகிரிக்கு சுழல்கிறது. (வீடியோவில் 06:33-ல்)

இந்த நிகழ்நேர பின்னூட்ட லூப், அனலாக் சென்சாரை டிஜிட்டல் ஆக்சுயேட்டருடன் தடையின்றி ஒருங்கிணைப்பதை நிரூபிக்கிறது, இது பதிலளிக்கக்கூடிய மற்றும் உள்ளுணர்வு கட்டுப்பாட்டு அமைப்பை உருவாக்குகிறது.

அத்தியாயங்கள்

  • [00:00] அறிமுகம் மற்றும் திட்ட கண்ணோட்டம்
  • [01:05] சுற்று வரைபடம் மற்றும் வயரிங் வரைபடம்
  • [02:07] உடல் வயரிங் செயல்விளக்கம்
  • [03:00] குறியீடு விளக்கம்
  • [06:33] நேரடி செயல்விளக்கம் மற்றும் சோதனை
  • [07:26] சர்வோ பதில் வேகத்தை சரிசெய்தல்

படங்கள்

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
892-Lesson 86: Controlling a servo position using a potentiometer (variable resistor)
மொழி: C++
/*
 * Lesson 88: Controlling Servo motor a with Potentiometer
 * 📚⬇️ Download and resource page https://robojax.com/RJT763
 watch full video tutroial: https://www.youtube.com/watch?v=ntRW77mNFFk
 
 Controlling a servo position using a potentiometer (variable resistor)
 by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>

 modified on 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Knob

 Update by Ahmad Shamshiri on Jan 01, 2019  in Ajax, Ontario, Canada


*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo

int potpin = A0;  // analog pin used to connect the potentiometer
int servoPin = 3; // define a digital pin (with PWM) for servo. Can use only pin 3, 5, 6,9, 10, 11
int VCC2 = 8;// define extra VCC for potentiometer
int val;    // variable to read the value from the analog pin

void setup() {
  //
  Serial.begin(9600);          //  setup serial
  myservo.attach(servoPin);  // attaches the servo on pin 3 to the servo object

  pinMode(VCC2, OUTPUT);// set pin 8 as output
  digitalWrite(VCC2, HIGH);// set pin 8 HIGH so it acts as 5V pin
}

void loop() {
  
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 180);     // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val);                  // sets the servo position according to the scaled value
  Serial.print(val);
  Serial.println();
  delay(50);                           // waits for the servo to get there
}
 

நீங்கள் தேவைப்படும் எண்ணங்கள்

வளங்கள் மற்றும் மேற்கோள்கள்

கோப்புகள்📁

மற்ற கோப்புகள்