Search Code

பாடம் 85: சர்வோ மோட்டார்களுக்கான அறிமுகம் | ஆர்டுயினோ படிப்படியான பாடநெறி

பாடம் 85: சர்வோ மோட்டார்களுக்கான அறிமுகம் | ஆர்டுயினோ படிப்படியான பாடநெறி

இந்த திட்ட வழிகாட்டி தொடர்ச்சியான சுழற்சி சர்வோ மோட்டார்கள், 360-டிகிரி சர்வோக்கள் என்றும் அழைக்கப்படுபவை பற்றிய உலகத்தை உங்களுக்கு அறிமுகப்படுத்துகிறது. ஒரு குறிப்பிட்ட கோணத்திற்கு (0 முதல் 180 டிகிரி போன்று) நகரும் நிலையான சர்வோக்களைப் போலல்லாமல், இந்த மோட்டார்கள் இரு திசைகளிலும் தொடர்ச்சியாக சுழலும். இது சிறிய ரோபோக்கள், டேங்க் ட்ரெட்கள் அல்லது எளிய, மலிவான டிரைவ் மோட்டார்கள் தேவைப்படும் எந்த திட்டத்திற்கும் ஏற்றதாக அமைகிறது. இந்த வழிகாட்டி ஆர்டுயினோ மற்றும் சில புஷ் பட்டன்களைப் பயன்படுத்தி ஒன்றை எவ்வாறு கட்டுப்படுத்துவது என்பதைக் காட்டும், இதன் மூலம் அதன் திசை மற்றும் வேகத்தின் மீது நேரடி கட்டுப்பாட்டைப் பெறுவீர்கள்.

360-டிகிரி சர்வோவிற்கான சில நடைமுறை பயன்பாடுகள் இங்கே:

  • சிறிய இரண்டு சக்கர ரோபோ காரை உருவாக்குதல்.
  • முடிவில்லாமல் சுழலும் பேன்-அண்ட்-டில்ட் கேமரா மவுண்ட்டை உருவாக்குதல்.
  • சிறிய கன்வேயர் பெல்ட் அல்லது வின்ச்சை இயக்குதல்.
  • எளிய ரேடார் அல்லது சென்சார் ஸ்கேனிங் தளத்தை உருவாக்குதல்.

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

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

  • ஆர்டுயினோ போர்டு (எ.கா., உனோ)
  • தொடர்ச்சியான சுழற்சி சர்வோ மோட்டார் (எ.கா., FS90R அல்லது ஒத்த)
  • மூன்று புஷ் பட்டன்கள்
  • ஜம்பர் கம்பிகள்
  • பிரெட்போர்டு (விருப்பம், எளிதான வயரிங்கிற்கு)

வயரிங் வழிகாட்டி

இந்த திட்டத்திற்கான வயரிங் எளிதானது. சர்வோ மோட்டாரில் மூன்று கம்பிகள் உள்ளன: பொதுவாக பழுப்பு (தரை), சிவப்பு (மின்சாரம்), மற்றும் ஆரஞ்சு அல்லது மஞ்சள் (சிக்னல்). புஷ் பட்டன்கள் எளிய உள்ளமைவில் இணைக்கப்பட்டுள்ளன.

இணைப்புகளின் விவரம் இங்கே:

  • சர்வோ மோட்டார்:
    • பழுப்பு கம்பி (தரை) ஆர்டுயினோவின் GND பின்னுடன் இணைகிறது.
    • சிவப்பு கம்பி (மின்சாரம்) ஆர்டுயினோவின் 5V பின்னுடன் இணைகிறது.
    • ஆரஞ்சு/மஞ்சள் கம்பி (சிக்னல்) ஆர்டுயினோ பின் 9 உடன் இணைகிறது.
  • புஷ் பட்டன்கள்:
    • ஒவ்வொரு பட்டனின் ஒரு பக்கம் ஆர்டுயினோவின் GND பின்னுடன் இணைக்கப்பட்டுள்ளது.
    • "எதிர்-கடிகார திசை" பட்டனின் மறுபக்கம் பின் 2 உடன் இணைகிறது.
    • "நிறுத்து" பட்டனின் மறுபக்கம் பின் 3 உடன் இணைகிறது.
    • "கடிகார திசை" பட்டனின் மறுபக்கம் பின் 4 உடன் இணைகிறது.

