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

اصنع أي مستشعر من FPGA: 4 خطوات
اصنع أي مستشعر من FPGA: 4 خطوات

فيديو: اصنع أي مستشعر من FPGA: 4 خطوات

فيديو: اصنع أي مستشعر من FPGA: 4 خطوات
فيديو: Laser Hair Removal at SEV✨ ( DISCLAIMER: This client was unshaven due to video purposes ) 2024, يوليو
Anonim
Image
Image
FPGA
FPGA

حاول معظم المصنّعين بناء مقياس حرارة مرة واحدة على الأقل في حياتهم ، ربما لا يكون المقياس الموجود في المنزل ذكيًا بما يكفي ، أو ربما يعتقدون أنه يمكنهم بناء NEST التالي. ومع ذلك ، في مرحلة ما ، كان لديهم متحكم دقيق مع أحدث برامجهم موصلاً بجهاز استشعار درجة الحرارة (وربما أجهزة استشعار أخرى: الضغط والضوء). حتى الآن كل شيء مثالي ، البرنامج قيد التشغيل والمستشعر يستشعر. دعونا نختبرها!

حسنًا … ربما يجب عليه تسخين المستشعر باستخدام مجفف الشعر وتبريده باستخدام الثلج ، فهو يعمل لبعض الوقت. لكن لا يبدو الأمر احترافيًا ، فالمستشعر يغير القيم بسرعة كبيرة إذا سخنته ، ولا يسخن أكثر من درجتين. المشروع هو تمثال نصفي! لكن الخوارزمية جديدة ، تأخذ في الاعتبار الكثير من العوامل ، يا له من عار أنه عالق في هذا الشيء الصغير الغبي.

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

في لحظة كتابة هذا ، يمكن أن تعمل FPGA مثل LM75 مع بيانات درجة الحرارة المخزنة في BRAM (على FPGA).

الخطوة 1: MCU

MCU المفضل لدي هو LPC4337 على LPCXpresso. علاوة على ذلك ، لدي درع (LPC General Purpose Shield) مع شاشة وجهاز استشعار LM75 حقيقي. LPC4337 هو ARM Cortex M4 يعمل بسرعة 200 ميجا هرتز و Cortex M0 أصغر (غير مستخدم هنا). يتم توصيل المستشعر الحقيقي بالطرف I2C1 وسيتم توصيل المستشعر الافتراضي الخاص بنا بـ I2C0. المصدر متاح على جيثب الخاص بي.

كيف نبنيها؟ قم بتنزيل LPCXpresso IDE مع مكتبة LPCOpen. قم باستيراد تلك المكتبة إلى IDE وافتح المشروع أيضًا من GitHub. يجب تكوين كل شيء ويمكنك النقر فوق "تصحيح" في الزاوية اليسرى السفلية.

يعتمد المشروع بأكمله على أحد أمثلة NXP (لإظهار أن مشروعي يحاكي مستشعرًا حقيقيًا ولا يحتاج إلى رمز خاص على جانب MCU). في الملف الرئيسي (يسمى iox_sensor.cpp) يكمن هذا الرمز:

#define SENSORS_ON_SHIELD

# إذا تم تعريفها (SENSORS_ON_SHIELD) # تعريف SHIELD_I2C I2C1 #elif محدد (SENSORS_ON_FPGA) # تعريف SHIELD_I2C I2C0 #endif

من خلال تغيير SENSOR_ON_SHIELD و SENSOR_OR_FPGA ، يكون المستخدم قادرًا على التبديل في وقت التجميع إلى أي مستشعر للتحدث ، الحقيقي أو الافتراضي ، كما هو الحال في دبابيس I2C مختلفة.

الخطوة 2: FPGA

لوحة FPGA المفضلة لدي هي Artix 7 من إنتاج Digilent ، بها Xilinx Arty 7. يتم استخدام اثنين من موصلات PMod ، أحدهما لتصحيح الأخطاء والآخر للحمولة الحقيقية ، الاتصال بلوحة MCU.

مرة أخرى ، يتوفر كود المصدر لـ FPGA على GitHub (مجلد fpgaSide).

