இந்த திட்டத்தில் வெப்பநிலையை அளவிடுவதற்கு ஒரு சுற்று வடிவமைக்க உள்ளோம். இந்த சுற்று ஒரு நேரியல் மின்னழுத்த சென்சார் “ LM35 ” ஐப் பயன்படுத்தி உருவாக்கப்பட்டுள்ளது. வெப்பநிலை பொதுவாக “சென்டிகிரேட்” அல்லது “ஃபராஹைட்” இல் அளவிடப்படுகிறது. “எல்எம் 35” சென்சார் சென்டிகிரேட்டின் அளவை அடிப்படையாகக் கொண்டு வெளியீட்டை வழங்குகிறது.
எல்எம் 35 என்பது சாதனம் போன்ற மூன்று முள் டிரான்சிஸ்டர் ஆகும். இது VCC, GND மற்றும் OUTPUT ஆகியவற்றைக் கொண்டுள்ளது. இந்த சென்சார் வெப்பநிலையின் அடிப்படையில் வெளியீட்டில் மாறி மின்னழுத்தத்தை வழங்குகிறது.

மேலே உள்ள படத்தில் காட்டப்பட்டுள்ளபடி, ஒவ்வொரு +1 சென்டிகிரேட் வெப்பநிலையிலும் + 10 எம்வி அதிக வெளியீடு இருக்கும். வெப்பநிலை 0◦ சென்டிகிரேடாக இருந்தால், சென்சாரின் வெளியீடு 0 வி ஆக இருக்கும், வெப்பநிலை 10◦ சென்டிகிரேட் என்றால் சென்சாரின் வெளியீடு + 100 எம்.வி ஆக இருக்கும், வெப்பநிலை 25◦ சென்டிகிரேட் என்றால் சென்சாரின் வெளியீடு + 250 எம்.வி.
எனவே இப்போது எல்எம் 35 உடன் மாறி மின்னழுத்த வடிவில் வெப்பநிலையைப் பெறுகிறோம். இந்த வெப்பநிலை சார்பு மின்னழுத்தம் ATMEGA32A இன் ADC (அனலாக் டு டிஜிட்டல் மாற்றி) க்கு உள்ளீடாக வழங்கப்படுகிறது. பெறப்பட்ட மாற்றத்திற்குப் பிறகு டிஜிட்டல் மதிப்பு 16x2 எல்சிடியில் வெப்பநிலையாகக் காட்டப்படுகிறது.
கூறுகள் தேவை
வன்பொருள்: ATMEGA32 மைக்ரோகண்ட்ரோலர், மின்சாரம் (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), 100uF மின்தேக்கி (இரண்டு துண்டுகள்), 100nF மின்தேக்கி, LM35 வெப்பநிலை சென்சார்.
மென்பொருள்: அட்மல் ஸ்டுடியோ 6.1, புரோகிஸ் அல்லது ஃபிளாஷ் மேஜிக்.
சுற்று வரைபடம் மற்றும் விளக்கம்