வீடியோவில், உருவாக்கியவர் சர்வோவின் சிக்னல் கம்பி ஆர்டுயினோவில் PWM-திறன் கொண்ட பின்னுடன் இணைக்கப்பட வேண்டும் என்பதை வலியுறுத்துகிறார், இது பெரும்பாலும் டில்டே (~) குறியீட்டால் குறிக்கப்படுகிறது. பின் 9 இவற்றில் ஒன்றாகும். புஷ் பட்டன்கள் ஆர்டுயினோவின் உள் புல்-அப் ரெசிஸ்டர்களைப் பயன்படுத்துகின்றன, இது வெளிப்புற ரெசிஸ்டர்களின் தேவையை நீக்கி வயரிங்கை எளிதாக்குகிறது (வீடியோவில் 07:02 மணிக்கு).

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

குறியீடு மூன்று புஷ் பட்டன்களின் நிலையைப் படித்து, அதற்கான கட்டளையை சர்வோ மோட்டாருக்கு அனுப்ப வடிவமைக்கப்பட்டுள்ளது. பயனர்-உள்ளமைக்கக்கூடிய பகுதிகளை பிரிப்போம்.

பின்கள் மற்றும் கட்டளைகளை உள்ளமைத்தல்

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


const int servoPin = 9;    // சர்வோ சிக்னலுக்கான PWM பின்
const int stopPin = 3;     // நிறுத்து பட்டனுக்கான பின்
const int cwPin = 4;       // கடிகார திசை பட்டனுக்கான பின்
const int ccwPin = 2;      // எதிர்-கடிகார திசை பட்டனுக்கான பின்

இந்த மாறிலிகள் எந்த ஆர்டுயினோ பின்கள் பட்டன்கள் மற்றும் சர்வோவுடன் இணைக்கப்பட்டுள்ளன என்பதை வரையறுக்கின்றன. உங்கள் பட்டன்களுக்கு வேறு பின்களைப் பயன்படுத்தினால், இங்குள்ள எண்களை மாற்றுவீர்கள். servoPin PWM-திறன் கொண்ட பின்னாக இருக்க வேண்டும்.


const int csServoCommand[3] = {106, 52, 0};  // {CCW, STOP, CW}
const String csServoCommandText[3] = {"எதிர் கடிகார திசை", "நிறுத்தப்பட்டது", "கடிகார திசை"};

இது புரிந்துகொள்ளவும் சரிசெய்யவும் மிக முக்கியமான பகுதி. csServoCommand வரிசை சர்வோவிற்கு அனுப்பப்படும் மதிப்புகளை வைத்துள்ளது. தொடர்ச்சியான சர்வோவிற்கு, இந்த மதிப்புகள் ஒரு கோணத்தைக் குறிக்காது, மாறாக வேகம் மற்றும் திசையைக் குறிக்கும்.

  • 106 என்பது முழு வேக எதிர்-கடிகார திசை சுழற்சிக்கான மதிப்பு.
  • 52 என்பது முழு நிறுத்தத்திற்கான மதிப்பு.
  • 0 என்பது முழு வேக கடிகார திசை சுழற்சிக்கான மதிப்பு.

இந்த மதிப்புகள் உலகளாவியவை அல்ல. உற்பத்தி வேறுபாடுகள் காரணமாக, "நிறுத்து" மதிப்பு (52) சரிசெய்யப்பட வேண்டியிருக்கலாம். நிறுத்து பட்டனை அழுத்தும்போது உங்கள் சர்வோ மெதுவாக நகர்ந்தால், இந்த மதிப்பை நன்றாக சரிசெய்ய வேண்டும். வீடியோ இந்த செயல்முறையை நிரூபிக்கிறது, மதிப்பை 54 அல்லது 51 ஆக மாற்றுவது மோட்டாரின் நடத்தையை எவ்வாறு பாதிக்கும் என்பதைக் காட்டுகிறது (வீடியோவில் 13:45 மணிக்கு).

