Skip to the content
PCBKitNew board
2 layers95 × 60 mmPulseFlow - PCB, the printed circuit board in 3D

PulseFlow - PCB

HuibSmeets/PulseFlow1

Control a fan speed by heart rate

Size
95 × 60 mm
Copper layers
2
Thickness
1.6 mm
Parts
28
Nets
55
Pads
112
Tracks, vias
175, 2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
20 Nov 2024
Updated
15 Dec 2024

Overview

PulseFlow - PCB is an open-source printed circuit board by HuibSmeets, from the HuibSmeets/PulseFlow repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 95 × 60 mm with 28 parts on 55 nets, routed with 175 tracks and 2 vias.

It is built around the BT136-600E, IRM-03-9 and MOC3021, with the SFH620A-3 and ULN2003A among its other parts. Its parts include 12 resistors, 3 ICs, 3 connectors, 2 capacitors and 1 transistor. It belongs with the radio and wireless and sensors and measurement boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

5

README

README.md

PulseFlow

Control the speed of a cooling fan with your heart rate while riding/using your indoor trainer.

Alt text Image: Prototype, work in progress

Description

PulseFlow is a small Arduino sketch that connects via BLE to a HR fitness sensor like those from Garmin, Wahoo and others. The fan is connected to a PWM controllable AC dimmer or a dimmer that exposes 2 pins: Output Zerocross detection, input triac trigger. These AC dimmers can be sourced from marketplaces like AliExpress.

Warning

BE AWARE THAT YOU'LL BE WORKING WITH DEADLY LIVE VOLTAGES. TAKE APPROPRIATE SAFETY MEASURES WHEN CONNECTING PARTS AND WHILE USING THE DEVICE YOU CREATED.

Limitations

  • Your HR sensor must allow for multiple BLE connections as your trainer software/device will possiby have to connect to the sensor too using BLE (Garmin HR-Dual sensor supports multiple BLE connections)
  • Sensor pairing is hardcoded, see the sourcecode
  • Use a fan that has no electronic speed control of it's own.
  • The HR to fan speed mapping is hardcoded, see the sourcecode
  • In case of a PWM controlled dimmer:
    • The PWM signal is available on pin D6 (Arduino numbering)
    • Code to generate the PWM is Nano 33 BLE specific
  • In case of zero-cross/triac trigger dimmer:
    • Pin 2 (Arduino numbering) is used to detect the zero-crossing (interupt)
    • The triac trigger pulse is available on pin D6 (Arduino numbering)
    • The delay implementation between the zero-crossing and the triactrigger is Nano 33 BLE specific
  • As the NANO is a 3.3V device the AC dimmer you use must be 3.3v tolerable/compatible (or add levelshifting)
  • Installing the various parts in a metal of shielded housing can influense the BLE RF signal

Possible enhancements

  • Do away with hardcoded pairing
  • Create an UI (e.g. a 2-Line display and rotary encoder) for pairing, map settings.
  • Alternate fan speed mapping methods (speed, power,...).

Change Log

in development (main)

  • code cleanup
  • added battery level check
  • delayed switch off

v1.1.0

  • added code for 2nd type of dimmer

v1.0.0

  • Initial release

Parts

28
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_3.2mm_M3_ISO14580H1, H2, H3, H4
34K7Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR5, R11, R12
215K/1WResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR7, R8
2290RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2, R3
2Screw_Terminal_01x04TerminalBlock_Phoenix:TerminalBlock_Phoenix_MPT-0,5-4-2.54_1x04_P2.54mm_HorizontalJ1, J2
10.01 uF/400VCapacitor_THT:C_Rect_L10.0mm_W4.0mm_P7.50mm_FKS3_FKP3C4
10.05uF/400VCapacitor_THT:C_Rect_L13.0mm_W6.0mm_P10.00mm_FKS3_FKP3_MKS4C3
1330RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
1360RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR4
1360R/1WResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR6
139R/1WResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR10
1470R/1WResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR9
1Arduino_Nano_33_BLE_Rev2MyFootPrints:Arduino_Nano_WithMountingHolesARD1
1BT136-600Package_TO_SOT_THT:TO-220-3_VerticalQ1
1Heatsink_PadMyFootPrints:Heatsink_Fischer_SK-431-1x25mmHS1
1IRM-03-9Converter_ACDC:Converter_ACDC_MeanWell_IRM-03-xx_THTPS1
1MOC3021Package_DIP:DIP-6_W7.62mmU2
1SFH620A-3Package_DIP:DIP-4_W7.62mmU3
1Screw_Terminal_01x04TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-4-5.08_1x04_P5.08mm_HorizontalJ3
1ULN2003APackage_DIP:DIP-16_W7.62mmU1

Questions

How big is the PulseFlow - PCB PCB?

It measures 95 × 60 mm and has 2 copper layers, 1.6 mm thick.

What parts does the PulseFlow - PCB use?

28 parts, built around the BT136-600E, IRM-03-9, MOC3021 and SFH620A-3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the PulseFlow - PCB KiCad files?

From the HuibSmeets/PulseFlow repository on GitHub, at the commit this page was made from: the board is pcb/PulseFlow - PCB.kicad_pcb and its schematic pcb/PulseFlow - PCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the PulseFlow - PCB design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers100 × 80 mmSmart Home Controller, the printed circuit board in 3D

    Smart Home Controller

    Ajith-Anand-R/Smart-Home-Controller

    Full-stack IoT home automation system with ESP32 firmware, Google Apps Script backend, web dashboard, and Flutter mobile app.

    11 parts1MIT
  • 2 layers100 × 73.5 mmSmart Socket Final Version, the printed circuit board in 3D

    Smart Socket Final Version

    KevinAR-18/EcoLab-Dashboard

    EcoLab Dashboard is a smart laboratory EcoLab desktop application for real-time monitoring and control of laboratory devices within the UGM network.

    45 parts
  • 2 layers168 × 150 mmAZTEC motherboard, the printed circuit board in 3D

    AZTEC motherboard

    awarsewa/aztec

    Bringing a 1976 pinball machine back to life

    310 parts3GPL-3.0
  • 4 layers70 × 143 mmIoBoard, the printed circuit board in 3D

    IoBoard

    Loic74650/ioBoard

    A relay (and more!) board with Ethernet connectivity and MQTT support

    206 parts3GPL-3.0
  • 2 layers100 × 75 mmSousvide, the printed circuit board in 3D

    Sousvide

    gregorv/sousvide

    Hardware and software for an ATmega8 based Sous-Vide temperature controller

    66 partsGPL-3.0
  • 2 layers30.5 × 19 mmTeleinfo bridge, the printed circuit board in 3D

    Teleinfo bridge

    tiramiseb/domotego_pcbs

    Helpful PCBs for DIY home automation

    8 parts1
  • 2 layers82 × 124 mmControl, the printed circuit board in 3D

    Control

    Jonny999999/electric-kart

    Firmware and pcb's for custom built electric kart

    64 parts