- பி.டபிள்யூ.எம் சிக்னல் என்றால் என்ன?
- PIC16F877A ஐப் பயன்படுத்தி PWM:
- PWM சமிக்ஞைகளை உருவாக்க PIC ஐ நிரல் செய்தல்:
- திட்டவியல் மற்றும் சோதனை:
- வன்பொருள் வேலை:
MPLAB மற்றும் XC8 ஐப் பயன்படுத்தி PIC மைக்ரோகண்ட்ரோலர்களைக் கற்றல் பற்றிய எங்கள் 10 வது பயிற்சி இது. இப்போது வரை, பி.ஐ.சி உடன் எல்.ஈ.டி ஒளிரும், பி.ஐ.சியில் டைமர்கள், எல்.சி.டி.யை இடைமுகப்படுத்துதல், 7-பிரிவை இடைமுகப்படுத்துதல், பி.ஐ.சி ஐப் பயன்படுத்தி ஏ.டி.சி போன்ற பல அடிப்படை பயிற்சிகளை நாங்கள் உள்ளடக்கியுள்ளோம். நீங்கள் ஒரு முழுமையான தொடக்கக்காரராக இருந்தால், தயவுசெய்து இங்கே பி.ஐ.சி டுடோரியல்களின் முழுமையான பட்டியலைப் பார்வையிடவும் கற்கத் தொடங்குங்கள்.
இந்த டுடோரியலில், PIC PIC16F877A ஐப் பயன்படுத்தி PWM சமிக்ஞைகளை எவ்வாறு உருவாக்குவது என்பதைக் கற்றுக்கொள்வோம். எங்கள் PIC MCU இல் PWM சமிக்ஞைகளை உருவாக்கப் பயன்படுத்தக்கூடிய ஒப்பீட்டு பிடிப்பு தொகுதி (CCP) எனப்படும் ஒரு சிறப்பு தொகுதி உள்ளது. இங்கே, 0 k முதல் 100% வரை மாறி கடமை சுழற்சியுடன் 5 kHz இன் PWM ஐ உருவாக்குவோம். நாம் ஒரு பொட்டென்டோமீட்டரைப் பயன்படுத்துகின்ற கடமை சுழற்சியை மாற்ற, எனவே PWM உடன் தொடங்குவதற்கு முன் ADC டுடோரியலைக் கற்றுக்கொள்வது பரிந்துரைக்கப்படுகிறது. PWM தொகுதி அதன் அதிர்வெண்ணை அமைக்க டைமர்களையும் பயன்படுத்துகிறது, எனவே இங்கே டைமர்களை எவ்வாறு பயன்படுத்துவது என்பதை இங்கே கற்றுக் கொள்ளுங்கள். மேலும், இந்த டுடோரியலில் பி.டபிள்யூ.எம் மதிப்புகளை அனலாக் மின்னழுத்தமாக மாற்ற ஆர்.சி.
பி.டபிள்யூ.எம் சிக்னல் என்றால் என்ன?
பல்ஸ் அகல மாடுலேஷன் (பிடபிள்யூஎம்) என்பது டிஜிட்டல் சிக்னலாகும், இது பொதுவாக கட்டுப்பாட்டு சுற்றுகளில் பயன்படுத்தப்படுகிறது. இந்த சமிக்ஞை முன் வரையறுக்கப்பட்ட நேரம் மற்றும் வேகத்தில் அதிக (5 வி) மற்றும் குறைந்த (0 வி) அமைக்கப்பட்டுள்ளது. சமிக்ஞை அதிகமாக இருக்கும் நேரத்தை "சரியான நேரத்தில்" என்றும், சமிக்ஞை குறைவாக இருக்கும் நேரத்தை "ஆஃப் டைம்" என்றும் அழைக்கப்படுகிறது. கீழே விவாதிக்கப்பட்டபடி ஒரு PWM க்கு இரண்டு முக்கியமான அளவுருக்கள் உள்ளன:
PWM இன் கடமை சுழற்சி:
PWM சமிக்ஞை HIGH (சரியான நேரத்தில்) இருக்கும் நேரத்தின் சதவீதம் கடமை சுழற்சி என அழைக்கப்படுகிறது. சமிக்ஞை எப்போதும் இயக்கத்தில் இருந்தால் அது 100% கடமை சுழற்சியில் இருக்கும், அது எப்போதும் முடக்கப்பட்டிருந்தால் அது 0% கடமை சுழற்சி ஆகும்.
கடமை சுழற்சி = நேரத்தை இயக்கவும் / (நேரத்தை இயக்கவும் + நேரத்தை அணைக்கவும்)

