- Arduino மற்றும் STM32F103C8 இல் ADC ஐ ஒப்பிடுகிறது
- STM32 இல் ADC
- அனலாக் சிக்னல் டிஜிட்டல் வடிவமாக எவ்வாறு மாற்றப்படுகிறது
- STM32F103C8T6 இல் ADC பின்ஸ்
- கூறுகள் தேவை
- சுற்று வரைபடம் மற்றும் விளக்கங்கள்
- ADC மதிப்புகளைப் படிக்க STM32 ஐ நிரல் செய்தல்
உட்பொதிக்கப்பட்ட ஒவ்வொரு பயன்பாட்டிலும் பயன்படுத்தப்படும் ஒரு பொதுவான அம்சம் ADC தொகுதி (அனலாக் டு டிஜிட்டல் மாற்றி) ஆகும். இந்த அனலாக் டு டிஜிட்டல் மாற்றிகள் வெப்பநிலை சென்சார், டில்ட் சென்சார், தற்போதைய சென்சார், ஃப்ளெக்ஸ் சென்சார் மற்றும் பல போன்ற அனலாக் சென்சார்களிடமிருந்து மின்னழுத்தத்தைப் படிக்க முடியும். எனவே இந்த டுடோரியலில் எனர்ஜியா ஐடிஇயைப் பயன்படுத்தி அனலாக் மின்னழுத்தங்களைப் படிக்க STM32F103C8 இல் ADC ஐ எவ்வாறு பயன்படுத்துவது என்பதைக் கற்றுக்கொள்வோம். நாம் செய்யும் STM32 புளூ பில் குழு ஒரு சிறிய potentiometer இடைமுகம் மற்றும் ஒரு அனலாக் முள் மாறி மாறி மின்னழுத்த வழங்க, மின்னழுத்தம் படித்து 16x2 எல்சிடி திரையில் காண்பிக்கும்.
Arduino மற்றும் STM32F103C8 இல் ADC ஐ ஒப்பிடுகிறது
Arduino போர்டில், இது 6 சேனல் (மினி மற்றும் நானோவில் 8 சேனல்கள், மெகாவில் 16), 10-பிட் ஏடிசி 0V-5V இன் உள்ளீட்டு மின்னழுத்த வரம்பைக் கொண்டுள்ளது. இதன் பொருள் 0 மற்றும் 5 வோல்ட்டுகளுக்கு இடையில் உள்ளீட்டு மின்னழுத்தங்களை 0 மற்றும் 1023 க்கு இடையில் முழு மதிப்புகளாக வரைபடமாக்கும். இது 0 மற்றும் 3.3 வோல்ட்டுகளுக்கு இடையில் உள்ளீட்டு மின்னழுத்தங்களை 0 மற்றும் 4095 க்கு இடையில் முழு மதிப்புகளாக வரைபடமாக்கும்.
STM32 இல் ADC
எஸ்.டி.எம் 32 மைக்ரோகண்ட்ரோலர்களில் பதிக்கப்பட்ட ஏ.டி.சி எஸ்.ஏ.ஆர் (அடுத்தடுத்த தோராய பதிவு) கொள்கையைப் பயன்படுத்துகிறது, இதன் மூலம் மாற்றம் பல படிகளில் செய்யப்படுகிறது. மாற்று படிகளின் எண்ணிக்கை ஏடிசி மாற்றி பிட்களின் எண்ணிக்கைக்கு சமம். ஒவ்வொரு அடியும் ஏடிசி கடிகாரத்தால் இயக்கப்படுகிறது. ஒவ்வொரு ஏடிசி கடிகாரமும் முடிவிலிருந்து வெளியீட்டிற்கு ஒரு பிட் உற்பத்தி செய்கிறது. ஏடிசி உள் வடிவமைப்பு சுவிட்ச்-மின்தேக்கி நுட்பத்தை அடிப்படையாகக் கொண்டது. நீங்கள் STM32 க்கு புதியவர் என்றால், STM32 டுடோரியலுடன் எங்கள் தொடங்குதல் பாருங்கள்.
12-பிட் தீர்மானம்
இந்த ஏடிசி 10 சேனல் 12-பிட் ஏடிசி ஆகும். இங்கே 10 சேனல் என்ற சொல் 10 ஏடிசி ஊசிகளைப் பயன்படுத்துவதைக் குறிக்கிறது, இதைப் பயன்படுத்தி நாம் அனலாக் மின்னழுத்தத்தை அளவிட முடியும். 12-பிட் என்ற சொல் ADC இன் தீர்மானத்தைக் குறிக்கிறது. 12-பிட் என்றால் பத்து (2 12) இன் சக்தி 4096 ஆகும். இது எங்கள் ஏடிசிக்கான மாதிரி படிகளின் எண்ணிக்கை, எனவே எங்கள் ஏடிசி மதிப்புகளின் வரம்பு 0 முதல் 4095 வரை இருக்கும். மதிப்பு 0 முதல் 40 வரை அதிகரிக்கும் 4095 ஒரு படி மின்னழுத்தத்தின் மதிப்பை அடிப்படையாகக் கொண்டது, இது சூத்திரத்தால் கணக்கிடப்படலாம்
ஒரு யூனிட்டுக்கு VOLTAGE / STEP = REFERENCE VOLTAGE / 4096 = (3.3 / 4096 = 8.056mV).
அனலாக் சிக்னல் டிஜிட்டல் வடிவமாக எவ்வாறு மாற்றப்படுகிறது
கணினிகள் பைனரி / டிஜிட்டல் மதிப்புகளை மட்டுமே சேமித்து செயலாக்குகின்றன (1 மற்றும் 0 கள்). எனவே வோல்ட்களில் சென்சார் வெளியீடு போன்ற அனலாக் சிக்னல்களை செயலாக்க டிஜிட்டல் மதிப்புகளாக மாற்ற வேண்டும் மற்றும் மாற்றம் துல்லியமாக இருக்க வேண்டும்.ஒரு உள்ளீட்டு அனலாக் மின்னழுத்தம் அதன் அனலாக் உள்ளீடுகளில் STM32 க்கு வழங்கப்படும் போது, அனலாக் மதிப்பு ஒரு முழு எண் மாறியில் படிக்கப்பட்டு சேமிக்கப்படுகிறது. சேமிக்கப்பட்ட அனலாக் மதிப்பு (0-3.3 வி) கீழே உள்ள சூத்திரத்தைப் பயன்படுத்தி முழு மதிப்புகளாக (0-4096) மாற்றப்படுகிறது:
INPUT VOLTAGE = (ADC மதிப்பு / ADC தீர்மானம்) * குறிப்பு மின்னழுத்தம்
தீர்மானம் = 4096
குறிப்பு = 3.3 வி
STM32F103C8T6 இல் ADC பின்ஸ்