சுற்றுவட்டத்தில், ATMEGA32 இன் PORTB எல்சிடியின் தரவு துறைமுகத்துடன் இணைக்கப்பட்டுள்ளது. PORTC ஐ ஒரு சாதாரண தகவல்தொடர்பு துறைமுகமாகப் பயன்படுத்த விரும்பினால், உருகி பைட்டுகளை மாற்றுவதன் மூலம் PORTC ot ATMEGA இல் உள்ள JTAG தகவல்தொடர்புகளை முடக்க இங்கே ஒருவர் நினைவில் கொள்ள வேண்டும். 16x2 எல்சிடியில் ஒரு பின் ஒளி இருந்தால் எல்லாவற்றிற்கும் மேலாக 16 ஊசிகளும் உள்ளன, பின் ஒளி இல்லாவிட்டால் 14 ஊசிகளும் இருக்கும். ஒருவர் பின் ஒளி ஊசிகளை சக்தியளிக்கலாம் அல்லது விட்டுவிடலாம். இப்போது 14 ஊசிகளில் 8 தரவு ஊசிகளும் (7-14 அல்லது டி 0-டி 7), 2 மின்சாரம் வழங்கல் ஊசிகளும் (1 & 2 அல்லது விஎஸ்எஸ் & விடிடி அல்லது ஜிஎன்டி & + 5 வி), மாறுபட்ட கட்டுப்பாட்டுக்கு 3 வது முள் (எழுத்துக்கள் எவ்வளவு அடர்த்தியாக இருக்க வேண்டும் என்பதை விஇஇ கட்டுப்படுத்துகிறது காட்டப்பட்டுள்ளது), 3 கட்டுப்பாட்டு ஊசிகளும் (RS & RW & E).
சுற்றில், நான் இரண்டு கட்டுப்பாட்டு ஊசிகளை மட்டுமே எடுத்துள்ளதை நீங்கள் கவனிக்க முடியும், ஏனெனில் இது சிறந்த புரிதலின் நெகிழ்வுத்தன்மையைக் கொடுக்கும். கான்ட்ராஸ்ட் பிட் மற்றும் READ / WRITE ஆகியவை பெரும்பாலும் பயன்படுத்தப்படுவதில்லை, எனவே அவை தரையில் சுருக்கப்படலாம். இது எல்சிடியை மிக உயர்ந்த மாறுபாடு மற்றும் வாசிப்பு பயன்முறையில் வைக்கிறது. எழுத்துக்கள் மற்றும் தரவை அதற்கேற்ப அனுப்ப நாம் இயக்க மற்றும் RS ஊசிகளைக் கட்டுப்படுத்த வேண்டும்.
எல்சிடிக்கு செய்யப்படும் இணைப்புகள் கீழே கொடுக்கப்பட்டுள்ளன:
PIN1 அல்லது VSS ------------------ தரை
PIN2 அல்லது VDD அல்லது VCC ------------ + 5v சக்தி
PIN3 அல்லது VEE --------------- தரை (ஒரு தொடக்கநிலைக்கு அதிகபட்ச மாறுபாட்டை வழங்குகிறது)
PIN4 அல்லது RS (பதிவு தேர்வு) --------------- uC இன் PD6
PIN5 அல்லது RW (படிக்க / எழுது) ----------------- தரை (எல்.சி.டி.யை வாசிப்பு பயன்முறையில் வைக்கிறது பயனருக்கான தகவல்தொடர்புகளை எளிதாக்குகிறது)
UC இன் PIN6 அல்லது E (இயக்கு) ------------------- PD5
UC இன் PIN7 அல்லது D0 ----------------------------- PB0
UC இன் PIN8 அல்லது D1 ----------------------------- PB1
UC இன் PIN9 அல்லது D2 ----------------------------- PB2
UC இன் PIN10 அல்லது D3 ----------------------------- PB3
UC இன் PIN11 அல்லது D4 ----------------------------- PB4
UC இன் PIN12 அல்லது D5 ----------------------------- PB5
UC இன் PIN13 அல்லது D6 ----------------------------- PB6
UC இன் PIN14 அல்லது D7 ----------------------------- PB7
சுற்றில் நாங்கள் 8 பிட் தகவல்தொடர்பு (டி 0-டி 7) பயன்படுத்தியிருப்பதைக் காணலாம், இருப்பினும் இது கட்டாயமில்லை, நாங்கள் 4 பிட் தகவல்தொடர்பு (டி 4-டி 7) ஐப் பயன்படுத்தலாம், ஆனால் 4 பிட் தகவல்தொடர்பு நிரல் சற்று சிக்கலானதாக மாறும், எனவே நான் 8 பிட்டைத் தேர்ந்தெடுத்துள்ளேன் தொடர்பு.
எனவே மேலேயுள்ள அட்டவணையில் இருந்து கவனிப்பதில் இருந்து எல்.சி.டி யின் 10 ஊசிகளை கட்டுப்படுத்தியுடன் இணைக்கிறோம், இதில் 8 ஊசிகளும் தரவு ஊசிகளும் கட்டுப்பாட்டுக்கு 2 ஊசிகளும் ஆகும். சென்சார் வழங்கிய மின்னழுத்த வெளியீடு முற்றிலும் நேரியல் அல்ல; அது சத்தமாக இருக்கும். சத்தத்தை வடிகட்ட, படத்தில் காட்டப்பட்டுள்ளபடி சென்சாரின் வெளியீட்டில் ஒரு மின்தேக்கி வைக்கப்பட வேண்டும்.
முன்னேறுவதற்கு முன் ATMEGA32A இன் ADC பற்றி பேச வேண்டும். ATMEGA32A இல், PORTA இன் எட்டு சேனல்களுக்கு அனலாக் உள்ளீட்டை வழங்கலாம், அனைத்தும் ஒரே மாதிரியாக இருப்பதால் எந்த சேனலை நாங்கள் தேர்வு செய்கிறோம் என்பது முக்கியமல்ல. நாங்கள் PORTA இன் சேனல் 0 அல்லது PIN0 ஐ தேர்வு செய்யப் போகிறோம். ATMEGA32A இல், ADC 10 பிட் தெளிவுத்திறனைக் கொண்டுள்ளது, எனவே கட்டுப்படுத்தி Vref / 2 ^ 10 இன் குறைந்தபட்ச மாற்றத்தைக் கண்டறிய முடியும், எனவே குறிப்பு மின்னழுத்தம் 5V ஆக இருந்தால் ஒவ்வொரு 5/2 ^ 10 = 5mV க்கும் டிஜிட்டல் வெளியீட்டு அதிகரிப்பு கிடைக்கும். எனவே உள்ளீட்டில் ஒவ்வொரு 5 எம்.வி அதிகரிப்பிற்கும் டிஜிட்டல் வெளியீட்டில் ஒன்றின் அதிகரிப்பு இருக்கும்.
இப்போது நாம் பின்வரும் விதிமுறைகளின் அடிப்படையில் ADC இன் பதிவேட்டை அமைக்க வேண்டும்:
1.ஆடிசியில் ஏடிசி அம்சத்தை இயக்க முதலில் தேவை.
2. நாங்கள் அறை வெப்பநிலையை அளவிடுவதால், உண்மையில் நூறு டிகிரிக்கு அப்பால் மதிப்புகள் தேவையில்லை (எல்எம் 35 இன் 1000 எம்வி வெளியீடு). எனவே ADC இன் அதிகபட்ச மதிப்பு அல்லது குறிப்பை 2.5V க்கு அமைக்கலாம்.
3. கட்டுப்படுத்தி ஒரு தூண்டுதல் மாற்று அம்சத்தைக் கொண்டுள்ளது, அதாவது வெளிப்புற தூண்டுதலுக்குப் பிறகுதான் ஏடிசி மாற்றம் நடைபெறுகிறது, ஏனென்றால் தொடர்ச்சியான இலவச இயங்கும் பயன்முறையில் ஏடிசி இயங்குவதற்கான பதிவேடுகளை நாங்கள் அமைக்க வேண்டும் என்று நாங்கள் விரும்பவில்லை.
4. எந்த ஏடிசிக்கும், மாற்றத்தின் அதிர்வெண் (டிஜிட்டல் மதிப்புக்கு அனலாக் மதிப்பு) மற்றும் டிஜிட்டல் வெளியீட்டின் துல்லியம் ஆகியவை நேர்மாறான விகிதாசாரமாகும். எனவே டிஜிட்டல் வெளியீட்டின் சிறந்த துல்லியத்திற்கு நாம் குறைந்த அதிர்வெண்ணை தேர்வு செய்ய வேண்டும். குறைந்த ஏடிசி கடிகாரத்திற்கு, ஏடிசியின் முன்பதிவை அதிகபட்ச மதிப்புக்கு (128) அமைத்து வருகிறோம். 1MHZ இன் உள் கடிகாரத்தை நாங்கள் பயன்படுத்துவதால், ADC இன் கடிகாரம் (1000000/128) இருக்கும்.
ஏடிசியுடன் தொடங்குவதற்கு நாம் தெரிந்து கொள்ள வேண்டிய நான்கு விஷயங்கள் இவைதான். மேலே உள்ள நான்கு அம்சங்களும் இரண்டு பதிவேடுகளால் அமைக்கப்பட்டுள்ளன.


