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

التحكم اليدوي الآلي مع مخطط كهربية العضل: 7 خطوات
التحكم اليدوي الآلي مع مخطط كهربية العضل: 7 خطوات

فيديو: التحكم اليدوي الآلي مع مخطط كهربية العضل: 7 خطوات

فيديو: التحكم اليدوي الآلي مع مخطط كهربية العضل: 7 خطوات
فيديو: قراءة المخطّطات الكهربائيّة | الجزء الأول م محمد الشرقاوى 2024, يوليو
Anonim
Image
Image
اقتناء الإشارة
اقتناء الإشارة

يوضح هذا المشروع التحكم في اليد الروبوتية (باستخدام اليد مفتوحة المصدر inMoov) مع 3 أجهزة uECG مفتوحة المصدر تستخدم لقياس ومعالجة نشاط العضلات (مخطط كهربية العضل ، مخطط كهربية العضل). فريقنا لديه قصة طويلة بأيديهم وسيطرتهم ، وهذه خطوة جيدة في الاتجاه الصحيح:)

اللوازم

3x uECG أجهزة 1x Arduino (أنا أستخدم Nano لكن معظم الآخرين سيعملون) 1x nRF24 وحدة (أي واحد عام سيفعل) 1x PCA9685 أو محرك سيرفو مشابه 1x inMoov hand 5x أجهزة كبيرة (انظر تعليمات inMoov للأنواع المتوافقة) 1x 5V مزود طاقة قادر على 5A أو أكثر الحالية

الخطوة 1: اكتساب الإشارة

يعتمد التحكم على مخطط كهربية العضل - النشاط الكهربائي للعضلات. يتم الحصول على إشارة EMG بواسطة ثلاثة أجهزة uECG (أعلم أنه من المفترض أن تكون شاشة ECG ، ولكن نظرًا لأنها تستند إلى ADC عام ، فيمكنها قياس أي إشارات حيوية - بما في ذلك EMG). بالنسبة إلى معالجة مخطط كهربية العضل ، فإن uECG له وضع خاص يرسل فيه بيانات طيف ذات 32 حاوية ، ومتوسط "نافذة العضلات" (متوسط شدة الطيف بين 75 و 440 هرتز). تبدو صور الطيف مثل أنماط زرقاء وخضراء تتغير بمرور الوقت. التردد هنا على محور عمودي (على كل من 3 قطع ، تردد منخفض في الأسفل ، مرتفع في الأعلى - من 0 إلى 488 هرتز بخطوات ~ 15 هرتز) ، الوقت على أفقي (البيانات القديمة على اليسار بشكل عام هنا حوالي 10 ثوانٍ على الشاشة). يتم ترميز الكثافة باللون: أزرق - منخفض ، أخضر - متوسط ، أصفر - مرتفع ، أحمر - أعلى.

الخطوة 2: الإشارة المبسطة

إشارة مبسطة
إشارة مبسطة

للحصول على التعرف على الإيماءات بشكل موثوق ، يلزم إجراء معالجة مناسبة لجهاز الكمبيوتر لهذه الصور الطيفية. ولكن من أجل التنشيط البسيط لأصابع اليد الآلية ، يكفي فقط استخدام القيمة المتوسطة على 3 قنوات - يوفرها uECG بشكل ملائم عند حزم بايت معينة حتى يتمكن رسم Arduino من تحليلها. تبدو هذه القيم أبسط بكثير - لقد أرفقت مخططًا للقيم الأولية من Arduino's Serial Plotter. المخططات باللون الأحمر والأخضر والأزرق هي قيم أولية من 3 أجهزة uECG في مجموعات عضلية مختلفة عندما أضغط على الإبهام والخاتم والأصابع الوسطى في المقابل. من الواضح أن هذه الحالات مختلفة بالنسبة لأعيننا ، لكننا نحتاج إلى تحويل هذه القيم إلى "نقاط الإصبع" بطريقة ما حتى يتمكن البرنامج من إخراج القيم لتسليم الماكينات. المشكلة هي أن الإشارات من المجموعات العضلية "مختلطة": في الحالة الأولى والثالثة ، تكون شدة الإشارة الزرقاء متماثلة تقريبًا - لكن اللون الأحمر والأخضر مختلفان. في الحالتين الثانية والثالثة ، تكون الإشارات الخضراء هي نفسها - لكن الأزرق والأحمر مختلفان.

