Es könnte noch einen tick heller eingestellt und die letzte Warnstufe 100-200 rpm später schalten aber es funktioniert :) :
Schaltblitz für die RS 125
-
-
Hi,
Hut ab wer sich mit der Elektronik so auskennt , ich verzweifle an den MistGruß aus Franken
-
Super Arbeit!
Ich hab mir mal erlaubt den Code etwas zu modifizieren und in der zweiten Datei hab ich ihn erweitert, damit man verschiedenen Schaltblitz-Modi einstellen und nutzen kann.
Ist für den Anhang als .txt gespeichert, einfach rauskopieren oder wieder als .c speichern.
Vielleicht kann der ein oder andere damit was anfangen. -
Jugend forscht
-
Ist ja mal Richtig klasse
Deinen schaltblitz_modified habe ich gerade installiert und er funktioniert super :daumenhoch.
Ich habe in der Simulation in bestimmten Zuständen (Verschalter, Schleifende Kupplung) hängende Neopixel gehabt und deinen Code noch etwas angepasst:
Die Neopixel sind wie Wehrpflichtige in der Bundeswehr, sie machen was man ihnen sagt und das so lange bis man sie anschreit, sie sollen aufhören.
Dh. wenn man einer Kompanie von 8 Neopixeln befiehlt, das 2 "grün" leuchten, muss man zwingend den anderen 6 befehlen nicht bzw. "black"zu leuchten, sonst machen sie immer noch das, was sie zu letzt vernommen haben.Du hast im Code ja schon die Farbe "black" definiert, ich habe diese Farbe auf die ungenutzten Neopixel in den Zuständen"threshold_1" - "threshold_5" verteilt. Des weiteren habe ich den zustand "threshold_0" eingeführt der sich aus threshold_1 minus 1 definiert um den verblödeten Neopixeln zu verdeutlichen aufzuhören wenn die Schaltschwellen unterschritten wurden.
Du hast auf jeden Fall deutlich mehr Ahnung von C++ als ich, das erkennt man sehr deutlich an deiner Programmstruktur, (ich werfe immer alles in die Loop Schleife rein und kompiliere bis es passt :D ).
Hast du den Code in Arduino geschrieben oder benutzt du Visual Studio oder ähnliches für deine Werke?
Morgen will ich mal dein erweitertes Schaltlicht installieren. Ich Kämpfe noch an der Übersetzung für Arduino, er mosert "freqTest" an, die vermutlich erst in der Loop Schleife nach "Freqmeasure.begin" zur verfügung steht, und ich weiß noch nicht wie ich "freqTest" als Globale Variable definiere
-
So, sollte jetzt verbessert sein.
Hatte zum Testen nur einen virtuellen Drehzahlmesser programmiert (Variable als Drehzahl, die in jedem loop erhöht wird und bei erreichen der max. rpm einen random Wert wieder davon abzieht, um den Drehzahlabfall oder Schaltvorgang zu simulieren), hierbei blieb noch "freqTest" übrig, musste nur in "frequency" geändert werden. Zugleich hab ich die "black"-LEDs und den "threshold0" eingefügt.
Bei schnellen oder kritischen Sachen mit der Frequenz hilft es oft ein kurzes Delay nach einer Operation oder einem Schleifendurchlauf einzufügen, um zu warten bis die Befehle abgearbeitet sind. Darauf hab ich aber bewusst verzichtet, da sonst die Frequenz-/Drehzahlauslesung verfälscht werden kann.
Es ist übrigens zu empfehlen, die seriellen Print-Ausgaben auszukommentieren, wenn das Programm "richtig" läuft, da diese auch den Programmablauf verzögern können, deshalb sollte diese nur beim Debuggen zum Testen verwendet werden.
Visual Studio ist eigentlich nicht schlecht dafür, aber irgendwie arbeite ich damit nicht gerne. Für ganz einfache Sachen verwende ich Arduino, sonst aber Notepad++, was ein einfacher Editor ist, jedoch auch Funktionslisten, sämtliche Sprachen handeln kann und auch Programme ausführen/debuggen (Erweiterung nötig). Zeigt dann alles schön farbig an.
Gerade die Erweiterungen sind nicht immer einfach zu installieren/konfigurieren, deshalb schreibe ich es in Notepad++ und kopiere es dann ins Arduino zum kompilieren und aufspielen. -
Respekt für deine Arbeit ! da kann man sich ja garnicht für einen Modi entscheiden, einer cooler als der andere :biggrin:
Die <FreqMeasure.h> macht einen guten job.
Mit den verzögerungen der Programmschleife hast du definitiv recht,
Ich habe noch ein anderes Programm das mit der Micros funktion die Zeiten zwischen den Pulsen misst (so wie die FreqMeasure das auch tut) das funktioniert auch sehr gut, damit messe ich Drehzahl und Geschwindigkeit an meiner Husqvarna.
Jedoch stört die Ansteuerung der Neopixel die Funktion so sehr das die gemessene Drehzahl um einige 100 rpm schwankte und ich zur FreqMeasure Bibliothek gegriffen habe.
Ich habe jetzt mal rumprobiert und die anzahl der Messwerte zur Mittelwertbildung von 30 auf 10 reduziert (die 30 waren ursprünglich für die Auswertung der Wechselspannung der Lichtmaschine gedacht), denn die Wertebildung dauert auch bei voller Drehzahl immer noch 156 mSec. und mit 10 Messwerten nur noch 52 mSec. und das Flashen der Roten lichter in der Höchsten Warnstufe ist intensiver.
Auf dem Schreibtisch funktioniert es super, Schwankungen der Drehzahl nur im nachkomma Bereich. jetzt kommt noch der Praxistest.