خطوات تصميم مشروع نظام أمن Security System لمنزل والمترجم Proton Basic:
أولا : تحديد متطلبات المشروع فى شكل عبارات نصية :
نبدأ منطق التصميم عن طريق ترجمة المشكلة إلى سلسلة من العبارات النصية التى تعكس ما يجب أن يحدث فى النظام .
نحن نريد عمل نظام إنذار يطلق إشارة صوتية عالية نتيجة لتركيبة معينة من أجهزة الاستشعار بالمنزل . أيضا ، نريد أن يكون للمستخدم القدرة على اختيار واحد من ثلاث حالات تشغيل:
1- حالة فعالة : إصدار صوت عند محاولة الدخول من الباب أو النافذة . هذه الحالة مفيدة عندما يكون القائمين بالمنزل نائمين .
2- حالة فعالة : إصدار صوت عند محاولة الدخول من الباب أو الشباك أو وجود حركة بأرجاء المنزل . هذه الحالة مفيدة عندما يكون أصحاب المنزل بعيدا عنه .
3- حالة تعطيل الإنذار : عدم إصدار صوت . هذه الحالة مفيدة فى حالة النشاط العادى داخل المنزل .
ثانيا :تعريف المتغيرات التى تمثل متغيرات المداخل والمخارج المستخدم فى تصميم نظام الأمن :
· مدخل حساسات الباب والنافذة "A" .
· مدخل كاشف الحركة "B" .
· مداخل تحديد اختيار الكود CD المكون من 2 بت والمستخدم لتحديد حالة التشغيل ، أى يوجد مدخلين لتحديد الحالات الثلاثة التى يمكن تحديدها تبعا للكود التالى :
· المخرج المستخدم للإنذار الصوتى "Y"
مداخل النظام هى (A,B,C,D) والمخرج هو (Y) . المنطق المرتفع الفعال هو الواحد والمنطق المنخفض الغير فعال هو الصفر .
ثالثا : كتابة العبارات الشبه منطقية :
بعد ذلك يتم ترجمة العبارات النصية إلى عبارات شبه منطقية باللغة الإنجليزية . العبارات الشبه الشبه منطقية لنظام الأمن تكون بالشكل التالى :
كود:
Activate the alarm ( Y = 1) if A is high and the code C D is 0 1 or activate the alarm if A or B is high and the code is 1 0.
لاحظ المعاملات المنطقية ( and , or ) ، والتى سوف تساعد فى كتابة التعبير المنطقى .
رابعا :كتابة التعبير المنطقى :
الآن نكتب التعبير المنطقى بناء على العباراة الشبه منطقية .
· لإنتاج المنطق المرتفع (1) الفعال للكود (0 1) ، نحتاج لتشكيل التعبير (Cinv . D) ( تعنى Cinv and D) ، ولإنتاج المنطق المرتفع (1) الفعال للكود (1 0) نحتاج لتشكيل التعبير (C . Dinv) .
· بناء على ذلك يكون التعبير المنطقى الكامل لنظام الأمن بالشكل التالى :
سوف يتم إصدار إنذار صوتى (Y = 1 ) إذا كان التعبير A · (Cinv · D) بواحد " أو" إذا كان التعبير
(A+ B) · (C · Dinv) بواحد ، أما إذا كان كلا التعبيرين بصفر فإنه لن يصدر إنار صوتى (Y = 0 ) .
التعبير الأول سوف يكون بواحد إذا وفقط إذا كان "A" بواحد "و" "B" بواحد "و" "C" بصفر "و" "D" بواحد . والتعبير الثانى سوف يكون بواحد إذا وفقط إذا كان "A" "أو" "B" بواحد "و""C" بواحد "و" "D" بصفر .
يمكن تبسيط التعبير المنطقى السابق عن طريق استخدام جدول الحقيقة التالى للقيم المختلفة للكود :
الدائرة الكهربية :
· نفترض أن حساسات الباب والنافذة تكون مفاتيح مفتوح فى الوضع العادى NO، وتغلق عندما يتم إغلاق الباب والنافذة . يتم توصيلها بأسلاك وتوصل إلى الجهد الموجب 5V من خلال مقاومة رفع ونتيجة لذلك : إذا كان كلا المفتاحين مفتوحين ، فإن الإشارة "A" سوف تكون مرتفعة .يجب أن يتم غلق كل من المفتاحين حتى تكون الإشارة "A" منخفضة . هذه التوصيلة تمثل البوابة "AND".
· كاشف الحركة ينتج حالة مرتفعة على الخط "B"عندما يكشف الحركة .
· وتستخدم مفاتيح أحادىة القطبية بدائرتين لتحديد حالة العمل بتحديد كود الخطين C و D . فى الشكل كلا المفتاحين فى وضع الغلق العادى NC، وبالتالى يكون الكود CD=00 .
· جرس التنبيه يطلق إشارة صوتية عندما يكون المخرج Y فى الحالة المرتفعة لأنه يشكل الانحياز الأمامى للترانزستور . عندما يكون المخرج Y فى الحالة المرتفعة تقوم مقاومة القاعدة 1K بتحديد تيار الخرج لحوالى 5 mA (5 V / 1 k
)، وهو فى الحدود المسموح بها (20 mA) .
البرنامج :
كود:
' security.bas
' Proton Basic program to perform the control functions of the security system
' Define variables for I/O port pins
Symbol door_or_window = PORTB.0 'Name for signal A
Symbol motion = PORTB.1 'Name For signal B
Symbol c = PORTB.2 'Name ForName For signal C
Symbol d = PORTB.3 'Name For signal D
Symbol alarm = PORTA.0 ' signal Y
' Define constants for use in IF comparisons
Dim OPEN As 1 ' to indicate that a door OR window is open
Dim DETECTED As 1 ' to indicate that motion is detected
' Make sure the alarm is off to begin with
Low alarm
' Main polling loop
always:
If c = 0 And d = 1 Then ' operating state 1 (occupants sleeping) (Cinv · D)
If door_or_window = OPEN Then ; line A is high
High alarm
Else
Low alarm
EndIf
Else
If c = 1 And d = 0 Then ' operating state 2 (occupants away)(C · Dinv)
If door_or_window = OPEN Or motion = DETECTED Then ; line A is high or line B is high
High alarm
Else
Low alarm
EndIf
Else ' operating state 3 or NA (alarm disabled)
Low alarm
EndIf
EndIf
GoTo always ' continue to poll the inputs
End