برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 1

برمجة الأنظمة المدمجة ببيئة BASCOM-AVR – الدرس 1

هذه المحاضرة تشرح بنية بوابات الدخل والخرج لمتحكمات AVRوتشرح المسجلات الداخلية لبوابات الدخل والخرج. ثم تقدم تطبيقاً عملياً لاستثمار أقطاب الدخل والخرج لمتحكمات AVR.وبرمجتها في البيئة BASCOM-AVR ومحاكاتها في البيئة Proteus.


تسميات

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

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

  • زوج عوض bit

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

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


ملفات المقال

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

Session_03_PPTX

Session_03_codes


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

{jumi [*3]}


الـتغذية الكهربائية للمتحكم وتردد التشغيل القصوي

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

الشكل 1: منحني العمل الآمن للمعالج نسبة إلى التغذية المطبقة من أجل كل كامل مجال تردد التشغيل

الشكل 1 يبين منحني العمل الآمن للمعالج نسبة إلى التغذية المطبقة من أجل كل تردد عمل. من أجل متحكم مصغر من العائلة "AVR" فإن التغذية 4.5Vستؤمن عمل آمن للمعالج عند كامل مجال تردد الهزاز الكريستالي، أما من أجل جهد تغذية "3V" فإن أقصى سرعة عمل للمتحكم يجب أن لا تزيد عن "8MHZ" لكي يبقى المعالج ضمن منطقة العمل الآمنة.


نطاقات قيم التشغيل القصوية

أحد أهم النطاقات التي يجب أن تؤخذ بعين الاعتبار عن ربط أقطاب المتحكم إلى الأحمال هو التيار القصوي المستهلك من قطب المتحكم (Vcc-to-Gnd).

إن قيمة التيار التي يمكن سحبها أو تصريفها لقطب دخل/خرج من أقطاب المتحكم تتراوح عادة من 20mA إلى 40mA حسب المواصفات الكهربائية للمتحكم المصغر. كما أن التيار القصوي الذي يمكن سحبه أو تصريفه عن طريق المتحكم بشكل كلي بالنسبة لمتحكمات AVR هو 200mA.

 

يبين الشكل 2 معدلات القيم الكهربائية القصوية لمتحكمات العائلة AVR.

الشكل 2: معدلات قيم التشغيل القصوية لمتحكمات العائلة AVR

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

الشكل 3: توصيل ثنائيات ضوئية إلى أقطاب متحكم مصغر

إن التيار القصوي المسحوب من المتحكم هو مجموع تيارات الثنائيات الثمانية بالإضافة لتيار عمل المتحكم ويمكن حسابه بالشكل:

Itotal = Ioperating_current + (8 × ILED)

 

بافتراض أن جهد عمل الثنائي الضوئي هو 2V وقيمة المقاومة التسلسلية (مقاومة تحديد تيار عمل الثنائي الضوئي) هي 150Ω، فيمكن حساب قيمة التيار المستجر من كل قطب من العلاقة التالية:

ILED = V / R = (5 - 2) / 150 = 20mA

 

كما أن تيار عمل المتحكم من العائلة AVR في النمط الفعال هو 2.4mA، وبالتالي يمكن حساب التيار الكلي من العلاقة:

Itotal = 2.5mA + 8 × ILED = 8 × 20mA = 162.5mA

 

كما هو واضح فإن هذه القيمة تقترب من القيمة العظمة للتيار المسموح استجراره من متحكمات العائلة AVR والذي هو 200mA، بينما تفوق القيمة العظمة للتيار المسموح استجراره من متحكمات العائلة PIC والذي هو 90mA. وبالتالي فإن حساب التيارات المسحوبة من أقطاب المتحكم يعتبر من أهم الأمور التي يجب دراستها في بداية أي مشروع وهو ما سوف نناقشه فيما يأتي.

 

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

 


تسلسل كتابة برنامج في Bascom-AVR

من أجل كتابة كود برمجي متماسك ومفهوم مع إمكانية تطويره بسهولة مستقبلاً، فإنه يجب الالتزام بالهيكلية التالية في مراحل كتابته:

  1. كتابة التوجيهات (Directives) المخصصة للمترجم (Compiler).

  2. كتابة الإعدادات وأوامر التهيئة للمحيطيات (Configurations).

  3. تعريف المتغيرات (Variables) والثوابت (Constants).

  4. كتابة حلقة البرنامج الرئيسي الدورية (Main Program).

  5. كتابة البرنامج الفرعية (Sub-Routines).

