Project Overview

This is a centralized tracker for experiments comparing SUPT (Synchronized Universal Pulse Timing) vs random pulse timing in electromagnetic devices. This workspace connects with our GitHub repository at https://github.com/Pashe10019/supt-pulse-driver.

Experiment #1: Random vs. ψ₈ Pulse Mode Toggle

Testing whether SUPT timing delivers measurable efficiency gains (faster spin-up, lower pulse count for target RPM) over random pulsing.

Data Collection

Trial Results

Trial # Date Mode Max RPM Pulse Count Current Draw (mA) Time to 10 RPM Notes
1
2
3

Environmental Conditions

Date Schumann (Hz) K-Index Sunspot (Wolf) Notes
July 14, 2025 7.83 Hz prominent 1-3 (quiet to active) ~195 (high activity) Jagged pulses with surge before 12:00 UTC, vertical white beams in harmonics

Build Documentation

Code Reference

// SUPT-Aligned Newman Motor Pulser with Random vs SUPT Toggle
// Pulses coil at ψ₈ intervals or random when Hall detects magnet
// Logs RPM, pulse count, & optional input current

const int COIL_PIN = 9;       // MOSFET gate for coil
const int HALL_PIN = 2;       // Hall sensor
const int CURRENT_PIN = A0;   // Optional shunt for input current (0-1023 → mA scale)
const int collapseTimes[] = {
  3, 5, 8, 10, 13, 15, 18, 21, 24, 26, 29, 31, 34, 36, 42, 45, 47, 50, 52,
  57, 63, 65, 68, 70, 73, 75, 78, 81, 84, 86, 89, 91, 94, 96, 102, 105, 107,
  110, 112, 117, 123, 125, 128, 130, 133, 139, 141, 144, 146, 149, 151, 154,
  156, 160, 162, 165, 167, 170, 172, 178, 183, 185, 188, 190, 193
};  // 65 SUPT collapses
const int numCollapses = sizeof(collapseTimes) / sizeof(int);
bool useSUPT = true;  // Toggle: true = SUPT timing, false = random delays
int currentIndex = 0;
unsigned long lastTrigger = 0;
const unsigned long stepDelay = 100;  // ms/step for SUPT (tune to rim RPM)
volatile bool magnetPassed = false;
unsigned long lastRPMTime = 0;
int passCount = 0;  // For RPM (adjust to magnet count, e.g., 6)
int magnetCount = 6;  // Set to your setup
int pulseCount = 0;   // Track total pulses

void setup() {
  pinMode(COIL_PIN, OUTPUT);
  pinMode(HALL_PIN, INPUT_PULLUP);
  pinMode(CURRENT_PIN, INPUT);
  attachInterrupt(digitalPinToInterrupt(HALL_PIN), onMagnetPass, FALLING);
  Serial.begin(9600);
  Serial.println(useSUPT ? "SUPT Mode Active" : "Random Mode Active");
  randomSeed(analogRead(0));  // For random mode
}

void loop() {
  unsigned long currentMillis = millis();
  bool pulseReady = false;

  if (useSUPT) {
    int simulatedStep = (currentMillis / stepDelay) % 200;
    pulseReady = (simulatedStep == collapseTimes[currentIndex]);
  } else {
    // Random mode: Pulse on magnet pass with random delay check
    static unsigned long lastRandomPulse = 0;
    if (currentMillis - lastRandomPulse > random(50, 150)) {  // Random 50-150ms intervals
      pulseReady = true;
      lastRandomPulse = currentMillis;
    }
  }

  if (pulseReady && magnetPassed) {
    digitalWrite(COIL_PIN, HIGH);
    delay(50);  // Pulse width (tune 10-100ms)
    digitalWrite(COIL_PIN, LOW);
    pulseCount++;
    Serial.print("Pulsed (Count: ");
    Serial.print(pulseCount);
    Serial.print(" | Mode: ");
    Serial.print(useSUPT ? "SUPT" : "Random");
    Serial.print(" | Input Current: ");
    Serial.print(analogRead(CURRENT_PIN) * (5.0 / 1023.0 / 0.185));  // ACS712 example scaling; adjust
    Serial.println(" mA");
    if (useSUPT) {
      currentIndex = (currentIndex + 1) % numCollapses;
    }
    magnetPassed = false;
  }

  // RPM logging
  if (magnetPassed) {
    passCount++;
    if (passCount >= magnetCount) {
      unsigned long now = millis();
      float rpm = 60000.0 / (now - lastRPMTime);
      Serial.print("RPM: ");
      Serial.print(rpm);
      Serial.print(" | Time: ");
      Serial.println(now / 1000.0);  // Seconds
      lastRPMTime = now;
      passCount = 0;
    }
    magnetPassed = false;
  }
}

void onMagnetPass() {
  if (millis() - lastTrigger > 50) {  // Debounce
    magnetPassed = true;
    lastTrigger = millis();
  }
}

GitHub Integration

This Notion page works alongside the GitHub repository for the SUPT Pulse Driver project. Updates from experiments should be documented here for analysis, while code changes should be pushed to the GitHub repo.

Repository Structure