جدول المحتويات:

توليد موجة PWM مع متحكم الموافقة المسبقة عن علم: 6 خطوات
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم: 6 خطوات

فيديو: توليد موجة PWM مع متحكم الموافقة المسبقة عن علم: 6 خطوات

فيديو: توليد موجة PWM مع متحكم الموافقة المسبقة عن علم: 6 خطوات
فيديو: AVR Programming Crash Course 2012 Session:17 (Timer1_PWM).wmv 2024, يوليو
Anonim
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم
توليد موجة PWM مع متحكم الموافقة المسبقة عن علم

ما هو PWM؟

PWM STANDS FOR PULSE WIDTH MODULATION هي تقنية يتم من خلالها تغيير عرض النبض.

لفهم هذا المفهوم بوضوح ، ضع في اعتبارك نبضة الساعة أو أي إشارة موجة مربعة لها دورة عمل بنسبة 50 ٪ مما يعني أن فترة Ton و Toff هي نفسها ، والمدة الإجمالية التي كانت الإشارة فيها عالية والمدة التي كانت فيها الإشارة منخفضة تسمى المجموع فترة زمنية.

بالنسبة للصورة الموضحة أعلاه ، فإن دورة عمل هذه الموجة تبلغ 50٪

دورة العمل = (وقت التشغيل / الوقت الإجمالي) * 100

وقت التشغيل - الوقت الذي كانت فيه الإشارة عالية

وقت الإيقاف - الوقت الذي كانت فيه الإشارة منخفضة إجمالي الوقت - الفترة الزمنية الإجمالية للنبض (كل من وقت التشغيل والإيقاف)

الخطوة 1: اختيار متحكم دقيق

اختيار متحكم
اختيار متحكم

اختيار متحكم مناسب للمشروع هذا هو الجزء الأساسي من المشروع يمكن توليد إشارات PWM في ميكروكنترولر مع قنوات PWM (سجلات CCP) بالنسبة لهذا المشروع ، أخطط للالتزام بـ pic16f877. يمكنك تنزيل رابط ورقة البيانات الموضح أدناه

انقر هنا ورقة بيانات PIC16F877a

وحدة CCP هي المسؤولة عن إنتاج إشارة PWM. يتم مضاعفة CCP1 و CCP2 مع PORTC. PORTC هو منفذ ثنائي الاتجاه بعرض 8 بت. سجل اتجاه البيانات المقابل هو TRISC. سيؤدي ضبط بت TRISC (= 1) إلى أخذ دبوس PORTC المقابل كمدخل. سيؤدي مسح بت TRISC (= 0) إلى جعل دبوس PORTC المقابل ناتجًا.

TRISC = 0 ؛ // سيؤدي مسح هذا البت إلى جعل PORTC كإخراج

الخطوة 2: تكوين وحدة CCP

تكوين وحدة CCP
تكوين وحدة CCP
تكوين وحدة CCP
تكوين وحدة CCP

CCP - وحدات الالتقاط / المقارنة / PWM

تحتوي كل وحدة Capture / Compare / PWM (CCP) على سجل 16 بت يمكن أن يعمل كالتالي:

• سجل التقاط 16 بت

• 16 بت قارن التسجيل

• سجل دورة العمل الرئيسي / التابع لـ PWM

قم بتكوين تسجيل CCP1CON في وضع PWM

تسجيل الوصف

CCPxCON يستخدم هذا السجل لتكوين وحدة CCP لتشغيل الالتقاط / المقارنة / PWM.

CCPRxL يحتوي هذا السجل على بتات 8-Msb من PWM ، وستكون بتات 2 المنخفضة جزءًا من سجل CCPxCON.

عداد التشغيل الحر TMR2 والذي سيتم مقارنته بـ CCPR1L و PR2 لتوليد خرج PWM.

الآن سأستخدم ثنائي لتمثيل البتات لتكوين سجل CCP1CON.

إحالة الصورة أعلاه.

CCP1CON = 0b00001111 ؛

يمكنك أيضًا تنسيق سداسي عشري

CCP1CON = 0x0F ؛ // تكوين سجل CCP1CON لوضع PWM

الخطوة 3: تكوين وحدة Timer2 Module (تسجيل TMR2)

تكوين وحدة Timer2 Module (تسجيل TMR2)
تكوين وحدة Timer2 Module (تسجيل TMR2)

Timer2 هو مؤقت 8 بت مع مقياس مسبق و postcaler. يمكن استخدامه كقاعدة زمنية PWM لوضع PWM لوحدة (وحدات) CCP. سجل TMR2 قابل للقراءة وقابل للكتابة ويتم مسحه على أي جهاز يتم إعادة تعيينه.

يظهر سجل T2CON

سيعدل المقياس المسبق والمقياس اللاحق تردد الخرج لموجة PWM المتولدة.

التردد = تردد الساعة / (4 * المقياس المسبق * (PR2-TMR2) * المقياس اللاحق * العدد)

حيث توت = 1 / تردد

T2CON = 0b00000100 ؛

سيؤدي ذلك إلى توليد 2.5 كيلو هرتز @ 1 ميجا هرتز أو 100 كيلو هرتز @ 4 ميجا هرتز (عمليًا هناك قيود على تردد PWM هذا ، قم بإحالة ورقة بيانات معينة لمزيد من التفاصيل)

تمثيل عرافة

T2CON = 0x04 ؛ // تمكين T2CON بدون تكوين مقياس مسبق ومقياس postcaler

الخطوة 4: تكوين PR2 (تسجيل الفترة Timer2)

تحتوي الوحدة النمطية Timer2 على سجل فترة 8 بت ، PR2. يزيد Timer2 من 00h حتى يطابق PR2 ثم يعيد تعيينه إلى 00h في دورة الزيادة التالية. PR2 هو سجل مقروء وقابل للكتابة. يتم تهيئة سجل PR2 إلى FFh عند إعادة التعيين.

سيسمح تحديد النطاق المناسب لـ PR2 باستخدامه لتغيير دورة العمل لموجة PWM المتولدة

PR2 = 100 ؛ // اضبط وقت الدورة على 100 لتغيير دورة العمل من 0-100

من أجل البساطة ، أستخدم PR2 = 100 بجعل CCPR1L = 80 ؛ يمكن تحقيق 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 ؛ // تكوين سجل CCP1CON لوضع PWM

T2CON = 0x04 ؛ // تمكين T2CON بدون تكوين مقياس مسبق ومقياس postcaler.

PR2 = 100 ؛ // اضبط وقت الدورة على 100 لتغيير دورة العمل من 0-100

بينما (1) {

CCPR1L = 75 ؛ // ولدت 75٪ تأخير دورة العمل (1) ؛

}

}

لقد أجريت أيضًا تعديلًا بسيطًا على الكود بحيث يكون تواتر موجة PWM المتولدة

تمت محاكاة هذا الكود في بروتينات وتظهر موجة PWM الناتجة أدناه لتحميل هذا على لوحات تطوير الموافقة المسبقة عن علم ، استخدم #include مع بتات التكوين المناسبة.

شكرا لك

موصى به: