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

عداد دوران وعاء الدم باستخدام مصابيح LED ذات 7 شرائح: 5 خطوات
عداد دوران وعاء الدم باستخدام مصابيح LED ذات 7 شرائح: 5 خطوات

فيديو: عداد دوران وعاء الدم باستخدام مصابيح LED ذات 7 شرائح: 5 خطوات

فيديو: عداد دوران وعاء الدم باستخدام مصابيح LED ذات 7 شرائح: 5 خطوات
فيديو: 3000+ Common English Words with Pronunciation 2024, شهر نوفمبر
Anonim
عداد دوران BloodBowl باستخدام مصابيح LED ذات 7 مقاطع
عداد دوران BloodBowl باستخدام مصابيح LED ذات 7 مقاطع

كان هذا المشروع مخصصًا لعداد دوران لعبة BloodBowl باستخدام ستة مصابيح LED من 7 شرائح Charlieplexed.

الخطوة 1: المفهوم

مفهوم
مفهوم

سألني أحد أصدقائي عن أفكار لبناء لعبة Bloodbowl Turn Counter في لعبة اللوح الخاصة به. لم أكن أعرف ما هو هذا وماذا يريد ، فقد استغرق الأمر بعض الوقت لاتخاذ قرار بشأن ما إذا كنت سأفعل ذلك وكيف سأفعل ذلك. الفكرة الأساسية هي أن يكون لديك 3 أزرار انضغاطية ، تتحكم في 3 مصابيح LED لكل منها ، وسيتم وضعها داخل برج مُصمم خصيصًا ، وكان الطلب الكبير الوحيد هو الحصول على أعلى 4 شاشات من 0 إلى 8 وإعادة تعيينها ، مع وجود 2 أقل. يعرض العد التنازلي من 8 إلى 0 ويعود بالدوران ، وسأكمل الدائرة ، وسيكمل البرج.

الخطوة 2: قائمة التصميم والأجزاء

قائمة التصميم والأجزاء
قائمة التصميم والأجزاء

نظرًا لأن المفهوم يستدعي 6 مصابيح LED ذات 7 مقاطع ، وكان لدي بعض الصور ذات الرقاقة الدقيقة 8 بت في متناول يدي ، فقد بحثت في طرق استخدام بلدان جزر المحيط الهادئ للتحكم في مؤشرات LED. لقد وجدت هذا الرابط https://www.mikroe.com/en/books /picbook/7_08chapter.htm الذي ينص على أنه "يمكن الوصول إلى ما يصل إلى 6 شاشات بهذا الشكل دون أن يتأثر سطوع كل شاشة." لقد اعتبرت هذا تحديًا وشيءًا يجب التحقيق فيه كجزء من مشروعي. أول شيء فعلته هو التقاط بعض العروض المتوهجة المكونة من 7 أجزاء من الصندوق الخاص بي ومعرفة كيفية عملها. اخبار سيئة. الأجزاء المحددة التي اخترتها لم تكن تتصرف كما أردت. سيضيء المقطع عند الحاجة ، على اللوح ، ولكن تم توزيع تيار التسرب على الأجزاء الستة الأخرى. أدركت أن الشاشات المتوهجة قد لا تكون الطريقة الأفضل ، أو كنت بحاجة لاستخدامها بطريقة مختلفة. لذلك من أجل البساطة ، تحققت من أن مصابيح LED ذات الأجزاء السبعة التي أمتلكها ستعمل على اللوح ، وطلبت بعض شاشات الأنود الشائعة ، وكان الشيء الثاني الذي احتجت إلى فعله هو تخطيط تصميمي والبدء في العمل على الكود. الصورة هي دائرتي. ليس كثيرًا ، لأن الكود الموجود في الموافقة المسبقة عن علم يعتني بتعدد الإرسال … errr Charlieplexing. ملاحظة: تحتوي جميع شاشات العرض الستة على نفس الخطوط من برنامج التشغيل IC. يمكّن المحدد IC كل شاشة ، 1 في كل مرة ، ويتم تحديث الخطوط المكونة من 7 مقاطع بواسطة الموافقة المسبقة عن علم وفقًا لذلك. فكرة بسيطة للغاية. بعد ذلك ، كل ما كان مطلوبًا هو الرمز وإكمال الأجهزة. قائمة الأجزاء بعد 3 طلبات صغيرة من Digi-Key أثناء اتخاذ قرار بشأن مكونات محددة ، كان لدي كل ما أحتاجه (مع بعض الأشياء في متناول اليد) ؛ 1 ~ 3 بوصة × 4 "مفاتيح ضغط صغيرة PCB6 (NO) 1 74LS47 ، شاشة عرض 7 مقاطع IC1 PIC16F627 1 CD4028 ، 1 من 10 محدد IC 6 مقاومات 10KOhm1 470Ohm المقاوم 1 بكرة من الأسلاك. لقد استخدمت ألوانًا وقياسات مختلفة ، ولكن هذا كان أنا فقط. 3) تحسين التصميم: لا توجد أي من هذه المشكلات في حد ذاتها معقدة للغاية ، ولكن التعامل معها جميعًا دون أي خبرة يمكن أن يكون أمرًا بسيطًا للغاية بالنسبة للمبتدئين. مطلوب مبرمج أجهزة لنسخ الجهاز ، ومحطة اللحام ، وما إلى ذلك … أول شيء قد يلاحظه شخص ما هو أن مصابيح LED ذات الأجزاء السبعة لا تحتوي على مقاومات متسلسلة (الحد الحالي)! اسمحوا لي أن أتطرق إلى ذلك بسرعة ، من خلال الإشارة إلى أن تصميمي الأصلي احتوى عليها … لكن اقرأ الخطوة التالية للتوضيح!

الخطوة 3: اللوح و Micro Code

Breadboarding & Micro Code
Breadboarding & Micro Code

كان اللوح أمرًا لا بد منه لهذا الغرض. الموضح هو لوح التجارب العام الخاص بي ، ولكن بالنسبة لحجم هذا المشروع ، استخدمت بالفعل هذا ولوحًا أصغر حجمًا ، حيث كان هناك العديد من الأسلاك التي يجب أن تكون متباعدة. أكد هذا 3 أشياء ؛ 1) تم التحقق من صحة توصيل أسلاك IC! 2) قادني إلى تحسين وإنهاء الكود الخاص بي.3) جعلني أدرك أنني لست بحاجة إلى المقاومات المحددة الحالية! 1 WIRING كما ذكر ، تم العثور على تصميمي التخطيطي للعمل مع الكود الخاص بي ، حيث أن LED سوف يتنقل عبر الأرقام باستخدام مفتاح زر ضغط واحد ، بحيث يتحقق من الكود والتخطيط. لم يكن الأمر مطلوبًا كثيرًا ، لكن لوح التجارب أكد أنني كنت في حالة جيدة. 2 كان لدى CODEI في الأصل رمز معيّن مع روتين أساسي للبحث عن الأزرار وعرض ISR (روتين خدمة المقاطعة) الأرقام ،. بعد اختبارات اللوح ، قمت بعكس الإجراءات ، لذلك كان معظم الوقت يعرض باستمرار الأرقام و ISR للتحقق من الأزرار. السبب في أنني فعلت ذلك ، هو فقط الحصول على عرض ثابت ، نظرًا لأن PIC تعمل بساعة داخلية 4 ميجا هرتز ، فأنا أضيع القليل من الوقت في البحث عن الأزرار. لا توجد مشكلة كبيرة … يعتمد فقط على الطريقة التي تريد بها تنفيذ التعليمات البرمجية وما هو الأكثر منطقية لكل تطبيق. لهذا ، يعد العرض مهمًا ، لذلك وضعت ذلك في الروتين الرئيسي. عندما وصلت أجزائي الأولى (جميع شاشات العرض الستة!) ، أكملت توصيل أسلاك اللوح ووجدت مشكلة أخرى. عند الضغط على الزر ، احتوى الكود الخاص بي على بعض السجلات القذرة التي لم يتم مسحها وكان ISR يتسبب في بعض الأخطاء الطفيفة في العرض. ==================================================== ===== ؛ عداد الدوران ؛؛ ----------- ؛ Dsply3 Dsply2 ؛ Dsply4 Dsply1 ؛ Led1 Led3 ؛ A5 | 4 15 | A6 - Led2 ؛ Vss | 5 14 | Vdd؛ Button1 B0 | 6 13 | ب 7 ؛ ب 1 | 7 12 | ب 6 ؛ B2 | 8 11 | B5 ؛ ب 3 | 9 10 | ب 4 ؛ ----------- ؛؛ LED1-3 - BCD-dec IC -LEDSeg's1-6 ؛ Dsply1-3 - BCD-7seg IC -Dsply # 1-9 ؛؛ =================================== ============================================== ؛ تاريخ المراجعة والملاحظات: رأس V1.0 الأولي ، الرمز 3/30/09 ؛ ؛؛ (C) 5/2009 ؛ يمكن استخدام هذا الرمز للتعلم / التطبيق / التعديل الشخصي. ؛ أي استخدام لهذا الرمز في المنتجات التجارية ينتهك هذا الإصدار المجاني. ؛ للأسئلة / التعليقات ، اتصل بدائرة dot mage على yahoo dot com. ؛ ------------------------------------------------ ------------------------------- # تشمل P16F627A. INC ؛ ============= ==================================================== ================ ؛ يعرّف ؛ ------------------------------------------------ -------------------------------؛ ================== ==================================================== =========== ؛ البيانات؛------------------------------------------------ ------------------------------- ؛ متغيرات حفظ الوقت العدد 1 يساوي 20 عدد 2 يساوي 21 dis1 يساوي 22dis2 يساوي 23dis3 يساوي 24dis4 يساوي 25dis5 يساوي 26dis6 يساوي 27w_temp يساوي 28status_temp يساوي 29ISRCNTR يساوي 2A ؛ ======================== ==================================================== ======= ؛ إعادة تعيين ناقلات ؛؛ تحقق من التكوين. بت قبل الاحتراق !!! ؛ INTOSC. MCLR: ممكّن ؛ PWRUP: تمكين ؛ كل الآخرين: تعطيل !! ؛؛ ------------------------------------------ ------------------------------------- RESET_ADDR EQU 0x00 ISR_ADDR EQU 0x04 org RESET_ADDR الانتقال إلى البداية ؛ == ==================================================== ============================ ؛ ISR ؛؛ ----------------------------------------------- -------------------------------- org ISR_ADDR movwf w_temp swapf STATUS، w movwf status_temp ؛؛ ISR هنا ؛ تحقق من مفاتيح PB0-PB5 btfsc PORTB ، 0 ؛ تحقق من SW1 call sw1debounce btfsc PORTB، 1 ؛ تحقق من SW1 call sw2debounce btfsc PORTB، 2 ؛ تحقق من SW1 call sw3debounce btfsc PORTB، 3 ؛ تحقق من SW1 call sw4debounce btfsc PORTB، 4 ؛ تحقق من SW1 call sw5debounce btfsc PORTB، 5 ؛ تحقق من SW1 call sw6debounce goto endisrsw1debounce call debounce ؛ انتظر 0.2 ثانية استدعاء debounce incf dis1 ؛ تحديث العداد movf dis1، W ؛ تحقق من وجود تجاوز xorlw 0x1A ؛ 10 في 7 سيغ؟ btfss STATUS ، إرجاع Z ؛ لا ، ارجع للمسح. movlw h'10 '؛ نعم ، إعادة تعيين العرض. movwf dis1 returnsw2debounce call debounce ؛ انتظر 0.2 ثانية call debounce incf dis2 ؛ تحديث العداد movf dis2، W ؛ تحقق من وجود تجاوز xorlw 0x4A ؛ 10 في 7 سيغ؟ btfss STATUS ، إرجاع Z ؛ لا ، ارجع للمسح. movlw h'40 '؛ نعم ، إعادة تعيين العرض. movwf dis2 returnsw3debounce call debounce ؛ انتظر 0.2 ثانية call debounce incf dis3 ؛ تحديث العداد movf dis3 ، W ؛ تحقق من وجود تجاوز xorlw 0x5A ؛ 10 في 7 سيغ؟ btfss STATUS ، إرجاع Z ؛ لا ، ارجع للمسح. movlw h'50 '؛ نعم ، إعادة تعيين العرض. movwf dis3 returnsw4debounce call debounce ؛ انتظر 0.2 ثانية استدعاء debounce incf dis4 ؛ تحديث العداد movf dis4، W؛ تحقق من وجود تجاوز xorlw 0x8A ؛ 10 في 7 سيغ؟ btfss STATUS ، إرجاع Z ؛ لا ، ارجع للمسح. movlw h'80 '؛ نعم ، إعادة تعيين العرض. movwf dis4 returnsw5debounce call debounce ؛ انتظر 0.2 ثانية استدعاء debounce incf dis5 ؛ تحديث العداد movf dis5، W ؛ تحقق من وجود تجاوز xorlw 0x9A ؛ 10 في 7 سيغ؟ btfss STATUS ، إرجاع Z ؛ لا ، ارجع للمسح. movlw h'90 '؛ نعم ، إعادة العرض. movwf dis5 returnsw6debounce call debounce ؛ انتظر 0.2 ثانية call debounce incf dis6 ؛ تحديث العداد movf dis6، W ؛ تحقق من وجود تجاوز xorlw 0xCA ؛ 10 في 7 سيغ؟ btfss STATUS ، إرجاع Z ؛ لا ، ارجع للمسح. movlw h'C0 '؛ نعم ، إعادة العرض. movwf dis6 returnendisr bcf INTCON، T0IF swapf status_temp، w movwf STATUS swapf w_temp، f swapf w_temp، wretfie؛ ============================== ==================================================== = ؛ أبدأ هنا!؛---------------------------------------------- ---------------------------------بداية ؛ منافذ الإدخال / الإخراج التكوين clrf PORTA movlw 0x07 movwf CMCON bcf STATUS ، RP1 bsf STATUS ، RP0 movlw h'00 '؛ مخرجات RA ، RA5 لا يوجد خرج movwf TRISA bcf STATUS ، RP0 clrf PORTB bsf STATUS ، RPF' movlw ؛ h مدخلات RB movwf TRISB ؛ ضبط المؤقت الداخلي bsf PCON ، 3 ؛ اضبط على 4 ميجا هرتز. movlw h'CF '؛ Tmr0 مصدر داخلي ، مقياس مسبق TMR0 1: 256 movwf OPTION_REG movlw h'A0 'movwf INTCON ؛ تمكين المقاطعات TMR0 ، bcf STATUS ، RP0 ؛ تهيئة التسجيلات clrf PORTA ؛ مسح PortA clrf PORTB ؛ مسح PortB مخرجات clrf عدد 1 clrf count2 movlw h'10 'movwf dis1 movlw h'40' movwf dis2 movlw h'50 'movwf dis3 movlw h'80' movwf dis4 movlw h'90 'movwf dis5 movlw h'C0' movwf dis6 call تنقض. 0.2 ثانية ؛ اختبار LEDs ، عرض 8 ؟؟؟ ؛ ======================================== ========================================== ؛ الأساسية؛ يحصل على المدخلات من شاشات التبديل ، والتخفيضات والشوائب. العرض 1-6 سلكي ؛ أولاً ، يتم تحميل BCD-7Seg IC بقيمة العرض ، ويتم تنشيط BCD-Dec IC من أجل ؛ تحديد العرض ؛ ثانيًا ، يتم تعليق تأخير بالمللي ثانية للعرض ؛ ثالثًا ، BCD-Dec تم إلغاء تنشيط IC … تم تحديد display0 لإيقاف العرض ؛؛ يتكرر هذا لكل من الشاشات الستة ، ويتم تكرار ذلك في الحلقة. ؛ ISR يتعامل مع استشعار التبديل بمعدل 15 هرتز. ؛ -------------- -------------------------------------------------- --------------- main؛ Disp1 movf dis1، 0 movwf PORTA call ledon goto main؛ ===================== ==================================================== ======== ؛ ليدون. ضبط الوقت لتشغيل الصمام الثنائي الباعث للضوء ؛ 6 شاشات -> 1/6 دورة عمل عند 1 كيلو هرتز = 166 دورة ؛ ----------------------------------- -------------------------------------------- ledon movlw.54 movwf count1ledloop decfsz count1، F goto ledloopreturn؛ ============================================ ===================================== ؛ إشارة الانقضاض 4 دورات للتحميل والاستدعاء ، دورتان للعودة ؛ 4 ميجا هرتز تك:: count2 = 255 -> 0.2 ثانية ؛ -------------------------------------- ----------------------------------------- debounce movlw.255 ؛ تأخير للخصم 1/5 ثانية. movwf count2 استدعاء pon_wait return ؛ -------------------------------------------- ----------------------------------- ؛ count1 = 255d:: 775 دورة إلى 0 ، + 3 دورات للعودة. --------------------------------- ---------------------------------------------- pon_waitbig_loopS movlw.255 movwf count1short_loopS decfsz count1، F goto short_loopS decfsz count2، F goto big_loopSreturnend3 كان لدى CIRCUITI في الأصل 470 أوم مقاومات من كل خط تشغيل عرض من خط تمكين 74LS47 و CD4028. ومع ذلك ، اختبرت السحب الحالي لدارتي ووجدت أنها تسحب فقط 31 مللي أمبير. ونظرًا لأن المحرك الفعلي للشاشات هو مباشرة من 74LS47 وتمكينه من IC آخر ، فإن التشغيل السريع لمتوسط ومتطلبات الذروة وأوراق البيانات ذات الصلة … ! يبدو أن قيادة خط CA مباشرة من 4028 أثناء قيادة جميع القطاعات مباشرة أمر جيد! …نوعا ما.:) لدي خلل في الكود الخاص بي لم يمسح سجلاتي عند الضغط على زر ، مما تسبب في أن يكون للشاشة الأخيرة مقطعين مضيئين للغاية عند الضغط على الزر. كان هذا سيئا. ومع ذلك ، أدى مسح السجل إلى إصلاح هذه المشكلة ، وتؤكد فحوصات الطاقة المستمرة أنها تساوي باستمرار حوالي 30 مللي أمبير. يجب أن يمنحني هذا (استنادًا إلى الخبرة السابقة مع الدوائر المماثلة) حوالي 20 ساعة من وقت التشغيل باستخدام بطارية 1 9 فولت (500 مللي أمبير / 30 مللي أمبير بموجب تنظيم 5 فولت) … آمل! قررت الاحتفاظ بمصباح LED مدفوعًا بشكل مباشر ، ولكن ضعها في مآخذ في حالة حدوث شيء ما ، على المدى الطويل.

الخطوة 4: لحام ثنائي الفينيل متعدد الكلور

لحام ثنائي الفينيل متعدد الكلور
لحام ثنائي الفينيل متعدد الكلور

في كل مرة أصل إلى هذه النقطة في مشروعي ، أقوم بتأخير بسيط. في البداية كنت سأقوم بلف هذا الشيء بالأسلاك ، لكني سرعان ما تخلت عن هذه الفكرة. في البداية أعتقد أن "بعض الأسلاك للحام ، ليست مشكلة كبيرة" … ثم ، بحلول الوقت الذي يكون مشروعي جاهزًا للحام ، أفكر ، " كان يجب أن أرسل لوحة أولية أو أنقش لوحة خاصة بي ". أنا لست في نقش ثنائي الفينيل متعدد الكلور (حتى الآن) ، ولا أريد أن أدفع دولارًا أمريكيًا لصنع لوحة ، لذلك … نعم ….. لقد أمضيت حوالي 3 ساعات في لحام هذا الشيء. إنها عبارة عن حوالي 150 سلكًا ، أي 300 نقطة لحام ، بالإضافة إلى اللمسات الأخيرة لجسور اللحام. على أي حال ، هذا هو الجانب الخلفي للوحة المصورة …. استغرق الأمر 20 دقيقة من التفكير منذ أن أظهرت الشاشة عرض # الخطأ بنمط منطقي كان علي فك شفرته. بعد ذلك ، حددت موقع القصير ، وبام! عملت على أكمل وجه.

