Hallo zusammen, ich habe mir ein kleines Web-Tool gebaut, weil mich ein Problem beim PCB-Design immer wieder beschäftigt: Für einen einzigen Spannungsteiler, Pull-up oder Pull-down kommt oft ein neuer Widerstandswert in die BOM. Bei kleinen Stückzahlen ist das wegen Beschaffung, Mindestmengen und Setup-Aufwand lästig. Bei größeren Stückzahlen kommen Lagerhaltung, Variantenpflege und PCNs dazu. Der konkrete Anlass war eine Diskussion, in der ich etwas belächelt wurde, weil ich in meinen Designs teilweise intensiv mit Widerstandskombinationen arbeite. Ich nutze manchmal lieber zwei, drei oder auch vier vorhandene Einzelwerte, um einen neuen Widerstandswert in der BOM zu vermeiden. Das Tool sucht Widerstandskombinationen aus bereits vorhandenen Werten und kann damit helfen, die Anzahl unterschiedlicher Widerstandswerte in der BOM klein zu halten. Es ist kein Farbcode-Rechner, sondern eher ein kleiner BOM-Optimizer für den Schaltungsentwurf. Link: https://www.be-iis.eu/tools/resistor-combination-calculator/ Mich würde eure Meinung interessieren: Gehört ihr eher zur Fraktion „ein exakter Einzelwert ist sauberer, auch wenn die BOM größer wird“ oder zur Fraktion „lieber vorhandene Werte kombinieren und die BOM klein halten“? Feedback ist willkommen: - Ist die Bedienung verständlich? - Fehlen typische Werte oder E-Reihen? - Wäre ein KiCad-BOM-CSV-Import sinnvoll? Viele Grüße Philipp
Sehr schön, ich habe mit solcher Optimierung (manuell) schon einige Nächte zugebracht. Irgendwie könnte ich mir vorstellen, so eine Funktionalität direkt in Kicad einzubauen. Also die Spannungen des Spannungsteilers, genauigkeitsanforderungen sowie maximale und minimale Impedanz (auch bei pullups/down), oder grenzfrequenz min/max von Filtern etc. Eigentlich eine perfekte Aufgabe für den Rechner. Also falls ich mal ganz viel zeit übrig habe wird das ein Projekt.
Philipp B. schrieb: > Gehört ihr eher zur Fraktion „ein exakter Einzelwert ist sauberer, auch > wenn die BOM größer wird“ oder zur Fraktion „lieber vorhandene Werte > kombinieren und die BOM klein halten“? Die Welt ist nicht S/W.
> Ich nutze manchmal lieber zwei, drei > oder auch vier vorhandene Einzelwerte, um einen neuen Widerstandswert in > der BOM zu vermeiden. Ich nehme an du musstest noch nie Ausfallwahrscheinlichkeiten deiner Schaltungen berechnen oder? Privat mach ich sowas natuerlich auch, zumal sich 0603 ja beim handbestuecken auch wunderbar stapeln lassen, aber doch nicht in der Firma. Und wenn du einen Taschenrechner mit UPN haettest dann wuerdest du auch nicht auf die Idee kommen Onlinetools zu schreiben. :-p Vanye
Moin, ich würde das stark von der Stückzahl abhängig machen. Bei Prototypen oder kleinen Serien kombiniere ich auch mal vorhandene Werte, bevor ich extra eine neue Position in die BOM aufnehme. In der Serie sieht die Rechnung dann oft schon anders aus.
In Firmen-Designs optimiere ich meist in der Art, daß ich z.B. bei Spannungsteilern für POL Regler den Teiler am Feedback so aufbaue, daß einer der Widerstände schon in der BOM ist. Müssen sowieso meist 0,1%er sein, damit die Toleranzen der Regler-ICs nicht noch vergrößert werden. Abgleich käme nicht in Frage. Parallel- oder gar Serienschaltungen gibts dafür aber nicht.
sehr löblich! Als Steigerung könnte man noch Toleranzwerte der Einzelwiderstände hinzufügen und dann die statistische Toleranz der Lösung berechnen. Ist aber so auch OK. Q: Verwendest Du zur Lösung ein bestimmtes Verfahren oder ist es einfaches Probieren?
Das ist mir zu pauschal. Ob eine Widerstandskombination sinnvoll ist, hängt vom Produkt, der Normenlage und vom konkreten Schaltungsteil ab. Nicht jede Schaltung ist safety-relevant. Bei kritischen Funktionen muss man Ausfallwahrscheinlichkeit, Toleranzen, Verlustleistung und Prüfaufwand natürlich berücksichtigen. Bei Pull-ups, Pull-downs oder unkritischen Teilern kann die Bewertung aber ganz anders aussehen. Das Tool ist daher kein Aufruf, überall mehrere Widerstände einzusetzen, sondern eine Hilfe, wenn man vorhandene BOM-Werte bewusst kombinieren möchte.
Ja, prinzipiell richtig. Die Stückzahl spielt natürlich eine große Rolle. Aber auch in Seriendesigns ist ein neuer Widerstandswert nicht immer „kostenlos“. Jede neue Position in der BOM erzeugt Aufwand: Beschaffung, Freigabe, Lagerhaltung, Alternativtypen, PCN-Bewertung und im ungünstigsten Fall hängt später genau dieses eine Teil in der Bestückung, weil es gerade schlecht verfügbar ist. Gerade wenn man z. B. exemption-free Widerstände braucht, kann die Marktlage je nach Wert und Bauform durchaus kritisch sein. Und es gibt immer wieder Werte, die nur ein einziges Mal in der Schaltung vorkommen: DDR-Stromkalibrierwiderstände, USB 5.1k Pull-downs oder spezielle Feedback-/Sense-Werte. Genau da kann es sinnvoll sein, bewusst zu prüfen, ob ein vorhandener BOM-Wert oder eine sinnvolle Kombination reicht. Natürlich muss man das im Einzelfall bewerten. Aber pauschal „in Serie macht man das nicht“ sehe ich so nicht.
Philipp B. schrieb: > Für einen einzigen Spannungsteiler, Pull-up oder Pull-down kommt oft ein > neuer Widerstandswert in die BOM. Bei kleinen Stückzahlen ist das wegen > Beschaffung, Mindestmengen und Setup-Aufwand lästig. Bei größeren > Stückzahlen kommen Lagerhaltung, Variantenpflege und PCNs dazu. Ein Widerstand kostet inklusive Gemeinkosten 0,1 ct, dazu kommen 0,5 ct Bestückkosten. Da kannst Du über die Gesamtmenge ausrechen wie teuer Deine Logistik sein müsste damit sich solche Stunts lohnen. Für Prototypen im Modellbau sieht die Sache anders aus. Da kann man auch mal zwei Widerstände aufeinanderlöten oder der Automat bestückt was gerüstet ist und den Rest setzt man aus der Mustermappe von Hand nach.
Ich glaube, wir reden hier über zwei verschiedene Dinge. Mir geht es nicht darum, den Preis eines einzelnen Widerstands zu sparen. Natürlich ist ein 0603-Widerstand als Bauteil extrem günstig, und die Bestückkosten sind ebenfalls niedrig. Der Aufwand entsteht für mich eher durch eine zusätzliche BOM-Position: - neuer Wert muss beschafft und freigegeben werden - Alternativtypen müssen gepflegt werden - Lagerhaltung Rüstbestand Mindestmengen kommen dazu - PCNs und Abkündigungen müssen bewertet werden - im ungünstigen Fall hängt später die Bestückung, weil genau dieser eine exotische Wert gerade schlecht verfügbar ist Gerade bei „grünen“ bzw. exemption-free Widerständen ist die Verfügbarkeit nicht bei jedem Wert gleich gut. Standardwerte sind meist unkritisch, exotischere Werte können aber schnell lästig werden. Wenn ein Wert nur einmal in der Schaltung vorkommt, z. B. ein spezieller Feedback-Wert, ein DDR-Kalibrierwiderstand oder ein USB 5.1k Pull-down, dann kann es sinnvoll sein zu prüfen, ob man mit bereits vorhandenen BOM-Werten auskommt. Das ist natürlich keine pauschale Regel. Wenn ein Einzelwert technisch, wirtschaftlich oder normativ sinnvoller ist, nimmt man den Einzelwert. Aber die reine Rechnung „Widerstand kostet fast nichts“ greift aus meiner Sicht zu kurz.
Danke! Toleranzen stehen tatsächlich auf der Liste. Besonders spannend wäre das bei Spannungsteilern, weil man dann direkt den resultierenden Ausgangsspannungsbereich berechnen könnte. Ein Punkt, der dabei oft vergessen wird: Die angegebene Widerstandstoleranz ist in der Regel die Anfangstoleranz nach der Produktion bzw. bei Auslieferung, nicht zwingend die garantierte Abweichung über die gesamte Lebensdauer. Aktuell ist das Tool bewusst einfach implementiert: Es erzeugt Kombinationen aus den eingegebenen Widerstandswerten und berechnet Reihen-, Parallel- und gemischte Schaltungen bis zur gewählten maximalen Bauteilanzahl. Danach werden die Ergebnisse gegen den Zielwert bewertet und nach Abweichung sortiert. Also kein spezielles Optimierungsverfahren, sondern ein begrenzter kombinatorischer Suchlauf mit Bewertung. Für typische BOM-Wertlisten und kleine Bauteilanzahlen ist das schnell genug und gut nachvollziehbar.
Kleines Update: Ich habe inzwischen den ersten Teil der Toleranzfunktion eingebaut. Zu den vorhandenen Widerstandswerten kann jetzt auch eine Toleranz angegeben werden. Das Tool berechnet daraus für jede gefundene Kombination zusätzlich den möglichen Widerstandsbereich. Damit sieht man schneller, ob eine Kombination nur rechnerisch gut aussieht oder auch mit realistischen Bauteiltoleranzen noch sinnvoll ist. Für Spannungsteiler habe ich außerdem die Min-/Max-Werte der Feedback-Spannung ergänzt. Damit lässt sich z. B. bei DCDC-Wandlern oder LDOs direkt abschätzen, in welchem Bereich die resultierende Regelspannung liegt. Zusätzlich ist eine Rückrechnung auf die Ausgangs-/Regelspannung implementiert. Das ist natürlich zunächst eine einfache Betrachtung der Bauteiltoleranzen. Temperaturkoeffizient, Alterung, Lastdrift und Feuchte sind damit noch nicht abgedeckt. Ein Punkt, der dabei oft vergessen wird: Die angegebene Widerstandstoleranz ist in der Regel die Anfangstoleranz nach Produktion bzw. bei Auslieferung, nicht zwingend die garantierte Abweichung über die gesamte Lebensdauer. Zur Implementierung: Aktuell ist das Tool bewusst einfach gehalten. Es erzeugt Kombinationen aus den eingegebenen Widerstandswerten und berechnet Reihen-, Parallel- und gemischte Schaltungen bis zur gewählten maximalen Bauteilanzahl. Danach werden die Ergebnisse gegen den Zielwert bewertet und nach Abweichung sortiert. Also kein spezielles Optimierungsverfahren, sondern ein begrenzter kombinatorischer Suchlauf mit Bewertung. Für typische BOM-Wertlisten und kleine Bauteilanzahlen ist das schnell genug und gut nachvollziehbar. Noch ein Punkt zur Testbarkeit: Man hört manchmal die Aussage, dass bei einer Widerstandskaskade zwischen jedem Widerstand ein Testpunkt liegen müsse. Das ist aus meiner Sicht zu pauschal. Im ICT können Widerstandskombinationen je nach Schaltung und Testkonzept auch als Kombination gemessen werden. Man muss also nicht automatisch jeden Zwischenknoten separat testen. Das Tool ist für mich deshalb nicht nur ein Prototypen-Thema. Ich habe damit bereits bessere und kleinere Kombinationen gefunden, die ich auch in Serienelektronik verwende. Natürlich muss man immer den konkreten Fall betrachten: Funktion, Toleranz, Testbarkeit, Verfügbarkeit, Normenlage und Fertigung. Aber grundsätzlich sind Widerstandskombinationen nicht automatisch unsauber oder unseriös. Link bleibt gleich: https://www.be-iis.eu/tools/resistor-combination-calculator/ Danke für den Hinweis mit den Toleranzen. Das war ein sinnvoller Punkt.
Hallo Philipp B., Dein Berechnungswerkzeug gefällt mir außerordentlich gut. Das hatte ich mir in Excel gebaut, meins nutzt aber nur maximal drei Widerstände. Wenn ich den Zielwert mit vielen Nachkommstellen versehe, nutzt Dein Tool aber nur maximal 4 Widerstände, selbst wenn ich ihm 6 Widerstände erlaube. Hast Du das hart limitiert oder hängt das von der minimalen Fehlerabweichung ab?
Gut geworden. Auch gut, wenn man ne Kombi braucht, dessen Zielwert man eben nicht zur Hand hat. Gefällt mir gut. Gibt’s sicher nicht in Deutsch, oder? Na - macht ja nix. Gute Arbeit, danke!
wollte es selber versuchen, komme aber bei der Ermittlung der möglichen Kombinationen nicht weiter. Vielleicht klappt es wenn es wieder kühler wird. Toleranz. Ist an sich ein statischer Wert. Hier eine kurze Berechnung für 1k+1k+10k mit jeweils 5% Toleranz (Ich habe Julia verwendet - war für mich am einfachsten). Programm
1 | using Measurements |
2 | @show R1 = 1000.0 ± 50 |
3 | @show R2 = 1000.0 ± 50 |
4 | @show R3 = 10000.0 ± 500 |
5 | @show Rserie = R1+R2+R3 |
6 | Rserie.err/Rserie.val*100.0 # Tol in % |
Ergebnis
1 | R1 = 1000.0 ± 50 = 1000.0 ± 50.0 |
2 | R2 = 1000.0 ± 50 = 1000.0 ± 50.0 |
3 | R3 = 10000.0 ± 500 = 10000.0 ± 500.0 |
4 | Rserie = R1 + R2 + R3 = 12000.0 ± 500.0 |
5 | 4.208127057650866 |
==> d.h. die Serienschaltung hätte dann eine Toleranz von 4.208% Die Julia-Funktionen von Measurements in Java abzusetzen ist wahrscheinlich nicht so einfach.
Peter M. schrieb: > Wenn ich den Zielwert mit vielen Nachkommstellen versehe, nutzt Dein > Tool aber nur maximal 4 Widerstände, selbst wenn ich ihm 6 Widerstände > erlaube. Die Anzahl der sinnvollen Nachkommastellen beim Zielwert hängt von der Toleranz der Widerstände ab. Wie viele Stellen du zusätzlich hin schreibst, ist völlig egal. Bei Parallelschaltung hat die Toleranz des Widerstand mit dem größten Leitwert den Haupteinfluss, bei Serienschaltung die Toleranz des größten Widerstandes. Giovanni schrieb: > Rserie = R1 + R2 + R3 = 12000.0 ± 500.0 Wo bleibt die Toleranz von R1 und R2? > 4.208127057650866 > ==> d.h. die Serienschaltung hätte dann eine Toleranz von 4.208% Unsinnig - wie willst du aus einer auf eine Stelle genau angegebenen Toleranz der Ausgangswiderstände für die Zusammenschaltung einen Wert mit 16 bzw. 4 gültigen Stellen zaubern.
:
Bearbeitet durch User
Rainer W. schrieb: > Unsinnig - wie willst du aus einer auf eine Stelle genau angegebenen > Toleranz der Ausgangswiderstände für die Zusammenschaltung einen Wert > mit 16 bzw. 4 gültigen Stellen zaubern. Das Zauberwort heißt Statistik. Was Du machst ist die max. Abweichungen zu addieren. Das ist "Unsinnig". Hier etwas einfacher: 1kΩ+1kΩ je 5%
1 | R1+R2 |
2 | 2000.0 ± 71.0 |
Gute Nacht.
Rainer W. schrieb: > Unsinnig - wie willst du aus einer auf eine .... Bei der Toleranzrechnung kommt das so vor.
1 | R_ges = R1 + R2 + R3 |
2 | R1: 1M +/-10% |
3 | R2: 1k +/-10% |
4 | R3: 1Ω +/-10% |
5 | R_ges = 1M +/-100k + 1k +/-100Ω + 1Ω +/- 0,1Ω |
6 | = 1001,001 kΩ +/-100,1001 kΩ |
Giovanni schrieb: > Das Zauberwort heißt Statistik. Was Du machst ist die max. Abweichungen > zu addieren. Das ist "Unsinnig". Unsinnig ist einzig, dass Du eine Statistik erlügst. > Hier etwas einfacher: 1kΩ+1kΩ je 5%
1 | > R1+R2 |
2 | > 2000.0 ± 71.0 |
Quark, und zwar verdorbener. Es kann einer 950 und der andere 1050 Ohm haben, dann ergeben sich 0%. Genauso können aber auch beide 950 oder 1050 haben, dann sind die vollen 5% ausgenutzt. Das sind die Maxima, die man befürchten muß und sich nicht drauf verlassen kann, diese niemals zu treffen.
Eine RSS-/Statistikrechnung wie sqrt(50² + 50²) = 70,7 Ω kann als Abschätzung interessant sein, ist aber keine garantierte Toleranz. Dafür müsste man Annahmen über Verteilung, Unabhängigkeit, Charge, Temperaturdrift und Alterung treffen. Außerdem ist die Bauteiltoleranz typischerweise ein Produktions-/Lieferzustandswert unter definierten Bedingungen, nicht automatisch eine Lebensdauer-Garantie über alle Umgebungsbedingungen. Darum zeigt das Tool zuerst den garantierten Worst Case. Eine zusätzliche RSS-Schätzung könnte man optional ergänzen, aber nicht als Ersatz für den Worst Case.
Giovanni schrieb: > Das Zauberwort heißt Statistik. Was Du machst ist die max. Abweichungen > zu addieren. Das ist "Unsinnig". Quatsch - wieso sollte ich die maximale Abweichung addieren, obwohl die Fehler unkorreliert sind? Dir scheint der Unterschied zwischen Toleranzangabe von 5% und 5,000000000% nicht klar zu sein. Eine Angabe von "5%" impliziert, dass der Fehler statistisch betrachtet genauso gut 4,6%, 4,9% oder 5,4% betragen kann. Damit sind deine ganzen Nachkommastellen, egal ob 4 oder 16, nichts als erwürfelte Hausnummern.
Der Ton ist aber schon ganz schön scharf. Ich glaube, wir reden hier über zwei verschiedene Dinge: Eine Toleranzangabe wie ±5 % ist keine statistisch gerundete Messangabe, aus der dann auch 5,4 % werden könnten. Sie ist eine Spezifikationsgrenze. Ein 1-kΩ-Widerstand mit ±5 % liegt unter den spezifizierten Bedingungen also zwischen 950 Ω und 1050 Ω. 1054 Ω wäre außerhalb der Spezifikation. Natürlich kann man zusätzlich statistisch rechnen, wenn man Annahmen über Verteilung, Unabhängigkeit, Charge usw. trifft. Das ist aber etwas anderes als eine Worst-Case-Berechnung. Mein Tool rechnet bewusst den Worst Case aus den angegebenen Min-/Max-Grenzen. Die vielen Nachkommastellen sind dabei tatsächlich nicht schön; die werde ich auf zwei Nachkommastellen runden. Inhaltlich ändert das aber nichts an der Rechnung.
Philipp B. schrieb: > Link bleibt gleich: > https://www.be-iis.eu/tools/resistor-combination-calculator/ Beim Versuch, Seite aufzurufen, erhalte ich die Warnung, daß was mit dem Zertfikat des Servers etwas nicht stimmt.
:
Bearbeitet durch User
Da habe ich tatsächlich gerade versucht, etwas zu optimieren. Das ging leider nach hinten los. Ich sollte wohl besser bei Schaltungsdesign, Linux und Software bleiben. ;-) Die Seite sollte jetzt wieder erreichbar sein: https://www.be-iis.eu/tools/resistor-combination-calculator/ Nebenbei: Die Toleranzen werden jetzt auch auf zwei Nachkommastellen gerundet.
Gefällt mir gut! Zum Entwickeln ist das sehr hilfreich. Dass ein BOM Resistor Optimizer nur auf das zurückgreift, was sich schon in der BOM findet ist nur logisch. Wenn man aber 12k8 herstellen will, wäre es schön, das Tool würde optional auch auf bekannte E-Reihen zurückgreifen.
StefanK schrieb: > Wenn man aber 12k8 herstellen will, wäre es schön, das Tool würde > optional auch auf bekannte E-Reihen zurückgreifen. Wozu brauchst du das Tool dann? In dem Fall kannst du doch direkt den gewünschten Widerstandswert in die BOM setzen.
Ist 12k8 in einer der E-Reihen? Hab ich dann wohl übersehen. Dann lass uns XkY zusammenbauen, der nicht in den E-Reihen vertreten ist und die am besten passenden Widerstandswerte nicht in der BOM sind. Wie baue ich den dann also? In diesem Fall wäre eine Option "verwende E-Reihen Werte" zur Generierung sinnvoll. Das meinte ich.
12k8 ist meines Wissens eher E192; in E96 liegen z. B. 12k7 und 13k0. Aber genau darum geht es bei dem Tool eigentlich nicht. Das Tool ist bewusst kein E-Reihen-Rechner und auch kein Generator für beliebige Zielwerte aus kompletten Normreihen. Die Idee ist eine andere: Ich gebe die Widerstandswerte ein, die in meiner konkreten BOM ohnehin schon vorhanden sind. Das Tool sucht dann Kombinationen aus genau diesen vorhandenen Werten. Wenn man in jeder Größenordnung ein paar Werte in der BOM hat, bekommt man mit 3 bis 4 Widerständen oft erstaunlich gute Kombinationen. Wenn kein sinnvoller Treffer dabei ist, ist die praktische Aussage eben: Für diesen Fall sollte man einen weiteren Widerstandswert in die BOM aufnehmen. Eine zusätzliche Option „E-Reihen-Werte verwenden“ kann man natürlich später ergänzen. Das wäre dann aber ein anderer Betriebsmodus. Der aktuelle Nutzen ist gerade, die Anzahl verschiedener BOM-Positionen klein zu halten und vorhandene Werte mehrfach zu verwenden.
@Philipp B. : Vielleicht wäre ein GIT Projekt (in https://github.com/be-iis) sinnvoll, um alle Wünsche/Ideen zu sammeln und ev. zu implementieren. Ist das Projekt Open Source? Ich würde auf jeden Fall einen Haftungsausschluss hinzufügen. https://spdx.org/licenses/ Welche Lizenz für das Firmenumfeld passt, muss man sich anschauen. [nur so eine Idee bei 33°C]
Danke fürs Teilen der Ideen. Aktuell ist das Tool einfach direkt in JavaScript auf der Webseite implementiert. Damit ist es technisch ohnehin für jeden sichtbar und kopierbar. Einen großen Schutz gibt es da also nicht. Mein Ziel damit ist im Moment vor allem, nützliche kleine Rechner zu bauen, die guten Traffic auf meine Webseite bringen und thematisch zu meinen Produkten passen. Inzwischen habe ich auch schon weitere Tools angefangen, zum Beispiel: https://www.be-iis.eu/tools/reliability-lifetime-calculator/ und https://www.be-iis.eu/tools/plca-bandwidth-calculator/ Ein eigenes GitHub-Projekt für die Tools kann später durchaus sinnvoll sein, besonders wenn wirklich mehrere Leute Ideen oder Patches beitragen möchten. Dann müsste man sich auch sauber um Lizenz, Haftungsausschluss und Projektstruktur kümmern. Im Moment ist es aber eher ein Webseiten-Tool als ein klassisches Open-Source-Projekt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.