Frage:
PH-Sensormodul verwenden / kalibrieren
Jasper
2015-11-03 03:43:30 UTC
view on stackexchange narkive permalink

Ich habe diese Sensormodulplatine gekauft, um eine Verbindung zu einem Arduino-Nano herzustellen: http://www.ebay.com/itm/For-Arduino-Liquid-PH-Value-Detection-detect-Sensor-Module -Monitoring-Controller / 321764233326

Ich nahm an, dass die beiden Schrauben zur Kalibrierung bestimmt waren (Tiefpunkt + Steigung), aber es scheint, dass die Bedienung anders ist und ich nicht herausfinden kann, wie. Ich habe zwei Referenzflüssigkeiten für pH von 4,0 und 7,0. Wenn ich die Sonde in eine der beiden stecke, erhalte ich Messwerte. Das Drehen einer der beiden Schrauben scheint den Messwert auszugleichen, so dass ich zum Beispiel einen pH-Wert von 4 = 900 und einen pH-Wert von 7 = 1000 (Bereich 0 - 1023) hatte. Das Drehen einer von zwei Schrauben würde den Wert etwas senken, aber er wird nie unter 500 oder so.

Ich kann also zwei Punkte (4.0 und 7.0) und ihre jeweiligen Messwerte messen. Auf diese Weise konnte ich Punkte dazwischen berechnen, aber soweit ich weiß, ist der pH-Wert keine lineare Skala, sondern logarithmisch. Wenn ich das falsch verstehe, scheint der Messwert richtig zu sein, zeigt aber nur 4.0 und 7.0 korrekt und nicht den Rest der Werte (ich habe momentan keine 10.0 Referenzflüssigkeit).

Nun zur zweiten Schraube, diese schien zunächst nichts zu tun. Aber dann bemerkte ich, dass es eine Art Schwellenwert festlegt, indem eine LED auf der Platine ein- und ausgeschaltet wird. Diese LED scheint mit dem gelesenen Wert verbunden zu sein, aber ist es ein weiterer Zweck? Kalibrierung? Keine Ahnung.

Ok, also im besten Fall hat jemand ein gleiches Modul und möchte detailliert beschreiben, wie es funktioniert. Ansonsten haben einige von Ihnen vielleicht gute Ideen, was ich versuchen könnte, damit dies so funktioniert, wie ich es möchte :)

Update 09-11-2015

Ich habe Feedback vom Verkäufer erhalten. Sie hat mir die folgende Postleitzahl gesendet: http://1drv.ms/1MSk1DX. Es enthält einige Dateien auf Chinesisch, aber einer hatte Quellcode. Versuchte es auf meinem Arduino, aber leider machen die Werte immer noch nicht viel Sinn. Je nachdem, wie ich den Knopf auf dem Druck drehe, erhalte ich Werte zwischen 9 und 17 für eine Flüssigkeit, die im realen Leben 7.0 ist. Ich habe nicht versucht, aber bezweifle, dass es sinnvoll ist, einen Offset von -7 zu machen.

Der Code selbst ist ziemlich einfach und nimmt einen 6-Zentren-Durchschnitt von zehn aufeinander folgenden Messungen vor. Die interessanten Zeilen sind folgende:

  avgValue = 0; für (int i = 2; i<8; i ++) // nimm den Durchschnittswert von 6 Mittelstichprobe avgValue + = buf [i]; float phValue = (float) avgValue * 5.0 / 1024/6; // konvertiere das Analog in Millivolt phValue = 3.5 * phValue + Offset;  

Vielleicht kann jemand einen Sinn daraus machen, weil ich es nicht kann. Ich verstehe die 5.0-Multiplikation und die 3.5 danach nicht. Woher kommen diese?

Wie auch immer, wenn ich die Sonde in die Speicherflüssigkeit tauche, sinkt mein normales Messgerät auf pH 0,5, während die Software mir 17 gibt (was ein höherer Wert ist als der, den ich beim Lesen meiner 7,0-Flüssigkeit erhalten habe). . Entweder ist mein Board kaputt oder dieser Beispielcode ist nutzlos.

Schaltpläne finden Sie übrigens in der ZIP-Datei.

Update 11-11-2015

