Problem Freqmeasure Störsignale Impulse Arduino Defekt??!

Ich hab ein Problem mit Freqmeasure.

Ich hab schon mit 2 verschiedenen signalgeneratoren nachgemessen und dort keine störimpulse entdeckt.

Schliesse ich den DDS Signal generator an mein programm vom arduino, erhalte ich unregelmässige störfrequenzen, was meine funktion, eine LED die Frequenzabhängig leuchtet, zum leuchten bringt! Sporadisch mal 10 sek nichts. dann 3x all sekunde ein Störimpuls.
Signal des Rechteckimpulses liegt unter 5v. Pullup aktiviert im Sketch, auf pin D8 für arduino uno s und nanos.

Woher können die störimpulse kommen? Wen ich den Signalgenerator trenne sind auch keine Störungen mehr da. wen ich das signal messe treten keine störungen auf. wen ich vom signalgenerator das signal ca unterhalb 70Hz lege, sind auch keine störungen vorhanden.
Ist der arduino nano defekt?

Ich benötige nur etwa ein Signal von 0 bis max 350 Hz für meine Funktion.
Habe die Störimpulse auch im Serial Monitor gesehen, mal bis zu 2000Hz ausschläge und ich hatte 113Hz für meine LED Blink funktion drauf.

#include <FreqMeasure.h>
#define RPMSIGNAL 8 // für Atmel328p MCU ist Digital_In Pin8 die vorgabe.
int Schaltschwelle2 = 6750; // Drehzahl Schaltschwelle 2 = (Strobo) LEDs bei Rotem Drehzahlbereich
int RPM = 0; //
int Zylinder = 4; // 
int Faktor = 1;   // Umrechnungsfaktor falls benötigt
long previousMillis = 0;
double sum=0; // double ist präziser als float
int count=0;

void setup(){
//RPM Messung für schaltblitz
  pinMode(RPMSIGNAL, INPUT_PULLUP);
  Serial.begin(57600);   
  FreqMeasure.begin();

void loop() {
    unsigned long currentMillis = millis();
    if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis; 
    if (FreqMeasure.available()) {
      // average several reading together
      sum = sum + FreqMeasure.read();
      count = count + 1;
      if (count > 0) {
        double frequency = F_CPU / ((sum / count) * Faktor);
        Serial.println(frequency);
        RPM = frequency * 60;
        sum = 0;
        count = 0;
        }    
      }
    }

Dein Deutsch ist scher schwer verständlich. Wäre es nicht besser daß Du in einem andersprachigen anderssprachigen Teil des Forums in Deiner Sprache schreibst? Grüße Uwe

uwefed:
Dein Deutsch ist scher verständlich. Wäre es nicht besser daß Du in einem andersprachigen Teil des Forums in Deiner Sprache schreibst?
Grüße Uwe

HAHA !! dein Text konnte ich aber ohne Probleme Lesen. Bei uns gibt es viele Ausländer… da lernt man noch viel verstehen. :smiley:

Na gibbts den ein schweizer sprach forum hier ? :smiley:

Hallo,

sind alle Massen verbunden? Vielleicht sind Schirmungen am Kabel notwendig? Ansonsten Filter davor bauen. Im einfachsten Fall ein Komparator. Im aufwändigeren Fall wird das hier gezeigt. https://www.pjrc.com/teensy/td_libs_FreqMeasure.html

Den Bsp. Code erst ändern wenn alles plausibel ist.

Das hier // double ist präziser als float führt dich leider in die irre. double und float sind hier gleichbedeutend.

Ok, ich hab meinen letzten Beitrag nun in Ruhe korrigiert.

Nein, einen switzerdütschen Forunbereich gibt es nicht. Aber gesprochenes Switzerdütsch verstehe ich. (meistens).

Grüße Uwe

Der TO ist aber nicht nur sprachlich, sondern auch inhaltlich schwer zu verstehen. Das erschwert eine Hilfestellung.

Gruß Tommy

Doc_Arduino: Hallo,

sind alle Massen verbunden? Vielleicht sind Schirmungen am Kabel notwendig? Ansonsten Filter davor bauen. Im einfachsten Fall ein Komparator. Im aufwändigeren Fall wird das hier gezeigt. https://www.pjrc.com/teensy/td_libs_FreqMeasure.html

Den Bsp. Code erst ändern wenn alles plausibel ist.

Ok Danke.Habe mir mal die Lm393/339 ICs anggeschaut. Wen nichts mehr hilft kommt die zum einsatz.

Habe die Masse natürlich Verbunden. Verschieden Massen getestet. Mit dickem Plastik Gehäuse für den Arduino, als Schirmung. Mit USB Strom und mit VIN. anderen Aruino Nanos getestet. Immer dass gleiche Problem.

Dann mal nur den FreqMeassure Code seperat laufen lassen, ohne meinen sketch und voila keine Störimpulse mehr.

Habe den Code aber ja exakt gleich in meinem Sketch eingefügt. Es sollte auch kein einziges delay dazwischen funken. Nur zwei mini 50ms delays, die aber erst kommen, wen die RPM Schaltschwelle fürs aufblinken der LED erreicht ist.

Komisch.. dann im serialplotter anstatt Rechteckwellen, nur einen Strich auf meiner Frequenz die ich einstelle, aber keine Störungen mehr. Eingefügt in meinem grossen Sketch kommen im Serial Plotter aber Wellen als signal, warum ist das unterschiedlich? jezt kommt sicher na dann poste mal dein ganzer sketch... ? :) oder weiss da jemand schon an was das liegen könnte.

Liegt also nicht an den Masseverbindungen, des arduinos selber oder signal... am code wie ich denke! :( aber warum zeigt der im Plotter zwei verschiedene darstellungen.. Linie oder Wellen der Frequenz.

Kannst Du den Inhalt auch noch mal in verständlichem Deutsch in ganzen Sätzen aufschreiben? Das würde das Verständnis Deiner Probleme fürchterlich erleichtern.

Gruß Tommy

Tommy56: Kannst Du den Inhalt auch noch mal in verständlichem Deutsch in ganzen Sätzen aufschreiben? Das würde das Verständnis Deiner Probleme fürchterlich erleichtern.

Gruß Tommy

So ich habs abgeändert.. die steps zum testen muss ich ja nicht in sätzen führen ? :D Stichworte sollten dort ja reichen.. So schlimm kann ich ja nicht schreiben? Jedenfalls wird auch anderen orten drauf geachtet, zu recht. Aber solche Reaktionen hatte ich noch nie.

MFG Andreas

Benutzt Du den LM339 oder LM393? Wie hast Du sie geschaltet? Grüße Uwe

Akropolis: So ich habs abgeändert.. die steps zum testen muss ich ja nicht in sätzen führen ? :D Stichworte sollten dort ja reichen.. So schlimm kann ich ja nicht schreiben? Jedenfalls wird auch anderen orten drauf geachtet, zu recht. Aber solche Reaktionen hatte ich noch nie.

MFG Andreas

Stichworte ergeben nicht das was Du gemacht hast. Dazu mußt Du Sätze bilden. Ansonsten wie sollten wir wissen was Du gemacht hast bzw wie die Schaltung ist. Grüße Uwe

Mit dickem Plastik Gehäuse für den Arduino, als Schirmung.

Plastikgehäuse ist ein Isolator, aber keine Schrimung.

Gibt auch Plastik, welches sich leicht elektrostatisch auflädt, das ist dann eher schädlich.

Hallo,

also für mich liegt der Fall nach den Angaben glasklar erstmal beim Code. Ich meine wenn der nackte Bsp. Sketch funktioniert und dann mit dem selbst programmierten drumherum nicht mehr, dann lässt das nur einen Schluss zu. Vermutungen bringen aktuell keine Punkte. Das bedeutet unweigerlich du solltest den kompletten Sketch posten. Du kannst und solltest den soweit abspecken solange das Problem noch enthalten ist. Alles was nichts damit zu tun hat raus. Falls du irgendeine Hardwareschaltung davor haben solltest, dann noch den Schaltplan dazu. Dann können wir weitersehen.

Hallo @Akropolis,

die Abschirmung von Metallschutzschläuchen, Erdungen und Berührungsschutzerdungen ist eine ganz heikle Sache, wo unmögliche Fehler auftreten können. Wichtig aber ist in jedem Fall, wenn Abschirmungen verbunden werden, dass diese äusserst kurz sein sollten.
Um vielleicht alle Möglichkeiten auszuschliessen, würde ich einen Optokoppler zur galvanischen Trennung ausprobieren, das sollte doch klappen.

Ich habe die LM ICs erst bestellt, sollten in einer woche ca da sein. Mit optokoppler dachte ich auch schon, traute es nur nicht aus zu sprechen :D

Ich denke auch es liegt an meinem code.. der Beispiel code läuft ja. Aber beim Beispiel code habe ich keine wellen im Serial Plotter oder wave signale, nur ein strich auf meiner frequenz die ich einstelle am generator. Ist das etwa richtig? Müsste doch auch das Rechtecksignal anzeigen und nicht nur eine konstante Linie? Dafür keine störsignale im Beispiel code.

Mit dem Beispiel Code, in meinem Code integriert habe ich ja störimpulse, dafür sehe ich die rechteckwellen. Das ist doch komisch????

Die stromversorgung kann ich ausschliessen weil der Bepsielcode keine störsignale hervorruft. Und beim gegenmessen mit Oszilloskop sehe ich auch nie Störimpulse. Habe auch alle externe Hardware vom Arduino entfernt und getestet, leider ohne Erfolg. Bin mit den Kroko Klemmen direkt an die Pins vom Arduinomit dem Signalgenerator, also Kabel sollte ich auch ausschliessen können.

Die Frage ist nun wie das Signal im Plotter richtig dargestellt werden müsste? weil sonst währe was am Beispiels code faul... und per Zufall zeigt er dann zwar mit meinem Code die Frequenz Squars an.

Auf jedenfall bestelle ich mir Bausteine zum entstören.

Hallo zusammen, nachdem ich nun viele tests gemacht habe weiss ich jezt in welchem code abschnitt die Frequenz Messung Störimpulse bekommt. Und zwar durch den Neopixel Farb Code für meine Strips. Also nicht nie Neopixel Strips selber, sondern nur der Codeabschnitt in der void funktion 1. Fehler treten nämlich auch ohne die Strips am Arduino auf.

Nur warum???

void loop() {
    unsigned long currentMillis = millis();
    if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis; 
    if (FreqMeasure.available()) {
      // average several reading together
      sum = sum + FreqMeasure.read();
      count = count + 1;
      if (count > 0) {
        double frequency = F_CPU / ((sum / count) * Faktor);
        Serial.println(frequency);
        RPM = frequency * 60;
        sum = 0;
        count = 0;
        }    
      }
    }
    
////Potentiometer Initialisierung fürs Dimmen////
  reading = analogRead(POT_PIN);
  alpha = map(reading, 0, 1023, 0, 100); // 0-100% Dimmen, POTI Wert an Alpha übergeben
  Serial.println(alpha); // sendet wert an alpha
  
////LED Funktions MODUS Umschalten per Taster counter////
  tasterAbfrage();
  if (counter == 0) funktion1(); 
  if (counter == 1) funktion2();
  if (counter == 2) funktion3();
  if (counter == 3) funktion4();
  if (counter == 4) funktion5();
  if (counter == 5) funktion6();
  if (counter == 6) funktion7();
  if (counter == 7) funktion8();
  if (counter == 8) funktion9();
  }
  
 void tasterAbfrage()
 {
   static uint32_t debounce_time;
 if (millis()-debounce_time>debounce_delay)tasterState = digitalRead(tasterPin); //einlesen des Tasters
   
 if (tasterState != tasterState_alt) // bei Pegelwechsel 
    {
     debounce_time=millis();
                   

 if(!tasterState)//wenn Taster gedrückt
       {
        counter++;
 if (counter > 8) counter = 0; //counter zählt von 0 bis 8 (9 modi)
        EEPROM.put(0, counter);//counter wird ins EEProm geschrieben
        Serial.println(tasterState);
       {
 if (counter == 8) Pieps,(LOW); // soll bei counter 8, Pin Pieps deaktivieren 
        }
        }
        tasterState_alt = tasterState; // state aktualisieren
        }   
 }


void funktion1(){ ////weiss zu rot//// 
if (executed==false){
    executed=true;
////Hier kann alles rein, was nur einmal ausgeführt werden soll, (Start Farbverlauf)////
  strip2.setPixelColor(0, strip2.Color(255,255,255)); //  led ring RPM Links, weiss an, ring1
  strip2.setPixelColor(1, strip2.Color(255,255,255)); //  led ring RPM Links, weiss an, ring1
  strip2.setPixelColor(2, strip2.Color(255,255,255)); //  led ring RPM Links, weiss an, ring1
  delay(250);
  strip2.show();
  strip2.setPixelColor(3, strip2.Color(255,255,255)); //  led ring KM/h Links, weiss, an, ring2
  strip2.setPixelColor(4, strip2.Color(255,255,255)); //  led ring KM/h Links, weiss, an, ring2
  strip2.setPixelColor(5, strip2.Color(255,255,255)); //  led ring KM/h Links, weiss, an, ring2
  delay(250);
  strip2.show();
  strip1.setPixelColor(0, strip1.Color(255,255,255)); // led ring Temp, rechts oben, weiss, an ring3
  strip1.setPixelColor(1, strip1.Color(255,255,255)); // led ring Temp, rechts oben, weiss, an ring3
  strip1.setPixelColor(2, strip1.Color(255,255,255)); // led ring Temp, rechts oben, weiss, an ring3
  delay(250);
  strip1.show();
  strip1.setPixelColor(3, strip1.Color(255,255,255)); // led ring Tank, rechts unten, weiss, an ring4
  strip1.setPixelColor(4, strip1.Color(255,255,255)); // led ring Tank, rechts unten, weiss, an ring4
  strip1.setPixelColor(5, strip1.Color(255,255,255)); // led ring Tank, rechts unten, weiss, an ring4
  delay(250);
  strip1.show();
  delay(500);
  }
    
if (RPM >= Schaltschwelle2){  
  strip1.setPixelColor(0, strip1.Color(255*alpha/100,0,0)); // led ring Temp, rechts oben, rot, an,                            led 1
  strip1.setPixelColor(1, strip1.Color(0,0,0)); // led ring Temp, rechts oben, aus,                                            led 2
  strip1.setPixelColor(2, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Temp, rechts oben, weiss, an,  led 3
  strip1.setPixelColor(3, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Tank, rechts unten, weiss, an, led 1
  strip1.setPixelColor(4, strip1.Color(0,0,0)); //   led ring Tank, rechts unten, aus,                                         led 2
  strip1.setPixelColor(5, strip1.Color(255*alpha/100,0,0)); // led ring Tank, rechts unten, rot,an,                            led 3
  strip1.show();
  
////Schaltblitz für RPM Nadel ANFANG////
  strip2.setPixelColor(0, strip2.Color(240,0,0)); //led pixel RPM Links, rot, an, für schaltblitz,                             led 1
  delay(50); 
  strip2.show();
  strip2.setPixelColor(0, strip2.Color(0,0,0)); //led pixel RPM Links, rot, aus, für schaltblitz,                              led 1
  delay(50); 
  strip2.show();
////Schaltblitz für RPM Nadel ENDE////  
  strip2.setPixelColor(1, strip2.Color(200*alpha/100,190*alpha/100,200*alpha/100)); //  led ring RPM Links, weiss,an,          led 2
  strip2.setPixelColor(2, strip2.Color(0,0,0)); //    led ring RPM Links, aus,                                                 led 3
  strip2.setPixelColor(3, strip2.Color(255*alpha/100,0,0)); //  led ring KM/h Links, rot, an,                                  led 1
  strip2.setPixelColor(4, strip2.Color(50*alpha/100,0,0)); // led ring KM/h Links, orangerot, an,                              led 2
  strip2.setPixelColor(5, strip2.Color(180*alpha/100,170*alpha/100,180*alpha/100)); //  led ring KM/h Links, weiss, an,        led 3
  strip2.show();
  
////Akustisch Piezzo für RPM Schaltblitz Nadel////
  digitalWrite(Pieps, HIGH); 
  delay(20); 
  digitalWrite(Pieps, LOW); 
  delay(20); 
  }
else
  {
//// Standart Menu Farbverlauf, solange die RPM Schaltschwelle nicht erreicht ist////
  strip1.setPixelColor(0, strip1.Color(255*alpha/100,0,0)); // led ring Temp, rechts oben, rot,            led 1
  strip1.setPixelColor(1, strip1.Color(0,0,0)); // led ring Temp, rechts oben, aus,              led 2
  strip1.setPixelColor(2, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Temp, rechts oben, weiss, led 3
  strip1.setPixelColor(3, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Tank, rechts unten, weiss, led 1
  strip1.setPixelColor(4, strip1.Color(0,0,0)); //   led ring Tank, rechts unten, aus,            led 2
  strip1.setPixelColor(5, strip1.Color(255*alpha/100,0,0)); // led ring Tank, rechts unten, rot,            led 3
  strip1.show(); 
  strip2.setPixelColor(0, strip2.Color(240*alpha/100,0,0)); //led pixel RPM Links, rot, für schaltblitz, led 1
  strip2.setPixelColor(1, strip2.Color(200*alpha/100,190*alpha/100,200*alpha/100)); //  led ring RPM Links, weiss, led 2
  strip2.setPixelColor(2, strip2.Color(0,0,0)); //    led ring RPM Links, aus,            led 3
  strip2.setPixelColor(3, strip2.Color(255*alpha/100,0,0)); //  led ring KM/h Links, rot,           led 1
  strip2.setPixelColor(4, strip2.Color(50*alpha/100,0,0)); // led ring KM/h Links, orangerot,          led 2
  strip2.setPixelColor(5, strip2.Color(180*alpha/100,170*alpha/100,180*alpha/100)); //  led ring KM/h Links, weiss, led 3
  strip2.show();
   }
  }
void funktion2() // blau zu rot
usw...

ich musste wegen der Maximalen beitrags länge hier weiter schreiben.

Der fehler tritt in der Funktion 1 auf und zwar schon nur mit dem Standart Farbverlauf code "siehe unten" tritt der Fehler auf, auch wen ich alles andere raus nehme.. Was funkt da dazwischen? Hätte ich dass gewusst, dass Freqmeassure probleme mit Neopixel Strips hat.. hätte ich mir die 5h Fehlersuche ersparen können.

Chippernut hatte auch mal so ein problem.. auf seiner HP per zufall gelesen. Zitat: Delivered via upgraded LEDs! The old WS2812B LEDs required demanding timing protocols for communication - actually interrupting the sensitive RPM calculations! These new LEDs improve responsiveness and eliminate some of the 'glitches' users would see from time-to-time.

Vlt sieht ihr als Profis ja direkt was ich falsch mache...?

void funktion1(){ ////weiss zu rot//// 
//// Standart Menu Farbverlauf, solange die RPM Schaltschwelle nicht erreicht ist////
  strip1.setPixelColor(0, strip1.Color(255*alpha/100,0,0)); // led ring Temp, rechts oben, rot,            led 1
  strip1.setPixelColor(1, strip1.Color(0,0,0)); // led ring Temp, rechts oben, aus,              led 2
  strip1.setPixelColor(2, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Temp, rechts oben, weiss, led 3
  strip1.setPixelColor(3, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Tank, rechts unten, weiss, led 1
  strip1.setPixelColor(4, strip1.Color(0,0,0)); //   led ring Tank, rechts unten, aus,            led 2
  strip1.setPixelColor(5, strip1.Color(255*alpha/100,0,0)); // led ring Tank, rechts unten, rot,        led 3
  strip1.show(); 
  strip2.setPixelColor(0, strip2.Color(240*alpha/100,0,0)); //led pixel RPM Links, rot, für schaltblitz, led 1
  strip2.setPixelColor(1, strip2.Color(200*alpha/100,190*alpha/100,200*alpha/100)); //  led ring RPM Links, weiss, led 2
  strip2.setPixelColor(2, strip2.Color(0,0,0)); //    led ring RPM Links, aus,            led 3
  strip2.setPixelColor(3, strip2.Color(255*alpha/100,0,0)); //  led ring KM/h Links, rot,           led 1
  strip2.setPixelColor(4, strip2.Color(50*alpha/100,0,0)); // led ring KM/h Links, orangerot,          led 2
  strip2.setPixelColor(5, strip2.Color(180*alpha/100,170*alpha/100,180*alpha/100)); //  led ring KM/h Links, weiss, led 3
  strip2.show();
   }

Da die Steuerung der WS2812 sehr zeitkritisch ist, schalten die wohl alle Interrupts ab, dann wird die Frequenz falsch gemessen. Die vertragen sich ja auch nicht mit IR-Empfängern.

Gruß Tommy

Tommy56:
Da die Steuerung der WS2812 sehr zeitkritisch ist, schalten die wohl alle Interrupts ab, dann wird die Frequenz falsch gemessen. Die vertragen sich ja auch nicht mit IR-Empfängern.

Gruß Tommy

na toll :frowning:

Andere Leds kann ich nicht verwenden, da es aktuell nur diese WS2812 5050 3Bit ringe gibt!
dann kann ich es wohl auch mit einer Interrupt RPM aulesung vergessen?
Z.B so was:

// read RPM

volatile int rpmcount = 0;//see http://arduino.cc/en/Reference/Volatile
int rpm = 0;
unsigned long lastmillis = 0;

void setup(){
 Serial.begin(9600); 
 attachInterrupt(0, rpm_fan, FALLING);//interrupt cero (0) is on pin two(2).
}

void loop(){
 
 if (millis() - lastmillis == 1000){  /*Uptade every one second, this will be equal to reading frecuency (Hz).*/
 
 detachInterrupt(0);    //Disable interrupt when calculating
 
 
 rpm = rpmcount * 60;  /* Convert frecuency to RPM, note: this works for one interruption per full rotation. For two interrups per full rotation use rpmcount * 30.*/
 
 Serial.print("RPM =\t"); //print the word "RPM" and tab.
 Serial.print(rpm); // print the rpm value.
 Serial.print("\t Hz=\t"); //print the word "Hz".
 Serial.println(rpmcount); /*print revolutions per second or Hz. And print new line or enter.*/
 
 rpmcount = 0; // Restart the RPM counter
 lastmillis = millis(); // Uptade lasmillis
 attachInterrupt(0, rpm_fan, FALLING); //enable interrupt
  }
}


void rpm_fan(){ /* this code will be executed every time the interrupt 0 (pin2) gets low.*/
  rpmcount++;
}

Kann ich dieses etwa all 10sek auftrettendes Störsignal rausfiltern mit einer durchnistsrechnung oder ähnlichem? Oder kann ich 2 Ardunios dafür benutzen? Einer nur für die RPM Messung, der bei der Schaltschwelle ein Signal weiter gibt an den 2ten Arduino der dann die Led Strip code mit Schaltblitz etc. Aktiviert, dann Können sich diese 2 Programme nicht gegenseitig Stören!

Dachte etwa in Theorie so, Arduino 1 misst:
pinMode(PIN12,OUTPUT);

if (RPM >= Schaltschwelle2){
digitalWrite(PIN12, HIGH)}

Arduino 2 empfängt das High Signal:

if (PIN11 == HIGH){  
strip1.setPixelColor(0, strip1.Color(255*alpha/100,0,0)); // led ring Temp, rechts oben, rot, an,   led 1
strip1.setPixelColor(1, strip1.Color(0,0,0)); // led ring Temp, rechts oben, aus,           led 2
  strip1.setPixelColor(2, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Temp, rechts oben, weiss, an,  led 3
  strip1.setPixelColor(3, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Tank, rechts unten, weiss, an, led 1
  strip1.setPixelColor(4, strip1.Color(0,0,0)); //   led ring Tank, rechts unten, aus,                                         led 2
  strip1.setPixelColor(5, strip1.Color(255*alpha/100,0,0)); // led ring Tank, rechts unten, rot,an,                            led 3
  strip1.show();
  
////Schaltblitz für RPM Nadel ANFANG////
  strip2.setPixelColor(0, strip2.Color(240,0,0)); //led pixel RPM Links, rot, an, für schaltblitz,                             led 1
  delay(50); 
  strip2.show();
  strip2.setPixelColor(0, strip2.Color(0,0,0)); //led pixel RPM Links, rot, aus, für schaltblitz,                              led 1
  delay(50); 
  strip2.show();
////Schaltblitz für RPM Nadel ENDE////  
  strip2.setPixelColor(1, strip2.Color(200*alpha/100,190*alpha/100,200*alpha/100)); //  led ring RPM Links, weiss,an,          led 2
  strip2.setPixelColor(2, strip2.Color(0,0,0)); //    led ring RPM Links, aus,                                                 led 3
  strip2.setPixelColor(3, strip2.Color(255*alpha/100,0,0)); //  led ring KM/h Links, rot, an,                                  led 1
  strip2.setPixelColor(4, strip2.Color(50*alpha/100,0,0)); // led ring KM/h Links, orangerot, an,                              led 2
  strip2.setPixelColor(5, strip2.Color(180*alpha/100,170*alpha/100,180*alpha/100)); //  led ring KM/h Links, weiss, an,        led 3
  strip2.show();
  
////Akustisch Piezzo für RPM Schaltblitz Nadel////
  digitalWrite(Pieps, HIGH); 
  delay(20); 
  digitalWrite(Pieps, LOW); 
  delay(20); 
  }
else
  {
//// Standart Menu Farbverlauf, solange die RPM Schaltschwelle nicht erreicht ist////
  strip1.setPixelColor(0, strip1.Color(255*alpha/100,0,0)); // led ring Temp, rechts oben, rot,            led 1
  strip1.setPixelColor(1, strip1.Color(0,0,0)); // led ring Temp, rechts oben, aus,              led 2
  strip1.setPixelColor(2, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Temp, rechts oben, weiss, led 3
  strip1.setPixelColor(3, strip1.Color(200*alpha/100,190*alpha/100,200*alpha/100)); // led ring Tank, rechts unten, weiss, led 1
  strip1.setPixelColor(4, strip1.Color(0,0,0)); //   led ring Tank, rechts unten, aus,            led 2
  strip1.setPixelColor(5, strip1.Color(255*alpha/100,0,0)); // led ring Tank, rechts unten, rot,            led 3
  strip1.show(); 
  strip2.setPixelColor(0, strip2.Color(240*alpha/100,0,0)); //led pixel RPM Links, rot, für schaltblitz, led 1
  strip2.setPixelColor(1, strip2.Color(200*alpha/100,190*alpha/100,200*alpha/100)); //  led ring RPM Links, weiss, led 2
  strip2.setPixelColor(2, strip2.Color(0,0,0)); //    led ring RPM Links, aus,            led 3
  strip2.setPixelColor(3, strip2.Color(255*alpha/100,0,0)); //  led ring KM/h Links, rot,           led 1
  strip2.setPixelColor(4, strip2.Color(50*alpha/100,0,0)); // led ring KM/h Links, orangerot,          led 2
  strip2.setPixelColor(5, strip2.Color(180*alpha/100,170*alpha/100,180*alpha/100)); //  led ring KM/h Links, weiss, led 3
  strip2.show();
   }
  }

gerade eine Info gefunden:
Upgrade der LEDs vom WS2812B zum APA102 (Dotstar). Dies verbessert die Geschwindigkeit und Zuverlässigkeit dramatisch, da die alten LEDs den Arduino dazu zwangen, grundsätzlich alles zu stoppen, um die Lichtleiste zu aktualisieren.

OK, aber leider gibt es davon nur wenige Artikel und gar keine LED Ringe. Bleibt also nur die Variante mit 2 Arduinos zur steuerung von RPM und Neopixel !

Da würde ich zu 2 Arduinos tendieren.

Gruß Tommy