Datasheet & Pinout: Pulse Sensor (Optisk Pulsmåler)

🫀 Pulse Sensor (Optisk Pulsmåler)

Den lille runde sensor lyser grønt ind i din fingerspids eller øreflip og måler, hvor meget lys der kommer tilbage. Hver gang hjertet slår, ændres blodmængden i hudens små kar – og dermed lyset. En indbygget forstærker gør det til en analog "puls-bølge" på signalbenet.

Vores modul er bygget efter det åbne Pulse Sensor-design. Til smartwatch-projekter, LED'er der blinker i takt med hjertet, eller bare for at se din egen puls i Serial Plotter.

🛒 Køb pulsmåler 📄 Datasheet for det originale design (PDF)

Det er et sjovt maker-modul – ikke medicinsk udstyr. Brug det ikke til at vurdere helbred.

⚡ Hurtige specifikationer

Parameter Værdi
Måleprincip PPG (fotopletysmografi) med grøn LED
Typiske komponenter APDS-9008 lyssensor + MCP6001 op-amp + filter
Forsyning 3,0–5,5 V DC
Strømforbrug ca. 4 mA
Udgang Analog, hviler omkring VCC/2 og svinger med pulsen
Tilslutning 3 lodde-pads/ledninger: S (signal), + (VCC), − (GND)

📌 Pinout

Pin Navn Funktion Forbindes til
S Signal Analog puls-signal A0 (UNO/Nano) / GPIO36 (ESP32)
+ VCC Forsyning 3–5,5 V 5V (UNO/Nano) eller 3V3 (ESP32)
− GND Stel GND

Mærkningen S, + og − står på bagsiden af printet. Følger der ledninger med, varierer farverne – tro på mærkningen, ikke på farven.

🔌 Sådan forbinder du den

Pulse Sensor Arduino UNO / Nano ESP32 (DevKit)
+ 5V 3V3
− GND GND
S A0 GPIO36 (ADC1)

På ESP32 kører sensoren på 3,3 V, så signalet passer direkte. Brug en ADC1-pin (GPIO32–39), og husk at tærskelværdien skal skaleres til 12-bit (0–4095).

💻 Eksempelkode

Bibliotek: "PulseSensor Playground" (søg i Library Manager)

#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>

const int PULS_PIN = A0;
const int LED_PIN = 13;
int taerskel = 550;        // juster efter din Serial Plotter-kurve

PulseSensorPlayground pulsSensor;

void setup() {
  Serial.begin(115200);
  pulsSensor.analogInput(PULS_PIN);
  pulsSensor.blinkOnPulse(LED_PIN);
  pulsSensor.setThreshold(taerskel);
  if (pulsSensor.begin()) {
    Serial.println("Pulsmåler klar - læg fingeren let på");
  }
}

void loop() {
  if (pulsSensor.sawStartOfBeat()) {
    int bpm = pulsSensor.getBeatsPerMinute();
    Serial.print("Hjerteslag! BPM: ");
    Serial.println(bpm);
  }
  delay(20);
}

Biblioteket har også eksemplet GettingStartedProject, der viser den rå kurve i Serial Plotter – start der, så du kan se, hvor din tærskel skal ligge.

💡 KompoNemt-tip fra værkstedet

  • Isolér printet: Bagsiden og forsiden skal isoleres (fx med klar neglelak, vinylklistermærke eller varmlim over komponenterne). Ellers kortslutter sved og fingre signalet.
  • Let tryk: Pres for hårdt, og du klemmer blodet væk. Lige nok til at sensoren ligger stille.
  • Hold dig i ro: Bevægelse og omgivende lys giver mere støj end selve pulsen. Et stykke velcro eller en fingerclip gør underværker.
  • Bløde ledninger: Til wearables så lod tynde silikoneledninger direkte på pads i stedet for stive stiftlister.

🔧 Fejlfinding

  • Vilde BPM-tal: Tærsklen er forkert. Kig på kurven i Serial Plotter og sæt tærsklen lidt over midterlinjen.
  • Flad kurve: Tjek S/+/− og at LED'en lyser grønt.
  • Kurven er kun støj: Printet er ikke isoleret, eller sensoren bevæger sig. Isolér og fiksér.
  • Kompilerfejl på ESP32: Opdatér PulseSensor Playground til nyeste version – ældre versioner understøtter ikke alle boards med interrupts.

Sidder du fast? Skriv til os – vi hjælper gerne.