ஒரு PWM இன் அதிர்வெண்:
ஒரு PWM சமிக்ஞையின் அதிர்வெண் ஒரு PWM ஒரு காலகட்டத்தை எவ்வளவு விரைவாக முடிக்கிறது என்பதை தீர்மானிக்கிறது. மேலே உள்ள படத்தில் காட்டப்பட்டுள்ளபடி ஒரு காலம் ஒரு PWM சமிக்ஞையின் ஆன் மற்றும் ஆஃப் முடிந்தது. எங்கள் டுடோரியலில் 5KHz அதிர்வெண் அமைப்போம்.
PIC16F877A ஐப் பயன்படுத்தி PWM:
பிடபிள்யுஎம் அலையைப் பயன்படுத்தி எங்கள் PIC மைக்ரோகண்ட்ரோலர் உருவாக்கப்படும் சீனக் கம்யூனிஸ்ட் கட்சி (ஒப்பிடு பிடிப்பு பிடபிள்யுஎம்) தொகுதி. எங்கள் PWM சமிக்ஞையின் தீர்மானம் 10-பிட் ஆகும், அதாவது 0 மதிப்புக்கு 0% கடமை சுழற்சி இருக்கும் மற்றும் 1024 (2 ^ 10) மதிப்புக்கு 100% கடமை சுழற்சி இருக்கும். எங்கள் பி.ஐ.சி.
எங்கள் PIC MCU ஐப் பயன்படுத்தி PWM சமிக்ஞைகளை உருவாக்க பின்வரும் பதிவேடுகள் பயன்படுத்தப்படுகின்றன:
- CCP1CON (CCP1 கட்டுப்பாட்டு பதிவு)
- T2CON (டைமர் 2 கட்டுப்பாட்டு பதிவு)
- பிஆர் 2 (டைமர் 2 தொகுதிகள் கால பதிவு)
- CCPR1L (CCP பதிவு 1 குறைவு)
PWM சமிக்ஞைகளை உருவாக்க PIC ஐ நிரல் செய்தல்:
எங்கள் நிரலில், ஒரு பொட்டென்டோமீட்டரிலிருந்து 0-5v இன் அனலாக் மின்னழுத்தத்தைப் படித்து, எங்கள் ADC தொகுதியைப் பயன்படுத்தி 0-1024 க்கு வரைபடமாக்குவோம். 5000Hz அதிர்வெண் கொண்ட ஒரு PWM சமிக்ஞையை உருவாக்குகிறோம் மற்றும் உள்ளீட்டு அனலாக் மின்னழுத்தத்தின் அடிப்படையில் அதன் கடமை சுழற்சியை வேறுபடுத்துகிறோம். அதாவது 0-1024 0% -100% கடமை சுழற்சியாக மாற்றப்படும். இந்த டுடோரியல் நீங்கள் ஏற்கனவே பி.ஐ.சியில் ஏ.டி.சி.யைப் பயன்படுத்தக் கற்றுக் கொண்டீர்கள் என்று கருதுகிறது, இல்லையென்றால் அதை இங்கிருந்து படியுங்கள், ஏனென்றால் இந்த டுடோரியலில் அதைப் பற்றிய விவரங்களை நாங்கள் தவிர்ப்போம்.
எனவே, உள்ளமைவு பிட்கள் அமைக்கப்பட்டதும், அனலாக் மதிப்பைப் படிக்க நிரல் எழுதப்பட்டதும், நாம் PWM உடன் தொடரலாம்.
PWM செயல்பாட்டிற்கான CCP தொகுதியை உள்ளமைக்கும் போது பின்வரும் நடவடிக்கைகள் எடுக்கப்பட வேண்டும்:
- PR2 பதிவேட்டில் எழுதுவதன் மூலம் PWM காலத்தை அமைக்கவும்.
- CCPR1L பதிவு மற்றும் CCP1CON <5: 4> பிட்களுக்கு எழுதுவதன் மூலம் PWM கடமை சுழற்சியை அமைக்கவும்.
- TRISC <2> பிட்டை அழிப்பதன் மூலம் CCP1 பின் ஒரு வெளியீட்டை உருவாக்கவும்.
- TMR2 prescale மதிப்பை அமைத்து T2CON க்கு எழுதுவதன் மூலம் டைமர் 2 ஐ இயக்கவும்.
- PWM செயல்பாட்டிற்கான CCP1 தொகுதியை உள்ளமைக்கவும்.
PWM சமிக்ஞைகளை உருவாக்க இந்த திட்டத்தில் இரண்டு முக்கியமான செயல்பாடுகள் உள்ளன. ஒன்று PWM_Initialize () செயல்பாடு, இது PWM தொகுதியை அமைக்கத் தேவையான பதிவேடுகளைத் துவக்கி, பின்னர் PWM செயல்பட வேண்டிய அதிர்வெண்ணை அமைக்கும், மற்ற செயல்பாடு PWM_Duty () செயல்பாடு ஆகும், இது PWM சமிக்ஞையின் கடமை சுழற்சியை அமைக்கும் தேவையான பதிவேடுகள்.
PWM_Initialize () {PR2 = (_XTAL_FREQ / (PWM_freq * 4 * TMR2PRESCALE)) - 1; // தரவுத்தாள் பயன்படுத்தி PR2 சூத்திரங்களை அமைத்தல் // 5KHZ CCP1M3 = 1 இல் PWM ஐ வேலை செய்கிறது; CCP1M2 = 1; // CCP1 தொகுதி T2CKPS0 = 1; T2CKPS1 = 0; TMR2ON = 1; // டைமர் தொகுதியை உள்ளமைக்கவும் TRISC2 = 0; // C இல் போர்ட் முள் வெளியீடாக உருவாக்குங்கள்}
மேலே உள்ள செயல்பாடு PWM துவக்க செயல்பாடு, இந்த செயல்பாட்டில் CCP1 தொகுதி பிட் CCP1M3 மற்றும் CCP1M2 ஐ அதிகமாக்குவதன் மூலம் PWM ஐப் பயன்படுத்த அமைக்கப்பட்டுள்ளது.

டைமர் தொகுதியின் ப்ரீஸ்கேலர் பிட் T2CKPS0 ஐ அதிகமாகவும், T2CKPS1 ஐ குறைந்த பிட் TMR2ON டைமரைத் தொடங்கவும் அமைக்கப்படுகிறது.

இப்போது, PWM சமிக்ஞையின் அதிர்வெண்ணை அமைக்க வேண்டும். அதிர்வெண்ணின் மதிப்பு PR2 பதிவேட்டில் எழுதப்பட வேண்டும். கீழே உள்ள சூத்திரங்களைப் பயன்படுத்தி விரும்பிய அதிர்வெண்ணை அமைக்கலாம்
PWM காலம் = * 4 * TOSC * (TMR2 Prescale Value)
PR2 ஐப் பெற இந்த சூத்திரங்களை மறுசீரமைப்பது கொடுக்கும்
PR2 = (காலம் / (4 * Tosc * TMR2 Prescale)) - 1
காலம் = (1 / PWM_freq) மற்றும் Tosc = (1 / _XTAL_FREQ) என்பதை நாங்கள் அறிவோம். எனவே…..
PR2 = (_XTAL_FREQ / (PWM_freq * 4 * TMR2PRESCALE)) - 1;
அதிர்வெண் அமைக்கப்பட்டவுடன், மீண்டும் அதிர்வெண்ணை மாற்ற வேண்டிய வரை இந்த செயல்பாட்டை மீண்டும் அழைக்க வேண்டியதில்லை. எங்கள் டுடோரியலில் நான் PWM_freq = 5000 ஐ ஒதுக்கியுள்ளேன் ; இதனால் எங்கள் PWM சமிக்ஞைக்கு 5 KHz இயக்க அதிர்வெண் பெறலாம்.
இப்போது கீழேயுள்ள செயல்பாட்டைப் பயன்படுத்தி PWM இன் கடமை சுழற்சியை அமைப்போம்
PWM_Duty (கையொப்பமிடாத முழு கடமை) {if (கடமை <1023) {கடமை = ((மிதவை) கடமை / 1023) * (_ XTAL_FREQ / (PWM_freq * TMR2PRESCALE)); // குறைக்கும்போது // கடமை = (((மிதவை) கடமை / 1023) * (1 / PWM_freq)) / ((1 / _XTAL_FREQ) * TMR2PRESCALE); CCP1X = கடமை & 1; // 1 வது பிட்டை சேமிக்கவும் CCP1Y = கடமை & 2; // 0 வது பிட் CCPR1L = கடமை >> 2; // சேமித்து வைக்கும் 8 பிட்}}
எங்கள் PWM சமிக்ஞைக்கு 10-பிட் தெளிவுத்திறன் உள்ளது, எனவே எங்கள் PIC இல் 8-பிட் தரவு கோடுகள் மட்டுமே இருப்பதால் இந்த மதிப்பை ஒரு பதிவேட்டில் சேமிக்க முடியாது. ஆகவே, கடைசி இரண்டு எல்.எஸ்.பியை சேமிக்கவும், மீதமுள்ள 8 பிட்களை CCPR1L பதிவேட்டில் சேமிக்கவும் CCP1CON <5: 4> (CCP1X மற்றும் CCP1Y) இன் மற்ற இரண்டு பிட்களைப் பயன்படுத்துகிறோம்.
PWM கடமை சுழற்சி நேரத்தை கீழே உள்ள சூத்திரங்களைப் பயன்படுத்தி கணக்கிடலாம்:
PWM கடமை சுழற்சி = (CCPRIL: CCP1CON <5: 4>) * Tosc * (TMR2 Prescale Value)
CCPR1L மற்றும் CCP1CON இன் மதிப்பைப் பெற இந்த சூத்திரங்களை மறுசீரமைப்பது பின்வருமாறு:
CCPRIL: CCP1Con <5: 4> = PWM Duty Cycle / (Tosc * TMR2 Prescale Value)
எங்கள் ADC இன் மதிப்பு 0-1024 ஆக இருக்கும், அது 0% -100% ஆக இருக்க வேண்டும், எனவே PWM கடமை சுழற்சி = கடமை / 1023. இந்த கடமை சுழற்சியை ஒரு காலகட்டமாக மாற்றுவதற்கு நாம் அதை காலத்துடன் (1 / PWM_freq) பெருக்க வேண்டும்.
Tosc = (1 / PWM_freq) என்பதையும் நாங்கள் அறிவோம், எனவே..
கடமை = (((மிதவை) கடமை / 1023) * (1 / PWM_freq)) / ((1 / _XTAL_FREQ) * TMR2PRESCALE);
மேற்கண்ட சமன்பாட்டைத் தீர்ப்பது நமக்குத் தரும்:
கடமை = ((மிதவை) கடமை / 1023) * (_XTAL_FREQ / (PWM_freq * TMR2PRESCALE));
விரிவான வீடியோவுடன் கீழேயுள்ள குறியீடு பிரிவில் முழுமையான நிரலை நீங்கள் சரிபார்க்கலாம்.
திட்டவியல் மற்றும் சோதனை:
வழக்கம் போல் புரோட்டஸ் உருவகப்படுத்துதலைப் பயன்படுத்தி வெளியீட்டைச் சரிபார்க்கலாம். சர்க்யூட் வரைபடம் கீழே தரப்பட்டுள்ளது.

0-5 மின்னழுத்தத்தில் உணவளிக்க ஒரு பொட்டென்டோமீட்டரை 7 வது முள் இணைக்கவும். CCP1 தொகுதி முள் 17 (RC2) உடன் உள்ளது, இங்கே PWM உருவாக்கப்படும், இது டிஜிட்டல் அலைக்காட்டி மூலம் சரிபார்க்கப்படலாம். மேலும் ஒரு மாறி மின்னழுத்த ஒரு இதை மாற்ற நாங்கள் வெளியீடு சரிபார்க்க ஒரு ஆர்சி வடிகட்டி மற்றும் ஒரு எல்இடி பயன்படுத்தி ஒரு நோக்கம் இல்லாமல்.
ஆர்.சி-வடிகட்டி என்றால் என்ன?
ஒரு ஆர்.சி. வடிகட்டி அல்லது ஒரு லோ பாஸ் வடிகட்டி இரண்டு செயலற்ற கூறுகள் அதாவது மின்தடை, மின்தேக்கிக்கும் ஒரு எளிய சுற்றாக இருக்கும். இந்த இரண்டு கூறுகளும் எங்கள் PWM சமிக்ஞையின் அதிர்வெண்ணை வடிகட்டவும், அதை ஒரு மாறுபட்ட DC மின்னழுத்தமாகவும் மாற்ற பயன்படுகிறது.
சுற்றுவட்டத்தை நாம் ஆராய்ந்தால், ஆர் இன் உள்ளீட்டில் மாறி மின்னழுத்தம் பயன்படுத்தப்படும்போது, மின்தேக்கி சி சார்ஜ் செய்யத் தொடங்கும். இப்போது மின்தேக்கியின் மதிப்பை அடிப்படையாகக் கொண்டு, மின்தேக்கி முழுமையாக சார்ஜ் செய்ய சிறிது நேரம் எடுக்கும், ஒரு முறை சார்ஜ் செய்யப்பட்டால் அது டி.சி மின்னோட்டத்தைத் தடுக்கும் (மின்தேக்கிகளை டி.சி.யைத் தடுக்கும் என்பதை நினைவில் கொள்ளுங்கள், ஆனால் ஏ.சி. உயர் அதிர்வெண் PWM (AC சமிக்ஞை) மின்தேக்கி வழியாக தரையிறக்கப்படும். இதனால் மின்தேக்கி முழுவதும் தூய டி.சி பெறப்படுகிறது. இந்த திட்டத்திற்கு 1000Ohm மற்றும் 1uf மதிப்பு பொருத்தமானது என்று கண்டறியப்பட்டது. R மற்றும் C இன் மதிப்புகளைக் கணக்கிடுவது பரிமாற்ற செயல்பாட்டைப் பயன்படுத்தி சுற்று பகுப்பாய்வை உள்ளடக்குகிறது, இது இந்த டுடோரியலின் நோக்கத்திற்கு வெளியே உள்ளது.

கீழே காட்டப்பட்டுள்ளபடி நிரலின் வெளியீட்டை டிஜிட்டல் ஆஸில்லோஸ்கோப்பைப் பயன்படுத்தி சரிபார்க்க முடியும், பொட்டென்டோமீட்டர் மாறுபடும் மற்றும் PWM இன் கடமை சுழற்சி மாற வேண்டும். வோல்ட்மீட்டரைப் பயன்படுத்தி ஆர்.சி சுற்று வெளியீட்டு மின்னழுத்தத்தையும் நாம் கவனிக்க முடியும். எல்லாம் எதிர்பார்த்தபடி செயல்பட்டால், எங்கள் வன்பொருளுடன் தொடரலாம். முழு செயல்முறைக்கு வீடியோவை மேலும் சரிபார்க்கவும்.

வன்பொருள் வேலை:
திட்டத்தின் வன்பொருள் அமைப்பு மிகவும் எளிதானது, கீழே காட்டப்பட்டுள்ள எங்கள் PIC Perf போர்டை மீண்டும் பயன்படுத்தப் போகிறோம்.

அனலாக் மின்னழுத்தத்தில் உணவளிக்க எங்களுக்கு ஒரு பொட்டென்டோமீட்டர் தேவைப்படும், நான் சில பானை கம்பிகளை என் பானையில் இணைத்துள்ளேன் (கீழே காட்டப்பட்டுள்ளது) இதனால் அவற்றை நேரடியாக PIC Perf போர்டுடன் இணைக்க முடியும்.


இறுதியாக வெளியீட்டை சரிபார்க்க, பி.டபிள்யூ.எம் சிக்னல் எவ்வாறு இயங்குகிறது என்பதைப் பார்க்க எங்களுக்கு ஒரு ஆர்.சி சுற்று மற்றும் எல்.ஈ.டி தேவை, நான் வெறுமனே ஒரு சிறிய பெர்ஃப் போர்டைப் பயன்படுத்தினேன், மேலும் ஆர்.சி சர்க்யூட் மற்றும் எல்.ஈ.டி (பிரகாசத்தைக் கட்டுப்படுத்த) ஆகியவற்றைக் கீழே காண்பித்தேன்.

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

பி.ஓ.டி-யிலிருந்து அனலாக் மின்னழுத்தத்தைப் படித்து பி.டபிள்யூ.எம் சிக்னல்களாக மாற்ற நாங்கள் திட்டமிட்டுள்ளோம், அவை ஆர்.சி வடிகட்டியைப் பயன்படுத்தி மாறி மின்னழுத்தமாக மாற்றப்பட்டுள்ளன, இதன் விளைவாக எங்கள் வன்பொருளைப் பயன்படுத்தி சரிபார்க்கப்படுகிறது. உங்களுக்கு ஏதேனும் சந்தேகம் இருந்தால் அல்லது எங்காவது சிக்கிக்கொண்டால் தயவுசெய்து கீழேயுள்ள கருத்துப் பகுதியைப் பயன்படுத்தவும், உங்களுக்கு உதவ நாங்கள் மகிழ்ச்சியடைவோம். முழு தொழிலாள வீடியோவில் வேலை.
பிற மைக்ரோகண்ட்ரோலர்களில் எங்கள் பிற PWM பயிற்சிகளையும் சரிபார்க்கவும்:
- ராஸ்பெர்ரி பை பிடபிள்யூஎம் டுடோரியல்
- Arduino டியூவுடன் PWM
- PWM ஐப் பயன்படுத்தி Arduino அடிப்படையிலான LED Dimmer
- ATmega32 மைக்ரோகண்ட்ரோலரைப் பயன்படுத்தி பவர் எல்இடி டிம்மர்
