- சுய சமநிலை ரோபோவுக்கான பகுதிகளைத் தேர்ந்தெடுப்பது
- 3D சுய அச்சிடும் ரோபோவை அச்சிடுதல்
- சுற்று வரைபடம்
- சுய சமநிலை ரோபோ குறியீடு
- Arduino Self Balancing Robot இன் வேலை
செக்வேயில் இருந்து RYNO மோட்டார்கள் மற்றும் பிற சுய சமநிலைப்படுத்தும் ஸ்கூட்டர்களால் ஈர்க்கப்பட்ட பிறகு, நான் எப்போதும் எனது சொந்த Arduino Segway Robot ஐ உருவாக்க விரும்பினேன். சிறிது நேரம் யோசித்து, அர்டுயினோவைப் பயன்படுத்தி ஒரு சுய சமநிலை ரோபோவை உருவாக்க முடிவு செய்தேன். இந்த வழியில் இந்த ஸ்கூட்டர்களுக்குப் பின்னால் உள்ள அடிப்படைக் கருத்தை என்னால் புரிந்து கொள்ள முடியும், மேலும் PID வழிமுறை எவ்வாறு செயல்படுகிறது என்பதையும் அறிய முடியும்.
நான் கட்டத் தொடங்கியதும், இந்த போட் கட்டுவது ஒரு சவாலாக இருப்பதை உணர்ந்தேன். தேர்ந்தெடுக்க பல விருப்பங்கள் உள்ளன, எனவே குழப்பங்கள் மோட்டார்கள் தேர்ந்தெடுக்கும் சரியான வடிவத்தைத் தொடங்குகின்றன மற்றும் PID மதிப்புகளை சரிசெய்யும் வரை இருக்கும். பேட்டரி வகை, பேட்டரியின் நிலை, சக்கர பிடியில், மோட்டார் டிரைவரின் வகை, CoG (ஈர்ப்பு மையம்) மற்றும் பலவற்றைப் பராமரிப்பது போன்ற பல விஷயங்கள் உள்ளன.
ஆனால் நான் அதை உங்களிடம் உடைக்க விடுகிறேன், நீங்கள் அதை கட்டியவுடன் அது கடினமாக இல்லை என்பதை ஒப்புக்கொள்வீர்கள். எனவே இதை எதிர்கொள்வோம், இந்த டுடோரியலில் சுய சமநிலை ரோபோவை உருவாக்குவதில் எனது அனுபவத்தை ஆவணப்படுத்துவேன். நீங்கள் தொடங்கும் ஒரு முழுமையான தொடக்கக்காரராக இருக்கலாம் அல்லது உங்கள் போட் வேலை செய்யாததால் நீண்ட விரக்திக்குப் பிறகு இங்கு இறங்கியிருக்கலாம். இந்த இடம் உங்கள் இறுதி இடமாக இருப்பதை நோக்கமாகக் கொண்டுள்ளது. எனவே ஆரம்பிக்கலாம்……
சுய சமநிலை ரோபோவுக்கான பகுதிகளைத் தேர்ந்தெடுப்பது
போட் கட்டமைப்பதற்கான அனைத்து விருப்பங்களையும் நான் உங்களுக்குச் சொல்வதற்கு முன், இந்த சுய சமநிலை ரோபோ திட்டத்தில் நான் பயன்படுத்திய உருப்படிகளை பட்டியலிடுகிறேன்
- Arduino UNO
- கியர் டிசி மோட்டார்கள் (மஞ்சள் நிற) - 2 எண்
- எல் 298 என் மோட்டார் டிரைவர் தொகுதி
- MPU6050
- ஒரு ஜோடி சக்கரங்கள்
- 7.4 வி லி-அயன் பேட்டரி
- கம்பிகளை இணைக்கிறது
- 3D அச்சிடப்பட்ட உடல்
உங்கள் சொந்த சுய சமநிலை ரோபோ கிட் தயாரிப்பதற்கான கிடைக்கும் தன்மையை அடிப்படையாகக் கொண்டு மேலே உள்ள எந்தவொரு கூறுகளையும் நீங்கள் கலந்து தேர்வு செய்யலாம், கூறுகள் பின்வரும் அளவுகோல்களுக்கு பொருந்துகின்றன என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.
கட்டுப்படுத்தி: நான் இங்கு பயன்படுத்திய கட்டுப்படுத்தி Arduino UNO ஆகும், ஏன் அதைப் பயன்படுத்த எளிதானது. நீங்கள் ஒரு Arduino நானோ அல்லது Arduino மினியையும் பயன்படுத்தலாம், ஆனால் UNO உடன் இணைந்திருக்க நான் உங்களுக்கு பரிந்துரைக்கிறேன், ஏனென்றால் எந்தவொரு வெளிப்புற வன்பொருளும் இல்லாமல் அதை நேரடியாக நிரல் செய்யலாம்.
மோட்டார்கள்: சுய சமநிலைப்படுத்தும் ரோபோவுக்கு நீங்கள் பயன்படுத்தக்கூடிய மோட்டரின் சிறந்த தேர்வு, சந்தேகமின்றி ஸ்டெப்பர் மோட்டார் ஆகும். ஆனால் விஷயங்களை எளிமையாக வைத்திருக்க நான் ஒரு டிசி கியர் மோட்டாரைப் பயன்படுத்தினேன். ஆம், ஒரு ஸ்டெப்பர் வைத்திருப்பது கட்டாயமில்லை; இந்த மலிவான பொதுவாக கிடைக்கக்கூடிய மஞ்சள் நிற டிசி கியர் மோட்டார்கள் மூலம் போட் நன்றாக வேலை செய்கிறது.
மோட்டார் டிரைவர்: நீங்கள் என்னுடையது போன்ற டிசி கியர் மோட்டார்கள் தேர்ந்தெடுத்திருந்தால், நீங்கள் என்னைப் போன்ற எல் 298 என் டிரைவர் தொகுதியைப் பயன்படுத்தலாம், அல்லது எல் 293 டி கூட நன்றாக வேலை செய்ய வேண்டும். L293D மற்றும் Arduino ஐப் பயன்படுத்தி DC மோட்டாரைக் கட்டுப்படுத்துவது பற்றி மேலும் அறிக.
சக்கரங்கள்: இவர்களை மதிப்பிடாதீர்கள்; என் சக்கரங்களில் சிக்கல் இருப்பதைக் கண்டுபிடிப்பதில் எனக்கு கடினமான நேரம் இருந்தது. எனவே நீங்கள் பயன்படுத்தும் தரையில் உங்கள் சக்கரங்களுக்கு நல்ல பிடிப்பு இருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். உன்னிப்பாகப் பாருங்கள், உங்கள் பிடியை ஒருபோதும் உங்கள் சக்கரங்கள் தரையில் சறுக்க அனுமதிக்கக்கூடாது.
முடுக்க அளவி மற்றும் கைரோஸ்கோப்: உங்கள் போட்டுக்கான முடுக்கமானி மற்றும் கைரோஸ்கோப்பின் சிறந்த தேர்வு MPU6050 ஆகும். எனவே ADXL345 போன்ற சாதாரண முடுக்க மானியைக் கொண்டு ஒன்றை உருவாக்க முயற்சிக்காதீர்கள் அல்லது அது போன்ற ஏதாவது ஒன்றை உருவாக்க வேண்டாம். இந்த கட்டுரையின் முடிவில் ஏன் என்று உங்களுக்குத் தெரியும். Arduino உடன் MPU6050 ஐப் பயன்படுத்துவது பற்றிய எங்கள் பிரத்யேக கட்டுரையையும் நீங்கள் பார்க்கலாம்.
பேட்டரி: எங்களுக்கு ஒரு பேட்டரி தேவை, அது முடிந்தவரை ஒளி மற்றும் இயக்க மின்னழுத்தம் 5V ஐ விட அதிகமாக இருக்க வேண்டும், இதனால் பூஸ்ட் தொகுதி இல்லாமல் எங்கள் ஆர்டுயினோவை நேரடியாக இயக்க முடியும். எனவே சிறந்த தேர்வு 7.4 வி லி-பாலிமர் பேட்டரியாக இருக்கும். இங்கே, என்னிடம் 7.4 வி லி-அயன் பேட்டரி இருப்பதால், நான் அதைப் பயன்படுத்தினேன். ஆனால் லி-அயனை விட லி-போ சாதகமானது என்பதை நினைவில் கொள்ளுங்கள்.
சேஸ்: நீங்கள் சமரசம் செய்யக் கூடாத மற்றொரு இடம் உங்கள் போட்ஸ் சேஸ். நீங்கள் நன்றாக இருக்கும் அட்டை, மரம், பிளாஸ்டிக் எதையும் பயன்படுத்தலாம். ஆனால், சேஸ் உறுதியானது என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள், போட் சமப்படுத்த முயற்சிக்கும்போது அசைக்கக்கூடாது. மற்ற போட்களிலிருந்து ஊகிக்கும் சாலிட்வொர்க்கில் சொந்த சேஸ் மூலம் நான் வடிவமைத்துள்ளேன், 3D அதை அச்சிட்டுள்ளது. உங்களிடம் அச்சுப்பொறி இருந்தால், வடிவமைப்பையும் அச்சிடலாம், வடிவமைப்பு கோப்புகள் வரவிருக்கும் தலைப்பில் இணைக்கப்படும்.
3D சுய அச்சிடும் ரோபோவை அச்சிடுதல்
எனது போட்டை உருவாக்க நான் பயன்படுத்தும் அதே சேஸை 3D அச்சிட முடிவு செய்திருந்தால், எஸ்.டி.எல் கோப்புகளை விஷயத்திலிருந்து பதிவிறக்கம் செய்யலாம். நான் அதனுடன் வடிவமைப்பு கோப்புகளையும் சேர்த்துள்ளேன், எனவே உங்கள் பணியாளர்களின் விருப்பப்படி நீங்கள் அதை மாற்றலாம்.
பகுதிகளுக்கு எந்தவிதமான மாற்றங்களும் இல்லை, எனவே அவற்றை எந்த ஆதரவும் இல்லாமல் எளிதாக அச்சிடலாம், மேலும் 25% நிரப்புதல் நன்றாக வேலை செய்யும். வடிவமைப்புகள் மிகவும் எளிமையானவை மற்றும் எந்த அடிப்படை அச்சுப்பொறியும் அதை எளிதாக கையாள முடியும். மாதிரியை துண்டிக்க நான் குரா மென்பொருளைப் பயன்படுத்தினேன், எனது டெவோ டரான்டுலாவைப் பயன்படுத்தி அச்சிடப்பட்டேன், இந்த அமைப்பு கீழே காட்டப்பட்டுள்ளது.

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

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

