PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neues Schaltnetzteil im Selberbau



Martin.
05.08.2010, 10:26
Hallo!

Ich habe schon mal vor ein paar Jahren angefangen ein Digitales Schaltnetzteil (mit zwei Ausgängen) mit einem Atmega32 aufzubauen. Das hat auch tatsächlich funktioniert. Der PID Regler hat die Spannungen eingestellt und ich konnte sowohl konstante Spannung als auch konstanten Strom verwenden. Nur war die Menuführung sehr aufwendig, da man mit einer kleinen 4x4 Tastatur Spannung und Strombegrenzung einstellen sollte. Das hat leider auch das Programm ziemlich aufgeblasen und ich habe dann da aufgehört.

Nun wollte ich nochmal von vorne anfangen, da ich grundsätzlich die Möglichkeit der Verwirklichung sehe und inzwischen mir genauer überlegt habe, was man wohl ändern müsste.

Zu erst wollte ich die Aufgaben auf drei MCs verteilen
-Einer misst Strom und Spannung am Ausgang
-Einer ist mit der PID Regelung beschäftigt
-der letzte kümmert sich um die Tastatur und die LCD ausgabe.

Untereinander sollten sie mit TWI kommunizieren.
Dazu meine erste Frage, ist die Aufteilung so sinnvoll?
Wie schaut es mit der Kommunikationsgeschwindigkeit aus? Wird die den Regelalgorithmus beeinträchtigen?

Also Ausgangsspannung sollten theoretisch 0..30V und als Strom 0..2.5A zur Verfügung stehen. Ich erwarte bei der Genauigkeit keine Wunder. Ich würde wahrscheinlich eh einen 5V Festspannungsregler an die Front mit dranbauen, damit man für logik-Anwendungen eine vernünftige Spannungsquelle hat. Deshalb soll die Genauigkeit nur soweit gehen, dass man damit etwas anfangen kann. Zum Beispiel wenn ich ein LED Array mal mit 9V versorgen möchte, dann sollten alle LEDs danach noch funktionieren. Alternativ könnte ich mir den Testbetrieb von Motoren vorstellen. Also ihr seht schon Die Spannung sollte einigermaßen erreicht werden, aber +/-1/100 V müssen es wohl nicht sein. Oder was denkt ihr?

Trotzdem wollte ich von Anfang an versuchen, das ganze vernünftig aufzubauen und nicht unnötig Genauigkeit zu "verschwenden".

Mit der Strom und Spannungsmessung wollte ich deswegen anfangen. Dazu das Schaltbild im Anhang. Gedacht war ein Differenzverstärker um den Strom durch einen Shunt zu messen. Bei der Spannungsmessung sollte wegen dem großen Bereich (0..30V) der Messbereich variable sein. Der MC sollte wissen was ihn erwartet und demnach den richtigen Spannungsteiler über die IO Pins und die Transistoren auswählen.

Glaubt ihr es ist sinnvoll den Strommessbereich auch nochmal zu untergliedern? Theoretisch sollte er bis 2.5A gehen. Wenn ich jetzt mal eine LED testen möchte, dann brauche ich ja eher 20mA und die sollten besser eingehalten werden. Da könnte ich mir sonst noch eine Abstufung 0..100mA und dann 100mA bis 2.5A vorstellen (Genauigkeit des AD Wandlers ist 10bit)!

Wer hier mit dem Lesen angekommen ist, dem danke ich shcon im Voraus für Anregungen und konstruktive Kritik

Martin

markusj
05.08.2010, 11:11
Komplett unabhängig von deinem Schaltbild: Es macht imho wenig Sinn, die Regelung und die Datenerfassung zu trennen, weil du dann wieder größeren Aufwand treiben musst, um die Daten von µC A nach µC B zu schaufeln.
Ich arbeite an einem ähnlichen Projekt und setze dort lediglich einen Tiny861 ein, der Messdatenerfassung und Regelung macht. Als Erweiterungsschnittstelle für Display, Eingabe etc. ist I²C vorgesehen.

mfG
Markus

Martin.
05.08.2010, 11:55
Hallo Markus!

Und warum meinst du ist es ungünstig über I2C die Daten von A nach B zu schicken? Klar dauert das auch eine gewisse Zeit, das war ja eine meiner Fragen, aber der PID Algorithmus ist ja doch etwas was auch wegen dem I und D Anteil besser in einem Definierten Zeitintervall abläuft. Wenn ich jetzt dann noch 8 ADC Kanäle abfrage, dann wird es ja für eine Interrupt-Routine wahrscheinlich doch zu lang. Weist du dazu was genaueres?

Nebenbei lese ich ein bisschen im Thread I2C oder SPI mit und da ist bei 16MHz Taktrate der Controller von Übertragunsraten bis zu 1MBit die rede. Sollte das nicht schell genug sein, wenn ich jeweils 40 bit (2*10bit Spannungsmessung und 2*10bit Strommessung, es sind ja 2 Ausgänge) übermittle?

mfg

Martin

Richard
05.08.2010, 11:56
Ich würde nicht mit Transistoren Umschalten, die haben ja auch nicht
wirklich 0 Ohm. Schaue mal http://ics.nxp.com/products/hef/datasheet/hef4016b.pdf oder 4051 Analog Multiplexer http://de.wikipedia.org/wiki/Multiplexer.

Gruß Richard

Martin.
05.08.2010, 12:03
Ok das ist natürlich die bessere Variante. Grundsätzlich versuch ich dann noch über Referenzmessungen Bauteiltoleranzen in Widerstände so weit wie möglich zu eleminieren. Aber der Multiplexer wird definitv verwendet.

markusj
05.08.2010, 12:06
Hallo Martin,

die AD-Wandlung ist ein asynchroner Vorgang der im Hintergrund ablaufen kann und zwischenzeitlich die "CPU" nur zum Umschalten des ADC-Kanals und ablegen der Messwerte in Zwischenvariablen in Anspruch nimmt (ADC-ISR). Ferner wird der ADC auf einem externen µC auch nicht schneller laufen.

Bei I²C oder SPI brauchst du in irgend einer Form ein Protokoll, dessen Auswertung wahrscheinlich mehr Aufwand darstellen wird. Und nur weil dein Übertragungskanal eine fixe Bandbreite hat, ist das noch lange keine Aufforderung, das als Geschwindigkeitsreferenz zu verwenden ... so wirst du nur vom Timing deines Co-Prozessors abhängig.

Außerdem ist die Idee, die komplette Regelung in einer ISR unterzubringen, tendenziell eher schlecht. Ich für meinen Teil werde die Regelung in die Hauptschleife einbauen und dort in regelmäßigen Abständen lostreten (über ein Flag). Unabhängig davon wird der ADC die ganze Zeit seine Kanäle auswerten und die Ergebnisse in globalen Variablen ablegen. So ist nur etwas Vorsicht beim einsynchronisieren der Messwerte erforderlich.

mfG
Markus

oberallgeier
05.08.2010, 12:45
... die komplette Regelung in einer ISR unterzubringen ...Natürlich macht "man" das nicht. Es sei denn, man kümmert sich akribisch um die Laufzeit der Rechnereien. Meine Regelung für zwei Motoren läuft zeitlich versetzt im 1/100-Sekunden-Takt. Braucht nur ein paar Prozent der CPU-Zeit, sodass insgesamt - zeitlich - noch satt Platz ist für die anderen ISR. Genau wegen der Laufzeitfrage habe ich die Regelung auf integer umgemodelt. Damit wurde diese ISR kürzer, als der Abstand zwischen der schnellsten getakteten ISR . . . . . Ist halt ein bisschen Planungsarbeit die dahintersteckt. Fazit: mein R2D03/Dottie läuft stabil und sauber gradaus (https://www.roboternetz.de/phpBB2/viewtopic.php?p=390196#390196) - wenn man das will. Ansonsten auch mal ziemlich sauber "ums Eck". (https://www.roboternetz.de/phpBB2/viewtopic.php?p=450795#450795)

Zu meiner Regelung und der Softwareplanung siehe hier, (https://www.roboternetz.de/phpBB2/viewtopic.php?p=437897#437897) evtl. auch in den folgenden Postings.

Martin.
05.08.2010, 12:56
Bei meinem ersten Versuch habe ich schon die Regelung mit integers durchgeführt. Da hab ich schon gemerkt, dass es eine immense Zeitersparnis ist. danke für den Link oberallgeier. Ich werd mir mal dein System genauer anschauen. Das schaut auch interessant aus.

Was könnt ihr eigentlich für eine Taktfrequenz für Regelung und für PWM für ein Netzteil empfehlen (also die grobe Größenordnung würde shcon reichen)?

Hessibaby
05.08.2010, 12:59
Warum willst Du bei der Spannunsmessung überhaupt umschalten ?
Bei 10 bit hast Du ca. 30mV Auflösung. Und bei der Strommessung ist 1Ohm als Shunt def. zu groß da bei 2,5A logischerweise auch 2,5V abfallen und zu 6,25Watt Wärme umgesetzt werden.

Martin.
05.08.2010, 13:13
Naja im Kurzschlussfall habe ich 6.25 Watt. Aber das tritt hoffentlich nicht ein. Es werden aber die zementierten Hochlastwiderstände 4W oder so verwendet. Ist wohl eher die Frage, ob man mit einem Innenwiderstand von 1Ohm was anfangen kann. Aber ich glaube, dass es für meine Anwendungen reicht. eventuell schalte ich auch zwei parallel, dass ich nur 0.5 Ohm habe.

Die Frage nach der Auflösung ist berechtigt. Es ist doch aber so, dass ich ohne großen Hardwareaufwand die Auflösung durch umschalten erhöhen kann. Nun war eigentlich meine Grundidee an dieser Stelle einigermaßen sauber zuarbeiten, auch wenns am schluss zu viel des Guten war, anstatt später zu merken, dass die Messung hier das Toleranzlimit stellt. Oder die Qualität der Spannungsquelle unnötig mindert.
Die Anzahl der Messbereiche werden eventuell noch verkleinert, damit ich mit einem Atmega32 (zum Beispiel) und dessen 8 ADC Channels auskomme. Vielleicht wären dann doch eher 2 Messbereiche für Strommessung und zwei Messbereiche für Spannungsmessung besser?

markusj
05.08.2010, 14:13
Das ist der Grund warum ich einen Tiny861 verwende, der kann differentielle Messungen mit Verstärkung durchführen. Meine Messwiderstände haben 100mOhm ...

Zur PWM-Frequenz: Das hängt von deinem Leistungsteil ab, höhere Frequenzen bedeuten mehr Schaltverluste an den FETs, erlauben aber kleinere Induktivitäten und Kondensatoren.

mfG
Markus

oberallgeier
05.08.2010, 16:56
... Regelung mit integers ... eine immense Zeitersparnis ...Dieses "immens" hatte ich bei meiner Entwicklung >>für mein System<< quantifiziert, siehe dieses Posting, (https://www.roboternetz.de/phpBB2/viewtopic.php?p=388755#388755) ab "Ich hatte programmiert, getestet,". Das heißt ganz grob, dass ich FP > 2000 µs brauche gegenüber < 50µs bei Integer. Kommt natürlich auch auf die jeweils aktuellen Zahlenwerte an. Bei meiner Drehzahlregelung (bei Dir kann das anders sein - aber ich glaube dass der Unterschied nicht soooo sehr groß ist) kam noch dazu, dass bei mir Ist- und Stell-Größe grad mal 8 Bit breit sind - sprich: grad mal so eben drei signifikante Stellen. Da macht FP noch nicht wirklich Sinn.

Martin.
05.08.2010, 17:31
Das ist der Grund warum ich einen Tiny861 verwende, der kann differentielle Messungen mit Verstärkung durchführen. Meine Messwiderstände haben 100mOhm ...
mfG
Markus

Was ist jetzt der Grund? Würdest du mit einem 5:1 Teiler die 30V auf 5V begrenzen und dann die interne Verstärkung, die es im übrigen auch beim Atmega gibt, verwenden um dann das Messsignal bei kleinen Spannungen zu verstärken?
Dadurch wäre aber der Rauschanteil auch größer wenn ich da an Spannungen von ursprünglich <500mV denke. Aber das wäre natürlich die Lösung mit den wenigsten Bauteilen.

Schützt du eigentlich deine AD Eingänge vor Überspannung?

mfg

Martin

Bernhard667
05.08.2010, 19:11
Hallo,
noch ein paar Anmerkungen zur Spannungsmessung.
Die Transistoren setzt Du ein wie man Relais verwenden würde, Transistoren funktionieren anders.
Egal, das hat ja schon jemand gesagt.
Der Vorschlag mit den Multiplexern ist denkbar, aber unnötig. Multiplexen müsstest Du, wenn nur 1 ADC Pin da ist. Es sind aber genug da.

Vorschlag:
Häng doch einfach einfach deine 3 Spannungsteiler direkt an die Ausgangsspannung.
Nun hast Du an den 3 Teilpunkten + der ungeteilen Spannung 4 mal ein Maß der Ausgangsspannung U, also 1*U, 0,5*U, 1/3*U, 1/6*U
Je nach U mögen einige dieser Werte über 5 V liegen, d.h. sind gefährlich für den ADC-Pin.
Deshalb noch einen Serienwiderstand von 10K von der Teilspannung zum ADC Pin. Am ADC Pin selbst eine Zenerdiode von vielleicht 4.6V
Somit sind alle Spannungen an den ADC Pins begrenzt auf <5V und dem Pin passiert nichts.
Nun kannst Du die aus den ADC Pins den wählen, der am besten passt.
Entweder von der Zielspannung her:
U Ausgang soll 0-4V ->ungeteilte Spannung
4-8V Teiler 2 ...
oder liest den ADC an einem Pin aus und beurteilst, ob das der beste ist. Beispiel
Du liest am 1/6 ADC Pin und kriegst Resultat 400. Da kannst Du erwarten, daß der 1/3 Pin 800 liefert. Also wechselst Du auf den. Der 1/2 Pin würde 1200 liefern müssen. Das ist mehr als die möglichen 1024. Der Pin geht also nicht.
Das Verstärken der Ausgangsspannung erscheint mit überflüssig. 5V/1024 = 5mV. Das sollte doch wohl reichen.

Alles klar ;-)
Bernhard

Neutro
05.08.2010, 19:15
Die ADC Kanäle kann man leicht mit Schottky Klemmdioden gegen Überspannung schützen.
Als Shunt würde ich dir SMR oder SMS Shunts in SMD empfehlen, die gibt es in allen möglichen Werten von einigen mR bis mehrere 100mR.
Falls du für deine Einstellungen Port Pins sparen möchtest kannst du das auch mit einem Drehimpulsgeber, am besten mit integrierten Taster lösen.
Wenn du dann noch die Messkanäle mit Multiplexer durchschaltest sparst du noch mehr IO´s.
Ich habe vor 2Jahren mal eine Messkarte gebaut mit 32 Messkanälen die mit 2 4067 Multiplexern auf einen ADC Eingang geschaltet werden.
Funktioniert bestens bis heute.

Gruß

Neutro

markusj
05.08.2010, 19:52
Hallo,


Was ist jetzt der Grund? Würdest du mit einem 5:1 Teiler die 30V auf 5V begrenzen und dann die interne Verstärkung, die es im übrigen auch beim Atmega gibt, verwenden um dann das Messsignal bei kleinen Spannungen zu verstärken?
Nein, ich skaliere mir Eingangs und Ausgangsspannung entsprechend VRef, dafür habe ich die größere der beiden verfügbaren Referenzen ausgewählt (besseres Signal/Rausch-Verhältnis).


Dadurch wäre aber der Rauschanteil auch größer wenn ich da an Spannungen von ursprünglich <500mV denke. Aber das wäre natürlich die Lösung mit den wenigsten Bauteilen.
Richtig, durch den kleineren Signalpegel kann ich mir eher Rauschen einfangen, dass ich dann noch zusätzlich verstärken würde.
Bei der Strommessung messe ich aber lieber mit Verstärkung als dass ich im Worst-Case 6,25W Leistung am Shunt verbrate. Außerdem messe ich differentiell, Störungen die beide Leitungen betreffen sollten sich also aufheben.


Schützt du eigentlich deine AD Eingänge vor Überspannung?
Nein, ich habe je nach Versorgungsspannung bis zu 50% Luft nach oben, außerdem hängt vor jedem Eingang ein RC-Glied welches einerseits Störungen wegfiltert, andererseits aber auch durch den Serienwiderstand eine Schutzfunktion hat.


Am ADC Pin selbst eine Zenerdiode von vielleicht 4.6V Somit sind alle Spannungen an den ADC Pins begrenzt auf <5V und dem Pin passiert nichts.
Schlechte Idee, eine Zenerdiode fängt schon vor ihrer Nennspannung an, leitend zu werden - damit kann man sich also wunderbar die Messwerte versauen und wundert sich warum nichts linear wird.
Außerdem verbraucht dein Auswertungsvorschlag massig Zeit, da jeder Kanal im Worst-Case mehrfach ausgelesen wird. So kann man sich die Regelgeschwindigkeit auch in den Keller drücken ...

Die ganzen Schutzmaßnahmen sind imho übertrieben, beim AVR hat jeder Eingang Schutzdioden, sorgt dafür dass der Eingangspfad ausreichend hochohmig ist, den Rest besorgt der AVR.


Vielleicht noch als Randbemerkung, mein Projekt ist weniger ein Schaltnetzteil im Sinne von Labornetzteil. Tatsächlich soll das ganze zwei Funktionen haben:
1. Akkulader mit Eingangsspannung zwischen 3 und 12 Volt. Primär um meine Pollin-LiPo-Zellen zu betanken.
2. Universal-Spannungsquelle zwischen 0 und 12V, als Stromversorgung kämen zum Bleistift besagte LiPos in Frage. Ursprünglich geplant um meinen Asuro und später andere Roboter mit ihrer Wunschspannung zu versorgen.
Die Schaltung gibt daher sowohl einen Step-Down als auch einen Step-Up Betrieb her, Überwacht werden können Ein- und Ausgangsstrom, Ein- und Ausgangsspannung sowie die Hilfsspannung für die MosFET-Ansteuerung.

Da das ganze auf Batteriebetrieb ausgelegt ist, achte ich etwas mehr auf den Leistungsverbrauch ...

mfG
Markus

Bernhard667
05.08.2010, 20:52
Hallo,

besprechen wir jetzt eigentlich gerade Martin. oder MarkusJ?
Oder is das einer?

Bernhard

markusj
05.08.2010, 21:59
Hihi, nein, es geht um Martins SNT. Ich ging nur kurz auf mein Projekt ein um die abweichenden Prioritäten aufzuzeigen. Martin hatte lediglich Bezug auf mich genommen.

Außerdem führe ich keine Selbstgespräche über zwei Accounts, dafür würde mir auch einer reichen :P

mfG
Markus

Martin.
06.08.2010, 09:56
Also erstmal vielen Dank für eure hilfreichen Antworten. Ich glaub auch, dass es eher ungünstig ist mehrere ADC Kanäle auszulesen. Das Multiplexing ist ja kein großer Aufwand und wurde schon berücksichtigt, genaus wie der kleinere Shunt.
Kann mir vielleicht von euch jemand verraten, wie ich bei einfachen Verbindungen bei eagle so schöne Labels dranfügenkann. Zum Beispiel:

________
|ADC 3 >
------------

Ich hoffe ihr erkennt das wieder. Das soll ein Rechteck mit einer Spitze an der rechten Seite sein. Oder gibts sowas in eagle gar nicht?

Ich finds nicht schlecht wenn markus immer seine Ideen mit reinschreibt und auch was seine Intensionen sind, denn dadurch kann ich ja auch nur profitieren!

Der Schaltung hab ich jetzt noch einen 4016er spendiert um noch einen 100mA Messbereich hinzuzufügen. Glaubt ihr es gibt Probleme wenn zwei der Widerstände beim Differenzverstärker nur 20k haben? Eventuell benutz ich doch dann einen Atmega mit integriertem Differential ADC Channel. Mal schauen.

Grüße

Martin

PS: Was mir gerade noch eingefallen ist: Dein RC Glied verwendest du doch urpsrünglich als Tiefpass oder? Dann sollte man doch die Cut-Off Frequenz so wählen, dass sie gerade das 50Hz rauschen rausfiltert oder? Gehst du dann mit dem Widerstand ans 10k Limit des ADC oder bleibst du lieber darunter und wählst dafür den Kondensator kleiner?

markusj
06.08.2010, 14:14
Ich glaub auch, dass es eher ungünstig ist mehrere ADC Kanäle auszulesen.
Warum? Der ADC hat doch extra zu diesem Zweck einen Multiplexer eingebaut. Und schneller als das Umschalten des externen Multiplexers wird die interne Umschaltung auch sein!


Kann mir vielleicht von euch jemand verraten, wie ich bei einfachen Verbindungen bei eagle so schöne Labels dranfügenkann.
Du weißt wie man normale Labels platziert? "Button ABC über dem Ausrufezeichen auf gelbem Grund, ziemlich links unten in der Werkzeugleiste). Wenn du jetzt oben den zweiten Button neben der Layerauswahl anklickst, ist das Label nicht mehr nur ein einfacher Text sondern bekommt noch den Pfeil verpasst.


PS: Was mir gerade noch eingefallen ist: Dein RC Glied verwendest du doch urpsrünglich als Tiefpass oder? Dann sollte man doch die Cut-Off Frequenz so wählen, dass sie gerade das 50Hz rauschen rausfiltert oder? Gehst du dann mit dem Widerstand ans 10k Limit des ADC oder bleibst du lieber darunter und wählst dafür den Kondensator kleiner?
Äh, nein, 50Hz-Rauschen ist wohl das kleinste Problem. Wenn ich das SNT mit 100kHz betreibe, bekomme ich da deutlich mehr "Brumm" rein.
Ich habe die RC-Glieder für die Strommessung fürs erste auf 680 Ohm und 2,2nF festgelegt, sollte ich Probleme mit Rauschen bekommen (die Grenzfrequenz >650kHz ist eigentlich eine Fehlauslegung *duck), wird der Widerstand vergrößert.
Bei der Spannungsmessung habe ich relativ hochohmige Spannungsteiler im von 150kOhm bis 250kOhm und einen Kondensator von 100pF, was Rauschen oberhalb der ADC-Bandbreite gut unterdrücken sollte. Da der Eingangswiderstand hier relativ groß ist, werde ich bei Bedarf den Kondensator vergrößern müssen.

Die Dimensionierung der RC-Glieder sollte nicht zu knapp sein, sonst bekommt man schnelle Schwankungen nicht mit - und ein blinder Regelungsalgorithmus bringt nichts.

mfG
Markus

Martin.
06.08.2010, 14:33
Martin. hat folgendes geschrieben:
Ich glaub auch, dass es eher ungünstig ist mehrere ADC Kanäle auszulesen.

Warum? Der ADC hat doch extra zu diesem Zweck einen Multiplexer eingebaut. Und schneller als das Umschalten des externen Multiplexers wird die interne Umschaltung auch sein

Das war mehr darauf bezogen bei jedem Durchlauf anstatt einem Kanal alle 8 Kanäle auszulesen und dann nach dem ersten sinnvollen Wert zu suchen.

Ich hatte hier schonmal eine Diskussion im Forum über den Spannungsteiler vor einem AD Wandler. Da wurde mir mitgeteilt, dass der Widerstand höchstens 10k betragen darf! Den Grund ist wohl der, dass sonst ein interner Kondensator des AD Wandlers nicht schnell genug entladen wird. Aber genauer weis ich auch nichts.

markusj
06.08.2010, 15:12
Es wird gar nicht nach "sinnvollen" Werten gesucht - Die ADC-Steuerung erfasst einfach kontinuierlich die relevanten Kanäle, wenn der Regelalgorithmus dann Daten braucht, liegen diese im SRAM bereit.

Zum ADC und den 10kOhm: Ich habe das Datenblatt gelesen und kenne die Problematik - Daher der Gedanke, den Kondensator des RC-Gliedes bei Bedarf größer zu machen.
Bevor ich aber den Stromverbrauch des Spannungsteilers oder andere Bauteile verändere, werde ich das ganze erst einmal so testen.

mfG
Markus

PS: Diskutieren wir jetzt wieder über dein SNT?

Bernhard667
06.08.2010, 17:58
Hallo Martin,
ich kann immer noch nicht den Vorteil erkennen, warum Du externe Multiplexer für die Spannungmessung verwenden willst.
Du verwendest einen IO Pin des Controllers, um 1 Signal zu muxen, d.h um 1 ADC Pin zu sparen. Der Controller hat interne Multiplexer, nimm die. Dann kannst die die externen Multiplexer sparen und brauchst nicht mehr Pins am Controller.
Bist Du knapp an ADC Eingängen, dann wäre es natürlich ok.
Du braucht naürlich immer nur den AD Kanal abfragen, der gerade interessant ist, d.h. dem dem richtigen Bereich entspricht.
Daß routinemäßig die Eingangsschutzdioden der Bausteine benutzt werden, das Signal zu begrenzen ist nicht ganz sauber.

Zur Strommessung.
Lese ich richtig, daß UB so bis 30V raufgeht und an Rlast die Ausgangsspannung bis 30 V anliegt?
Wenn ja, kann Strommessung kaum klappen.
Die Analogmultiplexer können nur Spannungen schalten, die zwischen 0V und Vcc der 4016 liegen. Wenn Vcc 5V ist, kannst Du nicht 30V und 30,1V an den OP durchschalten, um die Differenz von 0,1V differenzzuverstärken.

Bernhard

Martin.
07.08.2010, 12:12
Hallo Bernhard!

Der Einwand der Schaltspannungen ist sehr gut! Aber ist es nicht so, dass ich maximal 2.5A Ausgangsstrom habe (Rlast=0), und dann fallen am 0.1Ohm Widerstand 0.25V ab. Wenn Rlast größer wird sinkt Ushunt ab mit limes gegen 0V, denn wenn ich RLast ganz weglasse dann liegt "unterhalb" des SHunts maximal 30V an und überhalb des Shunts auch. An dem fällt in diesem Fall gar keine Spannung ab. Somit haben wir die beiden Grenzfälle diskutiert.
Ich sehe daher keinen Grund, weshalb ich Spannungen mti dem 4016 Schalten würde, die größer als 5V sein können. Aber danke für den Hinweis, dass hätte ich echt nicht beachtet.

Nun zum Multiplexer. Bis jetzt, aber das kann sich nochmal ändern, habe ich 6 Bereiche, 4 Spannungsbereiche und 2 Strombereiche, die ich einzeln behandel. An sich kein Problem bei 8 ADC Channels, aber ich habe ja zwei Ausgangskanäle, die ich einzeln regeln möchte.
Ich kanns leider schlecht einschätzen, ob man mit einem Controller zwei Kanäle regeln kann, ausreichend Pins sind vorhanden, oder ob es besser wäre jedem Kanal einen Controller zu spendieren. Dann würde ich mir tatsächlich den Multiplexer sparen.

Bin immer offen für Vorschläge und Empfehlungen!

Martin

Bernhard667
07.08.2010, 19:27
Hallo Martin,
Hier schreibst Du
...wenn ich RLast ganz weglasse dann liegt "unterhalb" des SHunts maximal 30V an und überhalb des Shunts auch...
Und diese Spannung von ~30V geht über die Widerstände an die A Pins der 4016.
Die kann er aber nicht weiterschalten. Das kommt gar nicht durch bis zum OP

Das Datenblatt des 4016 zeigt ziemlich hohe Werte für den On Widerstand. Nimm doch den 4066.
Die 30 V legtst Du auch ohne Vorwiderstand an den Pin 5 IC1B LM358. Das wird ihn töten.

Pin 11 IC2B liegt solide auf GND.

Bernhard

Martin.
08.08.2010, 10:52
Hallo Bernhard!

Ok das Problem mit den APins des 4016 muss nachgebessert werden. Es gäbe den Max312 der die Spannungen schalten könnte, aber der ist mir eigentlich zu teuer. Denn dann kann ich gleich zwei Controller für die Regelung hernehmen. Ich glaub, dass ist eh die leichteste Lösung. Wenn erstmal ein Kanal funktioniert, dann muss ich nur noch alles nochmal aufbauen.

Aber warum muss ich vor Pin5 des LM358 einen Vorwiderstand schalten? Die Eingangsimpedanz ist doch eh im idealfall unendlich. Den OP wollte ich eigentlich mit 32V Versorgen und dann sollte eine Eingangsspannung von 30V laut Datenblatt keine Probleme machen.
Der Fehler mit Pin 11 IC2B ist mir gestern Mittag aufgefallen. Ich habs auch schon ausgebessert aber noch nicht hochgeladen. Sorry mein Fehler.

Aber da ich jetzt eh die analog Schalter weglasse, wird wohl im Laufe des Tages ein neuer Schaltplan nach deinem Vorschlag online sein.

Danke für die Tipps

Martin

Bernhard667
08.08.2010, 12:23
Hallo,

ok wenn Du 32V Vcc für den LM358 nimmst, geht es, 30 V auf den Pin zu legen.
Ein Serienwiderstand kann ihm aber das Leben retten, wenn mal mal mehr kommt als geplant.

Bernhard

Martin.
09.08.2010, 21:50
Aus dem Schaltplan wurde leider noch nichts, weil ich immer noch ein Problem mit deiner Methode sehe. Du meinst doch, wenn ich dich richtig verstehe, alle Spannungsteiler direkt an verschiedene ADC Kanäle anschließen.
Das würde uns doch wieder auf das alte Problem führen, dass die ADC Pins Spannungen >5V ausgesetzt sind. Eine Zener-Diode möchte ich nur ungern verbauen. Wie wäre es dann, wenn ich doch über eine Common-Emitter-Schaltung die ADC-Pins auf Masse lege, die durch Überspannung betroffen sind. IO-PORTS habe ich wirklich im Überfluss, daran scheiterts nicht. Ich würde auch gerne auf die manuelle Multiplexvariante verzichten, wenn mir jemand einen Tipp geben könnte, wie ich die Eingänge vor Überspannung, die Unter umständen erheblich ist (25V zuviel) sicher schütze.

Im Anhang ist eine Schematik wie ich sonst die ADCs auf Masse gezogen hätte. Der BC546 sollte die Collector-Emitter Spannung aushalten. Widerstände habe ich absichtlich nicht eingezeichnet, auch nicht den Basiswiderstand, da es ja nur eine Schematik ist.

Zum Schluss noch eine andere Frage: Um hochohmige Spannungsteiler verwenden zu können aber gleichzeitig den ADC Eingang nicht unnötig hochohmig zu machen, hätte ich Impedanzwandler mit einer Ausgangsimpedanz von 1kOhm hergenommen. Der LM358 kostet nur 15Cent. Es würde mir insofern nichts ausmachen den zu Verbauen. Ein Impedanzwandler sollte sich doch grundsätzlich günstig auswirken, wenn ich durch ihn dann eben "hochohmige" Spannungsteiler und "niederohmige" ADC Eingänge verwende?

Danke

Martin

PS: Den 546 hätte ich außerhalb des Verstärkungsbereiches betrieben. Die Spannung die dann noch an ihm abfällt sollte doch dann zwar existieren, aber mich nicht weiter stören, weil ich eh einen anderen Kanal auswähle. Oder sollte ich da dann doch eher einen N-Kanal MOSFET hernehmen? Wenn ja gibts empfehlungen?

markusj
10.08.2010, 00:30
Du weist schon, dass der AVR intern Klemmdioden zum Schutz der Eingänge hat, oder?
Wenn du den Spannungsteiler entsprechend dimensionierst, passiert dem AVR garnichts. In einer Appnote klemmt Atmel einen AVR direkt an 230V - Nur mit nem Megaohm-Widerstand davor ;)

mfG
Markus

Martin.
10.08.2010, 13:51
Hier ist mal der neueste Stand, wobei ich noch nicht weis, wie ich den ADC vor Überspannung schütze. Wenn ein Widerstand alleine schon reicht, wie groß muss der dann sein?

Noch ne kleine Beschreibung:

Die Klemmen stellen den Anschluss meiner Versorgungsspannung und des lastwiderstands da. Ich habe jetzt erstmal die Impedanzwandler hinzugefügt, damit der Eingang des ADC nicht zu hochohmig wird. Aber ihr meintet ja dass der Widerstand den ADC vor Überspannung auch bei 30V schützt und somit eigentlich größer sein sollte.
Vor den Impedanzwandlern sind noch die Spannungsteiler und Anti-Aliasing filter, wenn mans als solche bezeichnen darf...

danke fürs durschauen.

Martin

markusj
10.08.2010, 15:21
Schau Mal ins Datenblatt, wieviel die Klemmdioden so vertragen - Ich würde versuchen, nicht mehr als 1mA Ableitstrom je Pin zu haben, eher weniger ...
Rein vom Gefühl her würde ich vllt. 10k als Vorwiderstand reinzubauen.

mfG
Markus

Martin.
10.08.2010, 15:27
Ok habe vorhin in einem anderen Thread mitbekommen, dass es 30kOhm sein sollten. Hast du bei dauerbenutzung bedenken, dass ich den MCU grille? Dauerbenutzung heist bei mir ne Stunde oder so.

markusj
10.08.2010, 16:07
Nö, wenn du innerhalb der Specs im Datenblatt bleibst ... bist du paranoid, klemmst du eben noch eine Shottky-Diode ran.

mfG
Markus

Bernhard667
11.08.2010, 11:05
Hallo,

die Ableitfähigkeit der ESD Schutzstrukturen der Pins finde ich nicht in der Spec von, z.Bsp. des ATmega 8.
Wenn man sie als Klemmdioden benutzt, verläßt man den spezifizierten Bereich.

Klugscheißermodus aus:
Im Hobbybereich kann man es schon machen, aber man sollte doch noch wissen, daß man gerade den erlaubten Bereich verläßt. Bei kleiner 1mA sollte nichts Schlimmes geschehen.
Der Vorschlag mit der Schottky Dioder wäre auf der sicheren Seite, Aufwand minimal.

Für beide Formen der Klemmung von Überspannung mittels Ableiten in die 5V Versorgung hinein ist noch zu beachten: Der Stromverbrauch in der 5V Domäne muß immer größer sein als als die Summe der Ströme über die Klemmung. Sonst steigt die Spannung über 5V an.

Zu den Impedanzwandlern IC2 und 3
Wenn die an eine Betriebsspannung von 30V hängen, liefern die am Ausgang auch was in der Größenordnung ab.
Das Thema Klemmung bleibt also erhalten. Du brauchst wieder Serienwiderstände und wirst wieder hochohmig am Eingang des ADC.
Meiner Meinung nach kannst Du dort auch mit wenigen 10K Impedanz rein, d.h. der Impedanzwandler ist unnötig.

Bernhard

Martin.
11.08.2010, 11:30
Das mit den Strömen habe ich leider noch nicht ganz verstanden, oder vielleicht doch?

Der Strom durch die Diode soll kleiner sein wie der Strom in der 5V Domäne? In der 5V Domände hängen noch ein paar Status LEDs die mit 20mA und mehr sicherlich den dominanten Teil gegebnüber den ICs ausmachen. Der Dioden strom sollte doch immer kleiner sein wie 20mA, da doch mein Spannungsteiler hochohmig ist. 30V / 15k sind ja nur 2mA. Stimmen die überlegungen soweit, oder muss ich da noch andere Sachen beachten?

Da in einem anderen Beitrag das Thema Überspannung am ADC schonmal besprochen wurde, dachte ich es wäre sinnvoll auch in diesem Beitrag nachzufragen: https://www.roboternetz.de/phpBB2/viewtopic.php?t=52631. Ich wollte nur nochmal pro forma darauf hinweisen, damit sich niemand hintergangen fühlt. Ich hatte auch nie vor zwei Themen parallel laufen zu lassen, nur stand da schon 90% der relevanten Sachen.

Martin

Bernhard667
11.08.2010, 18:16
Hallo,

das mit den Mindestströmen hast Du schon richtig verstanden, passt schon.

Bernhard