Ich habe noch mehr experimentiert. Zuerst fand ich heraus, dass die Messwerte des Moduls für sauerere Flüssigkeiten zunahmen. Also habe ich den Wert umgekehrt, indem ich

  buf [i] = 1024 - analogRead (SensorPin) verwendet habe;  

Ok, jetzt machten die Werte mehr Sinn. Dann habe ich den Pot so eingestellt, dass er in der Mitte des verfügbaren Bereichs liegt. Ich tauchte die Sonde in die 7.0-Flüssigkeit, las den Wert ab und stellte den Versatz ein. Dann in 4,0 getaucht, den Topf so eingestellt, dass er mit 4,00 übereinstimmt. Hier sind die Ergebnisse:

  pH 7,0 Referenz - > 6,27 Satz versetzt auf: 0,73 pH 4,0 Referenz - > 5,17 den Topf angepasst Wert also lesen 4.0pH 7.0 Referenz --> 5.86  

Wie ich erwartet hatte, bringt das Einstellen des Topfes auch die 7.0 Referenzreferenz durcheinander. Ich dachte dann, es könnte an der Neigung des Topfes liegen (falls es welche geben würde), also ging ich zuerst zum niedrigsten Wert, um den geringsten Unterschied zu haben. Wieder die Messwerte:

  pH 7,0 Referenz - > 8,70 Versatz auf: -1,70 pH 4,0 Referenz - > 5,17 Den Topf so einstellen, dass der Wert 4,0 lautet
pH 7,0 Referenz --> 5,70  

Das Interessante dabei ist, dass der Wert 4,0 in beiden Fällen 5,17 lautet, obwohl sich der Topf in einer anderen Position befand. Ich kann aber nicht erklären warum.

Um sicherzustellen, dass die Sonde in Ordnung ist, habe ich mein normales pH-Messgerät neu kalibriert und arbeite wie gewohnt. Dieser hat auch zwei Töpfe, einen für die 7.0-Kalibrierung und einen für die 4.0-Steigung. Die Kalibrierung erfolgt durch Einstellen von 7.0, anschließendes Messen von 4.0 und Einstellen des Steigungstopfs. Messen Sie erneut 7.0, wechseln Sie den 7.0-Topf, messen Sie erneut 4.0 usw., bis die Werte mit ihren Flüssigkeiten übereinstimmen. Normalerweise brauche ich ungefähr 3 - 4 Schleifen, um es richtig zu machen.

Ein weiteres Update

nahm die beiden Behälter mit Referenzflüssigkeiten und begann zu mischen. Dies gab mir Messungen im Bereich von pH 4 - 7,5. Es wurde auch die Speicherflüssigkeit gemessen, die einen pH-Wert von 1,00 hat. Die Ergebnisse befinden sich in einer Excel-Tabelle: http://1drv.ms/1lkAO6e. Die nächste Frage ist, wie dies in eine geeignete Formel konvertiert werden kann.

Update 18-11-2015

Ich arbeite an der Lösung von @ slash-dev did:

Ich habe zuerst den Topf ganz auf den niedrigsten Wert gedreht. Die Messwerte (für pH 7,0) sind wie folgt: niedrig = 540 und hoch = 1017. Code wie folgt:

  int rawValue = analogRead (SensorPin); int buf [10]; // Puffer zum Lesen analogfor (int i = 0; i<10; i ++) // 10 Abtastwerte vom Sensor abrufen, um den Wert zu glätten {buf [i] = rawValue; delay (10);} // Sortierung ausgelassen, um die Probenlänge zu reduzierenint avgValue = 0; for (int i = 2; i<8; i ++) // nimm den Durchschnittswert von 6 zentralen Samples avgValue + = (buf [i] - CENTER);  

In dieser Phase drucke ich natürlich den Rohwert.

Der Kurzschluss des BNC-Steckers, den ich nicht genau verstehe, sollte ich die Innenseite (wo der Stift hingeht) oder die Außenseite des Steckers kurzschließen? Und kurz zum GND? Ich habe stattdessen die Referenzlösung verwendet.

