Sensoren auslesen und Anzeigen lassen - Arduino, etc.

User avatar
mik
Vielschreiber
Vielschreiber
Posts: 5712
Joined: 09.06.2010, 21:59
Vorname: ミク
Spamabfrage: 万歳!!!!
Location: Stuttgart

Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by mik »

Hallo Technik Freaks :P

In letzter Zeit hatte ich den Gedanken ein Arduino Board zu bestellen und damit diverse Sensorendaten auszulesen und auf einem LCD Display anzuzeigen. Programmieren wäre nicht das Problem, da ich auch beruflich viel Programmiere. Jedoch habe ich so "relativ" wenig Ahnung von Elektronik, und bin mir nicht sicher ob das auch so funktionert wie ich es mir vorstelle.

Das Konzept / Theorie
Ein Sensor wie z.b. Öltemperatur, misst einen bestimmten Bereich, welcher diesen über einen min/max Volt Wert an eine Anzeige übergeben würde. Diesen kann ich doch auch mit einer Arduino Schaltung auslesen und diesen dann wieder über das LCD Display Anzeigen lassen.

Frage:
Ist es vom Konzept her wirklich so "einfach"? Klar eine Schaltung müsste her (hallo @geiserp :P) aber es ist doch nix anderes als Eingangswerte in etwas umzurechnen mit dem man was anfangen kann + diese dann über eine Schnittstelle auf einem LCD anzuzeigen. Oder ist das Arduino in irgendeiner Weise vielleicht überhaupt nicht geeignet? Und man müsste direkt PIC Controller oder was auch immer nehmen?

Es geht hier vielmehr um das Prinzip "Ich möchte etwas selbst bauen und lernen", nicht um "kauf doch produkt xy, viel zu stressig, zu teuer, etc." :)

User avatar
Looter
Vielschreiber
Vielschreiber
Posts: 4426
Joined: 12.04.2013, 15:01
Spamabfrage: ドリフト  

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by Looter »

Klar ist das so einfach. Es hängt allerdings auch von der Art des Sensors ab, der Auflösung der analogen Eingänge und bestimmt noch ein paar Sachen.

Zuerst ein paar Worte zur Messung mit einem Arduino und zur Auflösung:
Man misst NUR Spannungen, egal mit welchem Sensor. Je nach Sensor muss man sich dann was einfallen lassen um die Spannung zu "erzeugen" oder eventuell auch um sie zu verstärken.
Die Spannung die vom Arduino gemessen werden kann beträgt wahrscheinlich 0-5V und wird durch die Auflösung geteilt, diese wird meistens im Datenblatt des Mikrokontrollers in bit angegeben. Meistens sind es 10 oder 12bit. Das bedeutet dass man eine Auflösung von 5V/2^10 = 4mV hat.
Das klingt nach wenig, aber normalerweise erreichen die Sensoren keine 5V bei Vollausschlag bzw. bei dem maximal zu erwartenden Signal.
Die Spannung rechnet man dann im Mikrokontroller mittels Kalibrierkurve (im einfachsten Fall ist das eine einfache Gerade) auf denn Messwert zurück und gibt ihn aus.

Art des Sensors:
  • Widerstandstemperatursensor. Dazu zählen die meistens Sensoren für Öl- und Wassertemperatur. Um sie auszulesen muss man glaub nur einen Spannungsteiler mit einem Widerstand bilden und die über den Messwiderstand abfallende Spannung mit dem Arduino messen. Um den Messfehler zu reduzieren, muss die Speisespannung der Brücke sehr genau sein und der Messwiderstand ist im Idealfall nicht temperaturabhängig. Als Kalibrierkurve wird hier eine einfache Gerade verwendet. Eine Verstärkung des Messsignals ist wahrscheinlich noch nicht nötig.
  • Thermoelement. Dazu zählen alle Abgastemperatursonden. Thermoelemente nutzen den sogenannten Seebeckeffekt für ihre Messung (bitte selbst googlen). Das Sensorelement erzeugt also eine Spannung die der Temperatur mehr oder weniger proportional und sehr gering ist. Üblicherweise werden Typ K Thermolemente als EGT Sensoren verwendet, welche bei 1000°C eine Spannung von gerade mal 41mV erzeugen. Folglich müsste das Signal verstärkt werden um es sinnvoll von einem Arduino auslesen lassen zu können. Von Messfehlern brauchen wir hier gar nicht anzufangen, die Kalibrierkurve ist ein Polynom mit 11 Faktoren..... will sagen: man lässt einfach besser die Finger davon. :)
  • Drucksensoren geben meistens schon direkt eine Spannung aus, die direkt proportional zum Messwert ist, sprich die Kalibrierkurve ist für ausreichende Genauigkeit eine Gerade. Eine Verstärkung des Messsignals ist wahrscheinlich noch nicht nötig.


Der wichtigste Tip bei dem ganzen ist folgender:
Google! ;D
Nee im Ernst, gerade für den Arduino sollte man für jede Art von Sensoren Beispielschaltungen finden, wenn man die richtigen Suchbegriffe hat.

Schaltungen kann ich zwar entwickeln, habe aber zu wenig Zeit dafür und mache das auch nur Hobbymäßig (sprich: sie sind meistens im ersten Ansatz fehlerbehaftet. :D). Wenn du dir aber Sensoren raussuchst, kann ich dir auf jeden Fall Tips geben.

mfg,

Looter

User avatar
mik
Vielschreiber
Vielschreiber
Posts: 5712
Joined: 09.06.2010, 21:59
Vorname: ミク
Spamabfrage: 万歳!!!!
Location: Stuttgart

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by mik »

Wow, super danke für die ausführliche Antwort :)
Klar werd ich desöfteren Google Fragen, aber es ist natürlich immer super wenn man schonmal ein paar Ansätze und Methoden direkt erklärt bekommt.
Gerade an die Kalibrierungskurven habe ich selbst nicht gedacht, ich war von einem linearen Verlauf der Werte ausgegangen. Das ist doch schonmal etwas, vielleicht bekomm ich ja noch mehr input :)
Wollt schon immer mal das Microcontroller Feld erforschen, aber bislang scheiterte ich dann doch an den Schaltungen :D

Gruß
mik

ronny_w
Zu oft hier
Zu oft hier
Posts: 1536
Joined: 14.07.2010, 20:53
Vorname: Ronny
Spamabfrage: Ein_Bot

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by ronny_w »

und damit das Ganze dann halbwegs störungsfrei im KFZ Umfeld funktioniert müssen paar Schutzschaltungen/Filter usw her.

Man kann mit so nem Arduiono sicher anfangen und rumspielen aber eigentlich ist das Teil n Krampf da du viel zu viel (Code)Overhead in Form dieses komischen ArduionoFramework mitschleppst.

Ich hab so was (entfernt) Ähnliches mal gebaut um weitere Daten im Nistune mitloggen zu können.
Damit kann ich 8 Kanäle über USB ins Nistune einspeisen und zusätzlich zu den normalen Parametern mitloggen.

Widerstandstemperatursensor. Dazu zählen die meistens Sensoren für Öl- und Wassertemperatur. Um sie auszulesen muss man glaub nur einen Spannungsteiler mit einem Widerstand bilden und die über den Messwiderstand abfallende Spannung mit dem Arduino messen. Um den Messfehler zu reduzieren, muss die Speisespannung der Brücke sehr genau sein und der Messwiderstand ist im Idealfall nicht temperaturabhängig. Als Kalibrierkurve wird hier eine einfache Gerade verwendet. Eine Verstärkung des Messsignals ist wahrscheinlich noch nicht nötig.
Die im KFZ Bereich verbreiteten Widerstandssensoren sind NTC/PTC. Die haben ne ziemlich krumme Kennlinie und müssen (softwaremässig) linearisiert werden.

Einfacher geht es mit PT1000 Sensoren. Die sind rel. linear.
Baut man damit allerdings einfach nur n Spannungsteiler, muss man auch wieder bissl rechnen um auf die Werte zu kommen und es ist nicht mehr so richtig linear.
Thermoelement. Dazu zählen alle Abgastemperatursonden. Thermoelemente nutzen den sogenannten Seebeckeffekt für ihre Messung (bitte selbst googlen). Das Sensorelement erzeugt also eine Spannung die der Temperatur mehr oder weniger proportional und sehr gering ist. Üblicherweise werden Typ K Thermolemente als EGT Sensoren verwendet, welche bei 1000°C eine Spannung von gerade mal 41mV erzeugen. Folglich müsste das Signal verstärkt werden um es sinnvoll von einem Arduino auslesen lassen zu können. Von Messfehlern brauchen wir hier gar nicht anzufangen, die Kalibrierkurve ist ein Polynom mit 11 Faktoren..... will sagen: man lässt einfach besser die Finger davon. :)
Man nimmt einen geeigneten Interface-Baustein der einfach alles erledigt und koppelt ihn über einen SPI oder I2C Bus an den Mikrocontroller an. Die kosten ein bissl Geld aber man kann völlig problemlos gängige Thermoelemente ausreichend genau auswerten.
Drucksensoren geben meistens schon direkt eine Spannung aus, die direkt proportional zum Messwert ist, sprich die Kalibrierkurve ist für ausreichende Genauigkeit eine Gerade. Eine Verstärkung des Messsignals ist wahrscheinlich noch nicht nötig.
Es gibt Drucksensoren die geben tatsächlich einfach linear n 0-5Volt Signal raus (korrekterweise sind es eher ca 200mV bis 4,8Volt)
Die lassen sich noch am einfachsten auswerten.
Allerdings ist die Ausgangsspannung abhängig von der Versorgungsspannung, so das man da schaltungsmässig entweder ne ausreichend genaue Versorgungsspannung für die Sensoren erzeugen muss oder anderweitig dafür sorgt das Schwankungen keinen Einfluss haben.


