MPLAB மற்றும் XC8 ஐப் பயன்படுத்தி PIC மைக்ரோகண்ட்ரோலர்களைக் கற்றுக்கொள்வதற்கான எங்கள் 9 வது பயிற்சி இது. இப்போது வரை, MPLABX உடன் தொடங்குவது, PIC உடன் எல்.ஈ.டி ஒளிரும், PIC இல் டைமர்கள், எல்.சி.டி.யை இடைமுகப்படுத்துதல், 7-பிரிவை இடைமுகப்படுத்துதல் போன்ற பல அடிப்படை பயிற்சிகளை நாங்கள் உள்ளடக்கியுள்ளோம். நீங்கள் ஒரு முழுமையான தொடக்கக்காரராக இருந்தால், தயவுசெய்து இங்கே PIC பயிற்சிகளின் முழுமையான பட்டியலைப் பார்வையிடவும் மற்றும் கற்கத் தொடங்குங்கள்.
இந்த டுடோரியலில், எங்கள் PIC மைக்ரோகண்ட்ரோலர் PICF877A உடன் ADC ஐ எவ்வாறு பயன்படுத்துவது என்பதைக் கற்றுக்கொள்வோம். பெரும்பாலான மைக்ரோகண்ட்ரோலர் திட்டங்கள் அதில் ஒரு ஏடிசி (அனலாக் டு டிஜிட்டல் மாற்றி) ஐ உள்ளடக்கும், ஏனென்றால் இது உண்மையான உலகத்திலிருந்து தரவைப் படிக்க மிகவும் பயன்படுத்தப்படும் வழிகளில் ஒன்றாகும். வெப்பநிலை சென்சார், ஃப்ளக்ஸ் சென்சார், பிரஷர் சென்சார், தற்போதைய சென்சார்கள், மின்னழுத்த சென்சார்கள், கைரோஸ்கோப்புகள், முடுக்கமானிகள், தூர சென்சார் போன்ற கிட்டத்தட்ட அனைத்து சென்சார்களும், அறியப்பட்ட ஒவ்வொரு சென்சார் அல்லது டிரான்ஸ்யூசரும் சென்சார்கள் வாசிப்பின் அடிப்படையில் 0V முதல் 5V வரை அனலாக் மின்னழுத்தத்தை உருவாக்குகின்றன. வெப்பநிலை சென்சார் வெப்பநிலை 25C ஆக இருக்கும்போது 2.1V ஐக் கொடுக்கலாம் மற்றும் வெப்பநிலை 60C ஆக இருக்கும்போது 4.7 வரை செல்லலாம். நிஜ உலகின் வெப்பநிலையை அறிய, MCU இந்த வெப்பநிலை சென்சாரின் வெளியீட்டு மின்னழுத்தத்தைப் படித்து அதை உண்மையான உலக வெப்பநிலையுடன் தொடர்புபடுத்த வேண்டும். ஆகவே, ADC என்பது MCU திட்டங்களுக்கான ஒரு முக்கியமான பணி கருவியாகும், மேலும் இதை எங்கள் PIC16F877A இல் எவ்வாறு பயன்படுத்தலாம் என்பதைக் கற்றுக்கொள்ள உதவுகிறது.
பிற மைக்ரோகண்ட்ரோலர்களில் ADC ஐப் பயன்படுத்துவது பற்றிய எங்கள் முந்தைய கட்டுரைகளையும் சரிபார்க்கவும்:
- Arduino Uno இல் ADC ஐ எவ்வாறு பயன்படுத்துவது?
- ராஸ்பெர்ரி பை ஏடிசி டுடோரியல்
- 8051 மைக்ரோகண்ட்ரோலருடன் ADC0808 ஐ இடைமுகப்படுத்துகிறது
PIC மைக்ரோகண்ட்ரோலரில் ADC PIC16F877A:
பல வகையான ஏடிசி கிடைக்கிறது மற்றும் ஒவ்வொன்றும் அதன் சொந்த வேகத்தையும் தீர்மானத்தையும் கொண்டுள்ளது. ஃபிளாஷ், அடுத்தடுத்த தோராயமாக்கல் மற்றும் சிக்மா-டெல்டா ஆகியவை ADC களின் மிகவும் பொதுவான வகைகள். PIC16F877A பயன்படுத்தப்படும் ஏடிசி வகை அடுத்தடுத்து தோராய ஏடிசி என அழைக்கப்படுகிறது குறுகிய அல்லது சர். எனவே SAR ADC ஐப் பயன்படுத்தத் தொடங்குவதற்கு முன்பு அதைப் பற்றி கொஞ்சம் தெரிந்து கொள்வோம்.
அடுத்தடுத்த தோராய ADC: SAR ADC ஒரு ஒப்பீட்டாளர் மற்றும் சில தர்க்க உரையாடல்களின் உதவியுடன் செயல்படுகிறது. இந்த வகை ஏடிசி ஒரு குறிப்பு மின்னழுத்தத்தைப் பயன்படுத்துகிறது (இது மாறக்கூடியது) மற்றும் உள்ளீட்டு மின்னழுத்தத்தை குறிப்பு மின்னழுத்தத்துடன் ஒப்பிட்டு ஒப்பிடுபவர் மற்றும் வேறுபாட்டைப் பயன்படுத்தி டிஜிட்டல் வெளியீட்டாக இருக்கும், இது மிக முக்கியமான பிட் (எம்.எஸ்.பி) இலிருந்து சேமிக்கப்படுகிறது. ஒப்பீட்டின் வேகம் PIC செயல்படும் கடிகார அதிர்வெண் (Fosc) ஐப் பொறுத்தது.
இப்போது ADC இல் சில அடிப்படைகளை நாங்கள் அறிந்திருக்கிறோம், எங்கள் தரவுத்தாள் திறந்து, எங்கள் PIC16F877A MCU இல் ADC ஐ எவ்வாறு பயன்படுத்துவது என்பதை அறியலாம். நாங்கள் பயன்படுத்தும் PIC இல் 10-பிட் 8-சேனல் ஏடிசி உள்ளது. இதன் பொருள் எங்கள் ADC இன் வெளியீட்டு மதிப்பு 0-1024 (2 ^ 10) ஆக இருக்கும், மேலும் எங்கள் MCU இல் 8 பின்ஸ் (சேனல்கள்) உள்ளன, அவை அனலாக் மின்னழுத்தத்தைப் படிக்க முடியும். எங்கள் ஏடிசி 10 பிட் என்பதால் 1024 மதிப்பு 2 ^ 10 ஆல் பெறப்படுகிறது. அனலாக் மின்னழுத்தத்தைப் படிக்கக்கூடிய எட்டு ஊசிகளும் தரவுத்தாள் குறிப்பிடப்பட்டுள்ளன. கீழே உள்ள படத்தைப் பார்ப்போம்.

