Enviolo (Nuvinci) + Arduino für Rollstuhl

Chapeau für Dein Durchhaltevermögen!

Ich würde das Pferd andersherum aufzäumen: Erst den Motorsketch vernünftig programmieren, dann HX711 ergänzen. Kernproblem scheint mir die Messung der Impulse während delay(500); zu sein. Damit verträgt sich keine andere Aktivität.

Erster Schritt zur Lösung ist also die Zeitmessung mit millis(). Der Herzschlag soll die scheinbare Gleichzeitigkeit verdeutlichen:

const int SensorPin = 2;  //Interrupt Pin (nur 2 oder 3 @ Arduino Uno)
const uint32_t MESSINTERVALL = 500;
volatile unsigned int counter;
bool neuerwert = false;
bool Normalbetrieb = LOW;

void setup() {
  Serial.begin(9600);
  Serial.println("\nStart");
  pinMode(SensorPin, INPUT); //definiertes Potenzial (HIGH/LOW) von einem Hall-Sensor
  attachInterrupt(digitalPinToInterrupt(SensorPin), count_isr, CHANGE);
  Normalbetrieb = HIGH;
}
void loop() {
  motorMatik();
  herzschlag();
}

void count_isr () {
  counter++;
}

void motorMatik () {
  uint32_t jetzt = millis();
  static uint32_t vorhin = 0;
  static unsigned int zaehler = 0;

  if (Normalbetrieb) {
    if (jetzt - vorhin >= MESSINTERVALL) {
      vorhin = jetzt;
      zaehler = counter;
      counter = 0;
      Serial.print("\t Zaehlerstand: ");
      Serial.println(zaehler);
    }
  }
}

void herzschlag() {
  pinMode(LED_BUILTIN, OUTPUT);    // interne LED für Testzweke aktiviert
  uint32_t jetzt = millis();
  static uint32_t vorhin = 0;
  const uint32_t BLINKZEIT = 111;  // Primzahl

  if (jetzt - vorhin >= BLINKZEIT) {
    vorhin = jetzt;
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
  }
}

Wäre das eine Grundlage für weitere Überlegungen?

Bist Du sicher, es handelt sich um die Drehzahl? Mit analogWrite wird eine feste Frequenz von 490 Hz ausgegeben, die 30 gibt das Puls-Pausenverhältnis an. Brushlessmotoren werden mit einem Signal wie Servos angesteuert, Takt und Richtung erinnern mich doch stark an Schrittmotoren, was ich für ein Getriebe auch sinnvoll fände.