மோட்டாரின் வேகத்தை மாற்ற சுழற்சிக்கான மதிப்புகளையும் சரிசெய்யலாம். எடுத்துக்காட்டாக, எதிர்-கடிகார திசை மதிப்பை 70 ஆக அமைப்பது 106-ஐ விட மெதுவாக சுழலச் செய்யும் (வீடியோவில் 12:23 மணிக்கு).

csServoCommandText வரிசை தற்போதைய கட்டளை நிலையைக் காட்ட Serial Monitor-இல் அச்சிடப்படும் உரை சரங்களை வைத்துள்ளது.

தனிப்பயன் செயல்பாடு: servoCommand()

குறியீடு கட்டளை தர்க்கத்தை கையாள ஒரு தனிப்பயன் செயல்பாட்டைப் பயன்படுத்துகிறது. இந்த செயல்பாடு ஒரு எண்ணை (0, 1, அல்லது 2) வாதமாக எடுத்து, நிலை உரையைப் புதுப்பித்து, அதற்கான கட்டளையை சர்வோவிற்கு அனுப்புகிறது.


void servoCommand(int n) {
  statusText = csServoCommandText[n];
  myservo.write(csServoCommand[n]);
  Serial.println(csServoCommandText[n]);
  Serial.println(csServoCommand[n]);
}

இந்த செயல்பாடு ஒரு பட்டன் அழுத்தப்படும்போது முக்கிய லூப்பிலிருந்து அழைக்கப்படுகிறது. இது காட்சியைப் புதுப்பிப்பதற்கும் சர்வோவைக் கட்டுப்படுத்துவதற்குமான தர்க்கத்தை மையப்படுத்துகிறது, இதனால் குறியீடு தூய்மையாகவும் மாற்றுவதற்கு எளிதாகவும் இருக்கும்.

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

வீடியோவில், உருவாக்கியவர் திட்டத்தை செயலில் நிரூபிக்கிறார். "கடிகார திசை" பட்டனை அழுத்துவது சர்வோவிற்கு 0 மதிப்பை அனுப்புகிறது, இது ஒரு திசையில் சுழலச் செய்கிறது. "எதிர்-கடிகார திசை" பட்டனை அழுத்துவது 106 மதிப்பை அனுப்புகிறது, இது மறு திசையில் சுழலச் செய்கிறது. "நிறுத்து" பட்டன் 52 ஐ அனுப்புகிறது, இது மோட்டாரை நிறுத்த வேண்டும்.

சீரியல் மானிட்டர் தற்போதைய நிலை மற்றும் சர்வோவிற்கு அனுப்பப்படும் சரியான மதிப்பைக் காட்ட பயன்படுகிறது. இது பிழைத்திருத்தத்திற்கும், உங்கள் குறிப்பிட்ட மோட்டாருக்கான சரியான "நிறுத்த" மதிப்பைக் கண்டறிவதற்கும் மிகவும் பயனுள்ளதாக இருக்கும். வீடியோவில் குறிப்பிட்டுள்ளபடி, சர்வோவின் உள் மின்சுற்று காரணமாக நிறுத்தக் கட்டளை சரியாக இருக்காது, மேலும் மெதுவான நகர்வு அல்லது அதிர்வை நீங்கள் காணலாம். இது மலிவான தொடர்ச்சியான சர்வோக்களின் பொதுவான பண்பாகும், மேலும் குறியீட்டில் உள்ள நிறுத்த மதிப்பை சரிசெய்வதன் மூலம் இதைக் குறைக்கலாம் (வீடியோவில் 01:15 இல்).

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

  • [00:05] 360-டிகிரி சர்வோ மோட்டார் அறிமுகம்
  • [02:02] கூறுகள் மற்றும் வன்பொருள் கண்ணோட்டம்
  • [02:40] விரிவான வயரிங் வரைபடம் மற்றும் இணைப்புகள்
  • [05:07] குறியீடு விளக்கம்: மாறிலிகள், வரிசைகள் மற்றும் அமைப்பு
  • [09:56] குறியீடு விளக்கம்: servoCommand செயல்பாடு
  • [10:54] நேரடி செயல்விளக்கம் மற்றும் சீரியல் மானிட்டர் வெளியீடு
  • [12:23] சர்வோ வேகம் மற்றும் நிறுத்த மதிப்புகளை சரிசெய்தல்