mfg
Ronny
Das ist ein verdammt guter Burger.

User avatar
geiserp
Sticker Masta'
Posts: 12113
Joined: 13.04.2004, 10:18
Spamabfrage: bUyV1aGrA
Location: Schweiz
Contact:

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by geiserp »

schön geschrieben @looter. Hättest vielleicht noch Ntc/ptc der Vollständigkeit erläutern sollen. Mik solange du nur Bereichen von 200C misst ist die Beschaltung nicht schwierig, als Referenz Punkt gehst du von Betriebs Temperatur aus, dann musst du dir auch keine Sorgen um kalibrierungskurven machen. Druck und hohe Temperaturen messen ist dann nur das eine, dass die Werte über den ganzen Bereich stimmen das andere.
Image
Top speed runs are killers no matter how well the car is set up.

User avatar
mik
Vielschreiber
Vielschreiber
Posts: 5712
Joined: 09.06.2010, 21:59
Vorname: ミク
Spamabfrage: 万歳!!!!
Location: Stuttgart

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by mik »

Danke auch an @ronnie_w für einer weitere erläuterung :)

Ich werd mir mal so nen Arduino Starter Set bestellen und damit erstmal ein wenig experimentieren.
Wie sieht es denn aus bezüglich der Messwerte? Gibt es da irgendwie Tabellen/Listen aus denen hervorgeht wie a) die kurve ggf. verläuft und b) welche min/max V-Werte sie haben?
Das linearisieren sollte ja, anhand so einer Tabelle, dann wie gesagt Software technisch geschehen. Jedoch muss ich ja auch Wissen mit welchen Werten/Ratios/etc. ich überhaupt arbeite.

Sicher ist auch das der Arduino nicht das non-plus ultra ist, aber ich glaub nen PIC/Atmel oder wie sie auch alle heissen, bekomm ich einfach nicht lauffähig, mit meinem Elektrik Grundwissen :D
Ausserdem brauch ich dann auch nen Programmer und vermutlich auch mehr Hardware. Aber auch da, wenn da jetzt jemand nen super "einstiegs set" kennt, und mir zur hand geht, würde ich auch einen anderen weg gehen :)

User avatar
htc.zenit
Öfter hier
Öfter hier
Posts: 888
Joined: 18.06.2010, 18:59
Vorname: Michael
Location: Kaiserslautern
Contact:

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by htc.zenit »

Super spannendes Thema. Wollte ich mich auch schon mit beschäftigen und werde ich auch noch tuen.

Eine Frage die mir noch auf den Lippen brennt, wie gibt man die Daten aus? Bzw. wohin und in welcher Form?
Kann ein Arduino eine grafische Oberfläche an einen LCD ausgeben?

Meine Idee war immer etwas wie das HKS Camp zb, selbst zu realisieren.

User avatar
mik
Vielschreiber
Vielschreiber
Posts: 5712
Joined: 09.06.2010, 21:59
Vorname: ミク
Spamabfrage: 万歳!!!!
Location: Stuttgart

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by mik »

Mit dem Arduino kann man z.b. ein TFT Display "ansprechen", im Arduino Framework sind teilweiße schon Treiber/Funktionen vorhanden um diverse monochrome lcd's oder sogar multi farben tfts anzusteuern. Genau so etwas ähnliches wollte ich auch machen :)

Image

User avatar
htc.zenit
Öfter hier
Öfter hier
Posts: 888
Joined: 18.06.2010, 18:59
Vorname: Michael
Location: Kaiserslautern
Contact:

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by htc.zenit »

Meine Idee war mein DoppelDIN JVC, welches einen externen VideoEingang hat anzusprechen.
Ob das funktioniert, muss ich mich wohl mal ein wenig mehr einlesen...

User avatar
Looter
Vielschreiber
Vielschreiber
Posts: 4426
Joined: 12.04.2013, 15:01
Spamabfrage: ドリフト  

Re: Sensoren auslesen und Anzeigen lassen - Arduino, etc.

Post by Looter »

Was ronny_w geschrieben hat, ist genau das was ich meine. Wenn man sich ein bißchen damit beschäftigt findet man sehr viel einfachere und genauere Lösungen als wenn man jeden Mist nochmal selbst durchdenkt. :)

@Videoeingang:
Videoausgang ist ohne zusätzlichen Controller nur schwer möglich mit dem Arduino. Aber auch dafür gibt es bestimmt Lösungen.... Was da einfacher wäre, wäre ein RaspberryPi, zB.