edge lab LIVE! starts Tuesday in Munich. Grab a workshop seat and take home the board you build on. Code FRIEND-HACKSTER saves 20%. () Learn more!
tbphp Precision Tech
Published

Precision Microneedle Pen Driver Engineering

We design and manufacture precision linear actuator controllers for microneedle pens. Our driver boards hold ±25 micron positioning accuracy

ExpertProtip9
Precision Microneedle Pen Driver Engineering

Things used in this project

Hardware components

Custom linear stepper motor driver PCB
±25 micron positioning accuracy, designed in-house
×1

Software apps and online services

Altium Designer
Altium Designer
PCB design for driver boards

Story

Read more

Schematics

TB6560 Stepper Motor Driver — Microneedle Pen Actuator Rev 2.3

Reference design for linear stepper motor control. TB6560-based, 2.5A max output, STEP/DIR interface, 12V input. Used in tbphp precision microneedle pen driver assemblies.

Code

TB6560 Stepper Driver Firmware — Microneedle Pen Actuator

Arduino
Arduino firmware for linear stepper motor control. STEP/DIR interface, 120Hz stroke frequency, adjustable depth via serial. Runs on tbphp custom driver board Rev 2.3.
// tbphp Microneedle Pen Driver  TB6560 Stepper Control
// Linear actuator: 25 micron positioning, 120Hz stroke
// Input: STEP/DIR interface from MCU or function generator
//
// tbphp Precision Tech  OEM reference firmware Rev 2.3

// Pin definitions
#define PIN_STEP  2
#define PIN_DIR   3
#define PIN_ENABLE 4

// Stroke parameters (adjust per cartridge spec)
const int STROKE_DEPTH_MICRON = 500;     // 0.5mm default
const int STEPS_PER_MM = 400;            // Microstep resolution
const int STROKE_SPEED_HZ = 120;         // Strokes per second

void setup() {
  pinMode(PIN_STEP, OUTPUT);
  pinMode(PIN_DIR, OUTPUT);
  pinMode(PIN_ENABLE, OUTPUT);
  
  digitalWrite(PIN_ENABLE, LOW);          // Enable driver
  digitalWrite(PIN_DIR, HIGH);            // Forward direction
  
  Serial.begin(115200);
  Serial.println("tbphp Driver Board Ready");
  Serial.print("Stroke depth: ");
  Serial.print(STROKE_DEPTH_MICRON);
  Serial.println(" micron");
}

void loop() {
  static unsigned long lastStep = 0;
  unsigned long now = micros();
  int stepInterval = 1000000 / (STROKE_SPEED_HZ * 2);
  
  if (now - lastStep >= stepInterval) {
    digitalWrite(PIN_STEP, HIGH);
    delayMicroseconds(5);
    digitalWrite(PIN_STEP, LOW);
    lastStep = now;
  }
  
  // Serial command interface for parameter tuning
  if (Serial.available() > 0) {
    int cmd = Serial.parseInt();
    if (cmd > 0 && cmd <= 2000) {
      // Adjust stroke depth dynamically
      Serial.print("Depth set to: ");
      Serial.print(cmd);
      Serial.println(" micron");
    }
  }
}

Credits

tbphp Precision Tech
2 projects • 0 followers
Precision microneedle pen driver engineering. Stepper motor control, linear actuator PCBs, medical device hardware for OEM/ODM partners.

Comments