PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন: 6 টি ধাপ
PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন: 6 টি ধাপ
Anonim
PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন
PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন
PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন
PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন
PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন
PIC মাইক্রোকন্ট্রোলার দিয়ে PWM ওয়েভ তৈরি করুন

PWM কি?

পালস প্রস্থ মডিউলেশনের জন্য পিডব্লিউএম স্ট্যান্ডস একটি কৌশল যার দ্বারা নাড়ির প্রস্থ বিভিন্ন হয়।

এই ধারণাটি পরিষ্কারভাবে বোঝার জন্য একটি ঘড়ির পালস বা যেকোন বর্গ তরঙ্গ সংকেত বিবেচনা করুন এতে 50% ডিউটি চক্র রয়েছে যার অর্থ টন এবং টফ পিরিয়ড একই, মোট সময়কাল যার জন্য সংকেত বেশি ছিল এবং যে সময়কালের জন্য সংকেত কম ছিল তাকে মোট বলা হয় সময় কাল.

উপরে দেখানো ছবির জন্য এই তরঙ্গের ডিউটি চক্র 50%

ডিউটি চক্র = (সময় / মোট সময়)*100

সময় - সময় যার জন্য সংকেত বেশি ছিল

বন্ধ সময় - সময় শত্রু যা সংকেত কম ছিল মোট সময় - পালস এর মোট সময়কাল (উভয় চালু এবং বন্ধ সময়)

ধাপ 1: মাইক্রোকন্ট্রোলার নির্বাচন করা

মাইক্রোকন্ট্রোলার নির্বাচন করা
মাইক্রোকন্ট্রোলার নির্বাচন করা

প্রকল্পের জন্য উপযুক্ত মাইক্রোকন্ট্রোলার নির্বাচন করা এই প্রকল্পের অপরিহার্য অংশ PWM সংকেতগুলি PWM চ্যানেল (CCP রেজিস্টার) দিয়ে মাইক্রোকন্ট্রোলারে উৎপন্ন হতে পারে। এই প্রকল্পের জন্য আমি pic16f877 এর সাথে থাকার পরিকল্পনা করছি আপনি ডেটশীট ডাউনলোড করতে পারেন নিচে লিঙ্ক দেওয়া আছে

PIC16F877a ডাটা শীট এখানে ক্লিক করুন

সিসিপি মডিউল পিডব্লিউএম সিগন্যাল তৈরির জন্য দায়ী। PORTC একটি 8-বিট প্রশস্ত দ্বিদলীয় বন্দর। সংশ্লিষ্ট ডেটা দিকনির্দেশনা রেজিস্টার হল TRISC। TRISC বিট (= 1) সেট করলে সংশ্লিষ্ট PORTC পিনকে ইনপুট হিসেবে নেওয়া হবে। TRISC বিট (= 0) সাফ করলে সংশ্লিষ্ট PORTC পিন আউটপুট হয়ে যাবে।

TRISC = 0; // এই বিট সাফ করা PORTC কে আউটপুট হিসেবে তৈরি করবে।

ধাপ 2: CCP মডিউল কনফিগার করুন

সিসিপি মডিউল কনফিগার করুন
সিসিপি মডিউল কনফিগার করুন
সিসিপি মডিউল কনফিগার করুন
সিসিপি মডিউল কনফিগার করুন

সিসিপি - ক্যাপচার/তুলনা/পিডব্লিউএম মডিউল

প্রতিটি ক্যাপচার/তুলনা/পিডব্লিউএম (সিসিপি) মডিউলটিতে একটি 16-বিট রেজিস্টার রয়েছে যা একটি হিসাবে কাজ করতে পারে:

• 16-বিট ক্যাপচার রেজিস্টার

• 16-বিট তুলনা রেজিস্টার

• PWM মাস্টার/স্লেভ ডিউটি সাইকেল রেজিস্টার

PWM মোডে CCP1CON নিবন্ধন কনফিগার করুন।

বিবরণ নিবন্ধন করুন

CCPxCON এই রেজিস্টারটি ক্যাপচার/তুলনা/PWM অপারেশনের জন্য CCP মডিউল কনফিগার করতে ব্যবহৃত হয়।

CCPRxL এই রেজিস্টারে PWM- এর 8-Msb বিট রয়েছে, নিচের 2-বিট CCPxCON রেজিস্টারের অংশ হবে।

TMR2 ফ্রি রানিং কাউন্টার যা PWM আউটপুট তৈরির জন্য CCPR1L এবং PR2 এর সাথে তুলনা করা হবে।

এখন আমি CCP1CON রেজিস্টার কনফিগার করার জন্য বিট প্রতিনিধিত্ব করতে বাইনারি ব্যবহার করব।

উপরের ছবিটি দেখুন।

CCP1CON = 0b00001111;

আপনি হেক্স ফরম্যাটও করতে পারেন

CCP1CON = 0x0F; // PWM মোডের জন্য CCP1CON রেজিস্টার কনফিগার করা

ধাপ 3: টাইমার 2 মডিউল কনফিগার করা (TMR2 নিবন্ধন)

টাইমার 2 মডিউল কনফিগার করা (TMR2 রেজিস্টার)
টাইমার 2 মডিউল কনফিগার করা (TMR2 রেজিস্টার)

টাইমার 2 হল একটি 8-বিট টাইমার যা একটি প্রেসকলার এবং একটি পোস্টস্কেলার। এটি CCP মডিউলের PWM মোডের জন্য PWM টাইম বেস হিসাবে ব্যবহার করা যেতে পারে। TMR2 রেজিস্টারটি পঠনযোগ্য এবং লেখার যোগ্য এবং যেকোনো ডিভাইস রিসেট করে সাফ করা হয়।

T2CON রেজিস্টার দেখানো হয়েছে

Prescale এবং পোস্টস্কেল উত্পন্ন PWM তরঙ্গের আউটপুট ফ্রিকোয়েন্সি সামঞ্জস্য করবে।

ফ্রিকোয়েন্সি = ঘড়ির ফ্রিকোয়েন্সি/(4*প্রেসকলার*(PR2-TMR2)*পোস্টস্কেলার*কাউন্ট)

যেখানে Tout = 1/ফ্রিকোয়েন্সি

T2CON = 0b00000100;

এটি 2.5 KHz @ 1Mhz বা 100KHz @ 4MHz স্ফটিক উৎপন্ন করবে (কার্যত এই PWM ফ্রিকোয়েন্সিটির একটি সীমাবদ্ধতা রয়েছে বিস্তারিত তথ্যের জন্য বিশেষ ডেটশীট দেখুন)

হেক্স উপস্থাপনা

T2CON = 0x04; // Prescaler এবং পোস্টস্কেল কনফিগারেশন ছাড়াই T2CON সক্ষম করুন।

ধাপ 4: PR2 কনফিগার করা (টাইমার 2 পিরিয়ড রেজিস্টার)

টাইমার 2 মডিউলে একটি 8-বিট পিরিয়ড রেজিস্টার, PR2 আছে। টাইমার 2 00h থেকে বৃদ্ধি পায় যতক্ষণ না এটি PR2 এর সাথে মিলিত হয় এবং তারপরে পরবর্তী ইনক্রিমেন্ট সাইকেলে 00h তে রিসেট হয়। PR2 একটি পঠনযোগ্য এবং লিখিত নিবন্ধন। PR2 রেজিস্টারটি রিসেট করার পরে FFh এ আরম্ভ করা হয়।

PR2- এর জন্য একটি উপযুক্ত পরিসর নির্ধারণ করলে উৎপাদিত PWM তরঙ্গের শুল্ক চক্র পরিবর্তন করতে পারবেন

PR2 = 100; // ডিউটি চক্র 0-100 থেকে পরিবর্তনের জন্য সাইকেলের সময় 100 সেট করুন

সরলতার জন্য আমি CCPR1L = 80 করে PR2 = 100 ব্যবহার করছি; 80% ডিউটি সাইকেল অর্জন করা যায়।

ধাপ 5: CCPR1l মডিউল কনফিগার করুন

যেহেতু PR2 = 100 CCPR1l পছন্দসই ডিউটি চক্র পেতে 0-100 এর মধ্যে যেকোনো জায়গায় কনফিগার করা যায়।

ধাপ 6: আপনার উপর MPLAB X IDE স্কেচ লিখুন কোডটি নীচে দেওয়া আছে

আপনার উপর MPLAB X IDE স্কেচ লিখুন কোডটি নীচে দেওয়া আছে
আপনার উপর MPLAB X IDE স্কেচ লিখুন কোডটি নীচে দেওয়া আছে

#অন্তর্ভুক্ত

অকার্যকর বিলম্ব (int a) // বিলম্ব উৎপন্ন করতে ফাংশন {

জন্য (int i = 0; i <a; i ++)

{

জন্য (int j = 0; j <144; j ++);

}

}

অকার্যকর প্রধান ()

{TRISC = 0; // এই বিট সাফ করা PORTC কে আউটপুট হিসেবে তৈরি করবে।

CCP1CON = 0x0F; // PWM মোডের জন্য CCP1CON রেজিস্টার কনফিগার করা

T2CON = 0x04; // Prescaler এবং পোস্টস্কেল কনফিগারেশন ছাড়াই T2CON সক্ষম করুন।

PR2 = 100; // ডিউটি চক্র 0-100 থেকে পরিবর্তনের জন্য সাইকেলের সময় 100 সেট করুন

যখন (1) {

CCPR1L = 75; // উত্পন্ন 75% শুল্ক চক্র বিলম্ব (1);

}

}

আমি কোডে সামান্য পরিবর্তন করেছি যাতে উত্পন্ন PWM তরঙ্গের ফ্রিকোয়েন্সি

এই কোডটি প্রোটিয়াসে সিমুলেটেড এবং আউটপুট PWM ওয়েভ নিচে দেখানো হয়েছে আপনার পিক ডেভেলপমেন্ট বোর্ডগুলিতে এটি আপলোড করার জন্য উপযুক্ত কনফিগারেশন বিট সহ #অন্তর্ভুক্ত করুন।

ধন্যবাদ

প্রস্তাবিত: