- MCP4921 DAC (டிஜிட்டல் முதல் அனலாக் மாற்றி)
- கூறுகள் தேவை
- திட்டவட்டமான
- குறியீடு விளக்கம்
- PIC ஐப் பயன்படுத்தி டிஜிட்டல் முதல் அனலாக் மாற்றத்தை சோதித்தல்
டிஜிட்டல் மற்றும் அனலாக் எலெக்ட்ரானிக்ஸ் ஒரு ஒருங்கிணைந்த பகுதியாகும். பெரும்பாலான சாதனங்களில் ஏடிசி மற்றும் டிஏசி இரண்டும் உள்ளன, மேலும் அவை சிக்னல்களை அனலாக் முதல் டிஜிட்டல் அல்லது டிஜிட்டலுக்கு அனலாக் ஆக மாற்ற வேண்டிய தேவை இருக்கும்போது பயன்படுத்தப்படுகின்றன. ஒலி மற்றும் ஒளி போன்ற நிஜ உலக சமிக்ஞைகள் இயற்கையில் அனலாக் ஆகும், எனவே இந்த உண்மையான உலக சமிக்ஞைகளைப் பயன்படுத்த வேண்டிய போதெல்லாம், டிஜிட்டல் சிக்னல்களை அனலாக் ஆக மாற்ற வேண்டும், எடுத்துக்காட்டாக பேச்சாளர்களைப் பயன்படுத்தி ஒலியை உருவாக்க அல்லது ஒளி மூலத்தைக் கட்டுப்படுத்த.
டிஏசியின் மற்றொரு வகை பல்ஸ் அகல மாடுலேட்டர் (பிடபிள்யூஎம்) ஆகும். ஒரு PWM ஒரு டிஜிட்டல் வார்த்தையை எடுத்து மாறி துடிப்பு அகலத்துடன் ஒரு டிஜிட்டல் துடிப்பை உருவாக்குகிறது. இந்த சமிக்ஞை ஒரு வடிப்பான் வழியாக அனுப்பப்படும்போது, இதன் விளைவாக முற்றிலும் அனலாக் இருக்கும். ஒரு அனலாக் சமிக்ஞை ஒரு சமிக்ஞையில் பல வகையான தரவைக் கொண்டிருக்கலாம்.
இந்த டுடோரியலில், டிஜிட்டல் முதல் அனலாக் மாற்றத்திற்காக மைக்ரோசிப் PIC16F877A உடன் DAC MCP4921 ஐ இடைமுகப்படுத்துவோம்.
இங்கே இந்த டுடோரியலில் டிஜிட்டல் சிக்னலை அனலாக் சிக்னலாக மாற்றி உள்ளீட்டு டிஜிட்டல் மதிப்பு மற்றும் வெளியீட்டு அனலாக் மதிப்பை 16x2 எல்சிடியில் காண்பிப்போம். இது 1V, 2V, 3V, 4V, மற்றும் 5V ஐ இறுதி அனலாக் வெளியீடாக வழங்கும், இது இறுதியில் கொடுக்கப்பட்ட வீடியோவில் நிரூபிக்கப்பட்டுள்ளது. ராஸ்பெர்ரி பை, அர்டுயினோ மற்றும் எஸ்.டி.எம் 32 போர்டுகளுடன் டிஏசி இடைமுகத்தின் எங்கள் விலைமதிப்பற்ற டுடோரியலில் டிஏசி பற்றி மேலும் அறியலாம்.
மோட்டார் கட்டுப்பாடு, எல்.ஈ.டி விளக்குகளின் கட்டுப்பாட்டு பிரகாசம், ஆடியோ பெருக்கி, வீடியோ குறியாக்கிகள், தரவு கையகப்படுத்தல் அமைப்புகள் போன்ற பல பயன்பாடுகளில் டிஏசி பயன்படுத்தப்படலாம். இடைமுகப் பகுதிக்கு நேரடியாகச் செல்வதற்கு முன், எம்சிபி 4921 பற்றி ஒரு கண்ணோட்டத்தை வைத்திருப்பது முக்கியம்.
MCP4921 DAC (டிஜிட்டல் முதல் அனலாக் மாற்றி)
MCP4921 என்பது 12 பிட் DAC ஆகும், எனவே MCP4921 12 பிட்கள் வெளியீட்டு தீர்மானத்தை வழங்கும். டிஏசி தீர்மானம் என்பது அனலாக் சிக்னலாக மாற்றக்கூடிய டிஜிட்டல் பிட்களின் எண்ணிக்கை. இதிலிருந்து எத்தனை மதிப்புகளை நாம் அடைய முடியும் என்பது சூத்திரத்தின் அடிப்படையில் அமைந்துள்ளது. 12-பிட்டுக்கு, இது = 4096. இதன் பொருள் 12-பிட் தீர்மானம் DAC 4096 வெவ்வேறு வெளியீடுகளை உருவாக்கக்கூடும்.
இந்த மதிப்பைப் பயன்படுத்துவதன் மூலம், ஒற்றை அனலாக் படி மின்னழுத்தத்தை ஒருவர் எளிதாகக் கணக்கிட முடியும். படிகளைக் கணக்கிடுவதற்கு, குறிப்பு மின்னழுத்தம் தேவை. சாதனத்திற்கான லாஜிக் மின்னழுத்தம் 5 வி என்பதால், படி மின்னழுத்தம் 5/4095 (4096-1, ஏனெனில் டிஜிட்டலுக்கான தொடக்க புள்ளி 1 அல்ல, அது 0), இது 0.00122100122 மில்லிவால்ட் ஆகும். எனவே, 1 பிட் மாற்றம் 0.00122100122 உடன் அனலாக் வெளியீட்டை மாற்றும்.
எனவே, அது மாற்றும் பகுதியாக இருந்தது. MCP4921 ஒரு 8-பின் ஐசி உள்ளது. முள் வரைபடம் மற்றும் விளக்கம் கீழே காணலாம்.


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

கட்டளை பதிவு 16 பிட் பதிவேடு. கட்டமைப்பு கட்டளைக்கு பிட் -15 முதல் பிட் -12 பயன்படுத்தப்படுகிறது. தரவு உள்ளீடு மற்றும் உள்ளமைவு மேலே உள்ள படத்தில் தெளிவாகக் காட்டப்பட்டுள்ளது. இந்த திட்டத்தில், MCP4921 பின்வரும் உள்ளமைவாகப் பயன்படுத்தப்படும்-
|
பிட் எண் |
உள்ளமைவு |
உள்ளமைவு மதிப்பு |
|
பிட் 15 |
டிஏசி ஏ |
0 |
|
பிட் 14 |
தடையற்றது |
0 |
|
பிட் 13 |
1x (V OUT * D / 4096) |
1 |
|
பிட் 12 |
வெளியீட்டு பவர் டவுன் கண்ட்ரோல் பிட் |
1 |
எனவே பதிவின் D11 முதல் D0 பிட்களால் தீர்மானிக்கப்படும் தரவுகளுடன் பைனரி 0011 ஆகும். 16-பிட் தரவு 0011 xxxx xxxx xxxx சமர்ப்பிக்கப்பட வேண்டும், அங்கு MSB இன் முதல் 4 பிட் உள்ளமைவு மற்றும் மீதமுள்ளவை LSB ஆகும். எழுதும் கட்டளை நேர வரைபடத்தைப் பார்ப்பதன் மூலம் இது தெளிவாக இருக்கும்.

நேர வரைபடம் மற்றும் தரவுத்தாள் படி, MCP4921 க்கு முழு கட்டளை எழுதும் காலத்திற்கு சிஎஸ் முள் குறைவாக உள்ளது.
சாதனத்தை வன்பொருள் மற்றும் குறியீடுகளை எழுதுவதற்கான நேரம் இது.
கூறுகள் தேவை
இந்த திட்டத்திற்கு, பின்வரும் கூறுகள் தேவை-
- MCP4921
- PIC16F877A
- 20 மெகா ஹெர்ட்ஸ் கிரிஸ்டல்
- ஒரு காட்சி 16x2 எழுத்து எல்சிடி.
- 2 கே மின்தடை -1 பிசி
- 33 பிஎஃப் மின்தேக்கிகள் - 2 பிசிக்கள்
- 4.7 கே மின்தடை - 1 பிசி
- வெளியீட்டு மின்னழுத்தத்தை அளவிட பல மீட்டர்
- ஒரு பிரெட் போர்டு
- 5 வி மின்சாரம், தொலைபேசி சார்ஜர் வேலை செய்ய முடியும்.
- நிறைய ஹூக்கப் கம்பிகள் அல்லது பெர்க் கம்பிகள்.
- புரோகிராமர் கிட் மற்றும் கம்பைலருடன் ஐடிஇ உடன் மைக்ரோசிப் நிரலாக்க சூழல்
திட்டவட்டமான
PIC மைக்ரோகண்ட்ரோலருடன் DAC4921 ஐ இணைப்பதற்கான சுற்று வரைபடம் கீழே கொடுக்கப்பட்டுள்ளது:

சுற்று ப்ரெட்போர்டில் கட்டப்பட்டுள்ளது-

குறியீடு விளக்கம்
முழுமையான குறியீடு க்கான PIC16F877A கொண்டு அனலாக் ஒரு டிஜிட்டல் சிக்னல்களை மாற்றும் கட்டுரையின் இறுதியில் வழங்கப்படுகிறது. எப்போதும் போல, நாம் முதலில் PIC மைக்ரோகண்ட்ரோலரில் உள்ளமைவு பிட்களை அமைக்க வேண்டும்.
// PIC16F877A கட்டமைப்பு பிட் அமைப்புகள் // 'சி' மூல வரி கட்டமைப்பு அறிக்கைகள் // CONFIG #pragma config FOSC = HS // ஆஸிலேட்டர் தேர்வு பிட்கள் (HS ஆஸிலேட்டர்) #pragma config WDTE = OFF // வாட்ச் டாக் டைமர் பிட் (WDT முடக்கப்பட்டது) # pragma config PWRTE = OFF // பவர்-அப் டைமர் பிட் இயக்கு (PWRT முடக்கப்பட்டது) #pragma config BOREN = ON // பிரவுன்-அவுட் மீட்டமை பிட் (BOR செயல்படுத்தப்பட்டது) #pragma config LVP = OFF // குறைந்த மின்னழுத்தம் (ஒற்றை-வழங்கல்) இன்-சர்க்யூட் சீரியல் புரோகிராமிங் பிட் இயக்கு (ஆர்.பி 3 / பிஜிஎம் முள் பிஜிஎம் செயல்பாட்டைக் கொண்டுள்ளது; குறைந்த மின்னழுத்த நிரலாக்கத்தை இயக்கியது ) #pragma config WRT = OFF // ஃபிளாஷ் நிரல் நினைவகம் எழுது பிட்களை இயக்கு (பாதுகாப்பை எழுதுங்கள்; அனைத்து நிரல் நினைவகமும் EECON கட்டுப்பாட்டால் எழுதப்படலாம்) #pragma config CP = OFF // ஃப்ளாஷ் நிரல் நினைவக குறியீடு பாதுகாப்பு பிட் (குறியீடு பாதுகாப்பு முடக்கப்பட்டுள்ளது)
எல்சிடி மற்றும் எஸ்பிஐ தலைப்பு கோப்புகளை ஒருங்கிணைப்பதற்கு கீழேயுள்ள குறியீடு கோடுகள் பயன்படுத்தப்படுகின்றன, மேலும் எக்ஸ்டால் அதிர்வெண் மற்றும் டிஏசியின் சிஎஸ் முள் இணைப்பு அறிவிக்கப்படுகிறது.
PIC SPI டுடோரியல் மற்றும் நூலகத்தை கொடுக்கப்பட்ட இணைப்பில் காணலாம்.
#சேர்க்கிறது
இந்த திட்டத்திற்குத் தேவையான வேறுபட்ட உள்ளமைவுக்கு FIciton SPI_Initialize_Master () சற்று மாற்றியமைக்கப்பட்டுள்ளது. இந்த வழக்கில், தரவு வெளியீட்டு நேரத்தின் முடிவில் உள்ளீட்டுத் தரவு மாதிரியாகவும், டிரான்ஸ்மிட் என கட்டமைக்கப்பட்ட SPI கடிகாரமும் செயலில் இருந்து செயலற்ற கடிகார நிலை பயன்முறையில் மாறுவதில் நிகழும் வகையில் SSPSTAT பதிவு கட்டமைக்கப்பட்டுள்ளது. மற்றது ஒன்றே.
வெற்றிட SPI_Initialize_Master () { TRISC5 = 0; // வெளியீடாக அமைக்கவும் SSPSTAT = 0b11000000; // பக் 74/234 SSPCON = 0b00100000; // பக் 75/234 TRISC3 = 0; // அடிமை பயன்முறையின் வெளியீடாக அமைக்கவும் }
மேலும், கீழேயுள்ள செயல்பாட்டிற்கு, SPI_Write () சற்று மாற்றியமைக்கப்படுகிறது. எஸ்பிஐ வழியாக சரியான தரவு பரிமாற்றத்தை உறுதி செய்வதற்காக இடையக அழிக்கப்பட்ட பிறகு தரவு பரிமாற்றம் ஏற்படும்.
வெற்றிட SPI_Write (கரி உள்வரும்) { SSPBUF = உள்வரும்; // (! SSPSTATbits.BF) பயனர் கொடுத்த தரவை இடையகத்தில் எழுதுங்கள் ; }
திட்டத்தின் முக்கியமான பகுதி MCP4921 இயக்கி. SPI மீது முழுமையான 16-பிட் தரவை வழங்க கட்டளை மற்றும் டிஜிட்டல் தரவு ஒன்றாக குத்தப்படுவதால் இது சற்று தந்திரமான பகுதியாகும். இருப்பினும், அந்த தர்க்கம் குறியீடு கருத்துகளில் தெளிவாகக் காட்டப்பட்டுள்ளது.
/ * இந்த செயல்பாடு டிஜிட்டல் மதிப்பை அனலாக் ஆக மாற்றுவதாகும். * / void convert_DAC (கையொப்பமிடாத முழு மதிப்பு) { / * படி அளவு = 2 ^ n, எனவே 12bit 2 ^ 12 = 4096 5V குறிப்புக்கு, படி 5/4095 = 0.0012210012210012V அல்லது 1mV (தோராயமாக) * / கையொப்பமிடாத முழு கொள்கலன்; கையொப்பமிடாத எண்ணாக MSB; கையொப்பமிடாத எண்ணாக LSB; / * படி: 1, 12 பிட் தரவை கொள்கலனில் சேமித்து வைத்துள்ளது தரவு பைனரி 1111 1111 1111 இல் தரவு 4095 என்று வைத்துக்கொள்வோம் * / கொள்கலன் = மதிப்பு; / * படி: 2 போலி 8 பிட் உருவாக்குதல். எனவே, 256 ஐ வகுப்பதன் மூலம், மேல் 4 பிட்கள் LSB LSB = 0000 1111 * / LSB = கொள்கலன் / 256 இல் பிடிக்கப்படுகின்றன ; / * படி: 3 4 பிட் தரவை குத்துவதன் மூலம் உள்ளமைவை அனுப்புகிறது. LSB = 0011 0000 OR 0000 1111. முடிவு 0011 1111 * / LSB = (0x30) - LSB; / * படி: 4 கொள்கலன் இன்னும் 21 பிட் மதிப்பைக் கொண்டுள்ளது. குறைந்த 8 பிட்களை பிரித்தெடுக்கிறது. 1111 1111 மற்றும் 1111 1111 1111. முடிவு 1111 1111 இது MSB * / MSB = 0xFF & கொள்கலன்; / * படி: 4 16 பிட் தரவை இரண்டு பைட்டுகளாகப் பிரித்து அனுப்புகிறது. * / DAC_CS = 0; // தரவு பரிமாற்றத்தின் போது சிஎஸ் குறைவாக உள்ளது. தரவுத் தாளின் படி இதற்கு SPI_Write (LSB) தேவைப்படுகிறது ; SPI_Write (MSB); DAC_CS = 1; }
முக்கிய செயல்பாட்டில், 1 வி, 2 வி, 3 வி, 4 வி மற்றும் 5 வி ஆகியவற்றின் வெளியீட்டை உருவாக்குவதற்கான டிஜிட்டல் தரவு உருவாக்கப்படும் இடத்தில் 'ஃபார் லூப்' பயன்படுத்தப்படுகிறது. வெளியீட்டு மின்னழுத்தம் / 0.0012210012210012 மில்லிவோல்ட்டுக்கு எதிராக டிஜிட்டல் மதிப்பு கணக்கிடப்படுகிறது.
void main () { system_init (); அறிமுகம்_ திரை (); எண்ணாக எண் = 0; int வோல்ட் = 0; (1) { for (வோல்ட் = 1; வோல்ட் <= MAX_VOLT; வோல்ட் ++) { எண் = வோல்ட் / 0.0012210012210012; தெளிவான_ திரை (); lcd_com (FIRST_LINE); lcd_puts ("தரவு அனுப்பப்பட்டது: -"); lcd_print_number (எண்); lcd_com (SECOND_LINE); lcd_puts ("வெளியீடு: -"); lcd_print_number (வோல்ட்); lcd_puts ("V"); convert_DAC (எண்); __ தாமத_எம்எஸ் (300); } } }
PIC ஐப் பயன்படுத்தி டிஜிட்டல் முதல் அனலாக் மாற்றத்தை சோதித்தல்
கட்டப்பட்ட சுற்று மல்டி மீட்டரைப் பயன்படுத்தி சோதிக்கப்படுகிறது. கீழே உள்ள படங்களில், வெளியீட்டு மின்னழுத்தம் மற்றும் டிஜிட்டல் தரவு எல்சிடியில் காட்டப்படுகின்றன. மல்டி மீட்டர் நெருக்கமான வாசிப்பைக் காட்டுகிறது.

வேலை செய்யும் வீடியோவுடன் முழுமையான குறியீடு கீழே இணைக்கப்பட்டுள்ளது.
