Hallo, ich bin absoluter Anfänger. In meinem ersten Projekt möchte ich gerne an einem Microcontroller (Arduino) Spannungen messen. Umfeld: Ich habe einen kleinen Solarregler der ein paar Akkus (12V) lädt. Hier würde ich gerne die Spannung der Zellen (Leerlauf ca. 22V) und die der Akkus messen. Das klappt einzeln mit einem Spannungsteiler schon relativ gut. Das Problem auf das ich jetzt gestoßen bin ist das der Regler Minus-gesteuert ist. Damit habe ich das Problem das bei zwei Messstellen ich die Minus-Leitung zusammenlegen muss (der Arduino hat nur eine gemeinsame Minus Leitung). Jetzt habe ich hier im Forum schon viel gelesen. Doch so ganz schlau bin ich nicht geworden. Was ich herausgefunden habe: 1. Ich könnte mit einem Spannungsteiler den Optokoppler "IL300" versorgen und dann wieder am Analogen Eingang messen (dies scheint aber relativ ungenau zu sein wenn ich's richtig verstanden habe). 2. Die vermutlich bessere Variante scheint zu sein mit einem U/F-Wandler "AD654" die Spannung in eine Frequenz zu Wandeln und dann über einen Optokoppler an einem Digitalen Eingang die Frequenz messen und daraus die Spannung zurückrechnen. Jetzt meine Anfänger Probleme: - Ich habe mir das Datenblatt vom "AD654". Dort sind noch etliche Widerstände und Kondensatoren angegeben. Aber ich habe keine Ahnung wie ich diese Auslegen muss (Werte)? - Welcher Optokoppler würde dazu passen und wie muss ich den schalten? Wäre vielleicht jemand so nett und würde mir ein kurzes Schaltbild (zur Variante 2) zeichnen (inkl. Werte) und in kurzen (einfachen) Worten erklären für was das jeweilige Bauteil da ist. Denn ich würde es gerne Verstehen. Das wäre SEHR NETT... Falls es noch andere bessere/einfachere Varianten gibt bin ich sehr Interessiert. Es sollte nur nicht zu teuer werden da das ganze ein Lern/Bastelprojekt ist. Vielen Dank Stefan
Du hast die Spannungsmessung mit Spannungsteiler also schon hinbekommen. Fein. Es gibt externe ADC(AD-Wandler) als einzelne Chips. ZB. http://ww1.microchip.com/downloads/en/DeviceDoc/21293C.pdf (ein Kanal) http://ww1.microchip.com/downloads/en/DeviceDoc/21294E.pdf (zwei Kanäle) Und für die Optokoppler gibt es inzwischen auch schon Ersatz: http://www.analog.com/en/interface-isolation/digital-isolators/adum1401/products/product.html Die Idee ist folgende: Digitale Signale sind einfacher zu handhaben als analoge. Du nimmst also einen externen ADC, misst damit die Spannung einer einzelnen Batterie und überträgst das digitale Ergebnis über den digitalen Isolator zu Deinem Controller. Für die zweite Batterie machst Du das gleiche, d.h. zweiter ADC, zweiter digitaler Isolator. Für die dritte bis n-te Batterie bzw Spannungsquelle machst Du wieder das gleiche. Wenn Du an einer Batterie mehrere Messpunkte hast, nimmst Du praktischerweise einen ADC mit mehreren Eingängen (1, 2, 4, 8 Eingänge pro Chip möglich) Da jeder ADC seinen eigenen Isolator hat, sind die Ground(Minus)-Potentiale voneinander getrennt und kommen sich nicht in die Quere. Die ADCs selber und die ADC-Seite des digitalen Isolators kannst Du von der jeweiligen Batterie versorgen lassen (7805 Spannungsregler), die Controller-Seite der Isolatoren werden vom Arduino gespeist. Realisierungsstufen: 1. einen externen ADC am Arduino zum Laufen bringen 2. mehrere externe ADCs am Arduino an einer SPI-Schnittstelle zum Laufen bringen (getrennte !CS-Signale) 3. digitalen Isolator in Betrieb nehmen 4. alles zusammen zum Laufen bringen. Schaltplan überlasse ich erstmal Dir. Denke daran: 1. keine offenen Eingänge 2. 100n an JEDEM VCC-GND Paar, so dicht dran wie möglich Der Weg über U/F-Wandler ist insbesondere bei nur einer Spannungsmessung pro Batterie kostengünstiger realisierbar, aber vielleicht weniger "straight forward". fchk
Vielen Dank für die schnelle Antwort... ich werde mir über den Feiertag mal Zeit nehmen und die Datenblätter studieren. Ich melde mich nochmal falls ich nicht zu recht kommen. DANKE :-)
Hallo, eine Frage... gibt es auch eine einfache Variante ohne SPI? Was ich oben leider verschwiegen habe ist, dass ich auf meinem Arduino ein Ethernet-Shield drauf habe der meine Daten über das Netzwerk weiterreicht. Dieses Shield belegt schon den SPI-Bus. Wenn ich es richtig verstanden habe lässt sich der auch nicht mit SS deaktivieren.
Wenn's nicht schnell sein muss kannst du auch Software SPI machen.
Stefan schrieb: > In meinem ersten Projekt möchte ich gerne an > einem Microcontroller (Arduino) Spannungen messen. Okay. > Das Problem auf das ich jetzt gestoßen bin ist das > der Regler Minus-gesteuert ist. Damit habe ich das > Problem das bei zwei Messstellen ich die Minus-Leitung > zusammenlegen muss (der Arduino hat nur eine gemeinsame > Minus Leitung). ??? > Wäre vielleicht jemand so nett und würde mir ein kurzes > Schaltbild (zur Variante 2) zeichnen (inkl. Werte) und > in kurzen (einfachen) Worten erklären Gegenvorschlag: DU zeichnest erstmal ein Schaltbild, aus dem Dein Problem klar hervorgeht. > Das wäre SEHR NETT... Ja, wäre es. Wahrscheinlich gibt es eine sehr einfache Lösung für Dein Problem, aber es hätte gewisse Vorteile, wenn Dein Problem zunächst klar und allgemeinverständlich formuliert wäre.
Stefan schrieb: > Was ich oben leider verschwiegen habe ist, dass ich auf meinem Arduino > ein Ethernet-Shield drauf habe der meine Daten über das Netzwerk > weiterreicht. > > Dieses Shield belegt schon den SPI-Bus. Wenn ich es richtig verstanden > habe lässt sich der auch nicht mit SS deaktivieren. Das ist so nicht richtig. Auf dem Ethernet-Shield ist zum Beispiel auch noch ein SD-Kartenslot, und Ethernet und SD-Karte lassen sich "gemeinsam" benutzen. Lies mal im Atmega-Datenblatt das Kapitel über den SPI Master Mode, den du benutzt. In diesem Modus hat der SS-Pin (Arduino-Pin-10) nur im Input-Modus die spezielle Bedeutung, einem anderen SPI-Master zu ermöglichen, den Arduino in den SPI Slave Mode zu zwingen, indem er den SS-Pin auf LOW zieht. Das wird aber beim Arduino gar nicht benutzt. Stattdessen wird der SS-Pin, als Output, als Slave Select für den W5100-Ethernet-Transceiver benutzt, und der Arduino-Pin-4 wird als Slave Select für die SD-Karte benutzt. Siehe http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf. Die Arduino-Bibliothek ist auch so geschrieben, dass die Slave Selects am Ende immer wieder auf HIGH zurückgeschaltet werden. Auf diese Weise kann man dann, nacheinander, sowohl Ethernet als auch SD-Karte ansprechen. Du kannst also beliebige andere freie Pins als Output konfigurieren und dann als Slave Selects für die ADCs verwenden. LG, Sebastian PS: Die ADUMs sind wirklich genial.
:
Bearbeitet durch User
lange hat es gedauert - aber ich habe es dann doch geschafft. Es funktioniert. Ich hatte noch ein Problem wenn ich mehr als einen ADUM am SPI-Bus hatte. Da wurde mir hier: Beitrag "SPI -> ADUM140x -> A/D-Wandler" weiter geholfen. (Für alle die vielleicht ein ähnliches Problem haben) Ich wollte mich nochmal bei allen die weiter geholfen haben bedanken. Ohne die Tipps hätte ich es nicht hin bekommen. DANKE!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.