படங்கள்

SG90 Mini Servo Motor
SG90 Mini Servo Motor
SG90_servo_motor-1
SG90_servo_motor-1
115-Arduino code to control continuous 360° servo from serial monitor command
மொழி: C++
/* 
 *  
 *  Demonstration of Controlling Continuous Servo (360 servo)
 *  This code allows you to control a 360-degree servo by a command from the Serial Monitor.
* this 350 servo motor is a just for fun. it can't be used for real application where you need exact positioning. get stepper motor or expensive servo motor. 
📚⬇️ Download and resource page https://robojax.com/RJT762
 *  
 * Modified by Ahmad Shamshiri for Robojax.com
 * on Sunday, July 1, 2018, at 11:09 AM in Ajax, Ontario, Canada
 * Watch a video instruction of this project: https://youtu.be/b_xvu6wWafA
 * Get this code from Robojax.com
 * 
 Original code by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.
 Modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position
int incomingByte = 0;   // for incoming serial data

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



void loop() {

        // send data only when you receive data:
        if (Serial.available() > 0) {
                // read the incoming byte:
                incomingByte = Serial.read();

                // say what you got:
                Serial.print("received: ");
                Serial.print (incomingByte);
                if(incomingByte == 108){
                 Serial.println(" sent 0 Rotating CW "); 
                 myservo.write(0); 
                }else if(incomingByte == 114){
                  Serial.println(" sent 180 Rotating CCW "); 
                  myservo.write(180); 
                }else if(incomingByte == 60){
                  Serial.println(" sent Stopped "); 
                  myservo.write(60); 
                }else{
                  Serial.println(" moving Randomly"); 
                  myservo.write(incomingByte); 
                }
                  
                 
        }

  
}
893-Arduino code to control continuous 360° servo from serial monitor command (Code 2)
மொழி: C++
/* 
 *  
 *  Demonstration of Controlling Continuous Servo (360 servo)
360 Servo -2
 *  This code allows you to control a 360-degree servo by a command from the Serial Monitor.
* this 350 servo motor is a just for fun. it can't be used for real application where you need exact positioning. get stepper motor or expensive servo motor. 
📚⬇️ Download and resource page https://robojax.com/RJT762
 *  
 * Modified by Ahmad Shamshiri for Robojax.com
 * on Sunday, July 1, 2018, at 11:09 AM in Ajax, Ontario, Canada
 * Watch a video instruction of this project: https://youtu.be/b_xvu6wWafA
 * Get this code from Robojax.com
 * 
 Original code by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.
 Modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int servoPin = 9;// this pin must be of those with PWM ~
int pos = 0;    // variable to store the servo position
int incomingByte = 0;   // for incoming serial data
int CWBS, CCWBS, SBS;

void setup() {
  Serial.begin(9600);
 pinMode(2,INPUT_PULLUP);// set pin for push button STOP
  pinMode(3,INPUT_PULLUP);// set pin for push button CCW  
  pinMode(4,INPUT_PULLUP);// set pin for push button CW
   
  myservo.attach(servoPin);  // attaches the servo on pin 9 to the servo object
}



void loop() {
    CCWBS = digitalRead(2);// read status of button CCW
    SBS = digitalRead(3);// read status of button STOP
    CWBS = digitalRead(4);// read status of button CW
                 if(CCWBS == LOW){
                 Serial.println(" sent 0 Rotaing CW "); 
                 myservo.write(0); 
                }else if(CWBS == LOW){
                  Serial.println(" sent 180 Rotaing CCW "); 
                  myservo.write(180); 
                }else if(SBS == LOW){
                  Serial.println(" sent Stopped "); 
                  myservo.write(60); 
                }else{
                  Serial.println(" moving Random"); 
                  myservo.write(48); 
                }
                  


  
}// loop 

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

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

கோப்புகள்📁

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