Аналоговое значение датчика пульса сердца не меняется даже при нажатии на датчик пальцем

Недавно я купил датчик пульса сердца. Затем, чтобы проверить, правильно ли работает датчик, я загрузил этот код ниже:

void setup() {
 
 Serial.begin(9600);
}


void loop() {
 int sensorValue = analogRead(A0);
 
 Serial.println(sensorValue);
 delay(1);        // задержка между чтениями для стабильности
}

Я знаю, что этот код не вычисляет фактический BPM. Он отправляет значение датчика 380-400 через Последовательный монитор, пока сенсор не нажимается пальцем. Но когда я нажимаю его с мой палец, значение датчика даже не выходит из диапазона 380-400. Но значение датчика должно было превысить 500, когда произошло биение.

Я думаю, это, вероятно, означает, что мой датчик не может обнаружить биения. А теперь мой вопрос, почему мой датчик не может обнаружить удары?

Посмотрев несколько форумов, я узнал, что этот датчик может быть клоном. После просмотра моего датчика осторожно, я обнаружил небольшие отличия в моем датчике от датчиков, которые другие люди использовали в своих учебники. И наиболее заметными отличиями были: * цвета предварительно припаянных перемычек моего датчика отличались от цветов других датчиков. *"pulsesensor.com" на других датчиках было написано, а на моем датчике не было написано

Были и другие отличия. Ниже я привел три изображения своего датчика пульса.

Мои последние вопросы:-

  1. Почему мой датчик пульса не может определить удары?
  2. Является ли мой датчик пульса клоном или нет?
  3. Если это клон, можно ли его как-то исправить?
  4. Нужно ли покупать еще один?

Это все, что я знаю. Может кто-нибудь помочь мне! Любая помощь приветствуется.

Большое спасибо!

, 👍1

Обсуждение

как он подключен к уно?, @Juraj

Датчик пульса + к Arduino 3.3v (Также пробовал с 5v), датчик пульса - к Arduino GND и, наконец, сигнальный контакт датчика пульса к контакту A0 Arduino, @Shams Sulaiman Fida

Для выполнения Serial.print требуется время... печать только в том случае, если значение датчика > 500, @jsotola

Используйте 5 В, если вы используете 3,3 В, ваш АЦП Vref будет неправильным., @hcheung

Заглядывали ли вы на сайт pulsesensor.com/ для получения дополнительной информации о вашем датчике? Особенно обратите внимание на эту страницу: https://pulsesensor.com/pages/getting-advanced, где рекомендуется использовать скорость 115200 бод, «иначе вы ничего не увидите». Я не знаю этот датчик - вы пробовали трогать любую сторону? Попробовал пример кода с сайта (хотя ваш код мне нравится...)., @JRobert


1 ответ


1

Почему мой датчик пульса не может определить удары?

Возможно, что-то не так. Единственный способ сказать, что именно, — продолжать отладку. Если у вас нет доступа к осциллографу или мультиметру, это потребует проверки вашей проводки и изменения кода. Чтобы проверить проводку, убедитесь, что:

  1. Минус (-) означает заземление
  2. Плюс (+) к вашему + напряжению
  3. S соответствует A0.

Является ли мой датчик пульса клоном или нет?

Возможно. Аппаратное обеспечение с открытым исходным кодом обычно имеет множество клонов.

Если это клон, можно ли его как-то исправить?

Клоны продаются многократно, если они работают. Нет смысла делать датчик-клон, который этого не делает — если бы речь шла о мошенничестве, можно было бы отправлять пустые конверты. Если два разных человека делают одну и ту же электронику, мы надеемся, что они будут вести себя одинаково, независимо от того, кто их сделал.

Нужно ли покупать еще один?

Возможно, но маловероятно. Если вы сможете доказать, что ваш датчик неисправен, продавец может отправить вам замену.

Попробуйте следующий код, чтобы проверить датчик. Я предполагаю, что вы что-то упускаете из-за последовательного спама. Кроме того, измерение пульса может оказаться сложной задачей — неумелый человек может легко объявить некоторых живых мертвыми уже по запястью. Я предлагаю приложить его к горлу, чтобы быть в безопасности.


int minSV;
int maxSV;
unsigned int Frame;

void setup() {
 minSV=500;
 maxSV=0;
 Serial.begin(9600);
}


void loop() {
 int sensorValue = analogRead(A0);
 if(sensorValue > maxSV) maxSV = sensorValue;
 if(sensorValue < minSV) minSV= sensorValue;
 Frame = Frame +1;
 if(Frame > 10000) //would be 1s if frame takes 0.1 ms
 {
  //might want to reset min and max here after debug is complete and sensor is verified to work.  Until then, reset the arduino to reset min and max.
  Frame =0;
  Serial.print("Min: ");
  Serial.print(minSV);
  Serial.print("; Max: ");
  Serial.println(maxSV);
 }
 // removed: delay(1);        // delay in between reads for stability
}
,