الشكل 4: تسلسل كتابة برنامج لمتحكم مصغر

 


خطوات كتابة كود برمجي في البيئة Bascom-AVR

  1. من أجل كتابة كود برمجي قم باختيار New من القائمة File وابدأ بكتابة البرنامج وفق التسلسل المبين على الشكل 4.

  2. بعد الانتهاء من كتابة الكود البرمجي قم بحفظه في مجلد ثم قم باختيار أمر تفحص الأخطاء “Syntax Check” من القائمة Program. في حال وجود خطأ برمجي سوف تشير نافذة الأخطاء (أسفل الواجهة الرئيسية) إلى موقع الخطأ وسببه.

  3. بعد الانتهاء من تفحص الأخطاء، قم باختيار أمر الترجمة “Compile” من القائمة Program ليقوم البرنامج بتوليد الملفات البرمجية اللازمة للمبرمجة والتي سيتم توليدها في نفس المجلد، والملف الذي تحتاجه المبرمجة هو ذو امتداد “*.hex”.

  4. يمكن تشغيل نافذة المحاكاة الخاصة بالبيئة Bascom-AVR ومحاكاة التطبيق.

  5. قم باختيار أمر الإرسال إلى المبرمجة (Send to programmer) من القائمة Program.

الشكل 5: محرر التعليمات ونافذة تتبع الأخطاء في البيئة Bascom-AVR

 


التعليمات الأساسية في Bascom-AVR

 

تعليمات التوجيهات الأساسية

وظيفة التعليمة

شكل التعليمة

تحديد اسم المعالج المستخدم (ATmega128)

$regfile="m128def.dat"

تحديد تردد الهزاز الكريستالي الذي يعمل عليه المعالج

$crystal= 1000000

تحديد معدل بود النقل لنافذة الاتصال التسلسلي

$baud= 9600

 

تعليمات التأخير الزمني

وظيفة التعليمة

شكل التعليمة

تأخير زمني (قيمة التأخير Value تعطى بالثانية)

Wait value

تأخير زمني (قيمة التأخير Value تعطى بالميلي ثانية)

Waitms value

تأخير زمني (قيمة التأخير Value تعطى بالميكرو ثانية)

Waitus value

 

تعليمات تعريف الأقطاب (دخل/خرج) ومقاومات الرفع الداخلية

وظيفة التعليمة

شكل التعليمة

تعريف البوابة C كبوابة خرج

Config PORTC=Output

تعريف القطب رقم 5 من البوابة C كقطب خرج

Config PINC.5 =Output

تعريف البوابة C كبوابة دخل

Config PORTC=Input

تعريف القطب رقم 5 من البوابة C كقطب دخل

Config PINC.5 =Input

تفعيل مقاومات الرفع الداخلية للبوابة C

PORTC=255

تفعيل مقاومة الرفع الداخلية للقطب رقم 5 من البوابة C

PINC.5 = 1

إلغاء تفعيل مقاومة الرفع الداخلية للقطب رقم 5 من البوابة C

PINC.5 = 0

تفعيل بعض مقاومات الرفع الداخلية للبوابة C

PORTC= &B11110000

يمكن استخدام هذا الشكل لتعريف الأقطاب من البوابة كدخل/خرج حيث أن (0) تعني قطب دخل، و (1) تعني قطب خرج.

Config PORTC=&B11110000

يصرح إلى أن البوابة C سوف يشار إليها أثناء البرنامج بالاسم Leds

Leds Alias PORTC

يصرح إلى أن القطب رقم 5 سوف يشار إليه أثناء البرنامج بالاسم Led

Leds Alias PORTC.5

 

تعليمات التعامل على مستوى البت (Set/Reset)

وظيفة التعليمة

شكل التعليمة

جعل قيمة (الزوج من متغير المتغير) واحد منطقي

Set bit

جعل قيمة (الزوج من متغير المتغير) صفر منطقي

Reset bit

تغيير قيمة (الزوج من متغير المتغير) إلى الحالة المعاكسة

Toggle bit

 

تعليمات الحلقات

وظيفة التعليمة

شكل التعليمة

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

