Elektromyografie
Die Elektromyografie (kurz EMG) ist eine elektrophysiologische Methode in der neurologischen Diagnostik, bei der die elektrische Muskelaktivität anhand von Aktionsströmen der Muskeln gemessen und dargestellt wird.
Auch diese Messmethode habe ich mit einem Arduino umgesetzt. Die etwas aufwendigere Schaltung mit dem ICL7660, AD620 und TL084 ist unten abgebildet. Es werden insgesamt 3 Körperelektroden benötigt. Diese (Pads und Kabel) können günstig über ebay bezogen werden. Das Ausgangssignal des TL084 wird mit einem analogen Input des Arduino (z.B. A7) verbunden.
Zur Visualisierung der Muskelaktivität dient eine LED-Reihe. Je nach Aktivität/Eingangsspannung wird eine bestimmte LED angesteuert. Dieses EMG lässt sich etwa sehr gut mit meiner Arduino-Roboterhand kombinieren. Somit könnte man die Hand/Prothese rein nur mittels Muskelaktivität steuern.
Arduino-Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
int sensorPin = A7; // select the input pin for the signal from the TL084 int muscle_value; void setup() { // Start the hardware serial. Serial.begin(9600); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { muscle_value = analogRead(sensorPin); Serial.print("muscle = "); Serial.println(muscle_value); muscle_value = map(muscle_value,0,1024,0,100); if ((muscle_value >= 0) && (muscle_value < 10)) { digitalWrite(2, HIGH); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); } if ((muscle_value >= 10) && (muscle_value < 20)) { digitalWrite(2, LOW); digitalWrite(3, HIGH); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, LOW); } if ((muscle_value >= 20) && (muscle_value < 30)) { digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, HIGH); digitalWrite(5, LOW); digitalWrite(6, LOW); } if ((muscle_value >= 30) && (muscle_value < 40)) { digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, HIGH); digitalWrite(6, LOW); } if (muscle_value >= 40) { digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); digitalWrite(6, HIGH); } } |