RED (ADEN): ATMEGA இன் ADC அம்சத்தை இயக்குவதற்கு இந்த பிட் அமைக்கப்பட வேண்டும்.
நீலம் (REFS1, REFS0): குறிப்பு மின்னழுத்தத்தை அமைக்க இந்த இரண்டு பிட்களும் பயன்படுத்தப்படுகின்றன (அல்லது அதிகபட்ச உள்ளீட்டு மின்னழுத்தம் நாம் கொடுக்கப் போகிறோம்). குறிப்பு மின்னழுத்தம் 2.56 வி வேண்டும் என்பதால், REFS0 மற்றும் REFS1 இரண்டையும் அட்டவணையால் அமைக்க வேண்டும்.

லைட் கிரீன் (ADATE): ADC தொடர்ச்சியாக இயங்க இந்த பிட் அமைக்கப்பட வேண்டும் (இலவச இயங்கும் பயன்முறை).
PINK (MUX0-MUX4): இந்த ஐந்து பிட்கள் உள்ளீட்டு சேனலைக் கூறும். நாங்கள் ADC0 அல்லது PIN0 ஐப் பயன்படுத்தப் போகிறோம் என்பதால், அட்டவணையைப் போல எந்த பிட்களையும் அமைக்க வேண்டியதில்லை.

