Ich habe ein kleines Tool geschrieben, mit dem man anhand eines
gegebenen Widerstandes Widerstände aus den Reihen E3 bis E96 finden
kann, die parallel und seriell geschaltet den gewünschten Widerstand
ergeben. Als weitere (darauf basierende) Funktion findet das Tool eine
Kombination von Widerständen, die zusammengeschaltet den
Gegenkopplungs-Spannungsteiler für einen nicht-invertierend beschalteten
OP für einen bestimmten Verstärkungsfaktor ergeben.
Eigentlich habe ich das Tool nur geschrieben, um mir die Suche per Excel
zu ersparen, aber da ich es nun habe, kann ich andere daran teilhaben
lassen,
habe es unter GPL v3 lizensiert, und unter http://www.pksl.de/ressearch
zum Download bereit gestellt.
Über Eure Meinungen würde ich mich freuen:
- Braucht man so etwas überhaupt, oder habe ich ein Standard-Tool, was
jeder (außer mir) hat, übersehen?
- Ich habe die meiste Zeit (Wochen) damit verbracht, die GPL und wie sie
mit meiner MS EULA.txt zusammenpasst zu verstehen, während die
Programmierung nach 3-4 Tagen durch war. So ganz sicher bin ich mir
trotzdem noch nicht, wie das geht, eigene Programme unter GPL zu
veröffentlichen. Hinweise, was ich ändern kann/soll, wären hilfreich.
- Was fehlt noch?
Schön gefällt mir!
Fehler: Zahl größer 7 eingeben und es wird trotz Meldung gesucht
Wunsch: eigene Widerstandswerte vorgeben, die man selbst da hat, und
daraus dich beste Kombination berechnen. DAS wär wirklich praktisch.
ich schrieb:> Fehler: Zahl größer 7 eingeben und es wird trotz Meldung gesucht
Oh ja! Danke! :)
> Wunsch: eigene Widerstandswerte vorgeben, die man selbst da hat, und> daraus dich beste Kombination berechnen. DAS wär wirklich praktisch.
Gute Idee, ich überlege mir etwas dazu.
Das wäre gut, weil dann hat zwar jeder etwas Arbeit seine Widerstände
einzugeben (sollte speicherbar sein, eventuell mit Anzahl der
Vorhandenen Widerstände), aber das Tool ist dann individuell nutzbar:)
Eventuell auch noch Zahlen größer 7, also 10 oder so.
desweiteren: noch die anzeige, wieviele kombinationen berechnet werden
und wieviele berechnet worden sind..nur der balken ist sehr ungenau bei
der e96 reihe
Philipp Klostermann schrieb:> Ich habe ein kleines Tool geschrieben, mit dem man anhand eines> gegebenen Widerstandes Widerstände aus den Reihen E3 bis E96 finden> kann, die parallel und seriell geschaltet den gewünschten Widerstand> ergeben.
Die kleinen Reihen haben dabei eigentlich keinen Sinn: eine Reihe E3
hat ja nicht deshalb nur die Werte 1,0, 2,2 und 4,7, weil es dann nur
Widerstände von 1 kΩ, 2,2 kΩ und 4,7 kΩ gibt, sondern die hat sie
deshalb, weil man eine Menge zufällig produzierter Widerstandswerte
(in diesem Fall aus dem Bereich von 1 ... 10 kΩ) auf diese Weise in
drei gleiche "Töpfe" sortiert bekommt, die dann jeweils eine
entsprechend große Toleranz um den Nennwert herum haben.
Wenn man einen genauen Wert haben will, wird man dann aber nicht zur
hochtoleranten Reihe greifen, die nur in E6 ausgeliefert ist, sondern
mit E24 oder darüber bereits eng tolerierte Ausgangswerte benutzen.
Jörg Wunsch schrieb:> Die kleinen Reihen haben dabei eigentlich keinen Sinn: eine Reihe E3> hat ja nicht deshalb nur die Werte 1,0, 2,2 und 4,7, weil es dann nur> Widerstände von 1 kΩ, 2,2 kΩ und 4,7 kΩ gibt, sondern die hat sie> deshalb, weil man eine Menge zufällig produzierter Widerstandswerte> (in diesem Fall aus dem Bereich von 1 ... 10 kΩ) auf diese Weise in> drei gleiche "Töpfe" sortiert bekommt, die dann jeweils eine> entsprechend große Toleranz um den Nennwert herum haben.
Grundsätzlich hast Du natürlich Recht, aber in der Praxis sind die
Widerstände oft genauer, als die Nenn-Toleranz der jeweiligen Reihe.
Mir ist bewusst, das Das Programm durch die hohe Anzahl an
Nachkommastellen eine höhere Genauigkeit vorgaukelt, als mit realen
Bauteilen erreichbar ist, aber ich möchte es dem User überlassen, die
Genauigkeit seiner Berechnungen zu ermitteln, und wo die Grenze zwischen
Erreichbarem und Theoretischem liegt. Die kleinen Reihen weg zu lassen
würde nur eine Einschränkung bedeuten, die zwar in der Praxis nicht
stört, weil keiner die kleinen Reihen benutzt, aber technisch unnötig
ist. Der User kann selbst entscheiden, welche Reihen er nutzen möchte.
Ich arbeite gerade am Einlesen eines .ini-Files, um User-definierte
Werte zu ermöglichen. Das Format wir wie folgt sein:
Ich habe gerade noch ein paar Bugs heraus gehauen und habe der
Versionsnummer eine 4. Stelle spendiert, um nicht bei so kleinen
Änderungen die 3.Stelle hoch zählen zu müssen.
Aktuelle Version ist nun 0.1.1.1.
Da waren noch an einigen Stellen "komische" Zahlen, was an einem Fehler
bei der Initialisierung der Werte für die E-Reihen lag.
Ich habe das beseitigt. Aktuelle Version ist jetzt 0.1.1.2
P.S. Um die Plausi-Prüfung für die Eingabewerte kümmere ich mich dann
noch. Es hat jedenfalls bei der Fehlersuche geholfen, einen negativen
Verstärkungsfaktor eingeben zu können.
Vielleicht kleinkarriert, aber könntest Du statt "Animiert" vielleicht
"Visualisiert" oder ähnlich schreiben?! - Mit Animation hat die
Darstellung nix zu tun...
Ansonsten super tool!
Jürgen schrieb:> könntest Du statt "Animiert" vielleicht> "Visualisiert" oder ähnlich schreiben?!
Gerne, wenn mir etwas passenderes als "visualisiert" einfällt, was ich
nicht für den perfekten Begriff halte, weil die Ergebnisse ja nach der
Berechnung auch visualisiert werden.
"zeige Zwischenergebnisse" wäre eine Möglichkeit, aber das ist so lang
und klingt umständlich.
Hat jemand andere Vorschläge?
Ich habe gerade einen Aufruf der ResSearch-Seite von einem Linux-Rechner
in meinem Log-File gefunden, und entdeckt, dass in meinem
Eingangsposting kein Hinweis auf die derzeitige Beschränkung auf Windows
zu finden ist.
Ich würde mich freuen, wenn ein Moderator das entsprechend ergänzen
könnte, damit sich Linux-Anwender nicht veräppelt vorkommen.
Danke im Voraus. :)
(Dieser Beitrag kann dann ruhig weg.)
Hab dem Programm mal die Aufgabe gegeben 2K zu berechnen.
das Programm hat die relativ einfache Lösung 1k+1k nicht gefunden
sondern 1k3 + 620R mit 4% Fehler.
Julian Baugatz schrieb:> das Programm hat die relativ einfache Lösung 1k+1k nicht gefunden> sondern 1k3 + 620R mit 4% Fehler.
Welche Version? Aktuell ist 0.1.1.2.
Was Du beschreibst, klingt nach dem Fehler in den Versionen 0.1.1 bis
0.1.1.1:
Philipp Klostermann schrieb:> Da waren noch an einigen Stellen "komische" Zahlen, was an einem Fehler> bei der Initialisierung der Werte für die E-Reihen lag.
Das habe ich Dich glauben lassen, indem ich so deppert war, die falsche
Exe ins Archiv zu packen. SORRY! (Ein Klick auf "Info" hätte Dir das
verraten.)
Jetzt habe ich die richtigen Dateien hochgeladen. - Mannomann! So viele
Flüchtigkeitsfehler an einem Tag!
Mit E24 schlägt das Programm (bzw. die korrekte Version) übrigens (noch
einfacher) einen 2K Widerstand vor. :-D
Habe eben dein Tool heruntergeladen und getestet. Gefällt mir sehr gut.
Habe vor zig Jahren einmal einen Artikel in einem englischen
Elektronikmagazin gelesen, wie man das mit 3 Widerständen macht. Wollte
selbst ein Programm dazu entwickeln, fand aber den Artikel nicht mehr :(
gibts da eigentlich ne mathematische herangehensweise?
dein programm probiert ja alles durch oder?
ich wollte auch mal sowas schreiben aber halt ohne jede kombination zu
probieren...
Das ist eine gute Frage. Ich wollte mit dieser Frage nicht zu viel Zeit
vertrödeln und hatte einfach den sich aufdrängenden Brute-Force
Algorithmus, alles zu durchsuchen, implementiert. - Also ja, es probiert
quasi alles durch.
Das lässt sich bestimmt alles noch verfeinern. Vor allen Dingen möchte
ich den Algorithmus für OP-Verstärker (bzw. Spannungsteiler, was das
gleiche mit dem Kehrwert ist) noch dergestalt erweitern, dass sowohl für
R1 als AUCH R2 Kombinationen gesucht werden.
Als nächstes mache ich (der Vollständigkeit halber) noch eine
Registerseite für Spannungteiler.
Hallo, ich mal wieder...2 Wünsche noch
1) (nochmal) bis zu 10 Widerstände zulassen
2) wenn man im Feld der Suche was eingibt sollte bei Betätigung der
Entertaste nicht das Programm zugehen, sondern die Suche durchgeführt
werden
Gibts Ne schrieb:> 1) (nochmal) bis zu 10 Widerstände zulassen
=> OK
> 2) wenn man im Feld der Suche was eingibt sollte bei Betätigung der> Entertaste nicht das Programm zugehen, sondern die Suche durchgeführt> werden
=> Um das halbwegs hübsch zu machen, musste ich auf hässliche Weise im
CPropertyPage/CPropertySheet-Konstrukt herumfrunzeln, Buttons per Code
verstecken, verschieben und umbeschriften und eine Notification übel
missbrauchen. Na ja, in einer der nächsten Versionen werde ich das mal
ohne CPropertyPage/CPropertySheet machen, bis dahin geht es auch so.
Aktuelle Version ist nun also 0.1.1.3
noch ein Wunsch: einblenden, wieviel Zeit die Suche dauern wird.
also am besten die Zeit merken, die für sagen wir 10000 Kombinationen
gebraucht wird un dann hochrechnen...
das kann man dann anzeigen
Zeit verbleibend/Gesamtzeit
zb: 4m6s/8m30s
also verbleibent zählt runter, gesamtzeit is die hochgerechnete Zeit
Danke für die Anregung! :)
Das werde ich gerne implementieren, wenn ich die Routinen noch etwas
dergestalt optimiert habe, dass die Anzahl der Schritte verringert wird.
Es kann dabei darauf hinauslaufen, dass die vorherige Errechnung der
Anzahl der Schritte etwas komplexer wird und vor allen Dingen nicht alle
Schritte gleich lang dauern werden.
Eine halbwegs präzise Restdaueranzeige muss bei jeder Optimierung
entsprechend angepasst werden, und da so etwas ein nice to have ist,
warte ich damit erst noch. Ich denke vor allen Dingen auch, dass in der
Praxis selten mit so vielen Widerständen gearbeitet wird, dass die
Rechenzeit so lange wird, dass eine Restdaueranzeige vonnöten wird. Bei
mehr als 7 Widerständen rechnet er natürlich unerträglich lange, aber so
etwas kann ich mir in der Praxis nur in ganz besonderen Fällen
vorstellen.
Ich werde mich beizeiten trotzdem darum kümmern.