أنت هنا:إصنعها»العقول الإلكترونية»المتحكم AVR ـ»البرمجة في bascom-AVR ـ»برمجة الأنظمة المدمجة ببيئة bascom avr – الدرس 5

برمجة الأنظمة المدمجة ببيئة bascom avr – الدرس 5

كتبه البرمجة في bascom-AVR ـ 10819 كن أول من يعلق
آخر تعديل في الجمعة, 11 كانون1/ديسمبر 2020 17:57
برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 5
قيم الموضوع
(1 تصويت)

هذه المحاضرة تشرح بنية البروتوكولRC5المستخدم في أجهزة التحكم بالأشعة تحت الحمراء. ثم تقدم تطبيقاً عملياً لربط مستقبل أشعة تحت الحمراء يدعم البروتوكول المذكور وطرقة قراءة البيانات من المستقبل. ثم طريقة تصميم وبرمجة جهاز تحكم لإرسال أوامر تحكم باستخدام الأشعة تحت الحمراء والبروتوكول RC5. 

 {jumi [*3]}


تسميات

إنتبه إلى أنه قد اعتمدنا التسميات التالية خلال هذه السلسلة:

  • متحكم (مصغر) عوض Microcontroller

  • زوج عوض bit

  • ثمن عوض byte بالإنجليزية و octet بالفرنسية

تجد جميع مصطلحات مقالات هذه السلسلة في قاموس المصطلحات التابع لها.

 


ملفات المقال

يمكنك تحميل ما يلي للاستفاذة أكثر من المقال:

Session_07_PPTX

Session_07_codes

 


محاضرة المقال




البروتوكول RC5 وأجهزة التحكم بالأشعة تحت الحمراء

التساؤل الأول الذي يتبادر للذهن هو تساؤل عن ماهية الأشعة تحت الحمراء؟ فيأتي التعريف بأنها عبارة عن طاقة إشعاع ضوئي غير مرئي يقع تحت حزمة الترددات المرئية لأعيينا. في الحقيقة إن الأشعة تحت الحمراء هي ضوء طبيعي يبلغ طول الموجه لهذه الأشعة 950nm وهي موجة قصيرة جداً لهذا لا يمكن للعين أن ترى الضوء المنبعث من مرسل الأشعة تحت الحمراء.

تعتبر الأشعة تحت الحمراء من أرخص الطرق وأسهلها للتحكم عن بعد بالأجهزة وذلك ضمن مجال مرئي، وتستخدم بكثرة في الأجهزة الكهربائية المنزلية وأجهزة التسجيل الرقمي والعرض المرئي. بالإضافة إلى سهولة توليدها، كما أنها لا تعاني من التدخل الكهرومغناطيسي، ولكنها في نفس الوقت يمكن أن تتصادم مع إشعاعات تحت حمراء أخرى كأشعة الشمس مثلاً تحوي على مجال طيف عريض من الإشعاعات التي منها الأشعة تحت الحمراء، وهذا سيؤثر بدوره على فعالية الإرسال.

 

إن كثير من الأشياء يمكن أن تولد الأشعة تحت الحمراء، وخوصاً الأجسام التي تصدر حرارة كأجسادنا مثلاً: المصابيح، الأفران، الماء الحار، لذلك يجب استخدام مفتاح أو عنوان للجهاز المرسل لتفادي الأشعة المزيفة الصادرة عن الأجسام التي لها إصدار حراري وليخبر المستقبل عن البيانات الحقيقية التي يجب أن يستجيب لها نظام التحكم، وهذا ما سوف نوضحه لاحقاً ويعبر عنه بـ العنوان (Address).

 

إن حزمة ترددات الأشعة تحت الحمراء تتراوح بين 30KHZ و 60KHZ ومجال الأشعة الأفضل هو ضمن 36KHZ والحزم التي حوله 38KHZ. لذلك تستخدم أجهزة التحكم بالأشعة تحت الحمراء الحزمتين 36KHZ و 38KHZ لإرسال المعلومات وهذا يعني أن الثنائي المرسل للأشعة تحت الحمراء سوف يتذبذب 36 ألف إلى 38 ألف مرة خلال دور قدره واحد ثانية من أجل القيمة واحد منطقي، وسيكون ساكن من أجل قيمة صفر منطقي.

 