Do
  Statements
Loop[until Expression]

تنفيذ جملة من التعليمات طالما أن الشرط محقق.

While Condition
  Statements
Wend

تنفيذ جملة من التعليمات عدداً من المرات يبدأ من القيمة Start وينتهي عند القيمة End. يمكن تحديد خطوة العد بالمتغير step.

For Var =StartToEnd[step Value]
  Statements
Next Var

خروج قسري من الحلقة For

خروج قسري من الحلقة Do

خروج قسري من الحلقة While

ExitFor

ExitDo

ExitWhile

 

التعليمات الشرطية

وظيفة التعليمة

شكل التعليمة

اختبار حالة أو قيمة متغير وتنفيذ تعليمات معينة تبعاً لنتيجة شروط الاختبار.

إذا تحقق الشرط1 فنفذ التعليمات1

 

وإلا إذا تحقق الشرط2 فنفذ التعليمات2

 

وغير ذلك نفذ التعليمات3

If Expression1Then
Statements
1
...
Elseif Expression2Then
Statements
2
...
Else
Statements
3
...
EndIf

اختبار حالة أو قيمة متغير وتنفيذ تعليمات معينة تبعاً لنتيجة شرط الاختبار المتحقق.

إذا كان var = Test1 فنفذ التعليمات1

إذا كان var = Test2 فنفذ التعليمات2

وغير ذلك نفذ التعليمات3

SELECTCASE var
Case Test1 : Statements1
Case Test2 : Statements2
CaseElse: Statements3
ENDSELECT

 

تعليمات تعريف المتغيرات في الذاكرة SRAM

وظيفة التعليمة

شكل التعليمة

تعريف متغير عددي نوع "زوج"
(0
أو 1).

Dim Var1 AsBit

تعريف متغير عددي نوع "ثمن"
(0
إلى 255).

Dim Var2 AsByte

تعريف متغير عددي"صحيح"
(32,768 –
إلى 32,767+).

Dim Var3 AsInteger

تعريف متغير عددي نوع "وورد"
(0
إلى 65535).

Dim Var4 AsWord

تعريف متغير عددي "طويل"
(2147483648 –
إلى 2147483647+).

Dim Var5 AsLong

تعريف متغير عددي "مؤشر"
(1.5 × 10-45
إلى 3.4 × 1038).

Dim Var6 AsSingle

تعريف متغير عددي "مؤشر مضاعف".

Dim Var7 AsDouble

تعريف متغير نوع "محرفي" محدد المحارف بـ (* chr_num).

Dim Var8 AsString* 1

تعريف مصفوفة بثمان أثمان.

Dim Array(8)AsByte

تعريف متغير "رقمي ثابت".

Const Symbol = Numconst
Ex. Const Pi = 3.14159265358979

تعريف متغير "محرفي ثابت".

Const Symbol = Stringconst

Ex. Const S ="TEST"

تعريف "تعبير رياضي ثابت".

Const Symbol = Expression

Ex. Const E =(b1 * 3)+ 2

تعريف "متغير محلي" في برنامج فرعي أو برنامج فرعي وظيفي.

Local Var AsType

 

تعليمات قراءة حالة مفاتيح موصولة مع أقطاب دخل

وظيفة التعليمة

شكل التعليمة

يراقب حالة القطب المحدد فيPx.y كلما مر عليه وعندما تصبح حالته موافقة للحالة المحددة في state، سوف يقفز إلى البرنامج الفرعي عند اللافتة label وينفذ البرنامج ويعود.

Debounce Px.y, state , label ,Sub

Ex. Debounce Key1 , 0 , Sw1 ,Sub

تهيئة زمن تأخير (ميلي ثانية) عن استعمال تعليمة Debounce للتخلص من العطالة الميكانيكية للمفتاح.

ConfigDebounce= time

سوف يقف البرنامج عند هذه التعليمة وينتظر أن تصبح حالة البت (القطب) صفر أو واحد منطقي عندها يكمل البرنامج.

Bitwait x , Set/reset

Ex. Bitwait Pinb.7 ,reset

يمكن الاطلاع على مبادى وأساسية البرمجة في البيئة Bascom من خلال ملف المساعدة (BASCOM-AVR IDE Help) وضمن “Language Fundamentals”.

 


بوابات الدخل والخرج في متحكمات AVR

تتمتع جميع أقطاب بوابات متحكمات العائلة AVR بأنها أقطاب ثنائية الاتجاه وظائف قراءة وكتابة وتعديل عند استخدامها كأقطاب دخل/خرج للأغراض العامة (GPIOs)، كما يمكن تغيير اتجاه أحد أقطاب بوابة بشكل منفصل – خلافاً لمتحكمات 8051 – فيمكن تعريف كل قطب من الأقطاب على حدى كقطب دخل أو خرج. كذلك تمتلك الأقطاب عند تعريفها كأقطاب دخل مقاومات رفع داخلية - إلى التغذية - يمكن تفعيلها أو إلغاء تفعيلها لكل قطب بشكل منفصل.

إن بنية الأقطاب هي من النوع “Push-pull” أي أنها قادرة على قيادة الخرج على المستوى المنطقي “0” والمستوى “1” حيث أن التيار الذي يمكن أن يزوده القطب قادر على قيادة ثنائي ضوئي (LED) بشكل مباشر دون الحاجة إلى دارة مفتاح ترانزستوري. كما أن جميع الأقطاب مزودة بدارة حماية من تفريغ الشحنات الستاتيكية (ESD) مؤلفة من ثنائيين شوتكي أحدها موصل إلى التغذية (للحماية من شحنات التفريغ الموجبة) والآخر موصل إلى النقطة الأرضية (للحماية من شحنات التفريع السالبة) كما هو مبين في الشكل 6.

الشكل 6: دارة الحماية من شحنات التفريغ الستاتيكية لقطب متحكم AVR

 

يتم تصنيف أقطاب الدخل/الخرج العامة (GPIOs) في مجموعات تسمى بوابات (PORTs) كل بوابة تتألف من ثمانية أقطاب (PINs)، ويختلف عدد البوابات باختلاف عدد أقطاب المتحكم حيث يمكن أن يصل عدد البوابات في متحكمات AVR المتقدمة إلى أحد عشر بوابة ويشار إليها بالأحرف:

PORTA, B, C, D, E, F, G, H, J, K, L.

الشكل 7: البنية الداخلية الكاملة والدارات المنطقية لقطب متحكم AVR

 


مسجلات بوابات الدخل والخرج في متحكمات AVR

تمتلك كل بوابة من بوابات المتحكم ثلاث مسجلات تحكم (Registers)، حيث يمثل الرمز xرمز البوابة (A, B, C, D, E, F, G, H, J, K, L) والرمز y قطب البوابة (0 : 7).

مسجل التحكم باتجاه المعطيات للبوابة DDRx
(Data Direction Register)

يتم من خلاله تحديد وظيفة كل قطب – دخل أو خرج. تمثل كل خانة من خانات مسجل اتجاه المعطيات الثمانية قطباً من أقطاب البوابة الموافقة (المسجلات أدناه هي للبوابة A)، حيث أنه عند وضع القيمة “1في خانة المسجل DDRx.y فإن القطب الموافق لهذه الخانة يصبح قطب خرج، أما عند وضع القيمة “0في خانة المسجل DDRx.y فإن القطب الموافق لهذه الخانة يصبح قطب دخل.

الشكل 8: مسجل اتجاه المعطيات للبوابة PORTA

 

مسجل الخرج للمعطيات PORTx
(Data Output Register)

يوجد له وظيفتان:

    • في حال كان القطب معرفاً في مسجل DDRx كقطب خرج (DDRx.y = 1)، فإن مسجل خرج المعطيات سيحدد الحالة المنطقية المطبقة على القطب بحيث إما أن يكون منبع للتيار (“1”) أو مصرف للتيار (“0”).

    • في حال كان القطب معرفاً في مسجل DDRx كقطب دخل (DDRx.y = 0)، فإن مسجل خرج المعطيات سيتحكم بوصل (“1”) أو فصل (“0”) مقاومة الرفع الداخلية للقطب المعني.

الشكل 9: مسجل خرج المعطيات للبوابة PORTA

 

مسجل الدخل للمعطيات PINx
(Data Input Register)
يستخدم لقراءة الحالة الخارجية المطبقة على القطب المعني (“1” | “0”) عند تعريف القطب في مسجل اتجاه المعطيات كقطب دخل (DDRx.y = 0).

الشكل 10: مسجل دخل المعطيات للبوابة PORTA


طرق توصيل الأحمال مع أقطاب المتحكم

إن بنية الأقطاب في متحكمات AVR ومتحكمات PIC هي من النوع “Push-pull”، أي أنها قادرة على قيادة الخرج على المستوى المنطقي “0” والمستوى “1” حيث أن التيار الذي يمكن أن يزوده القطب قادر على قيادة ثنائي ضوئي (LED) بشكل مباشر دون الحاجة إلى دارة مفتاح ترانزستوري. وبالتالي يمكن وصل الأحمال مع أقطاب المتحكم بطريقتين:

  • القطب يعمل كمنبع لتيار تشغيل الحمل (Source) – الشكل 11 (A).

  • القطب يعمل كمصرف لتيار تشغيل الحمل (Sink) – الشكل 11 (B).

 

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

الشكل 11: طرق توصيل الأحمال مع أقطاب المتحكم – كمنبع أو مصرف للتيار

 

إن مبدأ سير التيار في الحالة الأولى (المسار باللون الأحمر على اليسار) والثانية (المسار باللون الأخضر على اليمين) داخل البنية الداخلية لأقطاب المتحكم مبين على الشكل 12.

الشكل 12: سير التيار داخل البنية الداخلية لقطب متحكم AVR كمصرف ومنبع للتيار


حساب قيمة واستطاعة مقاومة تحديد التيار

إن قيمة مقاومة تحديد التيار للحمل تتعلق مباشرة بجهد تشغيل الحمل وتياره ومقاومته الأمامية. من أجل حساب قيمة مقاومة تحديد التيار لثنائي ضوئي (LED) على سبيل المثال فإنه يجب معرفة تيار وجهد التشغيل للثنائي.

 

إن تيار وجهد العمل للثنائيات الضوئية يختلف حسب لون الثنائي الضوئي، الجدول التالي يوضح المواصفات الكهربائية للثنائيات الضوئية.

 

النوع

اللون

IF
max.

VF
typ.

VF
max.

VR
max.

شدة الإضاءة

زاوية انعكاس الرؤية

طول الموجة

Standard

الأحمر

20mA

2.0V

2.3V

5V

5mcd @ 10mA

60°

660nm

Super bright

الأحمر الفاتح

25mA

3.0V

3.4V

5V

80mcd @ 10mA

60°

625nm

Standard

الأصفر

20mA

2.1V

2.3V

5V

32mcd @ 10mA

60°

590nm

Standard

الأخضر

20mA

3.2V

3.5V

5V

32mcd @ 10mA

60°

565nm

High intensity

الأزرق

20mA

3.4V

3.6V

5V

60mcd @ 20mA

50°

430nm

Super bright

الأبيض

20mA

3.4V

3.6V

5V

500mcd @ 20mA

60°

660nm

 

IF max: التيار القصوي الأمامي المار في الثنائي.

VF typ: الجهد الأمامي النموذجي من اجل تشغيل الثنائي.

VF max: الجهد الأمامي القصوي الذي يمكن للثنائي أن يتحمله.

VR max: الجهد العكسي القصوي الذي يمكن للثنائي أن يتحمله.

شدة الإضاءة : Luminous intensity.

زاوية انعكاس الرؤية للإضاءة : Viewing angle.

طول موجة الضوء الصادر : Wavelength.

وبالتالي من أجل ثنائي ضوئي ذو لون أحمر فإن جهد وتيار العمل هو 2V/20mA، وبالتالي يمكن حساب مقاومة تحديد التيار من العلاقة:

RLED= (Vcc- VLED) / ILED

 

RLED= (5- 2)/20= 3/20=150Ω

 

PRLED= VR × IR =(Vcc - VLED) × ILED

 

PRLED=5- 2× 20=60mW

 

وبالتالي فإن الذي نحتاجه هو مقاومة 150Ω ذات استطاعة 1/4Watt.

الشكل 13


مفاتيح التحكم الترانزستورية

من أجل التحكم بأحمال ذات تيارات كبيرة (محركات، مرحل، سخانات) فإن تيار الخرج لقطب المتحكم (20mA) لا يمكنه قيادة هذه الأحمال، لذا يتم استخدام الترانزستورات كمفاتيح إلكترونية (On/Off) للتحكم بهذه الأحمال. بشكل عام يوجد نوعين من الترانزستورات:
الترانزستورات ثنائية القطبية (BJT).
الترانزستورات أحادية القطبية (FET).
عملياً، إن الاستخدام لكل منها يختلف بحسب طبيعة الحمل المقاد، الجدول التالي يبين الفرق بين كلا النوعين:

 

 

BJT

FET/MOSFET

طريقة التحكم

يتم التحكم به عن طريق تيار القاعدة ويحتاج تيار 1 – 10mA بالإضافة إلىVBE=0.6V

يتم التحكم به عن طريق جهد البوابة ويختلف الجهد حسب استطاعة الترانزستور.

سرعة الفتح والإغلاق

أبطئ لا يتجاوز 200MHZ (uS)i

10 مرات أسرع (nS)

العمل

تأثر كبير بالحرارة

أقل تأثراً بالحرارة

المقاومة الأمامية

المقاومة الأمامية (هبوط جهد أمامي) صغيرة جداً

مقاومة أمامية كبيرة نسبياً

التأثر

لا يتأثر بالشحنات الساكنة

يمكن أن يتأثر ويدمر بالشحنات الساكنة

ممانعة الدخل

متوسطة

كبيرة جداً (1012 )

مجلات جهود العمل

صغيرة لا تتجاوز 100V

كبيرة جداً

تيار الحمل

يعمل من أجل تيارات أحمال صغيرة

يمكنه أن يقود أحمال بتيارات عالية (محرك)

ضجيج العمل

ضجيج عالي

ضجيج منخفض

 

يتم استخدام الترانزستورات ثنائية القطبية من أجل التحكم بأحمال ذات تيارات صغيرةبينما تستخدم الترانزستورات الحقلية من أجل التحكم بأحمال ذات تيارات وجهود متوسطة وكبيرة.

إن مجال استخدام الترانزستورات في أنظمة التحكم الرقمي يقتصر على استخدام هذه الترانزستورات كمفاتيح إلكترونية تحكمية (On/Off) - يعمل في منطقتي القطع والإشباع، وبالتالي فإن اختيار الترانزستور نسبة إلى الحمل سيعتمد على ثلاث عوامل أساسية:

  • التيار المار في الترانزستور.

  • الاستطاعة المبددة في الترانزستور.

  • سرعة الفتح والإغلاق للترانزستور.

1-في حالة القطع (Off state): يكون تيار القاعدة IB=0.
2- في الحالة الفعالة (On active state): يكون فيها تيار المجمع

IC = IB x hFE

وهي الحالة التي يستخدم فيها الترانزستور كمضخم فعال - أي زيادة في تيار القاعدة ينتج عنه زيادة في تيار المجمع.
3-في حالة الإشباع (On saturate state): في هذه الحالة يمرر الترانزستور كامل التيار.

الشكل 14: عمل الترانزستور وما يقابل كل حالة من شروط للجهد والتيار

 


استخدام مفاتيح التحكم الترانزستورية ثنائية القطبية (BJT Transistors)

الشكل 15: مفتاح ترانزستوري فعال عند المنطق “1”

الشكل 16: مفتاح ترانزستوري فعال عند المنطق “0”

 

يمكن توصيل المفاتيح الترانزستورية بطريقتين:

  1. متحكم بها لتكون فعالة عند المنطق العالي “1:
    وبالتالي فإن الترانزستور سوف يعمل كمفتاح لوصل/فصل النقطة الأرضية (GND) للحمل، وفي هذه الحالة سوف يتم استخدام ترانزستور من نوع NPN – الشكل 15.

  2. متحكم بها لتكون فعالة عند المنطق المنخفض “0:
    وبالتالي فإن الترانزستور سوف يعمل كمفتاح لوصل/فصل نقطة التغذية (VCC) للحمل، وفي هذه الحالة سوف يستخدم ترانزستور من نوع PNP – الشكل 16.

 

في بعض الأحيان يحصل خطأ في تصميم دارة المفتاح الإلكتروني باستخدام الترانزستور ثنائي القطبية، وهو من خلال استخدام الترانزستورات من نوع NPN كمفتاح لوصل/فصل نقطة التغذية (VCC) للحمل - الشكل 17، أو استخدام الترانزستور من نوع PNP كمفتاح لوصل/فصل النقطة الأرضية (GND) للحمل – الشكل 18.