Jetzt habe ich die Formel hinzugefügt, um die Spannung zu bestimmen. Für den niedrigen Wert, der 0,10 lautet. Ich habe jetzt den Mittelwert von 540 eingegeben, der den Spannungswert auf 0,0 bringt, scheint gut zu sein.

Nun habe ich für Schritt 2 die Sonde in die 4.0-Referenzlösung eingesetzt. Die Spannung lautet jetzt 0,48, Rohwert 637. Ich beginne, den Poti auf die Stelle einzustellen, an der die Spannung 2,25 anzeigt, und höre auf, etwas einzustellen. Raw liest jetzt 1000.

Jetzt kommt der Teil, den ich nicht genau verstehe. Sie sagen, wir können jetzt den pH / V berechnen, aber mit welchen Variablen? Ich meine, -3 / 2.25 ergibt immer -1,33, aber sollte es hier keine Variable geben, je nachdem, wie weit ich den Pot tatsächlich eingestellt habe?

Wenn ich jetzt die Formel zur Berechnung des pH-Werts wie erwartet eingebe, wird für die 4.0-Referenzlösung 4.0 angezeigt. Aber es vermasselt jetzt die 7.0-Lösung, als wir den Topf eingestellt haben, aber es nicht kompensiert haben, soweit ich sehe? Ich habe auch die angepassten pH-Formeln ausprobiert, aber ich denke, diese sind für den ersten Code gedacht, den wir hatten, und nicht für diesen angepassten.

Was fehlt mir also zwischen Schritt 2 und 3, was die Dinge hier durcheinander bringt? Sie geben auch an, dass die Invertierung durch Subtrahieren von 1024 korrekt ist, aber wenn ich das tue, werden die Spannungswerte minus.

Eine andere Sache, über die ich mich wundere; Wenn der Topf eine Steigung sein muss, sollte es nicht eine andere sein als die daneben (wo eine lineare sinnvoller ist)? Weil es nicht so ist, lesen beide "W103 / 143C". In der Zwischenzeit sendet der Anbieter freundlicherweise einen Ersatz, um sicherzustellen, dass es sich nicht irgendwo um einen Hardwaredefekt handelt.

Nächstes Update: :) ​​

Also habe ich jetzt zu meinem ursprünglichen Code zurückgekehrt, um die angepassten pH-Berechnungen zu versuchen. Ich habe die 7.0-Referenzlösung erneut kalibriert und dann die 4.0-Lösung gemessen. Es liest 4.1! Ok, nicht ganz genau, aber auch nicht schlecht. Es ist ein kleiner Unterschied, der genauso gut von der Sonde herrühren könnte, nicht von der teuersten.

Ich frage mich also, ob wir immer noch versuchen sollten, den anderen Ansatz zum Laufen zu bringen, weil er aus irgendeinem Grund besser (wissenschaftlicher?) klingt. Wie auch immer, das ist zumindest viel besser als nichts :)

USB-Stromversorgung vs. verbunden? Eine andere seltsame Sache scheint zu passieren, wenn ich den Nano vom USB-Anschluss meines Geräts trenne Laptop und stattdessen über eine Himbeere mit Strom versorgen. Ich möchte I2C verwenden, um den Wert vom Nano an das RPi zu senden. Dies funktioniert, aber sobald ich den Nano über das RPi (5 V an vIn angeschlossen) mit Strom versorge, sinkt der berechnete pH-Wert?