PA0 முதல் PB1 வரை STM32 இல் 10 அனலாக் பின்ஸ் உள்ளன.
பிற மைக்ரோகண்ட்ரோலர்களில் ADC ஐ எவ்வாறு பயன்படுத்துவது என்பதையும் சரிபார்க்கவும்:
- Arduino Uno இல் ADC ஐ எவ்வாறு பயன்படுத்துவது?
- 8051 மைக்ரோகண்ட்ரோலருடன் ADC0808 ஐ இடைமுகப்படுத்துகிறது
- பிஐசி மைக்ரோகண்ட்ரோலரின் ஏடிசி தொகுதியைப் பயன்படுத்துதல்
- ராஸ்பெர்ரி பை ஏடிசி டுடோரியல்
- MSP430G2 இல் ADC ஐ எவ்வாறு பயன்படுத்துவது - அனலாக் மின்னழுத்தத்தை அளவிடுதல்
கூறுகள் தேவை
- STM32F103C8
- எல்சிடி 16 * 2
- பொட்டென்டோமீட்டர் 100 கி
- ப்ரெட்போர்டு
- கம்பிகளை இணைக்கிறது
சுற்று வரைபடம் மற்றும் விளக்கங்கள்
STM32F103C8T6 போர்டுக்கு இடைமுகம் 16 * 2 எல்சிடி மற்றும் அனலாக் உள்ளீட்டிற்கான சுற்று வரைபடம் கீழே காட்டப்பட்டுள்ளது.

எல்சிடிக்கு செய்யப்படும் இணைப்புகள் கீழே கொடுக்கப்பட்டுள்ளன:
|
எல்சிடி முள் எண் |
எல்சிடி முள் பெயர் |
STM32 முள் பெயர் |
|
1 |
மைதானம் (Gnd) |
மைதானம் (ஜி) |
|
2 |
வி.சி.சி. |
5 வி |
|
3 |
VEE |
பொட்டென்டோமீட்டரின் மையத்திலிருந்து பின் |
|
4 |
பதிவு தேர்வு (ஆர்எஸ்) |
பிபி 11 |
|
5 |
படிக்க / எழுது (RW) |
மைதானம் (ஜி) |
|
6 |
இயக்கு (EN) |
பிபி 10 |
|
7 |
தரவு பிட் 0 (DB0) |
இணைப்பு இல்லை (NC) |
|
8 |
தரவு பிட் 1 (டிபி 1) |
இணைப்பு இல்லை (NC) |
|
9 |
தரவு பிட் 2 (டிபி 2) |
இணைப்பு இல்லை (NC) |
|
10 |
டேட்டா பிட் 3 (டிபி 3) |
இணைப்பு இல்லை (NC) |
|
11 |
டேட்டா பிட் 4 (டிபி 4) |
பிபி 0 |
|
12 |
தரவு பிட் 5 (டிபி 5) |
பிபி 1 |
|
13 |
டேட்டா பிட் 6 (டிபி 6) |
பிசி 13 |
|
14 |
தரவு பிட் 7 (டிபி 7) |
பிசி 14 |
|
15 |
எல்.ஈ.டி நேர்மறை |
5 வி |
|
16 |
எல்.ஈ.டி எதிர்மறை |
மைதானம் (ஜி) |
மேலே கொடுக்கப்பட்ட அட்டவணையின்படி இணைப்புகள் செய்யப்படுகின்றன. சுற்றுக்கு இரண்டு பொட்டென்டோமீட்டர்கள் உள்ளன, முதலாவது மின்னழுத்த வகுப்பிக்கு பயன்படுத்தப்படுகிறது, இது மின்னழுத்தத்தை வேறுபடுத்தவும், STM32 க்கு அனலாக் உள்ளீட்டை வழங்கவும் பயன்படுகிறது. இந்த பொட்டென்டோமீட்டரின் இடது முள் STM32 (3.3V) இலிருந்து உள்ளீட்டு நேர்மறை மின்னழுத்தத்தைப் பெறுகிறது மற்றும் வலது முள் தரையுடன் இணைக்கப்பட்டுள்ளது, பொட்டென்டோமீட்டரின் மைய முள் STM32 இன் அனலாக் உள்ளீட்டு முள் (PA7) உடன் இணைக்கப்பட்டுள்ளது. எல்.சி.டி டிஸ்ப்ளேவின் மாறுபாட்டை வேறுபடுத்த மற்ற பொட்டென்டோமீட்டர் பயன்படுத்தப்படுகிறது. பிசி அல்லது லேப்டாப்பில் இருந்து யூ.எஸ்.பி மின்சாரம் மூலம் எஸ்.டி.எம் 32 க்கான மின்சாரம் வழங்கப்படுகிறது.

ADC மதிப்புகளைப் படிக்க STM32 ஐ நிரல் செய்தல்
எங்கள் முந்தைய டுடோரியலில், யூ.எஸ்.பி போர்ட்டைப் பயன்படுத்தி புரோகிராமிங் STM32F103C8T6 போர்டு பற்றி அறிந்து கொண்டோம். எனவே எங்களுக்கு இப்போது ஒரு FTDI புரோகிராமர் தேவையில்லை. STM32 இன் USB போர்ட் வழியாக அதை கணினியுடன் இணைத்து ARDUINO IDE உடன் நிரலாக்கத்தைத் தொடங்கவும். அனலாக் மின்னழுத்தத்தைப் படிக்க ARDUINO IDE இல் உங்கள் STM32 ஐ நிரல் செய்வது மிகவும் எளிது. இது arduino board போன்றது. எஸ்.டி.எம் 32 இன் ஜம்பர் ஊசிகளை மாற்ற வேண்டிய அவசியமில்லை.
இந்த நிரலில் அனலாக் மதிப்பைப் படித்து, அந்த மதிப்புடன் மின்னழுத்தத்தைக் கணக்கிட்டு, பின்னர் எல்.சி.டி திரையில் அனலாக் மற்றும் டிஜிட்டல் மதிப்புகள் இரண்டையும் காண்பிக்கும்.
முதலில் எல்சிடி ஊசிகளை வரையறுக்கவும். இவை STM32 இன் எந்த முள் எல்சிடி ஊசிகளுடன் இணைக்கப்பட்டுள்ளன என்பதை வரையறுக்கின்றன. உங்கள் தேவைகளுக்கு ஏற்ப நீங்கள் மாற்றலாம்.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // எல்.சி.டி உடன் இணைக்கப்பட்டுள்ள முள் பெயர்களைக் குறிப்பிடவும்
அடுத்து, எல்சிடி காட்சிக்கான தலைப்பு கோப்பை நாங்கள் சேர்க்கிறோம். எஸ்.டி.எம் 32 எல்.சி.டி உடன் எவ்வாறு தொடர்பு கொள்ள வேண்டும் என்பதற்கான குறியீட்டைக் கொண்டிருக்கும் நூலகத்தை இது அழைக்கிறது. நாம் மேலே வரையறுக்கப்பட்ட முள் பெயர்களுடன் லிக்விட் கிரிஸ்டல் செயல்பாடு அழைக்கப்படுகிறது என்பதையும் உறுதிப்படுத்திக் கொள்ளுங்கள்.
#சேர்க்கிறது
உள்ளே அமைப்பு () செயல்பாடு, நாம் வெறும் எல்சிடி திரையில் காட்டப்படும் அறிமுக செய்தி கொடுக்க வேண்டும். எஸ்.டி.எம் 32 உடன் எல்.சி.டி.யை இணைப்பது பற்றி நீங்கள் அறியலாம்.
lcd.begin (16, 2); // நாங்கள் 16 * 2 LCD lcd.clear () ஐப் பயன்படுத்துகிறோம் ; // திரையை அழிக்கவும் lcd.setCursor (0, 0); // முதல் வரிசையில் முதல் நெடுவரிசை lcd.prin t ("CIRCUITDIGEST"); // இந்த lcd.setCursor ஐ அச்சிடுக (0, 1); // செகண்ட் வரிசையில் முதல் கோலம் n lcd.print ("STM32F103C8"); // தி அச்சிட ங்கள் தாமதம் (2000); // இரண்டு செகண்டுகளுக்கு காத்திருங்கள் lcd.clear (); // திரையை அழிக்கவும் lcd.setCursor (0, 0); // முதல் வரிசையில் முதல் நெடுவரிசை lcd.print ("ADC IN ஐப் பயன்படுத்துதல்"); // இந்த lcd.setCursor ஐ அச்சிடுக (0,1); // செகண்ட் வரிசையில் முதல் நெடுவரிசையில் lcd.print ("STM32F103C8"); // இந்த தாமதத்தை அச்சிடுக (2000); // இரண்டு செகண்டுகளுக்கு காத்திருங்கள் lcd.clear (); // திரையை அழிக்கவும்
இறுதியாக, எங்கள் எல்லையற்ற வளைய () செயல்பாட்டின் உள்ளே , பொட்டென்டோமீட்டரிலிருந்து PA7 முள் வழங்கப்பட்ட அனலாக் மின்னழுத்தத்தைப் படிக்கத் தொடங்குகிறோம். நாங்கள் ஏற்கனவே விவாதித்தபடி, மைக்ரோகண்ட்ரோலர் ஒரு டிஜிட்டல் சாதனம் மற்றும் அதற்கு மின்னழுத்த அளவை நேரடியாக படிக்க முடியாது. SAR நுட்பத்தைப் பயன்படுத்தி மின்னழுத்த நிலை 0 முதல் 4096 வரை மாற்றப்பட்டுள்ளது. இந்த மதிப்புகள் ADC மதிப்புகள் என அழைக்கப்படுகின்றன, இந்த ADC மதிப்பைப் பெற பின்வரும் வரியைப் பயன்படுத்தவும்
int val = அனலாக் ரீட் (A7); // முள் PA 7 இலிருந்து ADC மதிப்பைப் படியுங்கள்
இங்கே செயல்பாடு analogRead () முள் ஒத்திசைவாக மதிப்பைப் படிப்பதற்கான பயன்படுத்தப்படுகிறது. இறுதியாக இந்த மதிப்பை “ val ” எனப்படும் மாறியில் சேமிக்கிறோம். இந்த மாறியின் வகை முழு எண், ஏனெனில் இந்த மாறியில் சேமிக்க 0 முதல் 4096 வரையிலான மதிப்புகளை மட்டுமே பெறுவோம்.
அடுத்த கட்டம் ADC மதிப்பிலிருந்து மின்னழுத்த மதிப்பைக் கணக்கிடுவது. இதைச் செய்ய பின்வரும் சூத்திரங்கள் உள்ளன
மின்னழுத்தம் = (ஏடிசி மதிப்பு / ஏடிசி தீர்மானம்) * குறிப்பு வோல்டாக் இ
எங்கள் விஷயத்தில், எங்கள் மைக்ரோகண்ட்ரோலரின் ஏடிசி தீர்மானம் 4096 என்பதை நாங்கள் ஏற்கனவே அறிவோம். ஏடிசி மதிப்பு முந்தைய வரியிலும் காணப்படுகிறது மற்றும் வால் எனப்படும் மாறியை சேமிக்கிறது. குறிப்பு மின்னழுத்த இது மைக்ரோகண்ட்ரோலர் இயக்க வோல்டேஜ் சமமாக இருக்கும். எஸ்.டி.எம் 32 போர்டு யூ.எஸ்.பி கேபிள் வழியாக இயங்கும் போது இயக்க மின்னழுத்தம் 3.3 வி ஆகும். போர்டில் உள்ள வி.சி.சி மற்றும் கிரவுண்ட் முள் முழுவதும் மல்டிமீட்டரைப் பயன்படுத்தி இயக்க மின்னழுத்தத்தையும் அளவிடலாம். எனவே மேலே காட்டப்பட்டுள்ள சூத்திரம் கீழே காட்டப்பட்டுள்ளபடி எங்கள் விஷயத்தில் பொருந்துகிறது
மிதவை மின்னழுத்தம் = (மிதவை (வால்) / 4096) * 3.3; // சூத்திரங்கள் voltag செய்ய ஏடிசி மதிப்பு மாற்ற இ
வரி மிதவை (வால்) உடன் நீங்கள் குழப்பமடையக்கூடும் . இது "வால்" என்ற மாறி எண்ணை தரவு வகையிலிருந்து "மிதவை" தரவு வகையாக மாற்ற பயன்படுகிறது. இந்த மாற்றம் தேவைப்படுகிறது, ஏனெனில் மிதப்பில் வால் / 4096 இன் முடிவைப் பெற்றால் மட்டுமே அதை 3.3 ஆல் பெருக்க முடியும். மதிப்பு முழு எண்ணில் பெறப்பட்டால் அது எப்போதும் 0 ஆக இருக்கும், இதன் விளைவாக பூஜ்ஜியமாகவும் இருக்கும். ஏடிசி மதிப்பு மற்றும் மின்னழுத்தத்தை நாங்கள் கணக்கிட்டவுடன், எஞ்சியிருப்பது எல்சிடி திரையில் முடிவைக் காண்பிப்பதே, இது பின்வரும் வரிகளைப் பயன்படுத்தி செய்ய முடியும்
lcd.setCursor (0, 0); // கர்சரை நெடுவரிசை 0, வரி 0 lcd.print ("ADC Val:") க்கு அமைக்கவும்; lcd.print (val); // ADC மதிப்பைக் காண்பி lcd.setCursor (0, 1); // கர்சரை நெடுவரிசை 0, வரி 1 எல்சிடி பிரிண்டிற்கு அமைக்கவும் ("மின்னழுத்தம்:"); lcd.print (மின்னழுத்தம்); // காட்சி மின்னழுத்தம்
முழுமையான குறியீடு மற்றும் ஆர்ப்பாட்டம் வீடியோ கீழே கொடுக்கப்பட்டுள்ளது.