الخطوة 5: الخاتمة

استنتاج
استنتاج

نجح هذا المشروع! استغرق هذا المشروع حوالي أسبوعين للتفكير وإرسال النقاط الجيدة بالبريد الإلكتروني إلى مقدم الطلب ، حوالي 3 ساعات من إكمال الكود وتصحيح الأخطاء ، حوالي 4 ساعات من اللوح والتصحيح ، ~ 3 ساعات من اللحام باستخدام 3 وحدات IC فقط ، من الممكن المصابيح Charlieplex 6 ذات 7 مقاطع. سحب الطاقة حوالي 30 مللي أمبير مع هذا التصميم ، وهذا ليس سيئًا إذا قلت ذلك بنفسي ، أشك في إمكانية استخدام المزيد من مصابيح LED المكونة من 7 مقاطع ، لكن لم يتم دفع المغلف. يمكن تطبيقها على أي تطبيق تقريبًا باستخدام مصابيح LED ذات 7 مقاطع ؛ مقياس حرارة ، ساعة ، عرض نص ، إلخ. مع بعض التعليمات البرمجية الصعبة ، يمكن أن يكون لديك شاشة متحركة ، أو صور … ربما حتى قاعدة لمشروع POV (استمرار الرؤية). يُترك التنفيذ النهائي لصديقي لبناء برجه ووضع اللوح فيه ، كما يراه مناسبًا. إذا / عندما يتم ذلك ، سأحصل على صورة تم تحميلها. ولكن بالنسبة للدائرة ، يبدو أن هذا مبني حسب الطلب!

موصى به: