23年秋に,永松や津崎が作ったECGアンプを回収。波形を測定した。ブレッドボードの出来が悪い。手直ししてLT1167をAD8226 に入れ替えよう。


ピン配置は・・・ほう・・・。これはブレッドボード上で入れ替えられそうだね。ブレッドボードの配線を入れ替えて測定してみる。


こころなしかLT1167で測ったものよりきれいに感じる。・・・まぁちょっとわからないか。心電図回路の電源をコイン電池に変え,AD変換器を取り外し,コンピュータをnRf52840に入れ替えて測ると,無事に測れました。これで消費電流がどれくらいになってるのかわからないが,とりあえず動作するところまではきた。TLE2426が消費電流が多くコイン電池向きじゃないとのことで,変える必要がある。



nRf52840はちょっとクセがある。一度書き込むとシリアルポートが消失し,書き込めなくなる。これは,書き込んだプログラムがシリアル通信しない場合,「いらないよね?」とシリアル通信をOFFにされてしまうようだ。リセットボタンを二回早押しすると回復する。維持したい場合は,シリアル通信をプログラムに追加すればよいのだが,Adafruit_TinyUSBライブラリを入れないとダメなようだ。
#include <Adafruit_TinyUSB.h> // XIAO nRF52840系でSerialを使うため
// サンプリング間隔(マイクロ秒)
// 1000us = 1kHzサンプリング
const uint32_t SAMPLE_INTERVAL_US = 2000;
const uint32_t threshold = 1900;
uint32_t lastMicros = 0;
void setup() {
// LED(お好みで)
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, HIGH); // XIAOはHIGHで消灯のことが多い
// USBシリアル開始
Serial.begin(115200);
// 開発中はPC接続を待ってもよい
while (!Serial) {
delay(10);
}
// ADC分解能を12bitに(0〜4095)
analogReadResolution(12);
}
void loop() {
uint32_t now = micros();
// 一定間隔ごとにサンプリング
if (now - lastMicros >= SAMPLE_INTERVAL_US) {
lastMicros += SAMPLE_INTERVAL_US; // ドリフトを抑える書き方
// ADCチャネル0(A0ピン)の読み取り
int value = analogRead(A0);
// タイムスタンプ[us], ADC値 をCSV形式で送信
//Serial.print(now); // マイクロ秒タイムスタンプ
//Serial.print(",");
Serial.print(3000);
Serial.print(",");
Serial.print(1000);
Serial.print(",");
Serial.print(threshold);
Serial.print(",");
Serial.println(value); // 0〜4095(12bit)
if(value>threshold){digitalWrite(LED_BUILTIN, LOW); }
else{digitalWrite(LED_BUILTIN, HIGH); }
}
}