الخطوة 3: معالجة الإشارات

معالجة الإشارات
معالجة الإشارات

من أجل "فك خلط" هذه الإشارات ، استخدمت صيغة بسيطة نسبيًا:

S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)) ، حيث S0 - النتيجة للقناة 0 و V0 و V1 و V2 - القيم الأولية للقنوات 0 و 1 و 2 و a ، b ، c ، d - المعاملات التي قمت بتعديلها يدويًا (كانت a و c من 0.3 إلى 2.0 ، وكانت b و d 15 و 20 ، ستحتاج إلى تغييرها لضبط موضع المستشعر الخاص بك على أي حال). تم حساب نفس النتيجة للقناتين 1 و 2. بعد ذلك ، أصبحت الرسوم البيانية منفصلة تمامًا تقريبًا. للإيماءات نفسها (هذه المرة ، إصبع الخاتم ، الوسط ، ثم الإبهام) تكون إشارات واضحة ويمكن ترجمتها بسهولة إلى حركات مؤازرة فقط من خلال المقارنة مع العتبة

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

المخططات
المخططات

المخططات بسيطة للغاية ، فأنت تحتاج فقط إلى وحدة nRF24 أو PCA9685 أو وحدة تحكم I2C PWM مماثلة ومصدر طاقة عالي 5 فولت والذي سيكون كافيًا لنقل كل هذه الماكينات مرة واحدة (لذلك يتطلب طاقة مصنفة 5A على الأقل للتشغيل المستقر).

قائمة التوصيلات: nRF24 pin 1 (GND) - Arduino's GNDnRF24 pin 2 (Vcc) - Arduino's 3.3vnRF24 pin 3 (Chip Enable) - Arduino's D9nRF24 pin 4 (SPI: CS) - Arduino's D8nRF24 pin 5 (SPI: SCK) - Arduino's D13nRF24 pin 6 (SPI: MOSI) - Arduino's D11nRF24 pin 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GND العالي قنوات PCA 0-4 ، في الإبهام الخاص بي - القناة 0 ، السبابة - القناة 1 إلخ.

الخطوة 5: وضع مستشعرات مخطط كهربية العضل

وضع مجسات EMG
وضع مجسات EMG
وضع مجسات EMG
وضع مجسات EMG

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

الخطوة 6: الكود

قبل تشغيل البرنامج الرئيسي ، ستحتاج إلى معرفة معرّفات الوحدات الخاصة بأجهزة uECG الخاصة بك (يتم ذلك عن طريق إلغاء تعليق سطر 101 وتشغيل الأجهزة واحدًا تلو الآخر ، سترى معرف الجهاز الحالي من بين أشياء أخرى) وقم بتعبئتها في مجموعة unit_ids (السطر 37). بخلاف ذلك ، تريد أن تلعب بمعاملات الصيغة (الأسطر 129-131) وتحقق من شكلها على الراسمة التسلسلية قبل إرفاقها باليد الآلية.

الخطوة 7: النتائج

من خلال بعض التجارب التي استغرقت حوالي ساعتين ، تمكنت من الحصول على عملية موثوقة تمامًا (يُظهر الفيديو حالة نموذجية). لا يتصرف بشكل مثالي ومع هذه المعالجة يمكن فقط التعرف على الأصابع المفتوحة والمغلقة (ولا حتى كل من الخمسة ، فإنه يكتشف فقط 3 مجموعات عضلية: الإبهام والفهرس والوسط معًا والخاتم والأصابع الصغيرة معًا). لكن "AI" الذي يحلل الإشارة يأخذ 3 أسطر من التعليمات البرمجية هنا ويستخدم قيمة واحدة من كل قناة. أعتقد أنه يمكن عمل المزيد من خلال تحليل الصور الطيفية ذات 32 حاوية على جهاز الكمبيوتر أو الهاتف الذكي. أيضًا ، يستخدم هذا الإصدار 3 أجهزة uECG فقط (قنوات EMG). مع وجود المزيد من القنوات ، يجب أن يكون من الممكن التعرف على الأنماط المعقدة حقًا - ولكن حسنًا ، هذا هو الهدف من المشروع ، لتوفير نقطة انطلاق لأي شخص مهتم:) التحكم اليدوي ليس بالتأكيد التطبيق الوحيد لمثل هذا النظام.

موصى به: