في هذه المقالة ، إذا جاز التعبير ، أود أن أتحدث عن مشروعي الأول في الهندسة الكهربائية. يجب أن أقول أنه ، من خلال مهنتي ، أنا بعيد عن الدوائر الإلكترونية والإلكترونيات الراديوية ، لكن الاهتمام بهذا الموضوع لم يعطيني الراحة منذ سن مبكرة. بالنسبة للأشخاص ذوي الخبرة ، قد تبدو المعلومات أدناه واضحة للغاية ، والكثير الذي فعلته هو "اختراع دراجة". ولكن ربما يكون بعض المستجدون مثلي مثلي قادرين على اكتشاف شيء جديد ومثير للاهتمام. من يهتم ، من فضلك ، تحت القطة.
بدأ كل شيء بفكرة إنشاء مجلس تطوير لابنتي الصغيرة. أولاً ، أردت أن أمدد ذراعي وأن أفعل شيئًا بنفسي. ثانيًا ، أردت أن أمدد دماغي وأخرج شيئًا غير موجود في لوحات عادية من هذا النوع.
بعد ملاحظة أكثر ما يحب الطفل القيام به في الحياة اليومية ، تقرر أنه بالإضافة إلى المقابض التسلسلية القياسية ، تحتاج إلى إضافة أزرار للضغط وجهاز معين يعرض رد الفعل على الضغط. نظرًا لأنه كان يجب عرض شيء بسيط ، ولكن ساطع ، فقد وقع الاختيار على مصفوفة LED الحمراء 8 × 8.
حتى إنشاء اللعبة ، كنت أجمع الغبار على رف Arduino Uno لبعض الوقت - كانت تنتظر حتى أتمكن من التوصل إلى شيء مفيد بخلاف نظام الري التلقائي للألوان ، والذي ، بالإضافة إلى الملل في الملعب نفسه ، كان أقل بقليل مما لم أكن بحاجة إليه. اعتقدت أن ساعتها (اردوينو) قد حان ، لأنك تحتاج إلى البدء من مكان ما. بعد قراءة أدلة المصفوفة ، اكتشفت أنه بالإضافة إلى عدم توصيله بـ Arduino (فقط لأنك تحتاج إلى 16 دبابيس غير موجودة في Arduino) ، فمن المستحيل التحكم في جميع مصابيح LED في نفس الوقت. يمكنك التألق في وقت واحد مع بعض الثنائيات إما في صف واحد أو في عمود واحد (التحكم في الكاثود المشترك أو الأنود المشترك). وإذا كنت تفعل ذلك باستمرار وبسرعة كافية ، يتوقف الشخص عن إدراك الوميض ويرى صورة مستقرة. تعلمت أيضًا أنه بالنسبة إلى Arduino ، هناك برامج تشغيل ومكتبات جاهزة تتحمل ألم إدارة هذه العملية. وحقيقة عدم وجود مثل هذا السائق في ذلك الوقت حددت مسبقا نتيجة المشروع بأكمله.
بينما قمت بتأجيل كل شيء وتأخرت في اختيار أفضل مكان لشراء سائق ، صادفت مقالة حول تشغيل أنظمة الزناد. بالنسبة إلى دماغي ، العلوم الإنسانية ، أصبح اكتشافًا حقيقيًا ، مما يعطي فهمًا لكيفية تنظيم الذاكرة على مستوى بدائي. ثم تساءلت عما إذا كان يمكنني الاستغناء عن Arduino وجعل مشروعي يعتمد على المشغلات والدوائر المنطقية.
لذا ، كان عليك أولاً أن تقرر ما تريد إظهاره وكيفية القيام بذلك. كان من الواضح أنه كان من الضروري تطبيق إشارة بدورها على ثمانية صفوف من المصفوفة ولكل تكرار تكرار إشارة متوازية على أعمدة معينة. حسنًا ، أعطاني ذلك فهمًا للمكونات الرئيسية الثلاثة - مولد النبض ، ومحول الساعة إلى ثماني إشارات متتالية ، ومحول ينتج عن كل من الإشارات الثمانية مجموعة معينة من الإشارات المتوازية. إنه ليس بهذا التعقيد.
بعد بعض التفكير ، تم تشكيل دائرة في رأسي يتم فيها تحويل إشارة الساعة إلى رمز ثنائي باستخدام ثلاث مشغلات JK متصلة بالسلسلة ، ثم باستخدام الدوائر المنطقية إلى ثماني. يمكن قراءة تفاصيل هذا النوع من المحفزات على الأقل على ويكيبيديا . باختصار ، يحتوي على مدخلين (J و K) ومخرجين (Q و Q̄) ، بالإضافة إلى إدخال التزامن (CLK). عندما يتم تغذية الوحدة المنطقية بأحد المدخلات أثناء نبضة المزامنة التالية ، سيتم عرض الوحدة على الإخراج المقابل وتخزينها عليها بغض النظر عما إذا تم تطبيق نبضة المزامنة مرة أخرى وما إذا كانت القيمة في المدخلات المحددة تتغير ، بشرط أن يبقى الإدخال الثاني صفرًا. إذا قمت بتقديم وحدة إلى الإدخال الثاني ، وإلى الصفر الأول ، فعند نبض المزامنة التالي ، ستتغير قيمة الإخراج الأول إلى صفر ، والثانية إلى واحد. ولكن إذا تم تطبيق وحدة على كل من مدخلات الزناد ، فعند كل نبضة تزامن ، ستظهر الوحدة بالتناوب على أحد المخرجات. وإذا كنت تأخذ اثنين من المشغلات ، قم بتطبيق نبض الساعة على إدخال المزامنة الأول ، والإشارة من إخراج Q̄ الأول إلى إدخال المزامنة الثاني ، ونتيجة لذلك ، فإن الإخراج Q1 سيخرج واحدًا كل دورتين ، و Q2 كل أربع. وبالتالي ، يتم الحصول على عداد ثنائي مكون من رقمين. وإذا أضفت المشغل الثالث بالطريقة نفسها ، فعند الرقم الثالث ، يمكنك العد حتى ثمانية برمز ثنائي - هذا ما تحتاجه.

بعد ذلك ، كان من الضروري إنشاء جدول حقائق وتحديد مجموعة من المفاتيح المنطقية بحيث تحول الرمز الثنائي إلى ثمانية إشارات متتالية. إذا كان جدول الحقائق والعمليات المنطقية لبعض الأشياء شيئًا جديدًا وغير معروف ، فيمكنك القراءة عنها مرة أخرى على ويكيبيديا هنا وهنا .
يبدو أن نصف العمل موجود ، ولكنه في الواقع لم يكن بهذه البساطة. عندما جمعت الجزء الأول من الدائرة للاختبار على لوحة توصيل وتخيّلت كيفية تنفيذ الجزء الثاني بطريقة مماثلة ، رسم خيالي لعدة أشهر (وربما لسنوات - وقت الانخراط في هواية ما يزيد قليلاً عن ساعة بعد العمل) لرسم الرسوم البيانية وتجميع جداول الحقيقة. في الواقع ، بالنسبة لثمانية صفوف من كل صورة ، تحتاج إلى إنشاء مجموعة فريدة من الأعمدة. وكلما زاد عدد الصور ، ازدادت وحشية الدائرة. أدركت أنه لن يعمل على فعل ما هو مقصود على المفاتيح المنطقية وحدها. كان من الضروري البحث عن شيء يمكن أن يبسط هذه العملية.
كان الحل شريحة ذاكرة. بالنسبة لمهمتي ، كانت EEPROM (ذاكرة القراءة فقط القابلة للبرمجة القابلة للمسح كهربائيًا) مناسبة تمامًا - ذاكرة قابلة للبرمجة مع إمكانية المحو الكهربائي مع الإدخال / الإخراج المتوازيين. تحتوي الذاكرة على عدد إدخالات العناوين ، والتي هي في الواقع أجزاء من العنوان الثنائي لخلايا الذاكرة. أي أنه إذا كانت الذاكرة تحتوي على إدخالات عنوان n ، فيمكن برمجة 2 ^ n خلية. عدد دبابيس الذاكرة هو ما يسمى "طول الكلمة" ، أو الطول الفعلي لسلسلة ثنائية يمكن كتابتها لكل خلية. يحدد منتج عدد الخلايا لكل طول الكلمة مقدار الذاكرة بالبتات.
كانت إشارة الإدخال في شكل رمز ثنائي متاحة لي عند إخراج مشغلات JK. يبقى لتكميله بتات من الأزرار ، والتي يجب أن تكون مسؤولة عن إخراج صور مختلفة ، والنقطة في القبعة.
ومرة أخرى ، لم يسمح لي نقص الخبرة بتقييم مدى تعقيد العملية بشكل مناسب. بعد كل شيء ، يجب برمجة الذاكرة ، ولهذا تحتاج إلى مبرمج - الجهاز مكلف بشكل كبير من أجل شرائه لمركبة لعب لمرة واحدة. أظهر Googling أنه من الممكن نظريًا القيام بذلك مع Arduino. ولكن بالنسبة للبرمجة ، من الضروري توفير إشارات في وقت واحد لكل من مدخلات عنوان شريحة الذاكرة والمخرجات ، والتي يجب أن تنتج الإشارة لاحقًا. ونحتاج أيضًا إلى إشارات التحكم في الرقاقة. هذا هو ، مرة أخرى أكثر من المسامير المتاحة. فتحت لي وظيفة googling إضافية سجل تغيير - شريحة تتذكر تسلسلًا معينًا من الأصفار والأصفار وتعرضها على مخرجات متوازية. غالبًا ما تعمل هذه الرقائق أيضًا كعازل ولها إخراج يمكن أن يعيد إنتاج إشارات الإدخال بالتتابع. بمعنى ، إذا قمت بتوصيل نفس السجل التالي به ، فيمكنك في نفس الوقت عرض ضعف تسلسل كبير مثل واحد. عند إدخال السطر ، سوف يمر الجزء الأول من خلال السجل الأول كما من خلال مخزن مؤقت في الثانية ، وسيظل الباقي في السجل الأول. بإضافة سجل ثالث ، يمكنك مضاعفة طول السلسلة ثلاث مرات ، إلخ. لتنفيذ ذلك ، كان عليك كتابة رسم بلغة برمجة غير مألوفة. ولكن وجود بعض الخبرة في Python والعديد من الأمثلة على الإنترنت ، بعد سلسلة من التجربة والخطأ ، تبين أن هذه المهمة مجدية تمامًا. يمكن اتخاذ رسم على جيثب .
والآن يتم كتابة الرسم التخطيطي ، يتم توصيل الدائرة المصغرة ، الإطلاق و ... لا شيء - الذاكرة غير مبرمجة. بعض العينات ، وتغيير إعدادات التسجيل ، وعدم وجود نتائج. كان لدي W27C512-45Z. أظهرت القراءة الدقيقة للأدلة لحظة غير سارة. للكتابة إلى جهة اتصال محددة للدائرة الدقيقة ، من الضروري توفير تيار 0.03A بجهد 12V. اعتقدت أنني اشتريت للتو شريحة غير مناسبة. ولكن بعد التمرير عبر رفوف المتاجر المحلية للمكونات الكهربائية ، تأكدت من أن الجميع يحتاج إلى 12V. لم يكن لديّ مصدر طاقة للمختبر. هناك الكثير من الكتل 12V في المنزل ، ولكنها كلها نابضة ، علاوة على ذلك ، التيار حوالي 1A. اغفر لي ، مهندسين متمرسين لمثل هذه التضحية ، ولكن في حالة يأس ، قررت أن أحاول معرفة ما إذا كانت معجزة ستحدث مع تلك القطع التي كانت في متناول اليد. لم يحدث. لم ينتج الممران الأولان للتسجيل أي شيء ، وبعد الدائرة الصغيرة الثالثة ، توقفت عن إظهار علامات الحياة.
على الإنترنت ، وجدت إشارات إلى دائرة دقيقة ST662AB معينة - محول 5V-12V - والتي ، إلى جانب المجموعة الصحيحة من المكثفات ، يجب أن تنتج التيار والجهد اللازمين. في الواقع ، لم يكن من السهل العثور على الشريحة. ونتيجة لذلك ، طلبت ذلك من الصين ، وكذلك SMD. وماذا عن أربعة إلى ستة أسابيع من الولادة؟ صحيح ، تعلم. بالتمرير خلال المقالات حول برمجة الذاكرة ، صادفت ذكر شريحة يمكن برمجتها في 5V. كان حول AT28C256. وبالفعل ، لم يكن هناك أي ذكر لـ 12V في أوراق البيانات. يجب أن تأخذ! صحيح أن شريحة احتياجاتي كانت زائدة عن الحاجة ، لأنها سمحت لي بحفظ 256 كيلوبايت: إخراج 8 بت لعناوين 32 كيلو ، والتي ، مع مراعاة دبابيس العناوين الثلاثة المحتلة لإشارات مزامنة الخط ، تركت من الممكن ترميز ما يصل إلى 4096 صورة (10 ستكون كافية بالنسبة لي). بالإضافة إلى ذلك ، كان يجب أن يتم التسليم بالفعل من المملكة المتحدة. لكنني لم أجد خيارات أخرى ، وفي النهاية ، يمكن إعادة برمجة الذاكرة ، وعندما لا تعود اللعبة ذات صلة ، يمكن استخدام الشريحة في مكان آخر. لذا بعد أربعة أيام كان لدي ذاكرة. تشغيل اختبار رسم ، والسعادة - كل شيء يعمل.
آخر شيء متبقٍ هو تحديد عدد الأزرار الموجودة ، ورسم صور 8x8 وتنفيذ إضافة إشارات من الأزرار إلى الدائرة. بعد تقدير المكان على اللوحة ، استقرت على خمسة أزرار. نظرًا للطلب غير ذي القيمة مقارنةً بمورد الذاكرة ، كانت أسهل طريقة هي إرسال إشارة من كل زر مباشرةً إلى إدخال منفصل دون استخدام أي ترميز. صحيح ، كان لا يزال علي حل مشكلة التبديل بين الصور. كان من الممكن استخدام الأزرار مع تثبيت الضغط. لكن مثل هذا التنفيذ لم يكن مناسبًا للاستخدام من قبل طفل يبلغ من العمر عامًا واحدًا ، لأنه قبل الضغط على الزر التالي ، كان من الضروري الضغط على زر العمل ، وكان الأمر بدائيًا في حد ذاته. كنت أرغب في التوصل إلى مخطط للأزرار دون إصلاح ، حيث سيتم حفظ الضغط على كل زر ، وحتى إلغاء الضغط على الزر السابق. قرأت عن ميزات استخدام أنواع مختلفة من المحفزات ، على أمل أن يتمكن البعض منهم من حل هذه المشكلة من تلقاء أنفسهم ، ولكن للأسف. بعد الجلوس قليلاً مع ورقة وقلم رصاص ، توصلت إلى الرسم التخطيطي التالي (مثال لثلاثة أزرار).
أولاً ، تحتاج إلى توصيل جميع الأزرار بمجمع معين ، والذي سيعطي عند الإخراج وحدة عند النقر فوق أي من الأزرار. لهذا ، مفتاح OR مناسب. نظرًا لأنه في الغالب تحتوي الدوائر المصغرة الرئيسية على مدخلين فقط ، فمن الضروري توصيل الزرين الأولين بمفتاح واحد ، ثم توصيل مخرجاتها بالإدخال الأول للمفتاح الثاني ، والزر الثالث لمدخلها الثاني. بهذه الطريقة ، يمكنك الاستمرار في توصيل المزيد من الأزرار ، وإضافة مفتاح جديد لكل مفتاح لاحق. بالإضافة إلى ذلك ، يجب توصيل كل زر بمفتاح XOR منفصل وإدخال J لمشغل JK منفصل. قم بتوصيل إخراج المخزن المؤقت OR للإدخال الثاني لمفاتيح XOR ، وإخراج كل مفتاح XOR لإدخال K لمشغل JK المقابل. وهكذا ، بالضغط ، على سبيل المثال ، الزر 1 ، سيتم إرسال وحدة إلى J1 ، ولن يتم تشغيل XOR1 ، حيث يتم توفير وحدة لها من كل من الزر ومن المخزن المؤقت OR. عند الإخراج Q1 ، ستظهر وحدة أيضًا وسيتم حفظها. في نفس الوقت ، ستعمل XOR2 و XOR3 ، لتغذية الوحدة إلى K2 و K3. وإذا كانت هناك وحدة Q2 أو Q3 قبل ذلك ، فستتغير إلى صفر.

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

للصور ، قمت بإنشاء جداول الحقيقة. ولكن بما أن المرء يحتاج إلى إرسال واحد للصفوف في المصفوفة ، والصفر للأعمدة ، يجب عكس الجدول. لقد قمت بتدوين الشفرة الثنائية الناتجة في تشفير سداسي عشري لاستخدام أكثر ملاءمة في رسم اردوينو.
لبناء الدائرة بأكملها ، كنت أرغب في طلب لوحة منتهية. ولكن من قائمة الشركات المتاحة التي تقدم خدمات تصنيع الألواح المقلدة ، عُرض علي الخيار الأرخص بالنسبة لمجلس ثنائي مقابل 25 دولارًا تقريبًا. لا أعلم ، ربما هذه تكلفة عادية ، لكنها بدت لي كثيرًا. بالإضافة إلى ذلك ، ليس لدي أي خبرة في تصميم التخطيطات. وأجد عملية اللحام ممتعة للغاية ومهدئة. لذلك ، اشتريت لوحًا عالميًا ، ولفة من الأسلاك متعددة الألوان ، والمكونات الضرورية وجلست في التجمع لعدة أمسيات. لأن جميع المكونات تعمل على الجهد من 5V إلى 12V. من أجل الراحة ، صنعت بطارية 9V.
كيف يمكن رؤية كل شيء نتيجة لذلك هنا ، المخطط الكامل متاح على جيثب .
بصفتي "قلب" الدائرة بأكملها ، استخدمت مولد نبض. لم أكن متأكدًا من مدى تكرار نبض الساعة بالضبط ، لذلك استخدمت الدائرة الجاهزة مع التعديل. لسوء الحظ ، ليس لدي راسم ذبذبات ، ولكن من خلال مقارنة التعديلات وورقة بيانات الدائرة ، يتم استخدام حوالي 1 كيلو هرتز في مكان ما. هنا ، يوضح الفيديو كيف يتغير التردد من منخفض إلى أعلى ، يمكنك رؤية كيفية رسم صفوف المصفوفة.
شكرا لكم على اهتمامكم.