AN0 முதல் AN7 வரையிலான அனலாக் சேனல்கள் உங்களுக்காக சிறப்பிக்கப்பட்டுள்ளன. இந்த ஊசிகளால் மட்டுமே அனலாக் மின்னழுத்தத்தைப் படிக்க முடியும். எனவே உள்ளீட்டு மின்னழுத்தத்தைப் படிப்பதற்கு முன் உள்ளீட்டு மின்னழுத்தத்தைப் படிக்க எந்த சேனலைப் பயன்படுத்த வேண்டும் என்பதை எங்கள் குறியீட்டில் குறிப்பிட வேண்டும். இந்த டுடோரியலில் இந்த சேனலில் அனலாக் மின்னழுத்தத்தைப் படிக்க ஒரு பொட்டென்டோமீட்டருடன் சேனல் 4 ஐப் பயன்படுத்துவோம்.
ஏ / டி தொகுதிக்கு நான்கு பதிவேடுகள் உள்ளன, அவை உள்ளீட்டு ஊசிகளிலிருந்து தரவைப் படிக்க கட்டமைக்கப்பட வேண்டும். இந்த பதிவேடுகள்:
• A / D முடிவு உயர் பதிவு (ADRESH)
• A / D முடிவு குறைந்த பதிவு (ADRESL)
• A / D கட்டுப்பாட்டு பதிவு 0 (ADCON0)
• A / D கட்டுப்பாட்டு பதிவு 1 (ADCON1)
ADC க்கான நிரலாக்க:
PIC மைக்ரோகண்ட்ரோலருடன் ஏடிசி பயன்படுத்தி நிரலுடன் இணைந்து மிகவும் எளிது, நாம் தான் இந்த நான்கு பதிவேடுகளை புரிந்து கொள்ள பின்னர் படித்து எந்த அனலாக் மின்னழுத்த எளிய இருக்கும் வேண்டும். வழக்கம் போல் உள்ளமைவு பிட்களை துவக்கி, வெற்றிட பிரதான () உடன் தொடங்குவோம் .
வெற்றிட மெயின் () இன் உள்ளே ADCON1 பதிவு மற்றும் ADCON0 பதிவேட்டைப் பயன்படுத்தி எங்கள் ADC ஐ துவக்க வேண்டும். ADCON0 பதிவேட்டில் பின்வரும் பிட்கள் உள்ளன:

இந்த பதிவேட்டில் ADON = 1 ஐ உருவாக்குவதன் மூலம் ADC தொகுதியை இயக்க வேண்டும் மற்றும் பிட்கள் ADCS1 மற்றும் ADCS0 பிட்களைப் பயன்படுத்தி A / D மாற்று கடிகாரத்தை இயக்க வேண்டும், மீதமுள்ளவை இப்போது அமைக்கப்படாது. எங்கள் திட்டத்தில் A / D மாற்று கடிகாரம் Fosc / 16 ஆகத் தேர்ந்தெடுக்கப்பட்டுள்ளது, நீங்கள் உங்கள் சொந்த அதிர்வெண்களை முயற்சி செய்து முடிவு எவ்வாறு மாறுகிறது என்பதைக் காணலாம். தரவுத்தாள் 127 ஆம் பக்கத்தில் முழுமையான விவரங்கள் கிடைக்கின்றன. எனவே ADCON0 பின்வருமாறு தொடங்கப்படும்.
ADCON0 = 0b01000001;
இப்போது ADCON1 பதிவேட்டில் பின்வரும் பிட்கள் உள்ளன:

இந்த பதிவேட்டில் நாம் A / D முடிவு வடிவமைப்பை ADFM = 1 ஆல் பிட் உயர்வாக தேர்ந்தெடுத்து மீண்டும் Fosc / 16 ஐ தேர்ந்தெடுக்க ADCS2 = 1 ஐ உருவாக்க வேண்டும். உள் குறிப்பு மின்னழுத்தத்தைப் பயன்படுத்த நாங்கள் திட்டமிட்டுள்ளதால் மற்ற பிட்கள் பூஜ்ஜியமாகவே இருக்கின்றன. தரவுத்தாள் பக்கம் 128 இல் முழுமையான விவரங்கள் கிடைக்கின்றன. எனவே ADCON1 பின்வருமாறு அமைப்போம்.
ADCON1 = 0x11000000;
இப்போது எங்கள் முக்கிய செயல்பாட்டிற்குள் ADC தொகுதியைத் துவக்கிய பிறகு, அதே நேரத்தில் வளையத்திற்குள் சென்று ADC மதிப்புகளைப் படிக்க ஆரம்பிக்கலாம். ஒரு ADC மதிப்பைப் படிக்க பின்வரும் வழிமுறைகளைப் பின்பற்ற வேண்டும்.
- ADC தொகுதியைத் தொடங்கவும்
- அனலாக் சேனலைத் தேர்ந்தெடுக்கவும்
- கோ / முடிந்தது பிட் அதிகமாக்குவதன் மூலம் ADC ஐத் தொடங்கவும்
- Go / DONE பிட் குறைவாக இருக்கும் வரை காத்திருங்கள்
- ADRESH மற்றும் ADRESL பதிவேட்டில் இருந்து ADC முடிவைப் பெறுங்கள்
1. ஏடிசி தொகுதியைத் தொடங்கவும்: ஏடிசியை எவ்வாறு துவக்குவது என்பதை நாங்கள் ஏற்கனவே கற்றுக் கொண்டோம், எனவே ஏடிசியைத் தொடங்க இந்த கீழேயுள்ள செயல்பாட்டை அழைக்கிறோம்
வெற்றிடத்தை ADC_Initialize () செயல்பாடு பின்வருமாறு இருக்க உள்ளது.
வெற்றிட ADC_Initialize () {ADCON0 = 0b01000001; // ADC ON மற்றும் Fosc / 16 தேர்ந்தெடுக்கப்பட்டன ADCON1 = 0b11000000; // உள் குறிப்பு மின்னழுத்தம் தேர்ந்தெடுக்கப்பட்டது}
2. அனலாக் சேனலைத் தேர்ந்தெடுக்கவும்: இப்போது ADC மதிப்பைப் படிக்க எந்த சேனலைப் பயன்படுத்தப் போகிறோம் என்பதைத் தேர்ந்தெடுக்க வேண்டும். இதற்காக ஒரு செயல்பாடு செய்ய எனவே எங்களுக்கு உள்ளே ஒவ்வொரு சேனல் இடையே மாற்ற எளிதாக இருக்கும் என்று உதவுகிறது போது வளைய.
கையொப்பமிடாத எண்ணாக ADC_Read (கையொப்பமிடாத கரி சேனல்) {// **** சேனலைத் தேர்ந்தெடுப்பது ** /// ADCON0 & = 0x11000101; // சேனல் தேர்வு பிட்களை அழித்தல் ADCON0 - = சேனல் << 3; // தேவையான பிட்களை அமைத்தல் // ** சேனல் தேர்வு முடிந்தது *** ///}
பின்னர் தேர்ந்தெடுக்க வேண்டிய சேனல் மாறி சேனலுக்குள் பெறப்படுகிறது. வரிசையில்
ADCON0 & = 0x1100101;
முந்தைய சேனல் தேர்வு (ஏதேனும் இருந்தால்) அழிக்கப்பட்டது. பிட்வைஸ் மற்றும் ஆபரேட்டர் “&” ஐப் பயன்படுத்தி இது செய்யப்படுகிறது. 3, 4 மற்றும் 5 பிட்கள் 0 ஆக இருக்க நிர்பந்திக்கப்படுகின்றன, மற்றவர்கள் அவற்றின் முந்தைய மதிப்புகளில் இருக்க வேண்டும்.
சேனல் எண்ணை மூன்று முறை மாற்றுவதன் மூலமும் பிட்வைஸ் அல்லது ஆபரேட்டரைப் பயன்படுத்தி பிட்களை அமைப்பதன் மூலமும் விரும்பிய சேனல் தேர்ந்தெடுக்கப்படுகிறது “-”.
ADCON0 - = சேனல் << 3; // தேவையான பிட்களை அமைத்தல்
3. கோ / முடிந்தது பிட் உயர்வாக மாற்றுவதன் மூலம் ஏடிசியைத் தொடங்கவும்: சேனல் தேர்ந்தெடுக்கப்பட்டதும் GO_nDONE பிட் உயர்வாக மாற்றுவதன் மூலம் ஏடிசி மாற்றத்தைத் தொடங்க வேண்டும்:
GO_nDONE = 1; // A / D மாற்றத்தைத் தொடங்குகிறது
4. கோ / டன் பிட் குறைவாக இருக்கும் வரை காத்திருங்கள்: ஏடிசி மாற்றம் முடியும் வரை GO / DONE பிட் அதிகமாக இருக்கும், எனவே இந்த பிட் மீண்டும் குறைந்து போகும் வரை காத்திருக்க வேண்டும். சிறிது சுழற்சியைப் பயன்படுத்தி இதைச் செய்யலாம்.
(GO_nDONE); // ஏ / டி மாற்றம் முடிவடையும் வரை காத்திருங்கள்
5. ADRESH மற்றும் ADRESL பதிவேட்டில் இருந்து ADC முடிவைப் பெறுங்கள்: Go / DONE பிட் மீண்டும் குறைவாக இருக்கும்போது, ADC மாற்றம் முடிந்தது என்று பொருள். ADC இன் முடிவு 10-பிட் மதிப்பாக இருக்கும். எங்கள் MCU 8-பிட் MCU என்பதால் இதன் விளைவாக மேல் 8-பிட் மற்றும் குறைந்த 2-பிட்களாக பிரிக்கப்படுகிறது. மேல் 8-பிட் முடிவு ADRESH பதிவேட்டில் சேமிக்கப்படுகிறது மற்றும் குறைந்த 2-பிட் ADRESL பதிவேட்டில் சேமிக்கப்படுகிறது. எனவே எங்கள் 10-பிட் ஏடிசி மதிப்பைப் பெற இவற்றை பதிவேட்டில் சேர்க்க வேண்டும். கீழே காட்டப்பட்டுள்ளபடி இந்த முடிவு செயல்பாட்டின் மூலம் வழங்கப்படுகிறது:
திரும்ப ((ADRESH << 8) + ADRESL); // ரிட்டர்ன்ஸ் முடிவு
ADC சேனலைத் தேர்ந்தெடுக்கவும், ADC ஐத் தூண்டவும், முடிவைத் தரவும் பயன்படுத்தப்படும் முழுமையான செயல்பாடு இங்கே காட்டப்பட்டுள்ளது.
கையொப்பமிடாத எண்ணாக ADC_Read (கையொப்பமிடாத கரி சேனல்) {ADCON0 & = 0x11000101; // சேனல் தேர்வு பிட்களை அழித்தல் ADCON0 - = சேனல் << 3; // தேவையான பிட்களை அமைத்தல் __delay_ms (2); // சார்ஜ் செய்ய கையகப்படுத்தும் நேரம் மின்தேக்கி GO_nDONE = 1; // (GO_nDONE) போது A / D மாற்றத்தைத் தொடங்குகிறது; // A / D மாற்றத்தை முடிக்க காத்திருக்கவும் ((ADRESH << 8) + ADRESL); // ரிட்டர்ன்ஸ் முடிவு}
இப்போது எங்களிடம் ஒரு செயல்பாடு உள்ளது, இது சேனல் தேர்வை உள்ளீடாக எடுத்து ADC மதிப்பை எங்களுக்குத் தரும். எனவே இந்த டுடோரியலில் சேனல் 4 இலிருந்து அனலாக் மின்னழுத்தத்தைப் படித்து வருவதால், இந்த செயல்பாட்டை எங்கள் நேரத்திற்குள் நேரடியாக அழைக்கலாம், செயல்பாட்டு அழைப்பு பின்வருமாறு இருக்கும்.
i = (ADC_Read (4)); // adc இன் முடிவை “i” இல் சேமிக்கவும்.
எங்கள் ஏடிசியின் வெளியீட்டைக் காண்பதற்கு எல்சிடி அல்லது 7-பிரிவு போன்ற ஒருவித காட்சி தொகுதிகள் நமக்குத் தேவைப்படும். இந்த டுடோரியலில் வெளியீட்டை சரிபார்க்க 7-பிரிவு காட்சியைப் பயன்படுத்துகிறோம். படத்துடன் 7-பிரிவை எவ்வாறு பயன்படுத்துவது என்பதை நீங்கள் தெரிந்து கொள்ள விரும்பினால், இங்கே டுடோரியலைப் பின்தொடரவும்.
முழு குறியீடு கீழே கொடுக்கப்படுகிறது மற்றும் செயல்முறை விளக்கப்படுகிறது வீடியோ இறுதியில்.
வன்பொருள் அமைப்பு மற்றும் சோதனை:
வழக்கம்போல எங்கள் வன்பொருளுடன் செல்வதற்கு முன்பு புரோட்டியஸைப் பயன்படுத்தி குறியீட்டை உருவகப்படுத்துங்கள், திட்டத்தின் திட்டங்கள் கீழே காட்டப்பட்டுள்ளன:

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


இங்கே நாம் பானையிலிருந்து ADC மதிப்பைப் படித்து 0-1024 வெளியீட்டை 0-5 வோல்ட்டுகளாக (நிரலில் காட்டப்பட்டுள்ளபடி) வரைபடமாக்குவதன் மூலம் உண்மையான மின்னழுத்தமாக மாற்றியுள்ளோம். மதிப்பு பின்னர் 7-பிரிவில் காட்டப்படும் மற்றும் மல்டிமீட்டரைப் பயன்படுத்தி சரிபார்க்கப்படுகிறது.
அதுதான், இப்போது சந்தையில் கிடைக்கும் அனைத்து அனலாக் சென்சார்களையும் பயன்படுத்த நாங்கள் தயாராக உள்ளோம், மேலே சென்று இதை முயற்சிக்கவும், வழக்கம் போல் உங்களுக்கு ஏதேனும் சிக்கல்கள் இருந்தால் கருத்துப் பகுதியைப் பயன்படுத்தவும், உங்களுக்கு உதவ நாங்கள் மகிழ்ச்சியடைவோம்.