BROWN (ADPS0-ADPS2): இந்த மூன்று பிட்கள் ADC க்கான prescalar ஐ அமைப்பதற்கானவை. நாம் 128 இன் ப்ரீஸ்கலரைப் பயன்படுத்துகிறோம், மூன்று பிட்களையும் அமைக்க வேண்டும்.

டார்க் கிரீன் (ADSC): மாற்றத்தைத் தொடங்க ADC க்கு இந்த பிட் அமைக்கப்பட்டுள்ளது. மாற்றத்தை நிறுத்த வேண்டியிருக்கும் போது இந்த பிட்டை நிரலில் முடக்கலாம்.
Arduino உடன் இந்த திட்டத்தை உருவாக்க, இந்த டுடோரியலைப் பார்க்கவும்: Arduino ஐப் பயன்படுத்தி டிஜிட்டல் தெர்மோமீட்டர்
நிரலாக்க விளக்கம்
TEMPARATURE MEASUREMENT இன் வேலை கீழே கொடுக்கப்பட்டுள்ள C குறியீட்டின் படிப்படியாக சிறப்பாக விளக்கப்பட்டுள்ளது:
ஊசிகளின் மீது தரவு ஓட்டம் கட்டுப்பாட்டை இயக்க # தலைப்பு // தலைப்பு
# F_CPU 1000000 ஐ வரையறுக்கவும் // கட்டுப்படுத்தி படிக அதிர்வெண் இணைக்கப்பட்டுள்ளது
#சேர்க்கிறது
வரையறுத்து மின் 5 // பெயர் கொடுத்து "செயலாக்கி" 5 வது அது எல்சிடி இணைக்கப்பட்டுள்ளதால், PORTD இன் முள் முள் செயல்படுத்த
வரையறுத்து ஆர்எஸ் 6 // பெயர் "registerselection" கொடுத்து 6 வது எல்சிடி ஆர்எஸ் முள் இணைக்கப்பட்டுள்ளது என்பதால், PORTD இன் முள்
void send_a_command (கையொப்பமிடாத கரி கட்டளை);
void send_a_character (கையொப்பமிடாத கரி எழுத்து);
send_a_string (char * string_of_characters);
int main (வெற்றிடத்தை)
{
டி.டி.ஆர்.பி = 0 எக்ஸ்.எஃப்.எஃப்; // போர்ட் பி மற்றும் போர்ட் டி ஆகியவற்றை வெளியீட்டு ஊசிகளாக வைப்பது
டி.டி.ஆர்.டி = 0 எக்ஸ்.எஃப்.எஃப்;
_delay_ms (50); // 50ms தாமதத்தைக் கொடுக்கும்
டி.டி.ஆர்.ஏ = 0; // போர்ட்டாவை உள்ளீடாக எடுத்துக்கொள்வது.
ADMUX - = (1 <
ADCSRA - = (1 <0)
{
send_a_character (* string_of_characters ++);
}
}
