الصندوق الأسود للمدخن

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



الميكانيكا

تتم طباعة تفاصيل ChYAK على طابعة ثلاثية الأبعاد وبعد لصق الأجزاء السفلية والمتوسطة والعالية معًا.



آلية القفل مصنوعة كهروميكانيكية ، بينما يتم تحقيق وظائف القفل الأساسية ميكانيكيًا بحتًا ، وهذا يجعل من الصعب كسر NJC عن طريق معالجة الفجوات وإزالة البطاريات.

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



يتكون اللودر على شكل برميل مع 4 تجاويف للسجائر. لتجنب محاولة إدخال سيجارة من خلال اللودر ، لا تسمح آلية المزلاج بالحركة في الاتجاه المعاكس ، من جانبها يتم صنع المصدات.



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

واجهة

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

إلكترونيات

وحدة التحكم الدقيقة هي Teensy LC. تم اختيار هذا الجهاز الشبيه بالأردوين ، المتوافق مع معظم مكتبات Arduino ، لأنه يدعم أجهزة الاستشعار السعوية (واجهة مستشعر اللمس (TSI)). أجهزة الاستشعار حساسة لدرجة أنها تشعر بسهولة اليد المرفوعة على مسافة سنتيمتر واحد. يحتوي Teensy LC على ما يسمى بوضع LLWU ، في هذا الوضع ، جميع الوحدات في وضع السكون ، باستثناء مذبذب 1 كيلوهرتز. يمكنك الخروج من وضع السكون هذا بأربع طرق: أ) الحصول على مقاطعة من المستشعر السعوي ، ب) الحصول على مقاطعة من الدبوس ، ج) الحصول على تجاوز العداد 1 كيلو هرتز (مؤقت منخفض الطاقة ، LPTMR) ، د) الحصول على مقاطعة من التنبيه.

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

هناك احتمال آخر يتمثل في استخدام مقاطعة إنذار RTC ، ولكن الحقيقة هي أن Tenncy LC ليس لديها ساعة الوقت الحقيقي (RTC). بدلاً من ذلك ، يوجد RTC في المعالج نفسه ، ولكن لا توجد أسلاك لكوارتز RTC على اللوحة. ومع ذلك ، فقد ترك مطور المعالج بعض الثغرات لاستفسار العقول. يمكن استخدام مذبذب 1 كيلو هرتز (الذي يعمل في وضع السكون) كمصدر لتسجيلات RTC لوحدة التحكم. ثم اتضح أن RTC لا يحسب الفواصل الزمنية الثانية (كما هو الحال عند استخدام الكوارتز عند 32 كيلو هرتز) ، ولكن 32 ثانية في حالة استخدام مذبذب 1 كيلو هرتز. هذه الدقة ، بالطبع ، ليست كافية. ولكن هناك مخرج.

إليك كيفية العمل:

يوجد سجل سابق للوقت RTC (RTC_TPR). يحسب هذا السجل 16 بت نبضات المذبذب. عندما يفيض ، يزداد سجل RTC Time Seconds Register (RTC_TSR) بمقدار واحد. في الوضع الكلاسيكي ، هذه هي الثواني ، التي تتم مقارنتها مع RTC Time Alarm Register (RTC_TAR) ، وعندما تتزامن ، يتم إنشاء مقاطعة إنذار. عند استخدام كوارتز عادي 32 كيلو هرتز ، لا يتم تثبيت RTC_TSR مسبقًا ، ولكن يتم حسابه من الصفر في كل مرة (32768 إلى الفائض (بالثواني)). ولكن إذا قمنا بتثبيت RTC_TSR مسبقًا في كل مرة ، مع الأخذ في الاعتبار أن لدينا مذبذبًا بطيئًا بسرعة 1 كيلو هرتز ، فيمكننا الحصول على مقاطعة إنذار تصل إلى دقة ميلي ثانية (لا تأخذ في الاعتبار عدم دقة المذبذب نفسه). بالطبع ، يجب أيضًا إعادة حساب RTC_TAR وفقًا لذلك.