إن مسألة إرسال تردد 36KHZ و 38KHZ هي مسألة سهلة، لكن الصعوبة تكمن في استقبال هذه الترددات وخصوصاً أن هذه الترددات انتقلت عبر الهواء وتراكبت معها ترددات الضجيج المحيط، لهذا السبب تقوم بعض الشركات بإنتاج مستقبلات الأشعة تحت الحمراء التي تحوي في بنيتها على مرشحات الحزمة ودارات فك التشفير ودارات القص للحزم غير المرغوبة، وهذا بدوره يساعد على استخلاص الإشارة الحقيقية.

 

يبين الشكل التالي دارة إرسال بسيطة من أجل إرسال تردد 36KHZ، وذلك بتطبيق إشارة مربعة 27uS على قاعدة الترانزستور الشكل1. وسيقوم المستقبل باستلام الإشارة المرسلة وتعديلها كما في الشكل2.

الشكل 1

الشكل 2

نلاحظ أن دارة التعديل الموجودة داخل المستقبل قد عكست المستوى المنطقي للإشارة.

 


معايير التحكم باستخدام الأشعة تحت الحمراء

هناك الكثير من معايير التحكم (بروتوكولات) التي تعمل عليها المستقبلات، منها: NEC و SIRCS و RC5 و JAPAN و SAMSUNG و Sony. وتختلف هذه البروتوكولات عن بعضها في شكل موجة الإرسال وبنيتها.

 

المعيار RC5

إن اهتمامنا ينصب بشكل كلي على معيار RC5 الذي طورته شركة فيلبس ويتلخص بإرسال قطار من 14 نبضة في كل مرة يتم فيها الضغط على أحد أزرار جهاز التحكم وبزمن 1.728mS عند التردد 36KHz أو بزمن 1.4mS عند التردد 38KHz لكل نبضة، وهذا القطار من النبضات يتكرر كل 130mS إذا أبقيت المفتاح مضغوطاً. ولفهم مبدأ عمل هذا البروتوكول يجب التعرف إلى البارامترات التالية:

  • طول العنوان (Address Length).

  • طول أمر التحكم (Command Length).

  • تردد الناقل (Carrier Frequency ).

  • زمن نبضة بداية الإرسال (Start Bit).

  • زمن نبضة الإرسال للمستوى المنطقي "1" (High-Bit-Time).

  • زمن نبضة الإرسال للمستوى المنطقي "0" (Low-Bit-Time).

 

إن هذه البارامترات تختلف حسب نوع المستقبل. إن كل نبضة من قطار النبضات هي زوج واحد منقسم إلى قسمين: له نصف يميني ونصف يساري، ولكل منهما مستوى منطقي معاكس للآخر دائماً. فإذا كان الزوج المرسل من طرف الإرسال هو واحد منطقي، فإن القسم اليميني من الزوج سيكون واحد منطقي، بينما القسم اليساري سيكون صفر منطقي، وإذا كان الزوج المرسل هو صفر منطقي، فستكون عكس الحالة السابقة تماماً. بمعنى آخر، يمكنك أن تستنتج أن القسم اليميني من الزوج المستقبل، سيكون له نفس المستوى المنطقي للزوج المرسل، من الشكل السابق تجد النبضة الزرقاء لها مستوى واحد منطقي، وهذا يعني أن الزوج المرسل هو واحد منطقي أيضا، ولكن القسم اليساري سيكون عكسه.

الشكل 3: يبين المنطق الحقيقي الذي سوف تستقبله

 

في هذا البروتوكول هناك عدد محدد من النبضات التي دور كل منها 27µs (عند التردد 36KHz) أو 18.75µS (عند التردد 38KHz) يجب أن تصل إلى دارة فاك التشفير الموجودة داخل المستقبل (demodulator) ليفهم أن التردد المستقبل هو التردد الصحيح ومن ثم نقله إلى الخرج، هذا العدد من النبضات لمستقبلات شركة فيلبس هو 32 نبضة لكل قسم من كل زوج من مجموع أزواج الإرسال، وبالتالي 64 نبضة لكل زوج. وعليه فإنه من أجل إرسال "0" فإنه سيكون لدينا في طرف المستقبل في مرحلة فك التعديل 32 نبضة مربعة دور كل منها دور كل منها 27µs (عند التردد 36KHz) أو 18.75µS (عند التردد 38KHz) ثم يليها 32 silence pulse. بينما من أجل إرسال "1" سيكون لدينا الحالة المعاكسة تماماً، 32 silence pulse ثم يليها 32 نبضة مربعة دور كل منها كل منها 27µs (عند التردد 36KHz) أو 18.75µS (عند التردد 38KHz).

الشكل 4: المنطق “1” والمنطق “0” في الإرسال عند التردد 36KHz

 

يتكون بروتوكول RC5 من 14Bits ثنائي (أي له نصفين) كما هو مبين على الشكل5.

الشكل 5: بروتوكول الإرسال RC5

 

Bit14

Bit13

Bit12

Bit11

Bit10

Bit9

Bit8

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Command

Address

control

start bits

 

Bits1-2: هي زوجي بداية الإرسال ("Start Bits or AGC "Automatic Gain Control) وهي دائماً تملك القيمة "1". وهي تساعد هذه الأزواج في معايرة التحكم الآلي بربح مستقبل الأشعة وكذلك لإعلام المستقبل ببدء عملية الإرسال.

الشكل 6: أزواج التحكم في بروتوكول الإرسال RC5

 

Bit3: هو زوج التحكم CHECK bit (Control Bit or Toggle Bit)i، هذا الزوج تتغير قيمته بين الصفر والواحد منطقي في كل مرة يتم فيها ضغط أحد أزرار التحكم. هذا يفيد جهاز التحكم ليفهم إذا ما زلت تضغط على أحد الأزرار ويتكرر الأمر – تصور انك تضغط الرقم واحد وتستمر بالضغط، فلولا هذا الزوج فإن الجهاز سيفهم انك تريد اختيار القناة 11 بدلاً من القناة واحد لأنه سيرسل قطارين من النبضات لهما القيمة نفسها.

 

Bits4-8: هي أزواج العنوان، هذه الأزواج الخمسة تسمح لنا باختيار نوع الجهاز الذي يجب أن يستجيب للأوامر، وهي تحقق لنا عنونة لـ 32 جهازا (25=32) وهي على الشكل التالي:

 

العـنوان

نوع الجـهاز

0

TV SET 1

1

TV SET 2

2

VIDEOTEXT

3

EXPANSION FOR TV 1 AND 2

4

LASER VIDEO PLAYER

5

VIDEO RECORDER 1 (VCR 1)

6

VIDEO RECORDER 2 (VCR 2)

7

RESERVED

8

SAT 1

9

EXPANSION FOR VCR 1 OR 2

10

SAT 2

11

RESERVED

12

CD VIDEO

13

RESERVED

14

CD PHOTO

15

RESERVED

16

AUDIO PREAMPLIFIER 1

17

RECEIVER / TUNER

18

TAPE / CASSETE RECORDER

19

AUDIO PREAMPLIFIER 2

20

CD

21

AUDIO RACK

22

AUDIO SAT RECEIVER

23

DCC RECORDER

24

RESERVED

25

RESERVED

26

WRITABLE CD

26-31

RESERVED

 

Bits9-14: هي أزواج الأوامر الوظيفية، هذه الأزواج الستة تحتوي عن عنوان الأمر المرسل تبعاً للزر الموجود على جهاز التحكم، وهي تحقق لنا استخدام 64 مفتاحا وظيفيا (26=64) وهي بالنسبة للأجهزة القياسية على الشكل التالي:

 

التعليمة (الأمر)

مهمة التعليمة

0-9

NUMERIC KEYS 0 - 9

12

STANDBY

13

MUTE

14

PRESETS

16

VOLUME UP

17

VOLUME DOWN

18

BRIGHTNESS  + 

19

BRIGHTNESS -

20

COLOR SATURATION +

21

COLOR SATURATION -

22

BASS UP 

23

BASS DOWN

24

TREBLE  + 

25

TREBLE -

26

BALANCE RIGHT

27

BALANCE LEFT

48

PAUSE 

50

FAST REVERSE

52

FAST FORWARD-

53

PLAY

54

STOP

55

RECORD 

63

SYSTEM SELECT

71

DIM LOCAL DISPLAY

77

LINEAR FUNCTION (+)

78

LINEAR FUNCTION (-)

80

STEP UP

81

STEP DOWN

82

MENU ON

83

MENU OFF

84

DISPLAY A/V SYS STATUS

85

STEP LEFT

86

STEP RIGHT

87

ACKNOWLEDGE

88

PIP ON/OFF

89

PIP SHIFT

90

PIP MAIN SWAP

91

STROBE ON/OFF

92

MULTI STROBE

93

MAIN FROZEN

94

3/9 MULTI SCAN

95

PIP SELECT

96

MOSAIC MULTI PIP

97

PICTURE DNR

98

MAIN STORED

99

PIP STROBE

100

RECALL MAIN PICTURE

101

PIP FREEZE

102

PIP STEP UP

103

PIP STEP DOWN

118

SUB MODE

119

OPTIONS BUS MODE

123

CONNECT

124

DISCONNECT

 


ربط مستقبل IR إلى معالج مصغر

توضح هذه الفقرة بعض الأمور التي يجب مراعاتها عند وصل مستقبل أشعت تحت الحمراء مع متحكم مصغر.

  1. مستقبل الأشعة تحت الحمراء سوف يعكس المستوى المنطقي للنبضات – "0"=On و "1" = off.

  2. في حال عدم الإرسال فإن خرج المستقبل سيكون على المستوى "1".

  3. يمكن ربط خرج المستقبل إلى أي قطب من أقطاب المايكرو أو إلى قطب مقاطعة خارجية ومراقبة حالة القطب حتى تتغير حالته إلى المستوى المنخفض دلالةً على وجود حالة إرسال، حينها تبدأ باستقبال الشيفرة المؤلفة من 14 زوجا.

 


مستقبل الأشعة تحت الحمراء CLRM-2038S

إن مستقبل الأشعة المستخدم في مشروعنا هو من النموذج CLRM-2038S وله المواصفات الأساسية التالية:

  1. مستقبل أشعة تحت الحمراء ومضخم إشارة في نفس الوقت.

  2. مرشح تمرير داخل غلاف المستقبل من أجل ترددات PCM.

  3. استهلاك طاقة منخفض ضمن مجال العمل 2.7V إلى5.5V.

  4. متوافق مع متطلبات المستوى المنطقي TTL وCMOS.

  5. درع مطور للمناعة ضد اضطرابات الحقل الكهربائي.

  6. متوافق مع معايير NEC code و RC5 code.

  7. مناعة عالية ضد التأثر بالأضواء المحيطة.

  8. مسافة الاستقبال حتى 12m.

  9. تردد الحامل 38KHZ.

  10. يمكن استخدامه من أجل التطبيقات التالية:

  •    مفتاح ضوئي (Optical switch).

  •    التحكم بالأجهزة المنزلية مثل: Air-conditioner, Fan, CATV, ...

  •    تطبيقات التحكم بالأجهزة مثل: Audio, TV, VCR, CD, MD, DVD, ....

 

 

الشكل 7: البنية الداخلية للمستقبل CLRM-2038S.

 

الشكل 8: توزع الأقطاب للمستقبل CLRM-2038S.

 


دارة الملائمة لمستقبل الأشعة تحت الحمراء

عند ربط مستقبل أشعة تحت الحمراء مع معالج، فإنه يجب وضع مكثف 4.7uF على التوازي مع أقطاب التغذية للمستقبل وأقرب ما يمكن إلى تلك الأقطاب، وإلا لن يعمل في الغالب. الشكل التالي يوضح دارة الملائمة لهذا المستقبل.

الشكل 9: دارة الملائمة لمستقبل الأشعة تحت الحمراء CLRM-2038S

 


عناوين جهاز التحكم AL-AWAIL

بالنسبة لجهاز التحكم المستخدم والموضح على الشكل 10 فقد تم تصنيعه وتصميمه خصيصاً لشركة الأوائل للهندسة الإلكترونية وفق دلائل وظيفية خاصة. لذلك فإن لهذا الجهاز عنوان خاص وهو:

RC5 Address = 27

وأما بالنسبة لأوامر المفاتيح على الجهاز فهي موضحة على الشكل في الطرف الأيمن باللون الأزرق علماً أن القيم هي بصيغة Hex.

الشكل 10: جهاز التحكم بالأشعة تحت الحمراء

 


تجربة توصيل وبرمجة مستقبل أشعة تحت الحمراء (CLRM-2038S) مع متحكم AVR

المطلوب كتابة برنامج لاستقبال أوامر مرسلة من أجهزة التحكم بالأشعة تحت الحمراء والتي تعمل وفق البروتوكول RC5، وفي هذه الحالة سوف نستخدم التعليمات المخصصة للتعامل مع مستقبلات الأشعة تحت الحمراء التي تعتمد RC5في البيئة Bascom-AVR. سوف يقوم البرنامج باستدعاء مكتبة التابع RC5 الموجودة في البيئة البرمجية والتي تحوي على بروتوكول الاستقبال RC5. يتم فحص حالة المستقبل باستخدام التعليمة Getrc5 والتي تقوم بتشغيل المؤقت Timer0 لعد النبضات بشكل آلي.

 

شرح التعليمة

التعليمة البرمجية

تعريف القطب الموصول مع خرج مستقبل IR.

Config Rc5 =Pinb.7 ,Wait= 2000

استحصال العنوان والأمر من المستقبل.

Getrc5(address , Command)

 

الشكل11 يبين طريقة توصيل مستقبل أشعة تحت الحمراء CLRM-2038S مع المتحكم على اللوحة التعليمية Mini-Phoenix.

الشكل 11: توصيل مستقبل أشعة تحت الحمراء (CLRM-2038S) مع المتحكم للتجربة 16

 

البرنامج Exp.16.bas في بيئة BASCOM-AVR:

'*****************************************************************************
' * Title : Exp.16.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : RC5 Receiver; *
' * Description : Receiving RC5 Code from Remote Control *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
$baud= 9600
'-----------------------
'-----------------------[RC5 Receiver Configurations]
Config Rc5 =Pinb.7 ,Wait= 2000
'-----------------------
'-----------------------[Variables]
Dim Rc5_address AsByte, Rc5_command AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
EnableInterrupts
Do
Gosub Read_rc5 :Waitms 100
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Read RC5 Code]
Read_rc5
:
Getrc5(rc5_address , Rc5_command)
If Rc5_address <> 255 Then
Rc5_command
= Rc5_command And&B01111111

Print"Address is: "; Rc5_address
Print"Command is: "; Rc5_command
EndIf
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 


تجربة توصيل وبرمجة مرسل أشعة تحت الحمراء (IR LED) مع متحكم AVR

المطلوب كتابة برنامج لإرسال أوامر تحكم بالأشعة تحت الحمراء تعمل وفق البروتوكول RC5، وفي هذه الحالة سوف نستخدم التعليمات المخصصة للتعامل مع مستقبلات الأشعة تحت الحمراء التي تعتمد RC5في البيئة Bascom-AVR. سوف يقوم البرنامج باستدعاء مكتبة RC5 الموجودة في البيئة البرمجية Bascom-AVR والتي تحوي على بروتوكول الإرسال المطلوب. يتم إرسال البروتوكول باستخدام التعليمة RC5SEND والتي تقوم بتشغيل المؤقت Timer1 لحساب زمن النبضات بشكل آلي.

 

شرح التعليمة

التعليمة البرمجية

تعليمة إرسال زوج الحالة والعنوان والأمر على القطب OC1A وفق RC5

Rc5send Togbit , Address , Command

يبين الشكل12 طريقة توصيل مرسل أشعة تحت الحمراء إلى القطب OC1(A) مع المتحكم على اللوحة التعليمية Mini-Phoenix.

 

الشكل 12: توصيل مرسل أشعة تحت الحمراء مع المتحكم للتجربة 17

 

البرنامج Exp.17.bas في بيئة BASCOM-AVR:

'*****************************************************************************
' * Title : Exp.17.bas *
' * Target Board : Mini-Phoenix - REV 1.00 *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : RC5 Sender *
' * Description : Sending RC5 Code using IR LED *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[GPIO Configurations]
ConfigPinb.2 =Input:Portb.2 = 1 : Send_ir AliasPinb.2
ConfigDebounce= 500
'-----------------------
'-----------------------[Variables]
Dim Togbit AsByte, Command AsByte, Address AsByte
'---------------------
Command
= 18 : Togbit = 0 : Address = 0
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Debounce Send_ir , 0 , Power_command ,Sub'OC1A pin
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Send RC5 Code]
Power_command
:
If Togbit = 0 Then Togbit = 32 Else Togbit = 0
Rc5send Togbit , Address , Command
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 


الحقوق الفكرية

حقوق النشر محفوطة م.وليد بليد

Copyright © 2012 Walid Balid All rights reserved


تأليف

 

المؤلف: وليد بليد (سوريا)


 {jumi [*3]}
{jumi [*3]}
{jumi [*3]}

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث