Hallo Freunde des Forums,
ich muss aktuell eine Schwellenspannung von 600mV erkennen (Hysterese etwa 50mV), und das zweifach (unabhängig voneinander). Ein Ansatz wäre die konventionelle Lösung über OPVs oder speziellen diskreten Komparatoren (LM339) oder die Nutzung interner Komparatore von µCs (hier hätte ich den PIC16F877A ins Auge gefasst). Einen µC für das Miniprojekt brauche ich eh und dann würde sich auch z.B. die beiden internen Komparatoren des µCs anbieten. Habe aber keine praktische Erfahrung damit und würde gerne eure Meinung/Erfahrung hören.
Kennwerte:
Betriebsspannung: 5V DC
Schwellspannung: 0,6V
Hysterese: ca. 50mv
Symmetrische Spannungsversorgung: ist weder vorhanden noch eingeplant
(Die Schwellspannung muss an 2 verschiedenen Stellen erfasst werden, sobald Schwellspannung erreicht -> HIGH Pegel, sobald unterschritten (unter Berücksichtigung der Hysterese) -> LOW Pegel
Die Sache ist ganz einfach: Schau ins Datenblatt deines uC ob dort ausreichend Analogkomparatoren enthalten sind.
Uups, kein einziger.
Also brauchst du externe.
Dann könnte man einen LM393 nehmen und dessen Ausgänge parallel schalten, wenn Hysterese auch gemeinsam beeinflusst werden darf. Ansonsten je einen vor je einen Eingang des uC der dann das logische ODER macht.
Ob man die 600mV von den 5V ableiten darf per Spannungsteiler oder es genauer sein muss als deine Versorgungsspannung weisst nur du.
Wenn's so langsam sein darf, kann jeder µC mit ADC auch gehen, macht man den Komparator eben in Software.
Der ADC braucht dann (genau wie der Komparator) eine gute Referenz, und mit Software könnte man evtl. auch die Schwellwerte anlernen o.ä.
Meine Frage richtet sich in erster Linie an Leser, die einen Komparator mittels eines µCs (wie dem oben genannten PIC16F887A o.ä.) umgesetzt haben oder umsetzen wollten und dann gemerkt haben, ah, da gibt es ja diese oder jene Probleme und dann doch zu einem externen Komparator umgeschwenkt sind. Auf den ersten Blick erscheint mir unter den genannten Bedingungen der µC die bessere Lösung (kompakter, flexibler), aber der Teufel steckt bekanntlich im Detail und die saubere Lösung benötigt Erfahrung...
Ich hatte ein ähnliches Problem und hab es auch mit einem PIC versucht, ist aber schon ewig her, da waren die PICs mit Komparator neu, den genauen Typ weiß ich nicht mehr, ein 16Firgendwas.
Die Komparatoren waren reichlich mau und jitterig, und es brauchte viele Pins wg. der Rückkopplung.
Habs dann eben auch mit dem ADC gelöst, der läuft im Timer-Int so nebenbei mit. Braucht weniger Pins und ist einfach einstellbar, man muss nicht rumtändeln wegen der Hysterese sondern kann im Code leicht einstellen wer wann wie schaltet. Sofern genug Processing Power über ist...
Auf den ersten Blick erscheint mir unter den genannten Bedingungen der
µC die bessere Lösung (kompakter, flexibler), aber der Teufel steckt
bekanntlich im Detail und die saubere Lösung benötigt Erfahrung...
Als wir mangels Internet noch selbstständig entscheiden durften, hätten wie das aufgebaut und eigene Erfahrung gesammelt.
Die Midrange PIC-Komparatoren haben üblicherweise programmierbare
Referenzspannungen. Du solltest also zunächst einmal im Datenblatt
deren Werte studieren, und ob sie zu deinem Vorhaben passen.
Zur Not müsste man mit Spannungsteilern etc. etwas nachhelfen.
Ist die Hysterese zu klein, kann man ja die Referenzspannung dann
auch fallweise umprogrammieren.
Die Datenblattwerte sollte man in einem praktischen Aufbau auch
noch einmal verifizieren.
Vorteil gegenüber dem Gemurkse mit einem ADC: Der Controller kann
bei den Komparatoren nebenbei ein Nickerchen machen.
Aufgeweckt wird er dann per Interrupt.
Nimm einen LM358, damit kannst du zwei unabhängige Schmitt-Trigger mit
je einer kleinen Hysterese aufbauen.
Nun ja, nur der LM324 ist noch schlechter, einen Komparator kann man mit jedem beliebigen OP aufbauen. Ob die Hysterese klein oder groß ist, legt der Widerstand in der Rückkopplung fest.
Mit LM358 etc. fängt man das Problem, dass die Ausgänge bei einseitiger Spannungsversorgung nicht auf Null kommen.
verweigert mir schon den Zugriff, keine Ahnung, was das ist
Diese beschissene Seite mag den Browser nicht, hat es aber nicht nötig, eine sinnvolle Fehlermeldung auszugeben. Als sinnvolle Lösung sehe ich die ICs nicht, aber hänge die Datenblätter trotzdem für Dich an.
Gehe auf die Antworten ein, Dein "Problem" wäre mit Standardzeug oder dem µC aus dem Bastelregal schon längst gelöst.
Das Erkennen und Schalten sollte unter 1 Sekunde sein;
Wenn nichts kaputt geht durch Aufhängen des µC dabei, dann kannst Du das mit dem µC lösen mit zwei von dessen 10 ADC plus ein paar Zeilen Code. Ansonsten halt analog realisieren.
Mit LM358 etc. fängt man das Problem, dass die Ausgänge bei einseitiger
Spannungsversorgung nicht auf Null kommen.
Gerade der LM358 hat den großen Vorteil, dass er bei Single Supply Betrieb bis fast auf 0 Volt runterkommt. Wenn man ihn am Ausgang mit einem 10k Widerstand belastet, kommt er je nach Hersteller bis auf 5mV bis max. 50mV runter.
Hab nicht in das Datenblatt Deines PIC geschaut, aber die Möglichkeiten waren schon vor Jahrzehnten enorm mit PICs. Programmierbare Schaltschwellen, umroutbare Signale auch in analog, ... . Die Chance ist groß, dass Du mit einem Komparator startest und später feststellst, dass Du eine andere Polarität brauchst, einen Timer mitlaufen lassen oder das Signal vom Prozessor filtern lassen willst. Alles, ohne die HW zu ändern, nur ein paar config-Bits.
Wenn die 50mV nur ein grober Richtwert sind, nimm die internen. Wenn die Hysterese zwischen 49 und 51mV liegen muss, ... hast Du andere Sorgen.
Wenn die 50mV nur ein grober Richtwert sind, nimm die internen. Wenn die
Hysterese zwischen 49 und 51mV liegen muss, ... hast Du andere Sorgen.
Die Schwellspannung liegt bei 600 mV, da ist er zum Glück sehr weit von den 50 Millivolt entfernt. Die Hysterese soll insgesamt ungefähr 50 mV betragen.
Darum wird sie durch äußere Beschaltung festgelegt, falls man spezielle
Wünsche hat.
Ganz genau. Und genauso kann man das auch bei den internen Komparatoren von µC machen. Voraussetzung ist halt nur, dass diese in der Lage sind, das Ausgangssignal des Komparators nach außen zu leiten, was z.B. bei sehr vielen AVR8 problemlos geht.
Das Erkennen und Schalten sollte unter 1 Sekunde sein
Unter diesen Gegebenheiten wäre für mich die Sache klar: ADC des Mikrocontrollers und Komparator in Software.
Denn Dinge wie Hysterese, Schaltschwellen und ähnliches lassen sich dann ganz einfach anpassen.
Ich hatte auch schon genug Fälle bei denen sich hinterher in der Praxis auch noch zusätzliche Anforderungen oder Verbesserungswünsche ergaben, wie z.B. Filterung von kurzen Spannungsspitzen am Eingang, Begrenzen der Schalthäufigkeit oder gegenseitiges Lock-Out von mehreren Kanälen. Das ist in Software alles eine Kleinigkeit, in Analog erfordert das dann Fädeldraht und kleine Huckepack-Platinchen.
Voraussetzung ist halt nur, dass diese in der Lage sind, das
Ausgangssignal des Komparators nach außen zu leiten, was z.B. bei sehr
vielen AVR8 problemlos geht.
Beim o.g. PIC16F877A, auch wenn es kein AVR8 ist, sind die Ausgänge beider Komparatoren auf Pins verfügbar (C1OUT, C2OUT) - also kein Problem.
Hallo zusammen, vielen Dank zunächst einmal für die zahlreichen Antworten, Ideen, Anregungen, Pros und Cons... Solche Diskussionen mit Interessierten und Experten in dem Umfang sind extrem hilfreich, man stößt damit immer wieder auf Punkte, die man vorher nicht berücksichtigt hat und bekommt auch neue Anregungen und und und...also nochmals vielen Dank an alle, die beigetragen haben.
Da ich jetzt möglichst schnell zum Layout kommen muss, bin zur Entscheidung gekommen, zweigleisig zu fahren. D.h. den genannten µC mit seinen beiden Komparatoren als primärer Lösungsansatz zu verfolgen (Hysterese bzw. Jittereffekte per Software behandeln) und zusätzlich im Layout 2 Pins (genug davon habe ich ja) mit 2 diskreten externen Komparatorausgängen versorgen. Dann bin ich flexibel und kann dann im Notfall doch noch auf die sichere externe Variante umswitchen....
D.h. den genannten µC mit
seinen beiden Komparatoren als primärer Lösungsansatz zu verfolgen
(Hysterese bzw. Jittereffekte per Software behandeln)
Die Hysterese kannst du bei den meisten µC-AC's nicht in Software beeinflussen! Das sollte eigentlich die Sache sein, die du gelernt hast. Das muss man auch bei den Dingern in Hardware machen, wozu du das Ausgangssignal des Komparators auch außen brauchst. Und manchmal ist es halt nicht möglich, dieses Signal überhaupt nach außen zu führen, oft aber ist es zumindest nicht möglich, das über einen beliebigen Pin zu erledigen. D.h.: DAS vor allem solltest du beim Design berücksichtigen.
Da ich jetzt möglichst schnell zum Layout kommen muss, bin zur
Entscheidung gekommen, zweigleisig zu fahren.
Dein erstes Gleis gibt es eher nicht, jedenfalls ganz bestimmt nicht mit dem von dir genannten uC. Da kannst du die Hysterese nicht per Software beeinflussen. Für die von dir geforderte Hysterese brauchst du eine externe Beschaltung der im uC verfügbaren Komparatoren, genauso wie es bei externen der Fall wäre.
Vergessen hast du das dritte Gleis, die Softwarelösung unter Nutzung des ADC.
Vor der Entscheidung solltest du die Optionen ausreichend verstanden haben oder zumindest in einem Experimentieraufbau evaluiert haben.
... Da kannst du die Hysterese nicht per Software
beeinflussen. Für die von dir geforderte Hysterese brauchst du eine
externe Beschaltung der im uC verfügbaren Komparatoren, genauso wie es
bei externen der Fall wäre.
Man kann zur Laufzeit, wenn der Komparator eingeschaltet ist,
eine neue, niedrigere Referenzspannung programmieren.
Und umgekehrt, wenn der Komparator noch ausgeschaltet ist,
eine höhrere Referenzspannung programmieren.
Und schwupps, hat der Komparator eine per Software steuerbare Hysterese.
Getrübt wird diese Freude nur dadurch, dass beide Komparatoren
an der selben Referenz hängen. ☺
Richtig aber, eine Hysterese kann man auch mit einer externen
Beschaltung mit Widerständen realisieren.
Getrübt wird diese Freude nur dadurch, dass beide Komparatoren
an der selben Referenz hängen.
Richtig aber, eine Hysterese kann man auch mit einer externen
Beschaltung mit Widerständen realisieren.
Das erscheint mir unnötig aufwendig. Bei den doch sehr relaxten Timinganforderungen des OP ist der interne ADC die beste Lösung. Dann sind die Schaltschwellen unabhängig und komplett Software definiert. Keine Außenbeschaltung nötig. Und schlafen legen kann man den PIC sicher auch, während der ADC wandelt.
... ist der interne ADC die beste Lösung. Dann
sind die Schaltschwellen unabhängig und komplett Software definiert.
Keine Außenbeschaltung nötig. Und schlafen legen kann man den PIC sicher
auch, während der ADC wandelt.
Mit dem Wandeln ist es ja nicht getan. Den Komparator kann der Controller
auch im Schlaf, bis er reagieren muss. Erst dann wird er aus dem Schlaf
geweckt. Das Umprogrammieren der Referenz für eine Hysterese, ist dann
ein Klacks, wenn sie denn gebraucht wird.
Da der TO das ganze ja aber 3 fach braucht, und der Controller nicht
auf Diät ist, könnte die Nutzung des ADC das Einfachste sein.
Unter anderen Bedingungen muss das nicht notwendigerweise so sein...
Mit dem Wandeln ist es ja nicht getan. Den Komparator kann der
Controller
auch im Schlaf, bis er reagieren muss. Erst dann wird er aus dem Schlaf
geweckt. Das Umprogrammieren der Referenz für eine Hysterese, ist dann
ein Klacks, wenn sie denn gebraucht wird.
Die Hysterese in dem Sinne wird nicht gebraucht. Ich hatte vielleicht den falschen Begriff "Hysterese" gewählt. Besser wäre Toleranz von +-50mV UND Jitterresistenz. Der Komparator (egal wie realisiert) muss ziemlich genau um den Wert 0,6V schalten UND keine Jitterreaktionen um die Schaltschwelle zulassen, also nicht zig mal um die Schaltschwelle hin und her schalten. In der ISR des µC Programms kann man die Bedingungen gut umsetzen.
Da der TO das ganze ja aber 3 fach braucht, und der Controller nicht
auf Diät ist, könnte die Nutzung des ADC das Einfachste sein.
Den Komparator brauche ich nur 2 Mal(s.Ausgangsthread) und jeder der beiden könnte sogar einunddieselbe Referenz benutzen - für beide Komparatoren gelten die gleichen Bedingungen, es sind nur 2 unterschiedliche Eingangsspannungen, die separat mit EINER Referenz verglichen werden müssen.
Die Hysterese in dem Sinne wird nicht gebraucht. Ich hatte vielleicht
den falschen Begriff "Hysterese" gewählt. Besser wäre Toleranz von
+-50mV UND Jitterresistenz. Der Komparator (egal wie realisiert) muss
ziemlich genau um den Wert 0,6V schalten UND keine Jitterreaktionen um
die Schaltschwelle zulassen
Das hängt dann aber in erster Linie von dem zu überwachenden Signal ab. Ob da Rauschen oder andere Fremdspannungen drauf sind. Und natürlich kann auch die Referenzspannung und die Offsetspannung des Komparators selber verrauscht sein oder mit der Betriebsspannung zappeln.
"Hysterese" selber ist schon der richtige Begriff, weit besser als der undefierte Begriff "Jitterresistenz". Die Frage ist halt, wie hoch sie sein muß um im Sinne einer Jitter-Unterdrückung zu wirken. Dazu mußt du erstmal festlegen, was du als Jitter bezeichnest und was als zu detektierende Signaländerung.
Getrübt wird diese Freude nur dadurch, dass beide Komparatoren
an der selben Referenz hängen. ☺
Das führt das Konzept mit der Änderung der Referenzspannung Ad-Absurdum,
sobald man mehr als einen Komparator verwendet.
Dem ist nicht so. Wenn man die (Plural) Komparatoren per Software
auswertet, kann/könnte man beliebig viele Komparatorkanäle
mit ihrem jeweiligen Referenzwert programmieren.
Es gibt ja durchaus Controller, die den Luxus eines ADC nicht haben,
aber durchaus mehrere Komparatoren.
Der offensichtliche Nachteil, ist der selbe wie beim ADC.
Es ist nicht autark im Sleep nutzbar, und muss aktiv betrieben werden.
Richtig aber, eine Hysterese kann man auch mit einer externen
Beschaltung mit Widerständen realisieren.
Das schrieb ich ...
Ja, richtig.
"Richtig" steht da doch.
Mit einer sogenannten "Mitkopplung".
Das steht da nicht.
Dazu müsste man die Komparatorausgänge aber auf Pins mappen.
Das ist beim TO, und dessen Ansprüchen an die Geschwindigkeit
wohl unnötig. Und vielleicht sogar eher störend.
Er braucht die Komparatoren ja als "Eingangsvariable".
Den Komparator brauche ich nur 2 Mal(s.Ausgangsthread) und jeder der
beiden könnte sogar einunddieselbe Referenz benutzen - für beide
Komparatoren gelten die gleichen Bedingungen, es sind nur 2
unterschiedliche Eingangsspannungen, die separat mit EINER Referenz
verglichen werden müssen.
Ich hege immer eine gewisse Sympathie für die einfacheren Dinge,
und würde die Komparatoren benutzen. ☺
Wichtig ist, dass mit der Referenzspannung und den Schaltschwellen
tatsächlich vor(!) dem Layout zu testen.
Update: Habe nun vorab den Controller auf einem kleinen Testboard getestet. Es funktioniert grundsätzlich ganz gut, es gibt nur einen Aspekt, der mich stutzig macht: Habe an einem Ausgangspin des µC, das den Status des Komparatorausgangs in einer Endlosschleife 1:1 ausgibt, eine LED angeschlossen und erwartet, dass diese entweder (mit konstanter helligkeit) leuchtet oder ganz aus ist. Aber um die Schaltspannung herum ändert sie ihre Helligkeit (wird dunkler) und flackert auch ab und an. Ohne das näher bislang analysiert zu haben, gehe ich davon aus, dass dies durch Jittern bedingt ist, also schnelles Hin -und Herschalten des Ausgangs. An dem Test-Eingangssignal kann es nicht liegen, da ich dies über einen Spannungsteiler mit konstanter Batteriespannung erzeugt habe (da sollten keine Störungen drauf sein). Also gehe ich davon aus, dass der µC selber um den Schaltpunkt nicht ganz stabil ist. Das ist nur in einem schmalen Spannungsbereich der Fall; wenn die Spannung dann deutlich (>50mV) von der Schaltschwelle entfernt ist, ist die LED komplett dauerhaft an oder aus. Habe mal den kleinen Testcode angehängt, für den Fall, dass jemand mal ein ähnliches Anliegen durchspielen will.
CVRSRC kommt (leider) von VDD (Kapitel 13). Da wird dann genug Rauschen drauf sein. Das musst du dann in der Software hinbiegen.
Da scheint es dann doch sinnvoller zu sein, das mit ADCs zu lösen.
Dazu müsste man die Komparatorausgänge aber auf Pins mappen.
Das ist beim TO, und dessen Ansprüchen an die Geschwindigkeit
wohl unnötig.
Witzig. Gleich das übernächste Posting nach deinem zeigt, dass das wohl doch nicht so unnötig ist...
Und vielleicht sogar eher störend.
Störend ist offensichtlich eher das Verhalten, wenn das Signal nicht zur Mitkopplung genutzt wird...
Er braucht die Komparatoren ja als "Eingangsvariable".
???
Das eine schließt doch das andere keinesfalls aus. Auch wenn du das Ausgangssignal des Komparators nach außen routest, kannst du es natürlich nach wie vor auch intern nutzen.
es gibt nur einen
Aspekt, der mich stutzig macht: Habe an einem Ausgangspin des µC, das
den Status des Komparatorausgangs in einer Endlosschleife 1:1 ausgibt,
eine LED angeschlossen und erwartet, dass diese entweder (mit konstanter
helligkeit) leuchtet oder ganz aus ist. Aber um die Schaltspannung herum
ändert sie ihre Helligkeit (wird dunkler) und flackert auch ab und an.
Das ist genau der erwartbare Effekt, wenn es keine nennenswerte Hysterese gibt. Kleinste Schwankungen sowohl des Eingangssignal als auch des Referenzsignals lassen den Komparator lustig hin- und herschalten.
Da muss zwingend eine kleine Hysterese mit rein, sonst weiß der programmierte Komparator bei erreichen des Schwellwerts nicht genau zu welcher Seite er nun hinspringen soll.
Insbesondere dann, wenn die Schwellwertspannung für längere Zeit exakt genau auf dem Kipppunkt stehen bleibt!
Warum das An-und Ausschalten um den Schwellwert nicht per Software abfangen? In der ISR, die beim Schaltvorgang aufgerufen wird, könnte man doch im Abstand von wenigen ms den Komparatorausgang jeweils abfragen und wenn Zustand HIGH klar dominiert, dann den Ergebnisausgang (im Test-Programm Pin 21 bzw.22) auf HIGH setzen und und ISR für ca. 5sec sperren (5sec ist etwa die Zeit,bei der ich sicher gehen kann, dass sich vom Prozess her -sofern der Schwellwert korrekt erkannt wurde- keine Statusänderung mehr stattfinden kann)
Wenn der PIC den Komparator nicht klassisch über einen "internen OPV" realisiert sondern über den sowieso integrierten ADC, dann bin ich unsicher, ob eine Mitkopplung via Widerstand den Hysteresezweck sauber erfüllt. UNd dann stellt sich bei einer HW Hysterese auch das Problem eine Störung ausserhalb der Hysterese zu erkennen, die ich mit dem oben beschriebenen Softwareansatz miterschlagen könnte. Also wenn z.B. bei 1V im Eingangssignal ein Spannungseinbruch für 1ms auf 500mv erfolgen würde, würde die klassische Hysterese (+-50mV) blind sein und die Störung würde als Statusänderung fälschlich interpretiert werden - softwaretechnisch würde ich es erkennen können. Oder mache ich einen Denkfehler?
Wenn der PIC den Komparator nicht klassisch über einen "internen OPV"
realisiert ...
Der Komparator ist im Nebenberuf ein eben hochverstärkender OPV.
Wenn du solche analoge Komponenten benutzen willst, muss man die
Schaltung eben auch wie eine Analogschaltung aufbauen.
Alles was du an "Dreckeffekten" siehst, resultiert aus dieser Verstärkung.
Das fängt mit dem Netzteil an. Wenn das eine China-USB-Wandwarze ist,
wird da recht sicher neben den 5 V, einiges an Pulsen und HF herauskommen.
Um Störungen auszufiltern, benutze ich bei Analogschaltungen immer
ein Pi-Filter aus Low-ESR-Elko/Tantalelko, einer Drossel und noch einem Low-ESR-Elko/Tantalelko. Den Abblockkondensator für den Controller wähle
ich dann auch immer recht grosszügig mit 1 oder 4,7 µF.
Das Ganze muss dann auch mit ordentlicher (sternförmiger) Masseführung
aufgebaut werden.
Beim 877A geht die Betriebsspannung über den Widerstandsteiler direkt(!)
auf den Komparator. Die muss also hinreichend sauber sein.
Ein 886/7 wäre wohl günstiger. Der hat auch eine "richtige" Referenz für
den Komparator, die unabhängig von Vdd ist.
Die Komparatoreingänge verdienen ein ordentliches RC-Tiefpassfilter.
Da es ja bei dir scheinbar nur um DC geht, wäre wohl 1 kΩ und 1 µF
in unmittelbarer Nähe der Pins geeignet. Sonst reicht schon
einstreuende HF, und Transienten in der Umgebung um ihn zu schalten.
Die Quelle, respektive das Poti, für das Testsignal, sollte auch
einigermassen niederohmig sein. Also besser 1 kΩ als 100 kΩ.
Im übrigen trifft (fast) alles was ich geschrieben habe, auch für
einen externen Komparator zu. Und auch ein ADC kann nur so gut arbeiten,
wie es seine Umgebung zulässt.
Ich hatte mit den Komparatoren der 886 jedenfalls nie Probleme.
Auch "mit ohne" Hysterese.