على سبيل المثال ، إذا أردنا تعيين الفترة على 87 ثانية ، يجب أن نكتب 2 في RTC_TSR (2 * 32768 = 65536ms = 65.536s) ، 2 في RTC_TAR و 32768- (87 * 1000-65536) = 11304 في RTC_TSR. ثم ستمر 32.768-11.304 = 21.464 ثانية قبل أول تجاوز لـ RTC_TPR ، وستتم إضافة دورتين كاملتين 2 * 32.768 = 65.536 ، والتي ستكون 21.464 + 65.536 = 87 ثانية فقط
بشكل عام ، مثل هذا:

void setAlarm(uint32_t seconds ) { RTC_SR = 0; //disable RTC RTC_TPR=32768-(seconds*1000%32768); RTC_TSR=0; //RTC counter RTC_SR = RTC_SR_TCE; //enable RTC RTC_TAR = seconds*1000/32768; } 

وحتى يمكننا مراقبة الوقت الإجمالي (حتى خطأ 1 كيلو هرتز من المذبذب) ، على سبيل المثال ، إذا كانت جميع سجلات RTC في بداية البرنامج صفرًا:

 timeEllapsed=(RTC_TSR*32768+RTC_TPR)/1000 

دقة المذبذب 1 كيلو هرتز صغيرة ، ولكن لأغراضنا ستكون كافية. وتجدر الإشارة إلى أنه عند بدء تنبيه جديد ، نقوم بتعديل سجلات RTC ، لذلك إذا كنت بحاجة إلى مراقبة الوقت ، يجب تذكرها قبل بدء التنبيه ، وبعد الخروج من مقاطعة التنبيه ، يتم إعادة حسابها مرة أخرى مع الأخذ في الاعتبار الوقت المستغرق في الإسبات. لقد وصفتها بالتفصيل هنا: حول RTC لـ Teency LC

في CJC ، تقوم مقاطعة كل 10 دقائق بقياس وتخزين مستوى الإشارة من أجهزة الاستشعار السعوية في حالة عدم وجود يد. يتم ذلك من أجل أن تكون قادرًا على تتبع التغييرات في الإشارات بشكل موثوق عند اقترابها. مع الخلفية عند ~ 500 وحدة ، نستخدم مستوى فائض من ~ 20 وحدة ، وهذا يجعل من الممكن الشعور باليد على مسافة 5-10 مم. يعتمد مستوى الخلفية على درجة الحرارة والرطوبة ، لذا يجب تعديلها دوريًا لضمان الموثوقية. هذا ، على ما أعتقد ، هو خلل في مطوري المعالج. لماذا لم يعطوا الفرصة للاستيقاظ من TSI وبعض عداد الطاقة المنخفضة الآخر في نفس الوقت (فقط قم بإضافة سجل واحد آخر) ، لأن الضبط الدوري لمستويات TSI إلزامي تقريبًا ، حتى إذا لم تكن بحاجة إلى مؤقت لأغراض أخرى!

الآن عن الطاقة المستهلكة. في وضع السكون LLWU ، يستهلك Teensy LC حوالي 15 uA عندما لا يكون هناك طقم للجسم. كان علينا توصيل شاشة OLED وجهاز مضاعف. كل من هذه الأجهزة لها تيارات تسرب كبيرة حتى في حالة سلبية.

كل شيء بسيط مع OLED ، هذه شاشة Adafruit 0.96 ”أحادية اللون مقاس 128x64 OLED ، وهي تعمل بقوة 3.3 فولت ، وتستهلك تيارًا يبلغ حوالي 20 مللي أمبير عندما تكون قيد التشغيل (وفقًا لعدد وحدات البكسل المعنية) ويتم التحكم فيها بواسطة SPI. أي ، ما عليك سوى توصيل مدخلات الطاقة الخاصة بها بمخرج 20 مللي أمبير من Teensy LC (يحتوي Teency على أنواع مختلفة من المخرجات) وبذلك تكون قد انتهيت. عندما ينام الجميع ، يتم نقل هذا الإخراج ببساطة إلى الحالة الثالثة ولا يمر التيار عبر الشاشة ، مع تنبيه الاستيقاظ يتم نقل الإخراج إلى حالة إخراج عالية ويصبح Vcc للعرض.

مضاعفات أكثر تعقيدًا قليلاً. تستهلك المؤازرة في وضع الاستعداد تيارًا يبلغ حوالي 2 مللي أمبير ، وهو أمر غير مقبول بالطبع. لذلك ، يجب إيقاف تشغيله تمامًا أثناء النوم. على عكس Arduin الكلاسيكي ، يحتوي Teensy LC على مجموعة صغيرة إلى حد ما من مصادر الطاقة: إما 1.7-3.3 فولت متصلة مباشرة ، أو 2.6-5.5 فولت (مع تشغيل منظم الجهد الداخلي). عادة ما تعمل الماكينة التي يمكن الوصول إليها من 1S Lipo على الأقل ، وهذا هو 3.3-4.2 V. لذلك ، نحتاج إلى تشغيل ثلاث بطاريات قياسية في السلسلة لتكون من 3.3 (تفريغ) إلى 4.6 فولت (جديد). بالنسبة لمعظم الأجهزة ، يكون 3.3 فولت عند حد التشغيل ، لذلك لا يمكن استخدام مخرجات Teensy مباشرة (مثل OLED). نعم ، والتيار أثناء الدوران هو حوالي 50 مللي أمبير ، وهو جزء كبير جدًا لـ Teensy LC. لذلك ، يتم تمكين المؤازرة عبر MOSFET:



مع هذا التبديل ، قد يبدو أنه غير آمن ، لأنه عندما يتم إيقاف MOSFET ، فإن الجهد عند مدخل PWM ctrl يتجاوز 3.3 فولت ، ومدخلات Tennsy LC ليست متسامحة 5 فولت (على عكس Arduin الكلاسيكي). ولكن لا يجب أن تخاف من هذا ، تذكر أن PWM ctrl الحالي صغير جدًا ، ولا داعي للخوف من الصمام الثنائي المحدود عند إدخال المعالج (سبب عدم جواز تجاوز Vcc + 0.5 هو في هذا الصمام الثنائي) ، علاوة على ذلك ، في التيارات المماثلة لتيارات الصمام الثنائي المغلق لن يكون في حالة مفتوحة.

في CHYAK أستخدم HK282 مع عتبة 3.3V (لمجرد أنني حصلت عليها). يمكن تشغيل نوع من أجهزة منخفضة الجهد ومنخفضة الطاقة مباشرة من مخرجات Teensy ، وفقًا للمخطط المستخدم لـ OLED.

ونتيجة لذلك ، تحول التيار في وضع السكون إلى حوالي 50 uA ، ربما كان من الممكن تقليله أكثر ، لكنني قررت أن هذا يكفي (إذا كان نائمًا فقط ، يجب أن تستمر البطاريات أكثر من 4 سنوات: 2000mAh / 0.05mA).

تقني

مطبوعة على طابعة Monoprice Ultimate 3D ، بلاستيك PLA ، فوهة 0.4 مم ، طبقة 0.2 مم. للحصول على تفاصيل آلية القفل ، طبقة 0.1 مم للدقة. تتم طباعة الينابيع أيضًا على طابعة ثلاثية الأبعاد. الكتابة لوقت طويل. على سبيل المثال ، تم طباعة الجزء الأوسط الأوسط (يحتوي على العديد من الأجزاء الداخلية والجدران المزدوجة للإلكترونيات والأسلاك) لمدة 20 ساعة. تم لصقها مع الغراء السماوي-أكريلات. إذا انكسر شيء ما في الداخل ، فمن المستحيل تحديده (الحماية من المدخنين المهووسين) ، سيكون عليك كسرها مثل بنك أصبع والطباعة مرة أخرى (حجة لصالح الطابعات ثلاثية الأبعاد). يتم إنشاء الرسومات والرسوم المتحركة في SolidWorks ، بيئة تطوير AtmelStudio (نعم ، يتم دعم AVR (teency) مباشرة من الصندوق ، مثل Arduino ، من خلال VisualMicro).

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


All Articles