كيف نبنيها؟ قم بتنزيل أو شراء أو فتح Xilinx Vivado IDE. قم باستيراد ملفات المشروع من GitHub. أحد الملفات (content.coe) هو بيانات درجة الحرارة بتنسيق خام والتي سيتم دفقها إلى المستشعر المزيف. يوجد أيضًا ملف Excel بنفس الاسم يساعد في تحويل بيانات درجة الحرارة القابلة للقراءة البشرية إلى بيانات LM75 أولية. أخطط لتغيير هذا إلى عملية آلية باستخدام جزء من البرنامج مكتوب بلغة Java ولكن حتى ذلك الحين يعمل هذا الحل. يجب أن يستغرق التركيب والتركيب بعض الوقت ، مع مراعاة ذلك.

الخطوة 3: كيف يعمل؟

كيف يعمل؟
كيف يعمل؟
كيف يعمل؟
كيف يعمل؟

كما قلت ، بالنسبة إلى MCU ، يبدو FPGA وكأنه مستشعر ، وبشكل أكثر دقة مستشعر I2C. يتم توصيل خرج I2C المحيطي بإدخال FPGA. يوجد داخل FPGA 3 مكونات رئيسية: - وحدة تحكم I2C - جهاز I2C - البيانات تستقبل وحدة التحكم I2C بيانات I2C من دبابيس FPGA وترسلها إلى بقية FPGA وتقوم بنفس الأمر بترتيب عكسي. يحتفظ بجهاز حالة داخلي لبروتوكول I2C (بالمناسبة ، إليك الوثائق الخاصة به). ماذا يرسل هذا المكون إلى جهاز I2C؟ البايت المستلم حاليًا ، موضع هذا البايت في الاتصال الحالي وما إذا كانت MCU تكتب أو تقرأ من FPGA. يستقبل جهاز I2C البايتات المرسلة ويقوم بتحديث البنية الداخلية المحاكية لجهاز الاستشعار. قد يقوم فقط بتحديث مؤشر التسجيل أو طلب بيانات جديدة من مصدر البيانات. يقوم مكون البيانات بدفق نقاط البيانات الجديدة. في الوقت الحالي ، هي مجرد ذاكرة ROM يتزايد عنوانها (تقريبًا) مرتين في الثانية.

ما هو هدفي النهائي؟ يظهر في الصورة الثانية. وهذا يعني: إتاحة إمكانية محاكاة المزيد من أجهزة I2C (المستشعرات وغيرها) في نفس الوقت داخل FPGA. يتم تخزين البيانات الموجودة في الواجهة الخلفية لجهاز الاستشعار مؤقتًا في FPGA وتدفقها من الكمبيوتر عبر USB أو Ethernet. دعم المزيد من أجهزة الاستشعار المتقدمة وأجهزة I2C الأخرى (الذاكرة ، برامج تشغيل LED ، إلخ).

الخطوة 4: وضع كل ذلك معًا

ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا
ضع كل شيء معا

حان الوقت لربط كل شيء ببعضه البعض. من الناحية النظرية ، الأمر بسيط: تحتوي لوحة mcu على موصل PMod (I2C0 & SSP0 (يمكن أن يعمل مثل SPI)). تحتوي لوحة Artix على 4 موصلات PMod يمكن استخدامها كيفما تشاء. اخترت الموصل D للتحدث إلى MCU والموصل B للاتصال بـ Logic Analyzer.

تحذير

لا يمكنك توصيل اللوحين معًا بهذه الطريقة. لماذا ا؟ تم إنشاء PMod لتسهيل توصيل لوحة رئيسية / مضيفة (تمنح الطاقة) بلوحة تابعة / مستشعر (تستقبل الطاقة). ولكن في هذا المشروع ، تمنح كلتا اللوحتين الطاقة ، وإذا قمت بتوصيل خرج 3.3 فولت من لوحة واحدة بإخراج 3.3 فولت للوحة الأخرى ، فقد تحدث أشياء سيئة. لكنها قد لا تفعل ذلك ويمكنك فقط تغيير معلمات قضبان الطاقة الخاصة بـ FPGA (تم تصميمها بعناية فائقة). لذلك لا تخاطر بتحريك الموصل بمقدار دبوس واحد إلى اليسار (وقم أيضًا بقلب لوحة FPGA) كما هو موضح في الصور أعلاه. ها هي مواصفات PMod ، يمكنك دراستها ، ما فعلته بكلمات قصيرة هو عدم توصيل VCCs للوحين.

موصى به: