حكاية كيف يعيدني جهاز تحكم الكمال

صورة

- . , . ? -, , -, , -, . : . , , , . , , , ( , ).

. , , . - , . , « », - …

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

(attiny2313a) , , , , . . 1 . . ds18b20, , 500 (reset presence).

صورة

ولكن ماذا لو تداخل انقطاع في العملية مع وظيفة الاتصال؟ سيكون هناك إزاحة فتحة زمنية ، لن تتمكن وحدة التحكم من قراءة البت أو التعرف على التواجد بشكل صحيح. لقد وجدت طريقة للخروج باستخدام المزامنة. العملية بسيطة. عندما ترى وظيفة اقتراع المستشعر أنه سيكون لديها اتصال طويل المدى مع المستشعر ، فإنها تقوم بإنشاء مقاطعة في السجل B للمؤقت 1 في نفس وقت مقاطعة "مدير الوقت" ، الموجودة في السجل A للمؤقت 1. وبما أن المقاطعات تتم معالجتها بما يتفق تمامًا مع عنوان ناقل المقاطعة في جدول المقاطعة ، اتضح أنه بعد عملية المزامنة ، ستحصل وظيفة استطلاع جهاز الاستشعار على التحكم فورًا بعد مقاطعة "مدير الوقت".

حسنًا ، أين يمكن أن يكون هناك خطأ؟ نعم في كل مكان. ولكن شخصيا ، اعتقدت أن المشكلة يمكن أن تكون عند تقاطع المقاطعات. أي في حالة دخول شخص آخر أثناء تنفيذ مقاطعة واحدة. استمر تنظيف الرمز لحل هذه المشكلة حتى اكتشفت أن أفعالي أدت إلى حقيقة أن المشكلة بدأت تحدث حتى مع عدم اتصال المستشعر. بعد تعطيل وظيفة اقتراع المستشعر ، كنت مقتنعًا بأن إعادة تعيين وحدة التحكم لا تعتمد الآن على تشغيلها. ثم ضربني تخمين رائع. تحتاج إلى قياس الجهد! أفاد جهاز القياس المتعدد بمرح أن هناك 4.2 فولت على وحدة التحكم. "حسنا ، بالطبع ، اعتقدت BOD. وقمت بتوصيل طاقة خارجية باللوحة (قبل ذلك كنت راضية عن طاقة USB). لقد تأخر المتر المتعدد قليلاً ، وهو 4.98 فولت على اللوحة. بشعور من النصر ، استدارت على اللوحة لأرى ما لا يصدق. كان هناك خلل!وأصبح أكثر قوة. الآن تم إعادة ضبط وحدة التحكم كل بضع ثوانٍ ، وأحيانًا في جزء من الثانية. استمرت عمليات البحث مع الانتقام وأدت إلى وظيفة تعرض معلومات على الشاشة.

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

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

صورة

وينظر إلى أن قانون أوم هو الله والسيد للتحميل المقاوم. إذا زاد الجهد بنسبة 10٪ ، فسيزداد التيار بنفس النسبة 10٪. ولكن لا أحد هو مرسوم ل LED. إذا قمت برفع الجهد على LED بنسبة 10٪ فقط (من 2 فولت إلى 2.2 فولت) ، فإن قوته الحالية سوف تقفز 100٪ ، أي مرتين! ولكن في حالتي ، كان الشيء الرئيسي هو أن زيادة الجهد زادت أيضًا من انخفاضها في لحظة تشغيل الصمام الثنائي. وكان لدي 32 ديود! أربعة مؤشرات من سبعة أجزاء مع ثمانية مؤشرات ضوئية في كل منها (سبعة أجزاء ونقطة). إنهم مرتبطون بي ليس من خلال تعدد الإرسال ، ولكن من خلال سجلات التحول لأن:

1. استنتاجات وحدة تحكم attiny2313 كانت تفتقر إلى حد كبير.
2. أنا منزعج من وميضهم عند الاتصال عن طريق تعدد الإرسال (الكمالية عدد المرات)
3. يستهلك Multiplexer الكثير من موارد وحدة التحكم للإخراج (الكمالية رقم 2).

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

استمر. يتم توفير قوة دائرتي من قبل منظم L7805 ، هنا مخطط الاتصال الخاص به.

صورة

يوفر المنظم تيارًا 1A دون أي مشاكل. عند خرج المنظم ، يوجد مكثف 0.1 ميكروفاراد ، والذي ، نظريًا ، يجب أن يخفف من تقلبات التيار. شحنتها عند 5 فولت هي 0.5 ميكروكولومب. عند 3.8 فولت ، تكون الشحنة 0.38 ميكرو مولوم على التوالي. عند 3.8 فولت ، تستهلك مصابيح LED حوالي 288 مللي أمبير ، وعند 5 فولت حوالي 416 مللي أمبير. وفقًا لذلك ، عندما يتم رفع الجهد من 3.8 فولت إلى 5 فولت ، ستزداد الشحنة المخزنة بواسطة المكثف بنسبة 24 ٪ ، ولكن الاستهلاك الحالي سيزيد بأكثر من 30 بالمائة في نفس الوقت. الحسابات هي بالطبع مثالية ولكن تبين أن انخفاض الجهد في مثل هذه الدائرة أكبر كلما زاد جهد الإمداد. عند 3.8 فولت ، لم يكن السحب مهمًا لوحدة التحكم. ولكن عند 5 فولت ، زاد السحب وبدأ في إعادة ضبط وحدة التحكم. وتم إعادة تعيين وحدة التحكم بدقة على صفحة عرض درجة الحرارة لأنما هي بالضبط في هذه الصفحة جميع مؤشرات العرض المعنية.

كان الحل بسيطا. في الكود ، كان عليك فقط التعليق على الخطوط لتشغيل وإيقاف مؤشرات sbi displayPort و offDispWire و cbi displayPort و offDispWire.

                ldi XL, videoMem
		cbi displayPort, shiftWire
		cbi displayPort, storageWire
		;sbi displayPort, offDispWire
		ZpushToDisplay:
		ldi temp2, 8
		ld temp, X+
		ZnextbitToDisplay:
		cbi displayPort, dataWire
		sbrc temp, 7
		sbi displayPort, dataWire
		sbi displayPort, shiftWire
		cbi displayPort, shiftWire
		lsl temp
		dec temp2
		cpi temp2, 0
		brne ZnextbitToDisplay

		cpi XL, videoMem+sizeVideoMem
		brne ZpushToDisplay

		sbi displayPort, storageWire
   		cbi displayPort, storageWire
		;cbi displayPort, offDispWire

توقف التصريف. وعاش جهاز التحكم في سعادة دائمة.

Z.Y. أشارت عملية البحث عن خطأ بعيد المنال إلى عدم قدرة آخر في المخطط. والحقيقة هي أن الحد الأقصى لتبديد الطاقة لسجلات التحول يبلغ حوالي 0.5 واط ، والتيار من خلال خرج الطاقة أو الأرض حوالي 70 مل أمبير. إذا تم عرض الرقم ثمانية مع نقطة ، فيجب أن يكون التيار من خلال سجل التحول حوالي 104 مللي أمبير ، وهو ، كما تعلمون ، فائضًا. ليس الأمر أنني لم آخذ هذه اللحظة في الاعتبار. لقد أخذت بعين الاعتبار. ولكن في عملية حساب المقاوم لمصباح LED ، استسلم لضعف دقيقة ونسي أن LED عنصر غير خطي ولتقليل التيار من خلاله مرتين لا يكفي لمضاعفة مقاومة المقاوم المحدد للتيار. بشكل عام ، في أي موقف غير مفهوم ، راجع CVC!

Source: https://habr.com/ru/post/ar386199/


All Articles