Das interessiert mich auch, weil ich vielleicht bald einen dieser Sensoren verwenden werde. Überprüfen Sie, ob die Links auf dieser Seite hilfreich sind: https://www.tindie.com/products/rezahussain/dormant-labs-ph-module-v2/
Es scheint einen bemerkenswerten Mangel an Informationen über diese Module zu geben, von den eBay-Anbietern, die ich überflogen habe. Ich vermute, keiner von ihnen weiß, was sie tun. Wenn Sie ein Datenblatt finden könnten, könnte dies hilfreich sein. Wenn Sie die Art der Chips auf dem Board veröffentlichen, kann dies möglicherweise dazu beitragen, die möglichen Auswirkungen der Anpassungen einzugrenzen.
Ich habe dem Verkäufer eine Informationsanfrage gesendet und werde sie aktualisieren, sobald ich sie erhalte (und einen Blog-Beitrag schreibe). Was die Chiptypen betrifft, reicht das aus, aber ich muss heute Abend nachsehen, wann ich zu Hause bin :)
@Jerry; Danke, aber das ist ein anderes Modul, das Software-Kalibrierung anstelle von Hardware-Reglern hat. Nicht das gleiche und daher nicht viele nützliche Informationen.
Ich glaube, ich habe genau den gleichen Sensor und habe versucht, die Lösung zu reproduzieren, aber ohne Ergebnisse. Könnten Sie den Code teilen, mit dem er für Sie funktioniert hat? TIAThomas
@Thomas Ich befürchte, dass der "Arbeitszustand" nur sehr kurze Zeit andauerte. Ich habe wieder nur seltsame Werte, dieses Board ist nur Mist, ist meine kurze Schlussfolgerung. Ich wechsle zu einem Atlas-Board, das viel besser sein sollte.
Sechs antworten:
slash-dev
2015-11-11 07:53:39 UTC
view on stackexchange narkive permalink

Der Schaltplan zeigt nur einen Trimmtopf (R23) und stellt, wie Sie vermuten, einen Pegel für die LED-Beleuchtung ein. Eher eine gute / schlechte Anzeige und ist auf Pin DO verfügbar.

Der andere Trimmtopf befindet sich nicht im Schaltplan. Ist es auf der Tafel markiert? R6, R7, R8 oder R9 vielleicht? Es steuert wahrscheinlich die Verstärkung auf p_AOUT .

t_AOUT ist eine analoge Temperaturspannung und scheint die Temperatur der Karte zu messen.

Bearbeiten - offiziell, aber völlig falsch: Laut meiner geheimen Quelle sollten Sie die Sonde in die Referenzlösung mit einem pH-Wert von 7,0 und mit Offset geben Definieren Sie das Programm und zeigen Sie den berechneten pH-Wert an. Möglicherweise müssen Sie die Verstärkung des Trimmtopfs verringern, um kleinere (die kleinsten?) Zahlen zu erhalten. Nehmen Sie nun diesen angezeigten Wert und ändern Sie die Konstante Offset in der Skizze auf 7,0 abzüglich des angezeigten Werts. Wenn der angezeigte Wert 8,1 ist,

  #define Offset (-1.1)  

Erstellen Sie die geänderte Skizze und laden Sie sie hoch. Setzen Sie diesmal die Sonde in Ihre Referenzlösung mit einem pH-Wert von 4,0 ein und stellen Sie den Verstärkungstopf so ein, dass der angezeigte Wert so nahe wie möglich an 4,0 liegt. Dadurch wird es für meist saure Lösungen kalibriert. Strike>


Bearbeiten 1: Iterieren?

Es ist nicht klar, aber ich habe mich auch gefragt, ob dieses Verfahren durchgeführt werden soll iteriert. Gehen Sie zurück zu 7 und stellen Sie sicher, dass durch Anpassen der Verstärkung Offset nicht geändert wurde. Testen Sie dann die pH 4-Lösung erneut. Der Gain Pot erfordert möglicherweise eine kleine (er) Änderung. Wenn es auseinander zu gehen scheint, tu das nicht. ;) Ich denke, es würde nur divergieren, wenn die Sonde eine umgekehrte Antwort hätte, was wahrscheinlich bedeuten würde, dass es schlecht ist.

Wenn Sie Basislösungen messen, gehen Sie genauso mit Referenzlösungen mit einem pH-Wert von 7,0 (natürlich) und einer Basisreferenzlösung vor.

Voilà!

Hinweis: Für den 7.0-Test können Sie die Sondenstifte kurzschließen. Es sollte wirklich wie ein Kurzschluss aussehen, wenn pH == 7,0. Wenn die Umstellung auf die Verwendung der realen Sonde in der Lösung mit einem pH-Wert von 7,0 stark unterschiedliche Messwerte ergibt, ist die Sonde möglicherweise schlecht. Wenn Sie es kalibrieren können, ist möglicherweise "gut genug".


Bearbeiten 2: Korrigieren Sie die Formeln in der bereitgestellten Skizze.