الشكل 17: توصيل خاطئ لمفتاح ترانزستوري نوع NPN

الشكل 18: توصيل خاطئ لمفتاح ترانزستوري نوع PNP

 

لنوضح الخطأ من خلال الحسابات التالية:

حتى يفتح الترانزستور بشكل كامل (الإشباع)، فيجب أن يكون الجهد VBE=0.7V.

بالنظر إلى الدارة على الشكل 10-6 نجد أن الجهد الموجود على المشع (E) هو:

VE= VCC VCE = 5 – 0.2 = 4.8V

كما أن الجهد على قاعدة الترانزستور هو:

VB = VPIN = 5V

وبالتالي فإن:

VBE = VB – VE = 5 – 4.8 = 0.2V

هذا يعني أن الترانزستور يعمل في المنطقة الفعالة ولن يكفي تيار مجمع الترانزستور ICلتشغيل الحمل وسيعمل الثنائي الضوئي بشكل خافت.

إن الجهد المطبق على قاعدة الترانزستور في الدارة المبينة في الشكل 15 والشكل 16 يساوي 5V وهو نفسة جهد منطق بوابة المتحكم المصغر، بنفس الوقت من أجل الفتح الكامل للترانزستور فإنه يكفي تطبيق 0.7V، وإن هذا الجهد الزائد على القاعدة يؤدي إلى سحب تيار زائد وضياع في الاستطاعة، وبالتالي يمكن إضافة مقاومة مع مقاومة القاعدة ليتشكل لدينا مقسم كمون خرجه يتراوح بين 0.7 و1 فولط. الشكل 19 والشكل 20 يوضحان طريقة إضافة المقاومة وحساب الجهد VBE.

VBE = Vcc × R6 / (R6 + R5 )= 5 × 1 / (4.7 + 1) = 0.87V

الشكل 19: دارة مفتاح ترانزستوري فعال عند المنطق “0”

الشكل 20: دارة مفتاح ترانزستوري فعال عند المنطق “1”

 


برمجة بوابات الدخل والخرج في متحكمات AVR

 

التجربة الأولى

تم وصل ثنائيين ضوئيين إلى متحكم ATmega32A، الثنائي الأول (LED1) موصول إلى القطب PINA.0 بحيث أن قطب المتحكم هو منبع للتيار (فعال عند المستوى المنطقي “1”) ، الثنائي الثاني (LED2) موصول إلى القطب PIND.0 بحيث أن قطب المتحكم هو مصرف للتيار (فعال عند المستوى المنطقي “0”)، والمطلوب: كتابة برنامج خفقان بالتناوب لكلا الثنائيين كل 0.5S.

الشكل 21: توصيل الثنائيات مع المتحكم للتجربة 1

 

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

'*****************************************************************************
' * Title : Exp.01.bas *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : LEDs *
' * Description : GPIOs as Outputs *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[GPIO Configurations]
ConfigPina.0 =Output: Led1 AliasPorta.0
ConfigPind.0 =Output: Led2 AliasPortd.0
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
'>[Turn Led1 on & Led1 off]
Set Led1 :Set Led2 :Waitms 500
'>[Turn Led1 off & Led2 on]
Reset Led1 :Reset Led2 :Waitms 500
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

التجربة الثانية

تم وصل ثمانية ثنائيات ضوئية (LEDs_A) إلى البوابة PORTA للمتحكم ATmega32A بحيث أن بوابة المتحكم هي في حالة منبـــــع للتيار، وتم وصل ثمانية ثنائيات ضوئية أخرى (LEDs_D) إلى البوابة PORTD بحيث أن بوابة المتحكم هي في حالة مصرف للتيار، والمطلوب: كتابة برنامج بحيث تعمل الثنائيات بالتتابع ذهاباً وإياباً باستخدام الحلقات.

الشكل 22: توصيل الثنائيات مع المتحكم للتجربة 2

 

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