சுற்று வரைபடம்
இந்த Arduino அடிப்படையிலான சுய சமநிலை ரோபோவுக்கான இணைப்புகளை உருவாக்குவது மிகவும் எளிது. இது Arduino மற்றும் MPU6050 ஐப் பயன்படுத்தி ஒரு சுய சமநிலை ரோபோ ஆகும், எனவே MPU6050 ஐ Arduino உடன் இடைமுகப்படுத்தவும், மோட்டார் இயக்கி தொகுதி என்றாலும் மோட்டார்கள் இணைக்கவும் நாங்கள் முயல்கிறோம். முழு அமைப்பும் 7.4 வி லி-அயன் பேட்டரி மூலம் இயக்கப்படுகிறது. அதற்கான சுற்று வரைபடம் கீழே காட்டப்பட்டுள்ளது.

Arduino மற்றும் L298N மோட்டார் இயக்கி தொகுதி முறையே வின் முள் மற்றும் 12V முனையத்தின் மூலம் இயக்கப்படுகிறது. Arduino போர்டில் உள்ள ஆன்-போர்டு ரெகுலேட்டர் உள்ளீட்டை 7.4V ஐ 5V ஆக மாற்றும் மற்றும் ATmega IC மற்றும் MPU6050 ஆகியவை இதன் மூலம் இயக்கப்படும். டிசி மோட்டார்கள் மின்னழுத்தம் 5 வி முதல் 12 வி வரை இயக்க முடியும். ஆனால் 7.4 வி நேர்மறை கம்பியை பேட்டரியிலிருந்து மோட்டார் டிரைவர் தொகுதியின் 12 வி உள்ளீட்டு முனையத்துடன் இணைப்போம். இது மோட்டார்கள் 7.4 வி உடன் இயங்கச் செய்யும். பின்வரும் அட்டவணை MPU6050 மற்றும் L298N மோட்டார் இயக்கி தொகுதி Arduino உடன் எவ்வாறு இணைக்கப்பட்டுள்ளது என்பதை பட்டியலிடும்.
|
கூறு முள் |
அர்டுயினோ முள் |
|
MPU6050 |
|
|
வி.சி.சி. |
+ 5 வி |
|
தரையில் |
Gnd |
|
எஸ்.சி.எல் |
அ 5 |
|
எஸ்.டி.ஏ. |
அ 4 |
|
INT |
டி 2 |
|
எல் 298 என் |
|
|
IN1 |
டி 6 |
|
IN2 |
டி 9 |
|
IN3 |
டி 10 |
|
IN4 |
டி 11 |
MPU6050 I2C இடைமுகத்தின் மூலம் Arduino உடன் தொடர்பு கொள்கிறது, எனவே நாங்கள் Arduino இன் SPI பின்ஸ் A4 மற்றும் A5 ஐப் பயன்படுத்துகிறோம். டிசி மோட்டார்கள் முறையே பிடபிள்யூஎம் பின்ஸ் டி 6, டி 9 டி 10 மற்றும் டி 11 உடன் இணைக்கப்பட்டுள்ளன. பி.டபிள்யூ.எம் சிக்னல்களின் கடமை சுழற்சியை மாற்றுவதன் மூலம் டி.சி மோட்டரின் வேகத்தை நாங்கள் கட்டுப்படுத்துவோம் என்பதால் அவற்றை பி.டபிள்யூ.எம் ஊசிகளுடன் இணைக்க வேண்டும். இந்த இரண்டு கூறுகளையும் நீங்கள் அறிந்திருக்கவில்லை என்றால், MPU6050 இன்டர்ஃபேசிங் மற்றும் எல் 298 என் மோட்டார் டிரைவர் டுடோரியல் மூலம் படிக்க பரிந்துரைக்கப்படுகிறது.
சுய சமநிலை ரோபோ குறியீடு
இப்போது ரோபோவை சமப்படுத்த எங்கள் Arduino UNO போர்டை நிரல் செய்ய வேண்டும். எல்லா மந்திரங்களும் நடக்கும் இடம் இதுதான்; அதன் பின்னால் உள்ள கருத்து எளிது. MPU6050 ஐப் பயன்படுத்தி போட் முன் அல்லது பின்புறம் சாய்ந்து கொண்டிருக்கிறதா என்பதை நாம் சரிபார்க்க வேண்டும், பின்னர் அது முன் நோக்கி சாய்ந்தால் சக்கரங்களை முன்னோக்கி திசையில் சுழற்ற வேண்டும், அது பின்புறத்தை நோக்கி சாய்ந்தால் சக்கரங்களை சுழற்ற வேண்டும் தலைகீழ் திசையில்.
அதே நேரத்தில் சக்கரங்கள் சுழலும் வேகத்தையும் நாம் கட்டுப்படுத்த வேண்டும், போட் மைய நிலையில் இருந்து சற்று திசைதிருப்பப்பட்டால் சக்கரங்கள் மெதுவாக சுழலும் மற்றும் மைய நிலையிலிருந்து அதிக தூரம் செல்லும்போது வேகம் அதிகரிக்கும். இந்த தர்க்கத்தை அடைய நாம் PID வழிமுறையைப் பயன்படுத்துகிறோம், இது மைய நிலையை செட்-பாயிண்டாகவும், வெளியீடாக திசைதிருப்பலின் அளவையும் கொண்டுள்ளது.
போட்டின் தற்போதைய நிலையை அறிய நாம் MPU6050 ஐப் பயன்படுத்துகிறோம், இது 6-அச்சு முடுக்கமானி மற்றும் கைரோஸ்கோப் சென்சார் ஆகும். சென்சாரிலிருந்து நிலையின் நம்பகமான மதிப்பைப் பெறுவதற்கு நாம் முடுக்கமானி மற்றும் கைரோஸ்கோப் இரண்டின் மதிப்பைப் பயன்படுத்த வேண்டும், ஏனென்றால் முடுக்க மானியில் இருந்து வரும் மதிப்புகள் இரைச்சல் சிக்கல்களைக் கொண்டுள்ளன, மேலும் கைரோஸ்கோப்பிலிருந்து வரும் மதிப்புகள் காலப்போக்கில் நகர்கின்றன. எனவே இரண்டையும் இணைத்து, எங்கள் ரோபோவின் யா பிட்ச் மற்றும் ரோலின் மதிப்பைப் பெற வேண்டும், அவற்றில் நாம் யாவின் மதிப்பை மட்டுமே பயன்படுத்துவோம்.
தலையை சுழற்றுவது சரியா? ஆனால் கவலைப்பட வேண்டாம், PID கணக்கீட்டைச் செய்யக்கூடிய நூலகங்களை நாங்கள் எளிதாகக் கொண்டுள்ள Arduino சமூகத்திற்கு நன்றி மற்றும் MPU6050 இலிருந்து yaw இன் மதிப்பைப் பெறலாம். நூலகம் முறையே br3ttb மற்றும் jrowberg ஆல் உருவாக்கப்பட்டது. பதிவிறக்குவதற்கு முன் அவற்றின் நூலகங்கள் பின்வரும் இணைப்பை உருவாக்கி அவற்றை உங்கள் Arduino lib கோப்பகத்தில் சேர்க்கவும்.
github.com/br3ttb/Arduino-PID-Library/blob/master/PID_v1.h
github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
இப்போது, எங்கள் Arduino IDE இல் நூலகங்கள் சேர்க்கப்பட்டுள்ளன. எங்கள் சுய சமநிலை ரோபோவுக்கான நிரலாக்கத்தைத் தொடங்குவோம். எப்பொழுதும் போலவே MPU6050 சமநிலை ரோபோவுக்கான முழுமையான குறியீடு இந்தப் பக்கத்தின் முடிவில் கொடுக்கப்பட்டுள்ளது, இங்கே நான் குறியீட்டில் மிக முக்கியமான துணுக்குகளை விளக்குகிறேன். முன்னர் கூறப்பட்ட குறியீடு MPU6050 எடுத்துக்காட்டு குறியீட்டின் மேல் கட்டமைக்கப்படுகிறது, நாங்கள் எங்கள் நோக்கத்திற்காக குறியீட்டை மேம்படுத்தப் போகிறோம் மற்றும் எங்கள் சுய சமநிலை ரோபோவுக்கு PID மற்றும் கட்டுப்பாட்டு நுட்பத்தை சேர்க்கிறோம்.
முதலில் இந்த திட்டம் செயல்பட தேவையான நூலகங்களை நாங்கள் சேர்க்கிறோம். அவற்றில் உள்ளமைக்கப்பட்ட I2C நூலகம், PID நூலகம் மற்றும் நாங்கள் இப்போது பதிவிறக்கம் செய்த MPU6050 நூலகம் ஆகியவை அடங்கும்.
# அடங்கும் "I2Cdev.h" # அடங்கும்
பின்னர் நாங்கள் MPU6050 சென்சார் தரவைப் பெற வேண்டும் என்று மாறிகள் அறிவிக்க. புவியீர்ப்பு திசையன் மற்றும் குவாட்டர்னியன் மதிப்புகள் இரண்டையும் படித்து, பின்னர் போவின் யா சுருதி மற்றும் ரோல் மதிப்பைக் கணக்கிடுகிறோம். மிதவை வரிசை YPR இறுதி முடிவு நடத்தவுள்ளன.
// MPU கட்டுப்பாடு / நிலை vars bool dmpReady = பொய்; // DMP init வெற்றிகரமாக இருந்தால் uint8_t mpuIntStatus; // MPU uint8_t devStatus இலிருந்து உண்மையான குறுக்கீடு நிலை பைட்டை வைத்திருக்கிறது ; // ஒவ்வொரு சாதன செயல்பாட்டிற்கும் பிறகு திரும்பும் நிலை (0 = வெற்றி,! 0 = பிழை) uint16_t packetSize; // எதிர்பார்க்கப்படும் DMP பாக்கெட் அளவு (இயல்புநிலை 42 பைட்டுகள்) uint16_t fifoCount; // தற்போது FIFO uint8_t fifoBuffer இல் உள்ள அனைத்து பைட்டுகளின் எண்ணிக்கை ; // ஃபிஃபோ சேமிப்பக இடையகம் // நோக்குநிலை / இயக்கம் வார்ஸ் குவாட்டர்னியன் q; // குவாட்டர்னியன் கொள்கலன் வெக்டர் ஃப்ளோட் ஈர்ப்பு; // ஈர்ப்பு திசையன் மிதவை ypr; // யா / சுருதி / ரோல் கொள்கலன் மற்றும் ஈர்ப்பு திசையன்
அடுத்து குறியீட்டின் மிக முக்கியமான பிரிவு வருகிறது, சரியான மதிப்புகளின் தொகுப்பிற்காக நீங்கள் நீண்ட நேரம் செலவிடுவீர்கள். நீங்கள் ரோபோ ஒரு நல்ல ஈர்ப்பு மையத்துடன் கட்டப்பட்டிருந்தால் மற்றும் கூறுகள் சமச்சீராக அமைக்கப்பட்டிருந்தால் (பெரும்பாலான சந்தர்ப்பங்களில் இது இல்லை) பின்னர் உங்கள் செட் பாயிண்டின் மதிப்பு 180 ஆக இருக்கும். இல்லையெனில் உங்கள் போட்டை ஆர்டுயினோ சீரியல் மானிட்டருடன் இணைத்து அதை சாய்த்து விடுங்கள் நீங்கள் ஒரு நல்ல சமநிலை நிலையைக் கண்டறிந்து, சீரியல் மானிட்டரில் காட்டப்படும் மதிப்பைப் படியுங்கள், இது உங்கள் செட் பாயிண்ட் மதிப்பு. உங்கள் போட் படி Kp, Kd மற்றும் Ki இன் மதிப்பை சரிசெய்ய வேண்டும். ஒரே மாதிரியான இரண்டு போட்களுக்கும் Kp, Kd மற்றும் Ki ஆகியவற்றின் ஒரே மதிப்புகள் இருக்காது, எனவே அதிலிருந்து தப்பிக்க முடியாது. இந்த மதிப்புகளை எவ்வாறு சரிசெய்வது என்பது குறித்த யோசனையைப் பெற இந்தப் பக்கத்தின் இறுதியில் வீடியோவைப் பாருங்கள்.
/ ********* உங்கள் BOT க்கு இந்த 4 மதிப்புகளை டியூன் செய்யுங்கள் ********* / இரட்டை செட் பாயிண்ட் = 176; // சீரியல் மானிட்டரைப் பயன்படுத்தி போட் தரையில் செங்குத்தாக இருக்கும்போது மதிப்பை அமைக்கவும் . // இந்த மதிப்புகளை இரட்டை கேபி = 21 ஐ எவ்வாறு அமைப்பது என்பதை அறிய சர்க்யூட் டிஜெஸ்ட்.காமில் திட்ட ஆவணங்களைப் படிக்கவும் ; // இந்த முதல் இரட்டை கேடியை அமைக்கவும் = 0.8; // இந்த செகண்ட் இரட்டை கி = 140 ஐ அமைக்கவும் ; // இறுதியாக இதை அமைக்கவும் / ****** மதிப்புகள் அமைப்பின் முடிவு ********* /
அடுத்த வரியில் உள்ளீட்டு மாறிகள் உள்ளீடு, வெளியீடு, செட் பாயிண்ட், கேபி, கி மற்றும் கேடி ஆகியவற்றைக் கடந்து பிஐடி வழிமுறையைத் துவக்குகிறோம். இவற்றில் நாம் ஏற்கனவே செட்-பாயிண்ட் கேபி, கி மற்றும் கேடி ஆகியவற்றின் மதிப்புகளை மேலே உள்ள குறியீட்டின் துணுக்கில் அமைத்துள்ளோம். உள்ளீட்டின் மதிப்பு MPU6050 சென்சாரிலிருந்து படிக்கப்படும் யாவின் தற்போதைய மதிப்பாக இருக்கும், மேலும் வெளியீட்டின் மதிப்பு PID வழிமுறையால் கணக்கிடப்படும் மதிப்பாக இருக்கும். எனவே அடிப்படையில் PID வழிமுறை எங்களுக்கு ஒரு வெளியீட்டு மதிப்பைக் கொடுக்கும், இது உள்ளீட்டு மதிப்பை நிர்ணயிக்கப்பட்ட இடத்திற்கு நெருக்கமாக இருப்பதை சரிசெய்ய பயன்படுத்தப்பட வேண்டும்.
PID pid (& உள்ளீடு, & வெளியீடு, & setpoint, Kp, Ki, Kd, DIRECT);
வெற்றிட அமைவு செயல்பாட்டின் உள்ளே, DMP (டிஜிட்டல் மோஷன் செயலி) ஐ உள்ளமைப்பதன் மூலம் MPU6050 ஐ துவக்குகிறோம். இது முடுக்கமானி தரவை கைரோஸ்கோப் தரவுகளுடன் இணைப்பதற்கும், யா, பிட்ச் மற்றும் ரோலின் நம்பகமான மதிப்பை வழங்கவும் உதவும். இது தலைப்புக்கு அப்பாற்பட்டதாக இருப்பதால் நாம் இதை விட ஆழமாக செல்ல மாட்டோம். எப்படியிருந்தாலும் நீங்கள் அமைவு செயல்பாட்டில் பார்க்க வேண்டிய குறியீட்டின் ஒரு பகுதி கைரோ ஆஃப்செட் மதிப்புகள் ஆகும். ஒவ்வொரு MPU6050 சென்சார் ஆஃப்செட்களின் சொந்த மதிப்புகளைக் கொண்டுள்ளது, நீங்கள் சென்சாரின் ஆஃப்செட் மதிப்பைக் கணக்கிட இந்த Arduino ஸ்கெட்சைப் பயன்படுத்தலாம் மற்றும் உங்கள் நிரலில் பின்வரும் வரிகளை புதுப்பிக்கவும்.
// உங்கள் சொந்த கைரோ ஆஃப்செட்களை இங்கே வழங்கவும் , நிமிடம் உணர்திறன் அளவிடப்படுகிறது mpu.setXGyroOffset (220); mpu.setYGyroOffset (76); mpu.setZGyroOffset (-85); mpu.setZAccelOffset (1688);
நாங்கள் வேண்டும் டிஜிட்டல் பிடபிள்யுஎம் ஊசிகளையும் தொடங்குவதில் நாம் நமது மோட்டார்கள் இணைக்க பயன்படுத்தப்படுகிறது என்பதை உறுதிப்படுத்தவும். எங்கள் விஷயத்தில் இது டி 6, டி 9, டி 10 மற்றும் டி 11 ஆகும். எனவே இந்த ஊசிகளை வெளியீட்டு ஊசிகளாக இயல்பாகவே குறைக்கிறோம்.
// மோட்டார் அவுட்பு பின்ஸ் பின்மோடை (6, OUTPUT) துவக்கவும்; pinMode (9, OUTPUT); pinMode (10, OUTPUT); pinMode (11, OUTPUT); // முன்னிருப்பாக மோட்டார்கள் அனலாக்ரைட் (6, குறைந்த) இரண்டையும் அணைக்கவும்; அனலாக்ரைட் (9, குறைந்த); அனலாக்ரைட் (10, குறைந்த); அனலாக்ரைட் (11, குறைந்த);
பிரதான லூப் செயல்பாட்டின் உள்ளே, MPU6050 இலிருந்து தரவுகள் படிக்கத் தயாரா என்பதை நாங்கள் சரிபார்க்கிறோம். ஆம் எனில், பிஐடி மதிப்பைக் கணக்கிட அதைப் பயன்படுத்துகிறோம், பின்னர் பிஐடியின் உள்ளீடு மற்றும் வெளியீட்டு மதிப்பை சீரியல் மானிட்டரில் காண்பிப்போம், பிஐடி எவ்வாறு பதிலளிக்கிறது என்பதை சரிபார்க்க. வெளியீட்டின் மதிப்பின் அடிப்படையில், போட் முன்னோக்கி அல்லது பின்னோக்கி செல்ல வேண்டுமா அல்லது அசையாமல் நிற்க வேண்டுமா என்று நாங்கள் தீர்மானிக்கிறோம்.
போட் நிமிர்ந்து இருக்கும்போது MPU6050 180 ஐத் தரும் என்று நாங்கள் கருதுகிறோம். போட் முன்னால் விழும்போது திருத்தம் மதிப்புகளை நேர்மறையாகப் பெறுவோம், போட் பின்னால் விழினால் எதிர்மறையாக மதிப்புகளைப் பெறுவோம். எனவே இந்த நிலையை நாங்கள் சரிபார்த்து, போட் முன்னோக்கி அல்லது பின் வார்டை நகர்த்துவதற்கு பொருத்தமான செயல்பாடுகளை அழைக்கிறோம்.
போது (mpuInterrupt && fifoCount <packetSize!) { // எந்த MPU தரவு - மோட்டார்கள் PID என்பது கணக்கீடுகள் மற்றும் வெளியீடு நிகழ்ச்சி pid.Compute (); // இது எவ்வாறு இயங்குகிறது என்பதை அறிய தொடர் மானிட்டரில் உள்ளீடு மற்றும் வெளியீட்டின் மதிப்பை அச்சிடுக. சீரியல்.பிரண்ட் (உள்ளீடு); சீரியல்.பிரண்ட் ("=>"); Serial.println (வெளியீடு); if (உள்ளீடு> 150 && உள்ளீடு <200) {// போட் வீழ்ச்சியடைந்தால் (வெளியீடு> 0) // முன் நோக்கி விழுந்தால் முன்னோக்கி (); // (வெளியீடு <0) // பின்னால் சாய்ந்தால் தலைகீழ் (); // சக்கரங்களை பின்னோக்கி சுழற்று } வேறு // போட் விழவில்லை என்றால் நிறுத்து (); // சக்கரங்களை இன்னும் பிடித்துக் கொள்ளுங்கள் }
PID என்பது வெளியீடு மாறி மேலும் மோட்டார் சுழற்சி முறையில் பயன்படுத்த வேண்டும் எவ்வளவு வேகமாக முடிவு. போட் விழப்போகிறது என்றால், சக்கரத்தை மெதுவாகச் சுழற்றுவதன் மூலம் சிறிய திருத்தங்களைச் செய்கிறோம். இந்த சிறிய திருத்தம் வேலை செய்தால் மற்றும் போட் கீழே விழுந்தால் மோட்டரின் வேகத்தை அதிகரிக்கிறோம். சக்கரங்கள் எவ்வளவு வேகமாக சுழல்கின்றன என்பதற்கான மதிப்பு PI வழிமுறையால் தீர்மானிக்கப்படும். தலைகீழ் செயல்பாட்டிற்கு வெளியீட்டின் மதிப்பை -1 உடன் பெருக்கினோம், இதனால் எதிர்மறை மதிப்பை நேர்மறையாக மாற்ற முடியும்.
முன்னோக்கி () // சக்கரத்தை முன்னோக்கி சுழற்றுவதற்கான குறியீடு { அனலாக்ரைட் (6, வெளியீடு); அனலாக்ரைட் (9,0); அனலாக்ரைட் (10, வெளியீடு); அனலாக்ரைட் (11,0); சீரியல்.பிரண்ட் ("எஃப்"); // பிழைத்திருத்த தகவல் } வெற்றிட தலைகீழ் () // சக்கரத்தை சுழற்றுவதற்கான குறியீடு பின்தங்கிய { அனலாக்ரைட் (6,0); அனலாக்ரைட் (9, வெளியீடு * -1); அனலாக்ரைட் (10,0); அனலாக்ரைட் (11, வெளியீடு * -1); சீரியல்.பிரண்ட் ("ஆர்"); } வெற்றிடத்தை நிறுத்து () // குறியீடு சக்கரங்கள் இரண்டு நிறுத்த { analogWrite (6,0); அனலாக்ரைட் (9,0); அனலாக்ரைட் (10,0); அனலாக்ரைட் (11,0); சீரியல்.பிரண்ட் ("எஸ்"); }
Arduino Self Balancing Robot இன் வேலை

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

PID வழிமுறையின் உள்ளீடு மற்றும் வெளியீட்டு மதிப்புகளை உள்ளீடு => வெளியீடு வடிவத்தில் இங்கே காண்கிறோம் . போட் சரியாக சமநிலையில் இருந்தால் வெளியீட்டின் மதிப்பு 0 ஆக இருக்கும். உள்ளீட்டு மதிப்பு MPU6050 சென்சாரிலிருந்து தற்போதைய மதிப்பு. “எஃப்” என்ற எழுத்துக்கள் போட் முன்னோக்கி நகர்கிறது என்பதையும் “ஆர்” என்பது போட் தலைகீழாக இருப்பதையும் குறிக்கிறது.
PID இன் ஆரம்ப கட்டங்களில், உங்கள் Arduino கேபிளை போட் உடன் இணைக்க பரிந்துரைக்கிறேன், இதன்மூலம் உள்ளீடு மற்றும் வெளியீட்டின் மதிப்புகளை நீங்கள் எளிதாக கண்காணிக்க முடியும், மேலும் Kp, Ki மற்றும் Kd மதிப்புகளுக்கான உங்கள் நிரலை சரிசெய்து பதிவேற்றுவது எளிதாக இருக்கும். நிகழ்ச்சிகள் போட் முழுமையான தொழிலாளர் கீழே வீடியோ உங்கள் PID என்பது மதிப்புகள் சரி செய்ய எப்படி மேலும் நிகழ்ச்சிகள்.
உங்களுக்கு வேலை செய்வதில் ஏதேனும் சிக்கல் இருந்தால், உங்கள் சொந்த சுய சமநிலை ரோபோவை உருவாக்க இது உதவும் என்று நம்புகிறேன், பின்னர் உங்கள் கேள்விகளை கீழே உள்ள கருத்துப் பிரிவில் விடவும் அல்லது கூடுதல் தொழில்நுட்ப கேள்விகளுக்கு மன்றங்களைப் பயன்படுத்தவும். நீங்கள் மிகவும் வேடிக்கையாக விரும்பினால், பந்து சமநிலை ரோபோவை உருவாக்க அதே தர்க்கத்தையும் பயன்படுத்தலாம்.
