kostenloser Webspace werbefrei: lima-city


Analogeingänge mit hoher Genauigkeit & Arduino

lima-cityForumSonstigesTechnik und Elektronik

  1. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Hi @ all,

    Seit geraumer Zeit versuche ich auf Basis des Arduinos, leichte eingängige Programmierung, Kosteneffizienz und Modularität mit den Anforderungen und Gefahren einer industriellen Umgebung zu vereinen, ich bin dabei recht erfolgreich gewesen weil optisch entkoppelte Ein/Ausgänge sowie MOSFET Treiberstufen als Ausgangsverstärker und Relaistreiber mit ein wenig Zusatzhardware sehr gut funktionieren und die Spannungsversorgung aus industriell gäniger 24V DC Quelle auch sehr einfach realisierbar ist.

    Was mir leider bisher nicht gelingen mag ist die Analogwertverarbeitung in ausreichender Genauigkeit, 10 Bit Auflösung (1024 Schritte) bei maximal 5V Auslenkung (Vcc und GND als Referenzen) sind einfach zu ungenau was ich kurz zeigen will:

    Wenn man bspw. eine Temperatur von 0 bis 1000°C messen möchte und der Sensor ein industrieller Standardsensor ist der einen 4-20mA Stromausgang besitzt dann müsste ich dessen Ausgangssignal über einen 250 Ohm Widerstand auf 0..5V umbrechen, bei 4mA (also in Ruhe, Sensorausschlag 0%, also 0°C ) ergibt sich ein Spannungsauschlag von 1V. Damit sind die ersten 205 Schritte meiner Auflösung schon verbraten, es bleiben mir also 819 Schritte meiner Auflösung in denen sich der Messbereich meines Sensors niederschlägt. Das führt bei 1000°C im Vollausschlag zu einer theoretischen Auflösung von 1,2°C (praktisch werden es eher 3 oder 4°C sein) eine Änderung kleiner als 1,2°C (3°C) würde also nicht registriert werden. Für ernsthafte Anwendungen ist das zu ungenau.

    Kennt jemand von euch eine Möglichkeit analoge Signale mit höherer Genauigkeit zu erfassen und dann bspw. seriell an den Arduino weiterzugeben ohne das ich einen weiteren programmierbaren Controler benutzen muss der ev. genauere Eingänge bietet ?

    Benötigt wird mehr als ein Kanal, nach möglichkeit sogar mehr als die 6 Kanäle die der Arduino bietet (4, 8 oder 12 wären gut, die Auflösung sollte mindestens 12Bit betragen, besser 16 oder 20)

    Wie würdet ihr eine elektrische Entkopplung für Analogwerte realisieren damit ein Sensorfehler nicht den Arduino killt ?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo fatfox,

    ich schreibe jetzt einfach mal einen unqualifizierten Kommentar:
    Ich habe gerade mal mit einer 1N4004 Diode versucht den Analog-Offset abzusenken. Eine Diode verringert den Pegel um 0,25V.
    Wenn man also über einen Widerstand mit 312,5 Ohm misst (V_min=1,25V / V_max=6,25V) und den Pegel über 5 Dioden (Offset=-1,25V) auf den Analogeingang des Arduino legt, dann hat man (zumindest theroretisch) die vollen 1024 Schritte zur Verfügung.
    Was die Absicherung betrifft, denke ich nicht, dass es möglich ist eine galvanische Trennung zwischen Sensor und Arduino zu verwirklichen sofern man die Analogeingänge verwenden will. Man kann aber eine Zenner-Diode gegen Überspannung und dazu noch eine Feinsicherung gegen zu hohe Ströme einsetzen.
    Alternativ kann man wohl eine externen ADC + analog Multiplexer verwenden, welchen man dann wieder mit den üblichen Mitteln absichert. Aber die Zenner-Diode und die Feinsicherung wird man zum Schutz von ADC und Multiplexer wohl trotzdem benötigen. Es sei den man bekommt die Bausteine irgendwo billig nachgeworfen.
    Zur Genauigkeit:
    Ob Dir ein ADC mit höherer Genauigkeit überhaupt etwas bringt hängt von der Messgenauigkeit des Sensors ab. Damit die 891 Schritte des ersten Ansatzes signifikant sind, darf der Sensor nur eine Ungenauigkeit von unter +/-20µA haben. Wenn man von 1024 Schritten ausgeht, dann müssen es weniger als +/-15µA sein. Als Temperatur also +/-1.1°C bzw. +/-1.0°C.
    Falls die Genauigkeit des Sensors geringer ist, dann sind die niederwertigen Bits sowieso nur Schrott und ein ADC mit höherer Auflösung bietet keinen Mehrwert.
    Ich hatte hier mal eine Temperatursensor (allerdings Infrarot) der ist problemlos um +/- 2°C gesprungen. Und der gehörte wohl schon zu den besseren.
    Um ein verlässliches Ergebnis zu bekommen musste man dabei sowieso über mehere Messungen mitteln. Unter Umständen trifft das auch für Deine Sensoren zu.

    Edti: Tausche Bit gegen Schritte.

    Beitrag zuletzt geändert: 2.2.2013 21:35:24 von darkpandemic
  4. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Hallo darkpandemic,

    Die Idee mit der Diode zur Veringerung der Totspannung ist gar nicht schlecht und bei Nutzung der Arduino Eingänge werde ich das auf jeden Fall mal verfolgen.

    Frage dazu am Rande: Kenn jemand Bausteine die mehrere Dioden enthalten damit ich nicht so viel Platz benötige fals ich keine Diode mit einem Vdrop von 1V finde ?

    Potentielle Probleme die ich bei den Dioden sehe sind die Fertigungstoleranzen, wenn ich mich nicht täusche liegen die Exemplarstreungen von einfachen Halbleitern schnell mal bei 20%, für diese Anwendung wäre das unschön.

    Von der Toleranz des Spannungsteilers / Shunts will ich gar nicht erst reden :-(

    Zum Analogeingang:

    Ich habe mich nebenbei selbst etwas umgesehen und wenn man Zeit hat (was ich in der Regel habe wenn ich genau messen will) dann kann man externe AD Wandler mit bis zu 24Bit Auflösung (1 Kanal) und bis zu 16 Bit Auflösung (12 Kanal) kaufen die dann über die SPI Schnittstelle angebunden werden, ein SPI Interface ist am Arduino vorhanden ich denke ich werde in diese Richtung mal weiter schauen (muss nur schauen das ich ein Package finde bei dem ich mir beim löten nicht die Finger breche)

    Mit der Sensorauflösung hast du natürlich recht, der Sensor muss natürlich in der Lage sein eine ausreichende Genauigkeit am Ausgang zur Verfügung zu stellen (Temperatursensoren können das in der Regel nicht, aber das Beispiel war auch fiktiv) aber ich habe ganz praktisch bspw. Drucksensoren mit 0..400bar Messbereich und einer Grundgenauigkeit von 0,05% des Messbereichs soll heißen 0,2 bar, mit 10 Bit kann ich aber nur auf 0,4bar genau messen, wenn man jetzt weiß das die Werte mit Konstanten für eine Kolbenkraftberechnung benutzt werden die im Bereich von einigen kN liegt dann erkennt man das kleine Druckunterschiede hier tatsächlich von Bedeutung sind, weswegen auch so genaue Sensoren zum Einsatz kommen (normale Drucksensoren für die Hydraulik haben eine Grundgenauigkeit von 1 bis 3%)

    Das man sowas dann nicht über einen Klingeldraht bis in den Schaltschrank bringt dürfte dann natürlich auch jedem klar sein (CAT7 Patch Kabel eignen sich gut wenn man kein Koax nehmen will)

    Das eine Messeinrichtung zu kalibrieren ist und für die Auswertung eine Gewichtung heranzuziehen ist versteht sich an sich von selbst, das ist dann aber etwas was man nicht mehr zwingend dem Arduino aufbürden muss.

    Der Hinweis mit der Z-Diode für den Eingang ist ebenfalls gut bei der Feinsicherung habe ich so meine Bedenken, wenn ich eine Feinsicherung benutze die man auch entfernen können soll habe ich in den Regionen in denen sich meine Messung abspielt vermutlich schon durch die Übergangswiederstände am Steckkontakt der Sicherung messbare Signalveränderungen, die Alternative wären bspw. Picofuses, deren Spannungsabfall müsste ich mal anschauen.

    Besten Dank in jedem Fall für deine Ideen und Hinweise.
  5. fatfox schrieb:
    Frage dazu am Rande: Kenn jemand Bausteine die mehrere Dioden enthalten damit ich nicht so viel Platz benötige fals ich keine Diode mit einem Vdrop von 1V finde ?

    Bin auf diesem Gebiet, das ich mit Neugier verfolge, zwar absolut kein Fachmann, kann mir aber nicht vorstellen, daß ein Anbieter sein Produkt durch solche serienmäßigen Zusätze in den Anwendungsmöglichkeiten beschränkt. Solche Anpassungen an lokale Gegebenheiten überläßt man bei der Großserie gern dem jeweiligen Anwender.
  6. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Ach na ja es gibt Transistorbänke im IC Gehäuse, warum sollte es sowas nicht für Dioden geben...

    Aber die Befürchtung mit den großen Toleranzen bestätigt sich ohnehin, zu allem Überfluss kommt auch noch eine Vorwärtsstrom abhänige Änderung des FW Vdrop dazu (je kleiner der Strom, desto geringer der Spannungsabfall) und ein Temperaturdrift kommt auch noch um die Ecke. Also für alle Arduino Bastler ist das ne probate Methode um die Analogeingänge auszureizen, für das was ich machen möchte brauche ich glaube ich etwas zuverlässigeres...ob ein Spannungsregler ev. ausreichend linear ist...
  7. Hallo fatfox,

    ich habe nochmal etwas rumgesucht, ob es eine professionellere Lösung für das Problem gibt. Da in Messgeräten ja häufig OpAmps für alles mögliche verbaut sind habe ich mal in dieser Richtung gesucht. Und ich glaube ich habe da was:
    http://www.ecircuitcenter.com/Circuits/opsum/opsum.htm
    Du musst nur irgenwo eine negative Spannung herbekommen, dann kannst Du den analog Offset sogar über einen Poti einstellbar machen.

    Edit:
    Eventuell benötigst Du auch noch einen Spannungsfolger damit sich der Messwiederstand und die Wiederstände des Summierverstärkers nicht beeinflussen.

    Beitrag zuletzt geändert: 3.2.2013 15:47:52 von darkpandemic
  8. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Die negative Spannung ist unproblematisch, die kann man bspw. aus einem DC/DC Wandler holen oder selbst herstellen oder gar einen Referenzspannungsbaustein verwenden.

    Die Schaltung hätte Potential, ich wollte zwar eigentlich nix mit OPV machen wegen der Kosten und der Schaltungskomplexität aber was nutzt mir ne simple Schaltung wenn die Ergebnisse nicht ausreichend gut sind *seufz*

    Vielen Dank für deine Hilfe.
  9. s**************3

    Hallo,
    in dem Wandler vom Fühler zur 4-20mA-Schleife steckt so viel aufwändige (jedenfalls, wenn sie die von dir gewünschte Genauigkeit hat) Elektronik und du willst am AD-Wandler und dessen Elektronik sparen?
    4-20mA ist so weit verbreitet, da gibt es alle möglichen, darunter auch 0-5V, Umformer dafür. Suchbegriffe wären z.B. Normsignal Trennumformer. Selbstbau mit passiven Komponenten wird nie die gewünschte Genauigkeit bringen und mit Opamp auch nur, wenn man das gut designt.
    Beim A/D-Wandler kann man das letzte Bit eigentlich immer vergessen, wenn er nicht intern genauer arbeitet und nur einen Teil nach aussen liefert.

    LG Strommanager
  10. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Wenn es so einfach wäre einen Umformer zu benutzen hätte ich das getan, ich will aber kein ungeeignetes Signal an eine SPS anschließen sondern ich will eine Low Cost SPS bauen und ein Signalumformer mit Trennung der ab ca. 200€ aufwärts kostet ist dabei nicht zielführend.

    Beitrag zuletzt geändert: 3.2.2013 17:37:50 von fatfox
  11. Hallo miteinander,

    inspiriert vom Thema habe ich hier mal einen LM358 aufs Board gestöpselt um die Sache auszuprobieren. Dabei bin ich leider schon am Anfang steckengeblieben. Der Spannungsfolger funktioniert eigentlich wunderbar, aber leider nur bis 3.82V wenn ich ihn mit den 5V vom Arduino versorge. D.h. ich benötige eine höhere Versorgungsspannung.
    Und jetzt gleich die eigentliche Frage:
    Ich habe hier ein umgerüstetes Computernetzteil, welches ich verwenden könnte um den OpAmp mit 12V zu versorgen. Dazu muss man dann natürlich den Arduino GND (=GND meines PC's) mit dem Netzteil GND verbinden. Weis jemand, ob es dabei Ärger geben kann oder ob sich die Netzteile soweit vertragen?
    Alternativ habe ich hier noch ein Schaltnetzteil aus einem Drucker, dass 24V liefert.
    Die nächste Frage ist, wie man das Arduino dann gegen den OpAmp absichert. Der könnte ja dann weit mehr als 5V ausspucken.

    Beitrag zuletzt geändert: 3.2.2013 20:46:47 von darkpandemic
  12. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Zu den Massen:

    Hier machst du am Besten eine explizite Verbindung zwischen beiden Massen. Normalerweise dürfte das kein Problem sein sofern Beide Netzteile an der selben Steckdose hängen und nach gültigen Vorschriften konstruiert sind sollte der Minuspol mit dem Schutzleiter verbunden sein und damit die beiden Massen auf dem selben Potential liegen (vor dem zusammenklemmen ev. mal zwischen beiden Massen die Spannung messen)

    Alternativ und ungefährlich wäre ev. ein 9V Block.

    Absichern ist beim Spannungsfolger sicher nicht erforderlich weil V = 1 ist, ansonsten funktioniert deine Idee mit der Z-Diode sicher auch hier als Überspannungsschutz (kleine Sicherung und gegen GND kurzschließen wenn die Diode durchbricht)
  13. Hallo fatfox,

    das Multimeter meldet 16.8mV Potentialdifferenz zwischen den Massen. Das wird mein Rechner hoffentlich überleben;-)
    Nachdem ich die die Frage gepostet habe, habe ich mir natürlich auch gleich ans Hirn gefasst, da ich mir die Antwort auf Frage 2 weiter oben ja eigentlich schon selber gegeben habe.
    Nur habe ich leider kein Zenner-Dioden und Sicherungen da. Also muss ich wohl erstmal ein bisschen Shoppen.
  14. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Ich freue mich das dich die Fragestellung so interessiert das du es selbst ausprobieren möchtest, ich bin nämlich ab heute Nacht auf Dienstreise und komme die nächste Zeit nicht dazu das zu probieren, ich bin also gespannt auf deine Ergebnisse wenn du es testen möchtest.
  15. Hallo fatfox,

    das Arduino lebt noch, die Netzteile habe sich vertragen und die OpAmps habe ich zu schätzen gelernt;-)
    Ich habe jetzt mal eine Schaltung zurechtgezimmert, die im Grunde das tut was es soll:
    http://www.abload.de/img/opamp_schaltplanvkjkw.png
    Allerdings ist das mit der 'hohen Genauigkeit' wohl etwas mißglückt:
    http://www.abload.de/img/opamp_ergebnisdbu61.png
    Die Ausgabe wackelt um +/-16, was bedeutet, dass die niederwertigen 5 Bit mehr oder weniger Müll sind.
    Nun aber ein paar Details zum Aufbau:
    Mit dem Spannungsteiler R1/R2/R3 habe ich das Eingangssignal simuliert. (Die Spannungsquelle an R1 muss +12V sein. Kleiner Fehler im Plan). In der Praxis konnte ich damit Spannungen von 1.06V bis 4.05V einstellen.
    Der OpAmp U1 mit widerstandsfreier Gegenkopplung dient als Spannungsfolger um das Signal nicht durch die Messung zu beeinflussen.
    Der Spannungsteiler R4/R5/R6 liefert die negative Offset-Spannung. Der 470R Trimpoti zum justieren hat sich dabei als sehr nützlich herausgestellt.
    Der OpAmp U2 erfüllt den gleichen Zweck wie U1.
    Sofern man die Offset-Spannung über einen Spannungsregler erzeugt, kann man auf den Spannungsfolger U2 + Vorbau verzichten.
    Die Verbindung U1/R7/R8/U2 agiert im wesentlichen als Spannungsteiler. Das Signal das dadurch an den nicht-invertierenden Eingang von U3 abgegeben wurde lag zwischen 0V und 1.49V.
    Der OpAmp U3 agiert jetzt als nicht-invertierender Verstärker und hat das Signal auf den Bereich 0V bis 4.96V verstärkt.
    Viel höher wollte ich auch nicht gehen, da der ADC ja auch nicht übersteuert werden soll.
    Jetzt wäre es interessant zu wissen, woher die Störungen eigentlich kommen (Spannungsfolger schlecht? / Spannungsquelle schlecht? / Verstärker schlecht?...). Aber um das zu untersuchen fehlen mir die notwendigen Gerätschaften.
    Von daher hoffe ich jetzt einfach mal, dass Du mit den Infos was anfangen kannst.
    Falls Du selber in dieser Richtung weiterbastelst und rausfindest wo die Güte-Probleme stecken bzw. wie man sie mindern kann, dann würde ich mich über ein Update freuen.

    Edit:
    Noch ein Nachtrag zum Thema Überspannung:
    An Stelle der Zener-Dioden kann man auch Schottky-Dioden verwenden. Die scheinen sogar üblicher zu sein.
    Ein Überspannungsschutz direkt vor dem ADC ist bei genauerer Betrachtung eine schlechte Idee. Wenn man sich z.B. die Kennlinie einer 5.2V Zener-Diode anschaut, dann sieht man, dass diese bereits bei 4V anfängt durchzubrechen. D.h. das Messsystem ist ab 4V aufwärts nicht mehr linear, was bei jeder neu gebauten Schaltung erstmal eine Kalibrierung notwendig machen würde (-> zu aufwändig = zu teuer).
    Wenn man eine Diode mit höherem Wert verwende, z.B. 6.2V oder höher, dann hat man zwar keine Verzerrung des Messergebnisses aber dafür das Risiko, dass der ADC bis zu 6.2V abbekommt. Diese Lösung ist somit erst recht sinnlos.
    Eine Möglichkeit, welche ich jetzt aber nicht aufgebaut habe, wäre, den Verstärker U3 so aufzubauen, dass er bei maximalem Eingangssignal ein maximales Ausgangssignal liefert (volle Aussteuerung). Dahinter kann man dann noch einen Spannungsfolger gefolgt von einem Spannungsteiler setzen. Weil man die maximale Ausgangsspannung des Spannungsfolgers kennt kann man den Spannungsteiler so dimensionieren, dass es unmöglich zu einer Überspannung kommen kann (außer das Netzteil spinnt).
    Dann bliebe nur noch die Absicherung des Einganges an U1. Das ist aber wesentlich einfacher, da ein normales Signal maximal 5V betragen soll und der OpAmp bis zu 12V als Eingangsspannung verkraftet. Hier kann man dann z.B. eine 6.8V Zener-Diode einsetzen ohne das Signal zu stören und ohne den OpAmp zu riskieren.
    Im übrigen habe ich hier noch ein paar Schaltungen gefunden:
    http://www.dg1asc.de/scrap/nuts_ps2.htm



    Beitrag zuletzt geändert: 8.2.2013 23:35:53 von darkpandemic
  16. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Hallo darkpandemic,

    Also mit einem Schaltnetzteil wie z.B. deinem PC Netzteil sind die Schwankungen nicht verwunderlich, was du mit einem Oszi auch sichtbar machen könntest.

    Ein weiterer Einflussfaktor sind die Widerstände einfache Kohleschicht Widerstände sind für solche Zwecke nicht geeignet, da muss ein Präzisionsmetallschicht Widerstand mit einer Toleranz von 0,1% ran (wobei das natürlich nur die generelle Dimensionierung der Schaltung betrifft und mit den wechselnden Werten nichts zu tun hat)

    Ich werde das mal aufbauen und mal schauen welche Ergebnisse ich erhalte.

    Zur Absicherung:

    Wenn man an die Anwendung zurück denkt dann haben wir einen 4-20mA Eingang den wir über einen Shunt zu 0-5V umwandeln oder einen 0-10V Eingang aus dem wir mit einem Spannungsteiler 0-5V machen, Wenn jetzt unser Sensor versagt oder gegen seine Betriebsspannung kurzgeschlossen ist (Kabeldefekt) dann wird man in industriellen Anwendungen eher Angst vor den 24V haben müssen mit dem der Sensor betrieben wird, vor dem Hintergrund macht eine 6,2V Schoittky Diode dann schon Sinn (zumal die 6,2V den Arduino nicht töten werden)

    Die Begrenzung über die Eigenschaften der OP Amps ist aber natürlich die elegantere Lösung.
  17. Hallo fatfox,

    ich habe den Übeltäter gefunden. Es ist die -12V Spannungsquelle die wohl reichlich instabil ist. Ich habe jetzt noch einen 2.2mF Stützkondensator eingebaut und siehe da:
    http://www.abload.de/img/opamp_ergebnis_2hzuhl.png
    Jetzt ist das gewackel nur noch ungefähr +/-1 ;-)
    Allerdings habe ich den ersten Kondensator verpolt worauf er nach kurzer Zeit durch ein zischen sein Ableben bekannt gab :angel:.
    Daher bitte ich noch um eine Minute des Schweigens für die Opfer.
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:
    :frown:

    Danke!
  18. Autor dieses Themas

    fatfox

    Kostenloser Webspace von fatfox

    fatfox hat kostenlosen Webspace.

    Er ruhe in Frieden :frown:
  19. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!