'*****************************************************************************
' * Title : Exp.02.bas *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : LEDs *
' * Description : GPIOs as Outputs *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[GPIO Configurations]
ConfigPorta=Output: Leds_a AliasPorta: Leds_a = 0 'Set All LEDs off
ConfigPortd=Output: Leds_d AliasPortd: Leds_d = 0 'Set All LEDs on
'-----------------------
'-----------------------[Variables]
Dim I AsByte
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
Gosub Leds_fw :Gosub Leds_rw
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[To Turn-on LEDs_A & Turn-off LEDs_D]
Leds_fw
:
For I = 0 To 7
Set Leds_a.i :Set Leds_d.i
Waitms 100
Next I
Return
'-----------------------
'--->[To Turn-off LEDs_A & Turn-on LEDs_D]
Leds_rw
:
For I = 7 To 0 Step-1
Reset Leds_a.i :Reset Leds_d.i
Waitms 100
Next I
Return
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

التجربة الثالثة

تم وصل مجموعة من خمسة ثنائيات ضوئية (LEDs_A) إلى متحكم ATmega32A مع القطب PINA.0 عن طريق مفتاح ترانزستوري وبحيث أن الترانزستور هو من النوع PNP (فعال عند المستوى المنطقي “0”)، كما تم وصل خمسة ثنائيات ضوئية أخرى (LEDs_B) مع القطب PIND.0 عن طريق مفتاح ترانزستوري وبحيث أن الترانزستور هو من النوع NPN (فعال عند المستوى المنطقي “1”)، والمطلوب: كتابة برنامج خفقان بالتناوب لكلا المجموعتين كل 0.5S.

الشكل 23: توصيل الثنائيات مع المتحكم للتجربة 3

 

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

'*****************************************************************************
' * Title : Exp.03.bas *
' * Target MCU : ATMega32A *
' * Author : Walid Balid *
' * IDE : BASCOM AVR 2.0.7.3 *
' * Peripherals : LEDs *
' * Description : GPIOs as Outputs *
'*****************************************************************************
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'-----------------------[Definitions]
$regfile="m32def.dat"
$crystal= 8000000
'-----------------------
'-----------------------[GPIO Configurations]
ConfigPina.0 =Output: Leds_a AliasPorta.0
ConfigPind.0 =Output: Leds_d AliasPortd.0
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'--->[Main Program]
Do
'>[Turn-on LEDs_A & Turn-off LEDs_D]
Set Leds_a :Set Leds_d :Waitms 500
'>[Turn-on LEDs_A & Turn-off LEDs_D]
Reset Leds_a :Reset Leds_d :Waitms 500
Loop
End
'---<[End Main]
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


تصميم دارة مفتاح ترانزستوري ثنائي القطبية

لنأخذ مثالاً عملياً ونحسب قيم المقاومات والتيارات للدارة المبينة في الشكل24 والتي تستخدم في التجربة السابقة (Exp.03).

 

لتصميم دراة المفتاح قمنا باختيار الترانزستور BC337 والذي له المواصفات التالية:

IC_max= 800mA, VBE_saturate = 0.65V, VCE_saturate = 0.2V, hFE = 100, VCE_max=50V

الشكل 24: التحكم بمجموعة ثنائيات من قطب متحكم باستخدام مفتاح ترانزستوري BJT

 

  • نحسب تيار الحمل Iمع العلم أن تيار كل ثنائي ضوئي هـوILED= 20mA.

IC = 5 × 20mA = 100mA

  • نحسب مقاومة تحديد التيار مع العلم أن جهد عمل الثنائي هو:VLED = 2V.

Rc = (Vcc – VLED) /IC = (5 – 2) /100 = 30Ω 

  • نحسب استطاعة مقاومة تحديد التيار.

PRC = (Vcc – VLED) × IC = (5 – 2) × 100 = 300mW

  • نحسب قيمة التيار الأصغري اللازم لقيادة الترانزستور عن طريق بوابة المتحكم:

IC = hfe × IB IB = IC / (hfe) =100 / 100 = 1mA

  • نحسب الاستطاعة المبددة في الترانزستور:

Pcmax = UCE × IC = 0.2 × 100 = 20mW

  • نحسب قيمة مقاومة القاعدة واستطاعتها:

RB = (VPVBE) / IB = (5 – 0.7) / 1 = 4.3KΩ

PRC = (VP – VBE) × IB = (5 – 0.7) × 1 = 4.3mW


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

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

Copyright © 2012 Walid Balid All rights reserved


تأليف

 

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

البريد الإلكتروني: عنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.


 {jumi [*3]}

أضف تعليق


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


Go to top