Das Schema zeigt einen nicht invertierenden Operationsverstärker mit PH + am Eingang. und p_AOUT am Ausgang. Die (einstellbare?) Verstärkung beträgt

  R9 / R8 + 1 = 10k / 10k + 1 = 2  

Die Steigung einer idealen Sondenantwort beträgt - 59 mV / pH. Sie haben experimentell eine negative Steigung erhalten, die mit dem Schema übereinstimmt. Ich glaube, es war richtig, den Wert analogRead durch Subtrahieren von 1024 zu "invertieren". Der bereitgestellte Code hätte auf keinen Fall mit einer positiven Steigung von 3,5 funktionieren können.

Die Referenzspannung, die an den PH- -Pin geliefert wird, ist die Hälfte der Zenerdiodenspannung ... die nicht identifiziert wird. Dies könnte der sehr häufige 5,1-V-Teil sein, der im Wesentlichen dazu zwingt, dass PH- bei

  5,1 V / ((R6 + R7) / R6) = liegt 5,1 V / 2 = 2,55 V  

Ich sage wahrscheinlich, weil Sie normalerweise möchten, dass der Spannungshub der Plus- oder Minus-Sonde so viel Platz wie möglich hat. Dies würde bedeuten, dass (ein ideales) analogRead mit einem pH-Wert von 7,0

  2,55 V / 5,0 V * 1024 = 522  

ist Dies ist das "Zentrum" des Sondenschwungs um pH 7,0.

Schritt 1: Bestimmen der Referenzspannung

Drucken Sie bei pH 7,0 den rohen analogRead code aus > Rückgabewert vor dem Invertieren. (Der Topfwischer sollte an seiner Grenze sein. Welchen Weg ich nicht kenne. Durch Ändern des Verstärkungstopfs sollte das analogRead am Ende mit niedriger Verstärkung nicht sehr stark verändert werden , drehen Sie es auf das andere Extrem.)

Wie bereits erwähnt, können Sie den pH 7,0-Test durchführen, indem Sie den BNC-Anschlussstift mit der Abschirmung kurzschließen oder Ihre Referenzlösung verwenden. Ich empfehle vorerst einen Kurzschluss, um mögliche Störungen durch die Sonde zu vermeiden. Der Offset wird absolut bestimmt, jedoch nur, wenn die Verstärkung so gering wie möglich ist. Du musst hier anfangen. Sobald Sie den mittleren Messwert kennen, können Sie den Code ändern, um die Spannung anzuzeigen:

  #define CENTER 522int avgValue = 0; für (int i = 2; i<8; i ++) // Nehmen Sie die Durchschnittswert von 6 zentralen Abtastwerten avgValue + = (buf [i] - CENTER); Float-Spannung = (((float) avgValue) / 6,0) * (5,0 / 1024,0);  

Print das raus. Du solltest besser etwas in der Nähe von 0.0 bekommen ... lass mich nicht rüber kommen. :)

Schritt 2: Stellen Sie den Verstärkungstopf ein.

Dies bestimmt die Steigung, aber Sie müssen den Schwung für den extremsten pH-Wert maximieren, den Sie lesen möchten, z. B. 4.0. Stellen Sie mit der 4.0-Referenzlösung den Verstärkungstopf so ein, dass die angezeigte Spannung nahe bei + 2,5 V liegt, z. B. + 2,25 V, um sicherzustellen, dass sie nicht an 1024 gebunden ist. (Mal sehen, die Steigung ist negativ, 4,0 ist < 7,0, also Spannung sollte sich erhöhen ...) Mit diesem Messwert können Sie den pH / V berechnen:

  -3pH / 2,25 V = -1,33 pH / V  

Schritt 3: Berechnen und Drucken des pH-Werts

Ändern Sie die ursprüngliche Berechnung, um die pH / V-Steigung zu verwenden:

  float phValue = Spannung * (-1,33) + 7,0;  

Dies liegt nicht einmal in der Nähe von phValue = 3,5 * Spannung + Offset . -_- Ich habe jetzt mehrere Quellen gefunden, die meine ursprüngliche Antwort widerspiegeln. Völlig falsch und falsch bis zur Irreführung. Ich denke, diese Schritte werden es tun. Es klingt sowieso gut in meinem Kopf. : D


Bearbeiten 3: "Die nächste Frage ist, wie dies in eine geeignete Formel umgewandelt werden kann?"

Ok, wenn Sie die Formel im Code nicht korrigieren möchten, können Sie Ihren Daten eine lineare oder quadratische Kurve anpassen. Linear wird tatsächlich als "gut genug" empfohlen, und das ist effektiv die in Bearbeiten 2 vorgeschlagene Änderung. Wenn wir jedoch nur Ihre Datenpunkte verwenden, wäre dies die lineare Annäherung:

  float adjustiertPh = phValue * 1.627 - 2.499;  

... und die quadratische Näherung:

  float adjustiertPh = (-0,01796 * phValue + 1,8056) * phValue - 2,94;  
Eine geheime Quelle, oder? Klingt interessant :) Wie auch immer, ich werde diesen Ansatz versuchen. Meine Messwerte sind weit von 7 entfernt, was bedeutet, dass der Versatz etwa 5 oder 6 beträgt, was etwas zu weit entfernt schien. Wenn ich den Gain Pot für die 4.0-Lösung anpasse, wird das dann nicht auch den 7.0-Wert durcheinander bringen? Ich versuche es heute Abend, wenn ich zu Hause bin.
Ja, ich habe auch über Iteration nachgedacht, weil dies bei meinem normalen Messgerät so funktioniert. Das Problem ist, dass dieses Setup jetzt zwei Offsets hat; einer als Topf auf dem Brett, einer in der Software. Wenn Sie eine für 4.0 ändern, wird die 7.0 genauso schnell durcheinander gebracht. Dies würde nur funktionieren, wenn die Software eine Steigung anwendet oder der Pot. Soweit ich sehen kann, auch nicht. Ich habe Ihre Lösung ausprobiert, siehe Update.
@Jasper, haben Sie seit mehreren Tagen nicht mehr gepostet, obwohl ich sehe, dass Sie besucht haben. Haben Sie "Edit 2" oder "Edit 3" ausprobiert?
Es tut mir leid, du hast recht. Ich habe Ihre Antwort gelesen, konnte sie aber nicht testen. Jetzt habe ich, siehe Update oben.
Übrigens ist das Kopfgeld abgelaufen, aber ich bin mehr als bereit, es Ihnen zu gewähren. Lassen Sie mich wissen, ob Sie versuchen möchten, die andere Lösung zum Laufen zu bringen, und ansonsten mache ich eine neue und beantworte sie.
* Seufz. * Edit 2 hätte funktionieren sollen, wenn der Schaltplan richtig war. Es muss nicht richtig sein. Es sieht so aus, als hätten mehrere Hersteller es einfach auf ihre Websites kopiert. Ihre Platine verfügt über einen zusätzlichen Transistor, der sich nicht im Schaltplan befindet. Ich denke, es lohnt sich nicht, mit der "richtigen" Lösung herumzuspielen, bis Sie den Schaltplan kennen. Wenn Edit 3 gut genug ist, warum sollte man sich dann um das Reverse Engineering * dieses * Boards kümmern? In Bezug auf die Vergabe des Kopfgeldes scheint dies etwas zu sein, was ein Moderator tun würde, um doppelte Fragen und Antworten zu vermeiden. Könnten Sie diesen Kommentar markieren, um ihre Aufmerksamkeit zu erregen?
Fertig (Flagge). Und du hast recht. Was ich habe, ist vorerst gut genug, zumindest sind die Werte etwas glaubwürdig. Zu gegebener Zeit werde ich auf ein Atlas-Modul upgraden, das meiner Meinung nach viel besser sein sollte (https://www.atlas-scientific.com/product_pages/sensors/ph-sensor.html).
RSM
2016-01-13 13:47:42 UTC
view on stackexchange narkive permalink

USB-Stromversorgung im Vergleich zu verknüpftem

Nur um meine 2 Cent für Ihr aktuelles Update über USB oder 5 V vom PI hinzuzufügen.

Sie sagen, Sie verbinden es mit der Fahrgestellnummer:

Sobald ich den Nano über das RPi (5 V an vIn angeschlossen) mit Strom versorge, sinkt der berechnete pH-Wert?

Wenn Sie sich das folgende Bild ansehen, sehen Sie, dass Vin zu einem guten alten 7805 geht, der eine IN-Spannung> 7,5 V benötigt, also der Ausgang, wenn er an die 5 V des PI angeschlossen ist sehr niedrig und damit die Messwerte durcheinander.

enter image description here

Ich empfehle Ihnen, Ihre Leistung vom PI an den VCC des Arduino anzuschließen. stark>, da dies eine geregelte 5V ist und nicht erneut geregelt werden muss.

Ich bin mir nicht ganz sicher, ob ich das verstehe. Sie geben an, dass es> 7,5 V benötigen sollte, um richtig zu funktionieren. Aber wenn ich die Energie vom Pi zum VCC des Arduino verbinde; Wie viele Volt sprechen wir dann? Ich * dachte * das wäre 5V aber vielleicht irre ich mich da? Welchen Port von meinem Schuster soll ich verwenden, um eine Verbindung zu VCC herzustellen?
Nach dem, was ich in Ihrer Bearbeitung gelesen habe, wurde gesagt, dass Sie den Pi `5V` mit dem Nanos` Vin` verbunden haben. Wenn dies der Fall ist, müssen Sie * VCC - VCC * verbinden.
larzz11
2015-11-10 15:51:16 UTC
view on stackexchange narkive permalink

Ich weiß nicht, ob dies eine vollständige Antwort ist, kann aber noch keinen Kommentar abgeben.

Die von Ihrem Sensor verwendete Funktion analogRead in Arduino liest Werte von 0 bis 5 V. Es teilt die Werte zwischen 0 und 5 V in 1024 Schritten. Es wird also ein Wert zwischen 0 und 1023 zurückgegeben. Deshalb wird er mit 5 multipliziert. Es ist leichter zu verstehen, ob die Berechnung in umgekehrter Reihenfolge erfolgt. Beispiel:

analogRead gibt 512 zurück, dh 1024/512 = 0,5. Teil seines Bereichs. Multiplizieren Sie dies mit 5,0, um die tatsächliche Spannung zu erhalten. 0,5 * 5,0 = 2,5. Es wird dann durch 6 geteilt, um den Durchschnitt zu erhalten.

Ich würde auch die Reihenfolge der Berechnung ändern. Die Kommentare sagen, dass es den Durchschnitt berechnet, aber nicht nur die Werte addiert. Es teilt es schließlich durch 6, damit der Fehler nicht verursacht wird. Aus Gründen der Lesbarkeit empfiehlt es sich jedoch im Allgemeinen, Ihren Code das tun zu lassen, was in den Kommentaren steht.

Vielen Dank, da dies das Problem nicht löst, das ich nicht als Antwort markieren werde, aber es ist trotzdem eine wertvolle Eingabe. Der Code stammt aus dem Beispiel, ich werde ihn verbessern und die Berechnung wiederholen, scheint in der Tat sinnvoller zu sein.
Eine andere Sache. Sind Sie sicher, dass die Verbindungen korrekt sind? Ihre Ergebnisse sehen sehr ähnlich aus, wenn Sie einen Spannungsteiler am falschen Widerstand messen. Versuchen Sie also, Ihre Messungen zu invertieren, also: MeasuredValue = 1024 - analogWrite (Pin);
Vielen Dank, verwendet den Hinweis zum Invertieren der Messungen. Das Lesen wurde verbessert, aber das Problem wurde nicht gelöst.
JRobert
2015-11-10 19:02:39 UTC
view on stackexchange narkive permalink

Als ersten Ansatz würde ich eine Reihe von Messungen von so vielen bekannten Daten sammeln, wie Sie finden oder durchführen können, und sie als visuellen Hinweis auf die Linearität oder nicht (wahrscheinlich nicht) der Sensorausgabe vs. pH. Sie könnten versuchen, eine Kurve an die Daten anzupassen. interpolieren Sie linear zwischen Abtastpunkten, wenn Sie genug davon haben; oder führen Sie eine Approximationsanpassung der kleinsten Quadrate durch. Der Schlüssel ist, dass Sie genügend Daten benötigen - bekannte -, damit jeder von Ihnen verwendete Ansatz Ergebnisse liefert, die genau genug für Ihre beabsichtigte Verwendung sind. (Dies ist natürlich anders, wenn Sie nur wissen müssen, ob etwas sauer oder basisch ist, oder wenn Sie tropische Aquarien usw. überwachen.)

Update: Wenn Ihr pH-Meter für den Fisch gut genug ist Wenn Ihr Sensor zuverlässig wiederholbar und empfindlich genug ist, überprüfen Sie Ihr Messgerät anhand der beiden Standards und kalibrieren Sie den Sensor auf Ihr Messgerät. Wenn Sie mit dem Ergebnis zufrieden sind, verriegeln Sie die Schrauben mit einem Tupfer Nagellack (es ist nicht sehr manipulationssicher, aber manipulationssicher). Ein pH-Wert von 10,0 ist für Sie nicht sehr nützlich. In diesem Extremfall wissen Sie bereits, dass der pH-Wert nicht mehr stimmt, und der genaue Wert ist Ihnen wahrscheinlich egal. Sie benötigen Ihre Präzision zwischen den fischverträglichen Grenzwerten nahe dem pH-Ziel. Wenn Sie Ihrem Messgerät vertrauen, benötigen Sie nicht einmal die Standards. In diesem Fall müssen Sie nur wenige Proben wie beschrieben zusammenstellen, die den interessierenden pH-Bereich abdecken, und sie verwenden, um Ihren Sensor auf das Messgerät zu kalibrieren.

Es ist in der Tat ein Aquarium. Ich verstehe den Ansatz, aber ich habe nicht viele "Bekannte", im Moment nur 4.0 und 7.0 Referenzflüssigkeiten. Ich könnte zusätzliche 10.0 kaufen, frage mich aber, ob das geht. Eine andere Sache, die ich versuchen könnte, ist, Leitungswasser und eine Zitrone (oder eine andere Säure) zu nehmen, um den Säuregehalt Schritt für Schritt zu erhöhen. Ich habe auch ein normales pH-Messgerät, mit dem ich die Werte verfolgen kann. Ich denke, die Messungen würden mir dann mehr sagen. Das Problem, das ich damit habe, ist, dass dies mir immer noch nicht sagt, wozu die Widerstände dienen und wie es funktionieren soll. Vielleicht ist es nur ein fehlerhaftes Modul, wer weiß.
Eric Kelly
2015-11-11 09:45:31 UTC
view on stackexchange narkive permalink

Ich kann keine Frage stellen, aber stellen Sie sicher, dass Sie genug Strom für das Heizelement geben. Es ist nicht viel, aber Sie wissen nie, ob Sie eine separate Stromquelle versuchen, wenn Sie es nicht sind.

Jetzt Sie haben den Nano erwähnt. Verwenden Sie einen 3,3-V-Nano oder einen 5-V-Nano? (Der Regler würde nach ein oder zwei Buchstaben 33 oder 50 haben.) Wenn 3,3 V und unter der Annahme, dass der analoge Ausgang anhand des Beispielcodes 5 V beträgt, benötigen Sie eine Art Pegelumsetzer, um 3,3 V zuzuordnen, und ändern Sie dann den Wert Berechnungen verwenden 3,3 anstelle von 5 Wert. Wenn dies nicht der Fall ist und es sich nicht um Strom oder Anschlüsse handelt, ist es möglicherweise defekt oder die Sonde usw. Es gibt einige Variablen.

Mit einem 5V Nano. Ich habe das Modul sowohl an die 3,3-V- als auch an die 5-V-Ausgänge angeschlossen. Die Messwerte sind gleich.
AeternaMens
2016-01-02 03:56:22 UTC
view on stackexchange narkive permalink

USB-Stromversorgung im Vergleich zu verknüpftem

Lesen Sie es und verwenden Sie den aktuellen Vcc anstelle von 5.0 in Ihrem Code.

Ich habe den gleichen Sensor und das gleiche Problem. Ich würde mich freuen, wenn Sie den vollständigen Arbeitscode in diesem Thread freigeben.

Bitte poste nicht nur einen Link. Der Link könnte ausfallen. Wenn es nützliche Informationen enthält, fassen Sie diese hier zusammen oder geben Sie sie an.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...