Arduino Forum

International => Deutsch => Topic started by: maeckes on Feb 11, 2013, 09:52 pm

Title: FIS für Motorrad
Post by: maeckes on Feb 11, 2013, 09:52 pm
Hallo!

Ich möchte mir mit dem Arduino eine Anzeige für mein Motorrad bauen.
Es sollen folgende Dinge "gemessen" und angezeigt werden:
- Öltemperatur (Kaufsensor in Ölwanne)
- Wassertemperatur (Kaufsensor im Wasserkreislauf)
- Umgebungstemperatur (irgendein Temperatursensor)
- Uhrzeit

Die Kennlinien der Kaufsensoren sind noch nicht bekannt - müsste ich messen, wenn ich sie habe.

Das Display soll alle 4 Werte auf einem Display anzeigen.
Entweder 2 Werte, die alle z.B. 5sek wechseln, oder per Knopfdruck wechselbar.

Nun das größte Problem:
Ich habe bisher 0 Plan von der ganzen Thematik (Arduino). Habe zwar Grundkenntnisse in Elektronik aus der Ausbildung (Mechatronik) und basics der Programmierung (Delphi - ein Semester Maschinenbauinformatik), aber das wars dann auch schon.
Im Netz hab ich aber auch schon einige tolle Projekte gefunden, die weitestgehend das Gleiche behandeln:
http://www.oli82.de/blog/?p=384
oder
http://fluuux.de/2012/08/arduino-temperatur-auslesen-und-auf-display-ausgeben/

Habe auch schon diesen Arduino näher in die Auswahl genommen (kompakte Bauform):
http://www.komputer.de/zen/index.php?main_page=product_info&cPath=21&products_id=35&zenid=6f3e0765e2c98baa4bde34b4d9cc3101

Könnt Ihr mir vielleicht etwas Unterstützung geben, welches Display sich z.B. gut eignen würde und wie ich das am Besten mit der Programmierung angehen kann?
Kann ich die Sensoren direkt anklemmen um den sich ändernden Widerstandswert auszuwerten, oder muss davor noch eine Elektronik?

Toll wäre halt, wenn das Ganze schön platzsparend ist aber gleichzeitig alle 4 Werte anzeigen könnte und dabei noch gut lesbar ist.... Die eierlegende Wollmilchsau halt  :P

Danke Euch für die Hilfe!

Gruß
Morris
Title: Re: Thermometer / Uhr für Motorrad
Post by: uwefed on Feb 11, 2013, 10:48 pm
Morris
Ich rate Dir mal ein Arduino Einsteigerkit zu kaufen (oder nur den arduino UNO falls du bereits Elektronikteile zuhause hast) und Dich dann mal mit einem Buch oder Tutorial in Arduino einarbeiten. Dann wenn Du die Basis kannst kannst Du dein Projekt beginnen.
Grüße Uwe
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 12, 2013, 12:03 am
Danke Dir!
Warum den Uno und nicht den Nano?
Title: Re: Thermometer / Uhr für Motorrad
Post by: uwefed on Feb 12, 2013, 12:56 am
Zum Anfangen ist der einfacher weil größer. Kannst aber auch mit dem Nano anfangen.
Grüße Uwe
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 12, 2013, 11:19 am
Habe hier ein Display gefunden:
http://www.ebay.co.uk/itm/1602-LCD-Keypad-Shield-for-Arduino-Duemilanove-UNO-MEGA2560-MEGA1280-/121062018125?

Quote
The shield can be directly plugged onto the Arudino board and there is no need for soldering or fly-wiring.

Auf den Nano? Oder auf welchen Arduino? Oder auf alle? Weiß das jemand?

Kannst Du ansonsten noch ein Buch/Tutorial empfehlen?

Habe mir jetzt erst mal den Uno bestellt. Dann kann man schon mal etwas spielen. :) :) :)
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 12, 2013, 09:49 pm
Auf den Uno passt's.
Du wirst Dich um saubere Betriebsspannung kümmern müssen, Mopeds haben meist ordentlich Müll auf der Leitung. Und das Gerüttel erfordert mechanische Stabilität, da taugt das Stecksystem nur zur Entwicklung.

Aber zum laufen lernen ist's prima.
Title: Re: Thermometer / Uhr für Motorrad
Post by: mwyraz on Feb 12, 2013, 09:57 pm
Interessant dafür ist vielleicht dieser UNO-Klon: http://www.watterott.com/de/OLIMEXINO-328

- ordentliche Temperaturbereiche
- für "raue" Umgebungen ausgelegt
- Stromversorgung über Li-Ionen-Akku sowie 9-30V - wenn Strom anliegt, wird auch gleich der Akku geladen. Das sollte das Problem der stabilen Spannungsversorgung lösen.

Zum Temperatur messen taugt der DS1820 prima - weiß nur nicht, ob der mit üblichen Öl-Temperaturen zurechtkommt. Außerdem wäre dann ein "unten außen an der Wanne" zu überlegen.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 12, 2013, 10:11 pm
Danke Euch!!

Der Olemexino ist scheinbar genau der richtige Kandidat!
Ich werde also erst mal mit dem Uno spielen und dann wenn alles läuft den Olemexino zu Rate ziehen ;-)
Title: Re: Thermometer / Uhr für Motorrad
Post by: Ratlos on Feb 12, 2013, 10:55 pm
Hallo
Was hälst Du von einem PT1000
http://www.sensorshop24.de/Temperaturfuehler/Einschraubfuehler-mit-Kabel/Einschraubfuehler-mit-einem-M8x10-Gewinde/Einschraubfuehler-bis-200-C/Einschraubfuehler-mit-M8x10-Gewinde-bis-200-C.html (http://www.sensorshop24.de/Temperaturfuehler/Einschraubfuehler-mit-Kabel/Einschraubfuehler-mit-einem-M8x10-Gewinde/Einschraubfuehler-bis-200-C/Einschraubfuehler-mit-M8x10-Gewinde-bis-200-C.html)

Und einem Bausatz
http://www.pollin.de/shop/downloads/D810144B.PDF (http://www.pollin.de/shop/downloads/D810144B.PDF)

Für die Genauigkeit müste es ja so genügen

zb.
90°C    =  ( 1347,022 Ohm  - 1000 ) / 3,855   

Summe= 90,018 °C

60°C = 60,283 °C

usw

Als Display würde ich ein Seriales TFT benutzen
http://www.lipoly.de/index.php?main_page=product_info&cPath=880_1298_1793&products_id=214875 (http://www.lipoly.de/index.php?main_page=product_info&cPath=880_1298_1793&products_id=214875)

Oder halt ein Größeres


Aber bin selbst neu

Grüße
Ratlos

Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 13, 2013, 10:22 am
Guten Morgen zusammen!

Ein PT-Sensor wäre natürlich echt super.
Problem: Die Ölablassschraube hat ein M14x1,25 Feingewinde.
Habe aber schon einen Sensor gefunden, der mit solchem Gewinde ausgestattet ist:
http://www.kosoeurope.com/temperatursensor-m14xp1.25-150c-schwarzer-stecker

Es gibt auch Adapter:
http://www.kosoeurope.com/adapterschraube-fuer-temperaturgeber-pt1/8x28-m14x1-25x15mm

Aber da ist die Wandung zwischen Innengewinde und Außengewinde dann etwa 1,38mm.
Das ist mir doch etwas zu dünn.

Ich wollte dann einfach den Widerstand vom Temperatursensor dauerhaft bestimmen und umgerechnet dann halt als Temperatur ausgeben.



Ja so ein Display hatte ich mir auch vorgestellt. Aber das liegt halt noch in der "Ferne". Wollte heute Nachmittag erst mal versuchen einen Widerstandswert zu bestimmen. Wenn das klappt, wollte ich mich an Temperatursensoren heranwagen. Das Display kommt dann zum Schluss  ;) Und ich glaube, dass wird auch die größte Herausforderung  :~

Gruß
Morris
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 01:49 pm
Hallo!

Ich habe nun mittlerweile etwas getestet und bin echt begeistert von dem feinen Spielzeug :)

Habe nun auch eine Tabelle bekommen, in der das genaue Verhältnis von Temperatur-Widerstand für einen Öltemperaturgeber aufgeführt ist.
Meiner Meinung nach ein NTC 10k, da bei 25°C der einzig glatte Wert: 10k Ohm. B=3435°K

Ich hatte mir nun gedacht, dass ich den NTC einfach zwischen 5V und A0 auf dem Arduino anklemme.
Dann bekomme ich ja eine Spannung am Analogeingang zurück.
Diese wollte ich dann anhand der e-Funktion vom Widerstand auf eine Temperatur umrechnen.

Ist das so möglich?
Oder denke ich da vollkommen falsch?

Danke Euch!

Gruß
Morris
Title: Re: Thermometer / Uhr für Motorrad
Post by: sth77 on Feb 15, 2013, 01:56 pm
Nicht ganz. Du musst einen Spannungsteiler, bestehend aus NTC und Festwiderstand, aufbauen. Am verbindungspunkt der beiden widerstände greifst du dann die Spannung ab und gibst diese auf deinen Analogpin.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 02:05 pm
Hm und wieso kann ich nicht die von mir genannte "Lösung" wählen?

Habe das so mit nem 4,7k Ohm NTC und nem 4,7k Festwiderstand gemacht, zum Probieren.
Aber dann habe ich ja immer das Problem, dass alleine durch die Toleranz der Widerstände, die gemessene Spannung(->Temperatur) ja auch nur so halb stimmt...
Title: Re: Thermometer / Uhr für Motorrad
Post by: sth77 on Feb 15, 2013, 02:14 pm

Hm und wieso kann ich nicht die von mir genannte "Lösung" wählen?

Du kannst deinen Ansatz ruhig testen, dann erkennst du, dass trotz Temperaturänderung permanent am Analogpin 1023 anliegt. Du musst das Prinzip einer Reihenschaltung anwenden und den Spannung über einem (in diesem Fall veränderlichen) Widerstand messen. Du gehst fälschlicherweise davon aus, dass die Spannung hinter einem Widerstand niedriger ist - mal bewusst laienhaft formuliert. ;)

Zur Bettlektüre ist vielleicht noch zu früh, trotzdem als Lesevorschlag:
http://de.wikipedia.org/wiki/Reihenschaltung
http://de.wikipedia.org/wiki/Spannungsteiler
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 03:10 pm
Okay - verstanden
Habe gestern einen von der Fest-widerständen mit 5% Toleranz gemessen und der hatte sein Toleranzfeld schon fast ausgenutzt  :~ Das ist natürlich dann schon murks.
Daraufhin jetzt Widerstände mit 1% Toleranz geordert.

Ich möchte ja die Ausgabe später über ein Display realisieren.
Nun gibt es ja verschiedene. Habe mir mal zwei ausgesucht:

LCD
http://www.exp-tech.de/Displays/I2C-LCD-1602-Module-652.html

TFT LCD
http://www.exp-tech.de/Displays/1-8-18-bit-color-TFT-LCD-display-with-microSD-card-breakout-ST7735R.html

Dazu mal einige Fragen / Probleme:


Danke Euch!

Gruß
Morris
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 15, 2013, 06:41 pm
Die Toleranz des Widerstands ist egal, da der echte Wert (fast) egal ist. Du rechnest ja eh um, und damit hast Du einfach einen grösseren oder kleineren Offset.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 06:58 pm
Hi!

Also ich habe diesen Code hier verwendet:
http://www.nextit.de/2011/07/thermometer-mit-arduino/

Da wird doch mit den Werten der beiden Widerstände gerechnet.
Wenn diese also in der Rechnung abweichen (weil der Widerstand halt statt 4700Ohm nur 4500 hat), weicht doch auch der errechnete Wert ab!?

Ich habe auch immer eine abweichende Temepratur gemessen.
2 Thermometer haben mir hier etwa um 22-23°C angezeigt.
Der Wert des Arduinos lag bei 25°C ... finde die Abweichung schon etwas groß für eine Temperatur in dem Bereich. Da will man ja schon einigermaßen genau messen, da ±1 Grad ja schon spürbar sind.

Gruß
Morris
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 15, 2013, 08:54 pm
Die Spannung ändert sich proportional zum Verhältnis der Widerstände. Da der eine fix ist bestimmt der Tempsensor den Wert. Schwankt der bei konstanter Temperatur aussergewöhnlich, hast Du vielleicht Kontaktprobleme. Verwendest Du ein Breadboard?
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 09:02 pm
Hi!

Naja großartig schwanken tut er nicht. Immer um ±0,1-0,2 °C.
Das finde ich eigentlich i. O.

Aber das die Temperatur um 2 Grad abweicht, finde ich etwas viel.

Ja verwende ein Breadboard.

Aber auch wenn sich die Spannung proportional zum Verhältnis der Widerstände ändert, so beeinflusst ein Widerstand mit "falschem" Wert doch meine Rechnung - richtig?
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 15, 2013, 09:11 pm
Richtig, aber ebn um einen konstanten Wert. Den Temperaturkoeffizienten des Widerstands mal unberücksichtigt. Und abgleichen solltest Du eh den Aufbau.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 09:12 pm
abgleichen?
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 15, 2013, 09:47 pm
Klar, Du willst doch den richtigen Wert haben. Also musst Du rausfinden welche Spannung Du bei definierter Temperatur misst.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 09:54 pm
Also Spannung zwischen GND und analogem Eingang per Multimeter messen?
Wenn der Wert von dem mit dem Arduino gemessenen abweicht - wo schraube ich dann dran?
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 15, 2013, 10:00 pm
Neee. Temperatur messen und im Code Offset anpassen dass der arduino die gleiche misst.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 10:03 pm
Offset?
Ich habe mir ja erst mal diesen Code kopiert, um das überhaupt ans Laufen zu bekommen:
http://www.nextit.de/2011/07/thermometer-mit-arduino/

Was ist denn da der Offset?
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 15, 2013, 10:26 pm
Du musst dem arduino beibringen, bei welcher Temp welcher Analogwert anliegt. Das ist abhängig vom Spannungsteiler. Im Code wird durch die genaue Angabe der Widerstandswerte das gleiche erreicht. Dafür muss der Widerstand genau sein bzw sein Wert für den Code ausgemessen werden. Das ist sozusagen der Offset.

Einfacher finde ich, einfach den Analogwert zu lesen, 2 oder 3 Werte zu messen und daraus die Kurve anzupassen. Da das System als linear anzunehmen ist wird der Offset eine Addition oder Subtraktion eines Festwertes. Ach ich kann das sooo schlecht beschreiben.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 15, 2013, 10:33 pm
ah ich verstehe was Du meinst.

Also den Widerstandswert vom Widerstand bei genau 25°C zum Beispiel messen und dann den gemessen Wert statt den 4,7k einsetzen?
Den "echten" Widerstandswert dann auch für den Festwiderstand eintragen, da der ja auch eine Toleranz hat?

Ich muss ehrlich gestehen (wie Du sicher schon gemerkt hast), dass ich noch nicht ganz die Berechnung der Temperatur aus dem Code verstanden habe....
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 16, 2013, 03:00 pm
So, jetzt nochmal hübscher dargestellt.

Stell Dir vor, Du hast 2 unterschiedliche Fest-Widerstände in Deinem Spannungsteiler und misst die Spannung am Knotenpunkt mit dem arduino. Dann bekommst Du - Linearität immer noch vorausgesetzt - 2 unterschiedliche Kurven. Siehe Bild, X-Achse ist die Temperatur.

Und jetzt wird klar, was ich mit Offset meine. Der tatsächliche Widerstandswert ist egal. Du kennst die Temperatur aus einer Vergleichsmessung mit einem Thermometer und weißt somit, welcher Analogwert dieser Temperatur entspricht.

Ich halte das für einfacher als einen Widerstand genau auszumessen und übertrieben, mit 0,1% Widerständen zu arbeiten. Aber eine Bezugsgröße brauchst Du ja nunmal.

Jetzt klar?
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 16, 2013, 03:04 pm
Okay - ich könnte also auch einfach von der errechneten Temperatur immer X-Grad abziehen, weil ich ermittelt habe, dass die Temperatur die ich messe immer X Grad zu hoch ist. Meinst Du das?

Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 16, 2013, 03:20 pm
Yepp
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 16, 2013, 03:23 pm
Na dann sag das doch :D ;)

Okay - danke Dir. So werd ich es machen!


Kann mir noch jemand dazu was sagen?

Ich möchte ja die Ausgabe später über ein Display realisieren.
Nun gibt es ja verschiedene. Habe mir mal zwei ausgesucht:

LCD
http://www.exp-tech.de/Displays/I2C-LCD-1602-Module-652.html

TFT LCD
http://www.exp-tech.de/Displays/1-8-18-bit-color-TFT-LCD-display-with-microSD-card-breakout-ST7735R.html

Dazu mal einige Fragen / Probleme:

  • Welches stellt die größte Herausforderung in Sachen Programmierung dar?

  • Das Display soll gut ablesbar sein - auch bei Tageslicht (halt auf dem Motorrad montiert, da scheint die Sonne). Welches eignet sich da am Besten?

  • Benötige ich noch etwas, außer das Display und den Arduino um das Ding ans Laufen zu bekommen?

  • Könnt Ihr mir vll eins empfehlen?


Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 16, 2013, 04:31 pm
Ich hab das im Einsatz:
http://www.pollin.de/shop/dt/MTczOTc4OTk-/Bauelemente_Bauteile/Aktive_Bauelemente/Displays/LCD_Modul_TC1604A_01.html

Die grösste Herausforderung ist, das eigene Hirn anzustrengen.
Spannungsregelung brauchst Du noch und natürlich den Sensor. Und Zeit.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 16, 2013, 04:50 pm
Gibt ja auch so welche hier, die sind angeblich direkt für den arduino.... oder ist das egal?
http://www.ebay.de/itm/DE-Lager-SainSmart-1602-LCD-Keypad-Shield-fur-Arduino-UNO-Mega-2560-1280-/180874697650?pt=Wissenschaftliche_Geräte&hash=item2a1cf8dbb2

Wie sieht es denn mit der Ablesbarkeit bei Sonneneinstrahlung aus?
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 16, 2013, 05:13 pm
Ich hab mein LCD nicht in der Sonne, würde aber behaupten das geht ganz gut.
Aber DU musst wissen was Du willst
- Grösse
- Anzahl Zeilen und Zeichen
- Farbe
- ....
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 16, 2013, 05:28 pm
Schön wäre schwarzer Hintergrund und ne weiße Schrift, aber das gibts ja irgendwie recht wenig   :(

20 Zeichen pro Zeile wären nett
2 Zeilen würden reichen

40mm hoch kann es ruhig sein
Länge richtet sich dann ja nach Anzahl der Zeichen.

Vielleicht hat ja noch jemand ne Empfehlung. Kann ja sein, dass ich irgendwie falsch suche, bin ja eher newbie auf dem Gebiet.
Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Feb 16, 2013, 08:15 pm
Kauf das Sainsmart Display und leg los.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 16, 2013, 08:35 pm
Kann ich das direkt auf den Arduino stecken?
Habe gesehen gibt verschiedene.

Wie ist das denn eigentlich, wenn ich neben dem LCD auch nen SD-Karten Slot an den Arduino hängen will?
Hab ich dafür überhaupt genug Kontakte?
Title: Re: Thermometer / Uhr für Motorrad
Post by: Ratlos on Feb 20, 2013, 08:10 am
Hallo,
schreibe es hier mit rein
da es hier rein past.


Bei einen PT100 Temperatursensor.
ab welcher Kabellänge sollte man einen 4 Leiter benutzen.
Ich habe zum beispiel 3,5Meter.
Sollte man da ein 4 Leiter PT100 und ein IC "Typ LM358" nehmen ?

zb. so eine Schaltung
(http://www10.pic-upload.de/thumb/20.02.13/lcmxtdfa4o.jpg) (http://www.pic-upload.de/view-18216495/Temp.jpg.html)
( Habe ich als Anfänger erstellt, daher bitte prüfen)

(Verwende einen Atmel 644 mit Arduino ,TFT ,4x AbgasT. 4xKopfT. 1xWasserT. 1x OelT. und 1xAussentemperatur)

Danke für hinweise
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Feb 22, 2013, 06:24 pm
Sooooo
Heute ist das Display gekommen.

Ich muss wirklich sagen, bisher war das alles doch deutlich einfacher, als ich es am Anfang befürchtet hatte.
Das Teil zeigt mir nun schon 2 Temperaturen (aus den 4,7k NTC's) an.

Als Nächstes muss ich mir dann mal den Öltemperatursensor ordern, der wohl ein 10k NTC ist.

Muss mir nun nur noch nen geeigneten Platz suchen, wo ich das Teil unter bringe... :P

Außerdem mache ich mir zur Zeit Gedanken über die Spannungsversorgung im Moped.
Plan B ist ein KFZ-Netzteil mit 5V Ausgang. Jemand noch einen besseren Vorschlag?

Eine weitere Idee ist die Verwendung von einem Durchflussmesser, um auch den øSpritverbrauch anzuzeigen:
http://www.conrad.de/ce/de/product/150392/Durchflussmesser-Flow-Meter-FCH-m-POM-LC-003-30-lmin-BIO-TECH-eK-FCH-M-POM-LC-AD-6-MM-mit-Duese-16-mm-003-
Müsste ich doch einfach an einen der Dig.-Eingänge hängen können und die Flanken "zählen" - richtig?

Danke Euch!

Gruß
Morris
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Mar 24, 2013, 05:20 pm
Bin weiter gekommen - vielleicht interessiert es ja jemanden.

Die Temepratursensoren laufen beide. Das Display ist nun über den i2c-bus angeschlossen. So muss ich nur noch 4 statt 12 Leitungen an das Display legen.

Habe außerdem mein RealTimeClock-Uhrenmodul bekommen. Somit ist die Anzeige nun erst mal fertig.
Nun nur noch alles in passende Gehäuse verbauen, Leitungen verlegen und dann kann alles am lebenden Objekt ausgetestet werden!

http://youtu.be/a8d7em3NT3E

Title: Re: Thermometer / Uhr für Motorrad
Post by: Klaus_ww on Mar 24, 2013, 05:52 pm
Der Link ist ein bissel schräg.
Sieht doch schon gut aus, ich bleibe auf jeden Fall als Beobachter dabei. Darfst also gerne weiter Updates posten.
Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Mar 24, 2013, 05:54 pm
Danke Dir!

Ja irgendwie klappt das hier nicht mit der Benennung von Links. Hab es editiert. Jetzt klappt alles
Title: Re: Thermometer / Uhr für Motorrad
Post by: Eaglebiker on Mar 25, 2013, 06:35 pm
hmm nimm doch ein Grafikdispla und bastel dir ein FID so wie ich eins gemacht habe

Da habe ich alle auf einen Blick
Datum
Solltemp meiner Heizgriffe
Die IST Temp meiner Heizgriffe
Öl Temp Tankanzeige
Eine Warnung wenn ein Sensor ausgefallen ist
Ganganzeige Spannungsanzeige
Aussentemp und die Uhrzeit
Und ein Lustigen Startbildschirm :-)

hier mal nen Link zu einem Video von mir

http://youtu.be/LscHhaqsy8k


Title: Re: Thermometer / Uhr für Motorrad
Post by: maeckes on Mar 25, 2013, 07:41 pm
Geile Sache!

Brauche Input!
-> welches Display ist das?
-> Wie hast Du die Ganganzeige realisiert?
-> Wie die Tankanzeige? Habe leider serienmäßig nur ne Reserve-anzeige  :smiley-fat:

Wollte mir auch nen Grafikdisplay holen, aber erst mal zum Testen halt das 16x2.
Läuft Dein Display auch über den I2C-Bus?
Wie ist das bei Sonneneinstrahlung ablesbar?

Hast Du vll sogar ne homepage oder mehr Infos zu Deinem Projekt?
Title: Re: Thermometer / Uhr für Motorrad
Post by: Eaglebiker on Mar 25, 2013, 08:05 pm
Zum Grafikdisplay das habe ich mir bei Ebay gekauft
derzeit ist das Projekt noch auf einem Steckbrett muss noch die Platine dafür Löten

der zeichensatz bei dem Display ist um 90° gedreht
die tankanzeige ist bei meinem Bike serienmässig drinn die greife ich einfach nur ab

Die ganganzeige ist bei meinem fahrzeug auch schon serienmässig drin gewesen
an der schaltung bin ich schon seit 4 monaten drann
was ich dir als tipp geben kann schau das du eine sehr stabile spannungsversorgung sicherstellen kannst sonst raucht dir ganz schnell der prozessor ab

hier mal ein schaltplan von meinem FID

Title: Re: FIS für Motorrad
Post by: cb1000r on Aug 03, 2017, 01:34 pm
Hallo maeckes,

welchen Öl Temp NTC hast du denn bei deinem Projekt verwendet?

Bin gerade auch an einem Projekt wobei ich einen Öl Temp NTC suche zu dem es eine Kennlinie gibt. Gar nicht so einfach!

Beste Grüße
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 12:43 pm
Bräuchte ggf auch nochmal Hilfe bei solchen Sensoren ....

Falls da nochmal jemand etwas Zeit hat ?!
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 01:06 pm
Hallo Aceli,

Der Thread ist ja schon etwas älter, daher weiß ich nicht wie das hier gehandhabt wird mit dem ausgraben von alten Threads.  ???

Aber egal. :)  Um welche Sensoren handelt es sich denn bzw. welches Problem hast du damit?

Eine Anmerkung zu den Festwiderständen bei Spannungsteilern generell:

Wichtiger als die Toleranz des Widerstandes ist, denke ich, der Temperaturkoeffizient des Widerstandes, vor allem bei stark wechselnden Umgebungstemperaturen und natürlich auch die Selbsterwärmung des Widerstandes. Den Widerstand kann man ausmessen und im Sketch hinterlegen, auf den Temp.-Koeffizienten hat man keinen Einfluss. Deshalb sollte man bei der Wahl des Festwiderstandes darauf achten dass er einen, so klein wie möglichen, Temp.-Koeffizienten hat.

Schöne Grüße
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 02:16 pm
Hallo Aceli,

Bitte die Fragen gleich hier ins Forum posten, da hier auch andere Mitglieder mit an einer Lösung arbeiten können. :)

Quote
Moin

Ich weiß gar nicht ob Pn hier gesendet werden .
Die habdyansicht ist verwirrend , finde ich .

Könntest du mir n Feedback geben ?!


Habe zwei Sensoren ( 2 adrig) vom Motorrad .

Temperatur und Wassertemperatur .

Da ich keine Infos zu den Sensoren habe muss ich  rausfinden welcher Wert welche Temperatur hat , richtig ?!

Das kann man mit Widerstand machen ?

Habe den wassersensor eben mal in heißes und kaltes Wasser gesteckt und mit dem Multimeter den Widerstand gemessen . Dieser verändert sich .

D.h. Ich muss mit einem geeigneten Thermometer ein paar Temperaturen messen und wie hoch der Widerstand ist und daraus eine Tabelle machen ?!

Gruß
So wie du es hier schilderst handelt es sich wahrscheinlich um NTC oder PT Sensoren. Diese verändern je nach Temperatur ihren Wiederstand. Der Unterschied zwischen den beiden ist grundsätzlich einmal dass sie sich gegensätzlich Verhalten was das Verhältniss zwischen Widerstand und Temperatur betrifft. Bei NTC- Sensoren wird der Widerstand bei zunehmender Temperatur kleiner und bei abnehmender Temperatur erhöht sich der Widerstand. Bei PT- Sensoren ist das Verhältniss genau umgekehrt, d.h. bei zunehmender Temperatur wird der Widerstand größer und bei abnehmender Temp. wird der Widerstand kleiner.

Somit ist es leicht herauszufinden ob NTC oder PT. einfach bei verschiedenen Temps messen wohin sich der Wiederstand ändert.

Die Kennlinie der Sensoren herauszufinden ist schon etwas schwieriger. Hier bräuchte man genau Messgeräte um diese selbst zu bestimmen. Man bräuchte Flüssigkeiten wo die Temperatur genau bekannt ist oder man diese mit einenm Referenztemperaturmessgerät bestimmen kann. Und natürlich ein Multimeter das ausreichend Genauigkeit besitzt um den Wiederstandswert zu messen. Oder man lässt sich die Kennlinie von einer Kalibrierstelle für elektrische Messgrößen ausmessen. Dies wird aber wahrscheinlich zu kostspielig sein.

Ich selbst arbeite mit NTC Sensoren, daher kann ich dir leider nur mal ein Beispiel für einen NTC anbieten.

Ich habe die Messung mittels eines Spannungsteilers realisiert. Dazu habe ich mir eben diesen Spannungsteiler aufgebaut (siehe Bild im Anhang).

Die Spannung wird dann am Analogen Eingang Pin A0 gemesen und mit der Referenzspannung verglichen. Bei sich ändernder Temperatur ändert sich der Widerstand der Sensoren und somit auch die Spannung an Pin A0.

Dabei kommt ein Wert heraus der bei NTC's mittels einer Formel (Steinhart-Hart Gleichung) in einen Temp.-Wert umgerechnet wird und dann ausgegeben werden kann.

Für diese Steinhart-Hart Gleichung werden die berechneten Koeffizienten benötigt dazu werden bei drei verschiedenen Temps die Widerstände der NTC's gemessen. Diese können dann für die Berechnung der Koeffizienten verwendet werden. am einfachsten mit Hilfe dieses Online-Kalkulators (https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html), und in der Berechnug im Arduino verwendet werden.

Meine verwendeten Koeffizienten:

Code: [Select]
// Die Steinhart-Hart Koeffizienten
// Die benötigten Widerstandswerte können dem Datenblatt des NTC-Thermistors entnommen werden,
// oder mit Hilfe eines geeigneten Multimeters und Temperaturmessgerätes  selbst bestimmt werden.
// Multimeter und Temperaturmessgerät sollten für genaue Messungen einen entsprechenden Genauigkeitsgrad haben.
// Berechnet mit Hilfe des NTC-Kalkulators von SRS. - https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html

#define A_1 1.130480394e-03   // A-Koeffizient des Referenzfühlers
#define B_1 2.338982432e-04   // B-Koeffizient des Referenzfühlers
#define C_1 0.8863706422e-07  // C-Koeffizient des Referenzfühlers


Berechnung der Temp:
(in der Berechnung verwende ich einen Durchschnittswert der Messwerte an Pin A0. D.h. ich messe 25 Einzelmessungen und berechne daraus den Durchschnittswert und rechne dann damit in der Gleichung weiter. Erhöht etwas die Genauigkeit.)

Code: [Select]
// Berechnung der Temperatur des Referenzfühlers mittels der Steinhart-Hart Gleichung.
// https://de.wikipedia.org/wiki/Steinhart-Hart-Gleichung
 
  R2_1 = FESTWIDERSTAND_1* (1023.0 / (float)DURCHSCHNITT_1 - 1.0);
  lnR2_1 = log(R2_1);
  TEMP_1 = (1.0 / (A_1 + B_1*lnR2_1 + C_1*lnR2_1*lnR2_1*lnR2_1));  // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_1 =  TEMP_1 - 273.15;


Der Festwiderstand in der Schaltung muss so gewählt werden das er dem R25 des NTC'S entspricht. Ich verwende eine 10k NTC, d.h. er hat bei einer Temp von 25 °C 10 kOhm Widerstand. Somit habe ich den Festwiderstand auch mit 10 kOhm gewählt.

Ist vielleicht einmal ein Ansatz der dir helfen könnte.

Wie sich das mit PT-Sensoren verhält kann ich leider nicht sagen, da ich damit noch nie gearbeitet habe.

Vielleicht hat jemand anderes einen Vorschlag.

Schönen Grüße
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 05, 2018, 02:37 pm
Hi

Vll. hilfts:
NTC Negativer Temperatur Coeffizient (im Deutschen mit K geschrieben)
PTC Positiver Temperatur Coeffizient

Bei Positiver Temperatur-Änderung hat ein PTC eine Positive Widerstands-Änderung (Temp und R 'gehen in die gleiche Richtung')
Bei Positiver Temperatur-Änderung hat ein NTC eine Negative Widerstands-Änderung (die 'Richtungen' sind vertauscht)

Metalle sind PTCs

MfG
Title: Re: FIS für Motorrad
Post by: HotSystems on Aug 05, 2018, 02:43 pm
@Nowe101
Du hast in deinem Fritzing-Bild einen dicken Fehler.
Da wird +3,3 V und +5 V zusammengeschlossen.
Kurzschluss.

Deswegen sind diese Fritzing-Bilder nicht gern gesehen.
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 02:53 pm
@HotSystems

 :o Danke für den Hinweis! Schon ausgebessert.

Title: Re: FIS für Motorrad
Post by: HotSystems on Aug 05, 2018, 02:55 pm
@HotSystems

 :o Danke für den Hinweis! Schon ausgebessert.


Prima...gerne.
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 04:58 pm
okay, besten dank.

habe den sensor nun so einmal verkabelt..
muss ich nur mal nach einem sketc suchen um die werte zuerhalten
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 05:14 pm
Hallo Aceli,


Wenn es sich tätsächlich um einen NTC-Sensor handelt könntest du folgenden Sketch versuchen.
 Du müsstest nur die Koeffizienten A_2, B_2, C_2 und den FESTWIDERSTAND_2 auf deine Werte ausbessern.

Dieser Sketch ist auf einen einzelnen 10 kOhm NTC-Sensor ausgelegt und einen 10 kOhm Festwiderstand ausgelegt!

Die Ausgabe der Messwerte erfolgt über die Serielle Schnittstell. Zu sehen im Serial Monitor
Es wird alle 5 Sekunden ein Messwert ausgegeben.

Code: [Select]
#define MESSFUEHLER A0  // Messfühler

#define EINZELMESSUNGEN 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.

#define A_2 1.130480394e-03   // A-Koeffizient des Messfühlers
#define B_2 2.338982432e-04   // B-Koeffizient des Messfühlers
#define C_2 0.8863706422e-07  // C-Koeffizient des Messfühlers

#define FESTWIDERSTAND_2 10000  // Widerstandswert des Serienfestwiderstandes des Messfühlers

uint16_t SUM_EM_2[EINZELMESSUNGEN];

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  uint8_t i;
  float DURCHSCHNITT_2;
  float R2_2, lnR2_2;
  float TEMP_2;

// Hier werden die Einzelmessungen des Messfühlers vorgenommen.
// Zwischen den Messungen gibt es eine Wartezeit von 10 Millisekunden.
   
  for (i=0; i< EINZELMESSUNGEN; i++) {
   SUM_EM_2[i] = analogRead(MESSFUEHLER);
   delay(10);
  }

// Berechnung des Durchschnittswertes aller Einzelmessungen des Messfühlers.
   
  DURCHSCHNITT_2 = 0;
  for (i=0; i< EINZELMESSUNGEN; i++) {
     DURCHSCHNITT_2 += SUM_EM_2[i];
  }
  DURCHSCHNITT_2 /= EINZELMESSUNGEN;

// Berechnung der Temperatur mit Steinhart-Hart Gleichung

  R2_2 = FESTWIDERSTAND_2* (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
  lnR2_2 = log(R2_2);
  TEMP_2 = (1.0 / (A_2 + B_2*lnR2_2 + C_2*lnR2_2*lnR2_2*lnR2_2));  // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_2 =  TEMP_2 - 273.15;

// Der nachfolgende Teil sendet die Daten zusätzlich über den seriellen Port.

  Serial.print("Temperatur:     ");
  Serial.print(TEMP_2);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
  Serial.println(" °C");
  Serial.println();
 

// Nach 5 Sekunden Wartezeit wird eine neue Messung der Temperaturen vorgenommen.

  delay(5000);
}


Schöne Grüße
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 05:45 pm
so werte werden angezeigt.... 218/219
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 05:49 pm
Wenn es sich um einen NTC-Fühler handelt könntest du einmal versuchen mit den Werten von dem Bild im Anhang zu arbeiten. Dort sind die Messwerte von verschiedene NTC-Sensoren enthalten.

Der Wert bei 25°C ist der Nominalwert des NTC-Sensors. (soll Heißen ein 1 kOhm NTC hat bei 25°C 1000 Ohm.)

Mit diesen Werten zu verschiedene Temperaturen kannst du dir mit hilfe des Online-Kalkulators (https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html) die Koeffiziente A, B, C ausrechnen lassen und sie im Sketch verwenden.

Bitte beachten das diese Werte Standartwerte sind. Jeder Sensor hat eine Toleranz. Die Werte können also von den Standartwerten geringfügig abweichen. was bei der Messung bzw. bei der Anzeige der Temperatur schon etwas ausmachen kann.
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 06:01 pm
Quote
so werte werden angezeigt.... 218/219
Hmmm... Scheinen etwas hoch zu sein die Temperaturwerte.

Hast du den Sketch von mir verwendet oder selbst einen gefunden?

Scheint so das es kein 10 kOhm NTC ist oder ein ganz anderer Sensortyp.

Du könntest mal versuchen mit den Werten von einem anderen NTC's zu arbeiten bzw. auch den Festwiederstand dann in der Schaltung und im Sketch anzupassen.

Ist halt alles eher ein Schätzspiel...
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 06:17 pm
Was müsste den für ein Wert kommen ?!
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 06:28 pm
Quote
Was müsste den für ein Wert kommen ?!
Wenn du meine Sketch verwendest und den Schaltaufbau dazu sollt diese Ausgabe am Serial Monitor herauskommen:

Temperatur:     26.48 °C

Die Temperatur ist natürlich abhängig davon von dein Sensor gerade liegt. Aber ich nehme mal an. dass er gerade irgendwo in deiner Nähe liegt. Also sollte er ungefähr die Umgebungstemperatur ausgeben.
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 07:58 pm
Eigenartig .... teste es gleich nochmal
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 08:37 pm
Also in dem Nachbar Thread hat jemand eine Liste gefunden mit den zwei Sensoren die ich habe

Allerdings widerstandswerte und die Temperaturen .

Kann man da anknüpfen ?
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 05, 2018, 08:39 pm
Hi

Da wir ja 'nahezu 25°C haben' - sollte der so zu messende Widerstand des NTC den benutzten Typ ergeben.
Messwert ca. 1kΩ -> NTC 1K
Messwert ca. 25kΩ -> NTC 25kΩ

MfG

PS: Die müsstest Du in dem Online-Rechner eintragen können - und damit testen, ob Dein Sensor 'so tut'.
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 08:45 pm
Poste mal einen Link zu dem Thread.

Mit den Widerstandswerten und den zugehörigen Temperaturen kann man sehr gut arbeiten. Die bräuchte man nur in den Onlinerechner eintragen und man hat seine Koeffizienten die man braucht. Viel mehr benötigt man eigentlich auch gar nicht.

Edit: Da war ich mal zu langsam beim tippen :D
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 08:55 pm
datei ist eingefügt!

also sensor 5-5a und 6 wie es aussieht...

ach hatte eben nochmal geschaut.... wegen dem temperatur : XXX. Grad.... da steht nur 1023 oder halt dann halt ca 210
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 09:08 pm
Versuch es mal mit diesem Sketch.

Beim Schaltungsaufbau musst du noch den 10 kOhm Serienfestwiderstand gegen einen 2,2 kOhm Widerstand tauschen.

Code: [Select]
#define MESSFUEHLER A0  // Messfühler

#define EINZELMESSUNGEN 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.

#define A_2 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_2 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_2 0.9880580930e-07  // C-Koeffizient des Messfühlers

#define FESTWIDERSTAND_2 2200  // Widerstandswert des Serienfestwiderstandes des Messfühlers

uint16_t SUM_EM_2[EINZELMESSUNGEN];

void setup(void) {
  Serial.begin(9600);
}

void loop(void) {
  uint8_t i;
  float DURCHSCHNITT_2;
  float R2_2, lnR2_2;
  float TEMP_2;

// Hier werden die Einzelmessungen des Messfühlers vorgenommen.
// Zwischen den Messungen gibt es eine Wartezeit von 10 Millisekunden.
   
  for (i=0; i< EINZELMESSUNGEN; i++) {
   SUM_EM_2[i] = analogRead(MESSFUEHLER);
   delay(10);
  }

// Berechnung des Durchschnittswertes aller Einzelmessungen des Messfühlers.
   
  DURCHSCHNITT_2 = 0;
  for (i=0; i< EINZELMESSUNGEN; i++) {
     DURCHSCHNITT_2 += SUM_EM_2[i];
  }
  DURCHSCHNITT_2 /= EINZELMESSUNGEN;

// Berechnung der Temperatur mit Steinhart-Hart Gleichung

  R2_2 = FESTWIDERSTAND_2* (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
  lnR2_2 = log(R2_2);
  TEMP_2 = (1.0 / (A_2 + B_2*lnR2_2 + C_2*lnR2_2*lnR2_2*lnR2_2));  // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_2 =  TEMP_2 - 273.15;

// Der nachfolgende Teil sendet die Daten zusätzlich über den seriellen Port.

  Serial.print("Temperatur:     ");
  Serial.print(TEMP_2);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
  Serial.println(" °C");
  Serial.println();
 

// Nach 5 Sekunden Wartezeit wird eine neue Messung der Temperaturen vorgenommen.

  delay(5000);
}
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 09:14 pm
Könntest du das etwas genauer erklären ? Für jemanden der totaler Anfänger is ?
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 09:14 pm
Hab den Vorpost und den Sketch gerade noch mal editiert. Zum Testen und damit rechnen sollte ein 2,2 kOhm Serienfestwiderstand ausreichen.
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 09:20 pm
Okay und als serienfestwiderstand ist der Widerstand im Schaltplan gemeint .

Muss ich mal schauen ob ich einen 2,2 habe
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 09:34 pm
Quote
Könntest du das etwas genauer erklären ? Für jemanden der totaler Anfänger is ?
Hmm... Wenn du mir sagst was genau ich dir erklären soll sehr gerne.  :)

Im Anhang ist noch mal ein Schaltungsaufbau wie er jetzt aussehen sollte.

An dem Datenblatt was du gefunden hast kann man daraus schliesen das es ein 3k NTC-Sensor ist. da er bei 25 °C 3000 Ohm hat. Mit diesem Datenblatt kannst du mit Hilfe des Online-Rechners (https://www.thinksrs.com/downloads/programs/therm%20calc/ntccalibrator/ntccalculator.html) die Koeffizienten berechnen. Einfach im oberen Teil des Rechners die Widerstandswerte aus dem Datenblatt und die dazugehörigen Temperaturen aus dem Datenblatt eintragen. Du brauchst zum Berechnen der Koeffizienten drei Widerstands/Temperatur-Paare. Welche du nimmst ist egal. Ich habe die bei 10°C, 25°C und 40°C zum rechnen verwendet.

Direkt darunter bekommst du die Koeffizienten angezeigt (A, B und C).

Diese habe ich dann in meinen Sketch hinter A_2, B_2 und C_2 eingetragen.

Code: [Select]
#define A_2 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_2 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_2 0.9880580930e-07  // C-Koeffizient des Messfühlers


Ein Stück darunter habe ich den Serienfestwiderstandswert definiert.

Code: [Select]
#define FESTWIDERSTAND_2 2200  // Widerstandswert des Serienfestwiderstandes des Messfühlers

Mit diesen Werten und mit dem Wert der an Pin A0 gemessen wird dann die weitere Berechnung der Temperatur durchgeführt.

Was würdest du noch gerne wissen?  :)
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 09:39 pm
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 09:40 pm
Quote
Okay und als serienfestwiderstand ist der Widerstand im Schaltplan gemeint .
Ja genau der Widerstand ist damit gemeint. :)
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 09:50 pm
Besten dank.

so dann werd ich wohl erstmal 2,2kOhm bestellen müssen

habe nur 2KOhma daheim und noch andere ......
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 05, 2018, 09:53 pm
Widerstand - nur hinten ein E, kommt von wider=gegen.
Widerwillen
Widerstand

Dagegen ist das
Wiedersehen ein ERNEUTES Sehen, da gehört auch vorne ein E hin.

MfG

PS: ob 2K0 oder 2K2 spielt hier eine eher untergeordnete Rolle - Du kannst die 2K0 ja ebenfalls im Sketch eintragen.
Auch sind die 2K2 Widerstände nicht auf's µ genau 2200Ω, etwas Plus/Minus ist Da immer dabei.
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 09:56 pm
Wie postmaster-ino schon gesagt hast du kannst auch den 2 kOhm Widerstand nehmen. zum Testen sollte das reichen.

Im Sketch dann einfach diese Zeile

Code: [Select]
#define FESTWIDERSTAND_2 2200  // Widerstandswert des Serienfestwiderstandes des Messfühlers

so anpassen

Code: [Select]
#define FESTWIDERSTAND_2 2000  // Widerstandswert des Serienfestwiderstandes des Messfühlers

Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 09:56 pm
Schon wieder verschrieben ? Oh man . Sorry


Okay also 2 kohm eintragen und einbauen und gut ist
.

Danke
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 10:05 pm
Möcht schonmal n dickes Danke hier lassen an euch .
Cool wie ihr einem helft .  Danke
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 05, 2018, 10:10 pm
Quote
Okay also 2 kohm eintragen und einbauen und gut ist
Ja genau.

Mal eine ganz andere Frage. Welches Board verwendest du eingentlich?

Quote
Möcht schonmal n dickes Danke hier lassen an euch .
Cool wie ihr einem helft .  Danke
Bitte gerne.  :D
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 05, 2018, 10:41 pm
Ein Nano verwende ich
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 06, 2018, 01:15 am
habe den Sketch aus #65 geommen mit 2kOhm
Wert ist 586... aber leider keine temp oder Grad anzeige.. im Seriellen Monitor
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 06, 2018, 09:37 am
Ist doch aber sehr komisch oder , wird doch umgerechnet eigentlich .....
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 06, 2018, 05:16 pm
Hi

Was für Werte erfasst Du denn mit dem analogRead?
Sind diese Werte überhaupt ungefähr in der Region, Die Du erwartest?
Nein -> tu was dagegen
Ja -> Fehler im Programm, Fehler einkreisen und 'siehe Nein'

Mit 'Mimmimmi Anzeige passt nicht' zeigst Du nicht gerade Interesse daran, den Fehler selber zu beheben oder auch nur ansatzweise irgend etwas dagegen zu tun.

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 06, 2018, 06:04 pm
Tut mir leid ,
Sollte nicht so rüber kommen .

hatte ja schon gesagt ich bin totaler Anfänger .
Versuche den Sketch nachzuvollziehen .....

Bleibe am Ball und schaue .

Wollte euch nur damit auf dem laufenden halten ...
sorry
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 06, 2018, 06:58 pm
Hi

Dann zeige, daß Du 'am Ball bleibst'!

Was ist mit meiner Frage? --> Was für Werte erfasst Du denn mit dem analogRead?

MfG
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 06, 2018, 08:40 pm
Sorry,

Hatte Tagsüber leider keine Zeit zum schreiben.

Hmm... Ich muss aber sagen das ich es nicht wirklich verstehe warum es bei dir nicht funktioniert. Aus dem Datenblatt was du gepostet hast schließe ich das es ein NTC ist. Wenn jemand anderer Meinung ist oder eine Idee dazu hat, bitte posten.

Ich hab die Schaltung 1:1 hier vor mir so liegen nur das ich einen 10k NTC und einen 10k Widerstand verwende. Funktioniert einwandfrei.

Der Unterschied is noch das verwendete Board. Ich verwende den Uno, du einen Nano. Weiß jemand ob es da irgendwo Einschränkungen gibt oder etwas das man beachten müsste?

Ist an deinem Sensor irgendwo eine vorgeschaltene Elektronik angebaut?

Versuch mal statt dem Sensor einen zweiten 2 kOhm Wiederstand einzubauen aber ändere nichts am Sketch.

Sehen was dabei rauskommt?
Sollte ein wert um die 45 Grad C rauskommen.

Im Anhang noch ein Bild was da am Serial Monitor rauskommen sollte.
So sollte es mit genau dem Sketch den ich oben gepostet habe aussehen.
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 06, 2018, 09:18 pm
Moin.

absolut kein problem.


also nachdem mir das keine ruhe gelassen hat, habe ich alles nochmal von vorne gemacht, angeschlossen, sketch etc. siehe da.

Temperatur :     41°


Das doch schon mal etwas. Wobei, Zimmertemperatur von 41°?!

also mit dem Sensor. nicht dem zweiten 2k Ohm.

Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 06, 2018, 10:24 pm
Das freut mich jetzt aber zu hören!!

Das mit der Genauigkeit lässt sich sicher noch ein wenig beheben. 100%tige Genauigkeit lässt sich natürlich nie erreichen, aber genauer geht es sicherlich noch.  :)

Aktuell versorgst du den Sensor über den 5 V Ausgang. Die Spannung am Ausgang kann je nach verwendeter Spannungsquelle am Arduino schwanken und zu Messfehlern führen.

Als erstes könntest du deinen Sensor über den 3,3 V Anschluss versorgen. Dafür ist eine kleine Änderung am Sketch notwendig.

Dafür müsstest du in diesem Teil des Sketches eine Zeile einfügen:

Code: [Select]
void setup(void) {
  Serial.begin(9600);
}


Er sollte danach so aussehen:

Code: [Select]
void setup(void) {
  Serial.begin(9600);
  analogReference(EXTERNAL);
}


Hier wird bewirkt das der Arduino als Vergleichsspannung (Referenzspannung) nicht mehr die internen 5V verwendet, sondern die am Pin REF anliegende Spannung.

Dazu musst du auch an der Schaltung selbst eine Kleinigkeit ändern (siehe Bild im Anhang).

Dazu wird, das an Pin 5V angeschlossene Kabel, einfach an den 3,3V Pin angeschlossen. Zusätzlich musst du dann noch die 3,3 V mit dem REF Pin verbinden.

Das wars dann auch schon mit der Spannungsumstellerei.

Das nächste was die Genauigkeit erhöht ist die Verwendung eines geeigneten Festwiderstandes. Ich verwende einen Widerstand der dem Widerstand des NTC's bei 25 grad entspricht. In deinem Fall wäre das 3 kOhm. Viel wichtiger als das, ist allerdings der genaue Widerstandswert, denn du zum rechnen verwendest. Diesen kannst du mit einem genauen Multimeter messen.

Der Wert der in dieser Sketchzeile definiert ist:

Code: [Select]
#define FESTWIDERSTAND_2 10000  // Widerstandswert des Serienfestwiderstandes des Messfühlers

Und noch viel wichtiger, ist der Temperaturkoeffizien des Wiederstandes. Diesen kannst du im Sketch nicht beeinflussen! Je kleiner dieser Wert ist desto weniger verändert sich der Widerstand bei Temperaturänderung des Widerstandes, was sich dann auch in genaueren Messungen auswirkt.

Ich habe einen verwendet der einen Wert von 5ppm/°C und eine Toleranz von 0,1 %. Ist aber auch etwas teuerer als weniger genaue Widerstande. Hat ca. 3,50 € gekostete.

Und zu guter Letzt ist natürlich auch der Sensor selbst für die Genauigkeit verantwortlich. Da liegt vor allem das Problem vor das du keine genaue Kennlinie hast, sondern nur eine allgemein gültige Standard-Tabelle aus dem Datenblatt. Wie bei allen Bauteilen haben natürlich auch diese Werte Toleranzen. Dafür wäre es wichtig diesen Sensor zu kalibrieren (Dreipunktkalibrierung vom Verhältniss Spannung-Widerstand. Dabei wird bei drei verschiedenen Temperaturen der Widerstand gemessen.). Diese Werte kann man dann natürlich wieder für die Berechnungen der Koeffizienten im Onlinerechner verwenden.
Und auch der Zustand des Sensors selbst ist ein Kriterium.

Wie gesagt ist das mit Abstand die schwierigste Sache, weil eigentlich so gut wie niemand privates Gerätschaften für so eine Kalibrierung zu Hause stehen hat. (Stichwort: Schweineteuer!).

Ich selbst arbeite in der Messtechnik (allerdings im Bereich Länge/Winkel/Drehmoment), habe dadurch aber auch Kontakte zu anderen Kalibrierstellen. darum habe ich heute Vormittag mal bei einem Labor für elektrische Messgrößen nachgefragt was so eine Kalibrierung kostet. Für die Dreipunktkalibrierung im Bereich 15 - 40 °C sind das um die 180€ pro Sensor.  :o

Ansonsten fällt mir leider keine Gute Idee ein, wie mann die Kennlinie selbst heraus bekommen kann. Vielleicht hat jemand anderes eine Idee??

Ich habe meinen Aufbau hier, heute mal in der Arbeit ein wenig getestet, kam dabei auf ca. 0,3 °C Abweichung bei 20°C zu unserem Referenzmessgerät in der Arbeit.
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 06, 2018, 11:11 pm
Das ja enorm was du machst .

Dank dir .

Werd die Tage das nochmal lesen und weiter studieren .

Muss leider für eine Woche beruflich weg , also wird erst nächste Woche wieder weiter gemacht .

Warte auch noch auf mein nextion .
Wo alles mal angezeigt werden soll.

Und 2-3 Sensoren sollen auch noch dazu kommen ....

aber eins nach dem anderen .

Gruß
Title: Re: FIS für Motorrad
Post by: Nowe101 on Aug 06, 2018, 11:21 pm
Na dann wünsch ich dir noch einen schöne Woche.  :)

Am Ende steht dann halt trotzdem immer die Frage im Raum, in wie weit sich das lohnt, finanziell.

Aber ein Spaß das ganze zu machen ist es allemal.  :D

Dann noch viel Spaß dabei. Wenn noch Fragen sind einfach fragen.

Nextion is ein supercooles Display. Und unglaublich umfangreich. Aber auch schon ein wenig komplizierter in der Programmierung. nutze es aber auch. Allerdings auf dem einfachsten Weg. Ich habe auf die Nextion Bibliothek verzichtet und spreche meine Displayelemente direk über die serielle Schnittstelle an. Da ich nur daten ans Display sende und dass sind nur ein paar Sachen, funktioniert das sehr gut so.

Schöne Woche noch!
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 06, 2018, 11:41 pm
Ja lohnen ist immer eine Sache.

Handelt sich ja um Luft Wasser Öl temp .

Und finde gerade bei Wasser und Öl reicht mir eine genauigkeit von +- 2 grad .
Luft naja +- 1 grad denk ich .


Ja bin mal gespannt . Auf das Display kommen nur die Werte und ggf noch eine Grafik . Das wars .

Vielen Dank .

Werde mich melden .

Bis dann
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 11, 2018, 01:20 pm
Hallo

ich muss für die Sensoren dann wohl noch ein 3 kOhm besorgen.
finde aber leider nirgends einen mit den werten die du meinst.
höchstens einen mit 25 ppm.
aber da es bei mir ja nicht soooo genau sein muss ( keine komma stellen) denke sollte einer mit den 25 ppm und 0,1% reichen? oder evtl dann doch mit 1 %!?


Habe dann heute mal geschaut ob ich das soweit verstanden habe , und mal einen zweiten sensor eingefügt in den Sketch.
würde das so passen!?
Quote
#define MESSFUEHLER1 A0  // Messfühler1
#define MESSFUEHLER2 A1  // Messfühler2
#define EINZELMESSUNGEN1 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.
#define EINZELMESSUNGEN2 25
#define A_2 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_2 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_2 0.9880580930e-07  // C-Koeffizient des Messfühlers
#define A_3 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_3 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_3 0.9880580930e-07  // C-Koeffizient des Messfühlers
#define FESTWIDERSTAND_2 3000  // Widerstandswert des Serienfestwiderstandes des Messfühlers
#define FESTWIDERSTAND_3 3000 // Widerstandswert des Serienfestwiderstandes des Messfühlers
uint16_t SUM_EM_2[EINZELMESSUNGEN1];
uint16_t SUM_EM_3[EINZELMESSUNGEN2];
void setup(void) {
  Serial.begin(9600);
}
void loop(void) {
  uint8_t i;
  float DURCHSCHNITT_2;
  float R2_2, lnR2_2;
  float TEMP_2;
  float DURCHSCHNITT_3;
  float R2_3, lnR2_3;
  float TEMP_3;
// Hier werden die Einzelmessungen des Messfühlers vorgenommen.
// Zwischen den Messungen gibt es eine Wartezeit von 10 Millisekunden.
   
  for (i=0; i< EINZELMESSUNGEN1; i++) {
   SUM_EM_2 = analogRead(MESSFUEHLER1);
   delay(10);
   for (i=0; i< EINZELMESSUNGEN2; i++) {
   SUM_EM_3 = analogRead(MESSFUEHLER2);
   delay(10);
  }
// Berechnung des Durchschnittswertes aller Einzelmessungen des Messfühlers.
   
  DURCHSCHNITT_2 = 0;
  for (i=0; i< EINZELMESSUNGEN1; i++) {
     DURCHSCHNITT_2 += SUM_EM_2;
  DURCHSCHNITT_3 = 0;
  for (i=0; i< EINZELMESSUNGEN2; i++) {
     DURCHSCHNITT_3 += SUM_EM_3;
  }
  DURCHSCHNITT_2 /= EINZELMESSUNGEN1;
  DURCHSCHNITT_3 /= EINZELMESSUNGEN2;
// Berechnung der Temperatur mit Steinhart-Hart Gleichung
  R2_2 = FESTWIDERSTAND_2* (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
  lnR2_2 = log(R2_2);
  TEMP_2 = (1.0 / (A_2 + B_2*lnR2_2 + C_2*lnR2_2*lnR2_2*lnR2_2));  // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_2 =  TEMP_2 - 273.15;
  R2_3 = FESTWIDERSTAND_3* (1023.0 / (float)DURCHSCHNITT_3 - 1.0);
  lnR2_3 = log(R2_3);
  TEMP_3 = (1.0 / (A_3 + B_3*lnR2_3 + C_3*lnR2_3*lnR2_3*lnR2_3));  // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_3 =  TEMP_3 - 273.15;
// Der nachfolgende Teil sendet die Daten zusätzlich über den seriellen Port.
  Serial.print("Temperatur:     ");
  Serial.print(TEMP_2);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
  Serial.println(" °C");
  Serial.println();
  Serial.print("Temperatur2:     ");
  Serial.print(TEMP_3);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
  Serial.println(" °C");
  Serial.println();
// Nach 5 Sekunden Wartezeit wird eine neue Messung der Temperaturen vorgenommen.
  delay(5000);
}

[/td][/tr][/table]
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 14, 2018, 01:58 pm
Moin

so bin gerade zuhause angekommen, wollte gleich mal das testen.
leider kommt dieses


Quote
sketch_aug06a:30: error: incompatible types in assignment of 'int' to 'uint16_t [25] {aka unsigned int [25]}'

   SUM_EM_2 = analogRead(MESSFUEHLER1);

            ^

sketch_aug06a:33: error: incompatible types in assignment of 'int' to 'uint16_t [25] {aka unsigned int [25]}'

   SUM_EM_3 = analogRead(MESSFUEHLER2);

            ^

sketch_aug06a:40: error: invalid use of non-lvalue array

     DURCHSCHNITT_2 += SUM_EM_2;

                    ^

sketch_aug06a:40: error: in evaluation of 'operator+=(float, uint16_t [25] {aka unsigned int [25]})'

sketch_aug06a:43: error: invalid use of non-lvalue array

     DURCHSCHNITT_3 += SUM_EM_3;

                    ^

sketch_aug06a:43: error: in evaluation of 'operator+=(float, uint16_t [25] {aka unsigned int [25]})'

sketch_aug06a:67: error: expected '}' at end of input

}

^

sketch_aug06a:67: error: expected '}' at end of input

exit status 1
incompatible types in assignment of 'int' to 'uint16_t [25] {aka unsigned int [25]}'
habt ihr evtl eine idee? probiere weiter

Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 14, 2018, 05:48 pm
Hi

Du versuchst einen Messwert auf einen Zeiger zu packen.
Du möchtest SUM_EM_2[ i ] an dieser Stelle benutzen (SUM_EM_2 ist 'nur' der Zeiger auf den Anfang des Array SUM_EM_2[0...24])

Gleiches probierst Du mit den Durchschnitts-Variablen - Du versuchst, die Zeiger auf Deine Durchschnittswerte aufzuaddieren.
Denke, Du möchtest auch hier alle Einzelwerte zusammen rechnen und dann durch die Anzahl der Einzelwerte zu teilen.

Wenn Du [ i ] auch bei den Durchschnittswerten benutzt, bist Du schon auf dem richtigen Weg - hatte Da wohl einen Knoten im Hirn.

Und Dir fehlt wohl eine Klammer irgendwo.

Drück Mal STRG+T in der IDE und schaue, welche Klammern akut wie zusammen gehören - irgendwo fehlt Eine!
Am Ehesten dort, wo Du zuletzt was geändert hast.

Der Kompiler rechnet sich aus, welche Klammer zu Welcher gehört - Das muß nicht mit Deinen Gedanken überein stimmen ;)

Wenn Du mit dem Cursor auf eine Klammer gehst, wird Dir in der IDE die erkannte Gegen-Klammer gezeigt.

MfG

*edit*
[ i ] macht ohne Leerzeichen was gaaanz Anderes hier im Forum, als im Arduino ;)
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 14, 2018, 06:11 pm
okay besten dank.

klammer problem behoben... aber das andere verstehe ich noch nicht ganz....

wie kann ich das ändern?

und was genau meinst du mit, "Denke, Du möchtest auch hier alle Einzelwerte zusammen rechnen und dann durch die Anzahl der Einzelwerte zu teilen."

sind ja zwei eigenständige sensoren die unterschiedliche Werte anzeigen.
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 14, 2018, 09:13 pm
Dein edit muss ich mir dann nochmal genauer anschauen ..... glaub so ganz hab ich das noch nicht durch .

Weil der Sketch mit einem Messfühler doch normal funktioniert .... dachte ich hätte da nicht viel verändert

Quote
#define MESSFUEHLER1 A0  // Messfühler1
#define MESSFUEHLER2 A1  // Messfühler2
#define EINZELMESSUNGEN1 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.
#define EINZELMESSUNGEN2 25
#define A_2 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_2 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_2 0.9880580930e-07  // C-Koeffizient des Messfühlers
#define A_3 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_3 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_3 0.9880580930e-07  // C-Koeffizient des Messfühlers
#define FESTWIDERSTAND_2 3000  // Widerstandswert des Serienfestwiderstandes des Messfühlers
#define FESTWIDERSTAND_3 3000 // Widerstandswert des Serienfestwiderstandes des Messfühlers
uint16_t SUM_EM_2[EINZELMESSUNGEN1];
uint16_t SUM_EM_3[EINZELMESSUNGEN2];
void setup(void) {
  Serial.begin(9600);
}
void loop(void) {
  uint8_t i;
  float DURCHSCHNITT_2;
  float R2_2, lnR2_2;
  float TEMP_2;
  float DURCHSCHNITT_3;
  float R2_3, lnR2_3;
  float TEMP_3;
  // Hier werden die Einzelmessungen des Messfühlers vorgenommen.
  // Zwischen den Messungen gibt es eine Wartezeit von 10 Millisekunden.

  for (i = 0; i < EINZELMESSUNGEN1; i++) {
    SUM_EM_2 = analogRead(MESSFUEHLER1);
    delay(10);
    for (i = 0; i < EINZELMESSUNGEN2; i++)
      SUM_EM_3 = analogRead(MESSFUEHLER2);
      delay(10);
    }
    // Berechnung des Durchschnittswertes aller Einzelmessungen des Messfühlers.

    DURCHSCHNITT_2 = 0;
    for (i = 0; i < EINZELMESSUNGEN1; i++) {
      DURCHSCHNITT_2 += SUM_EM_2;
    }
      DURCHSCHNITT_3 = 0;
    for (i = 0; i < EINZELMESSUNGEN2; i++) {
      DURCHSCHNITT_3 += SUM_EM_3;
      }
      DURCHSCHNITT_2 /= EINZELMESSUNGEN1;
      DURCHSCHNITT_3 /= EINZELMESSUNGEN2;
      // Berechnung der Temperatur mit Steinhart-Hart Gleichung
      R2_2 = FESTWIDERSTAND_2 * (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
      lnR2_2 = log(R2_2);
      TEMP_2 = (1.0 / (A_2 + B_2 * lnR2_2 + C_2 * lnR2_2 * lnR2_2 * lnR2_2)); // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
      TEMP_2 =  TEMP_2 - 273.15;
      R2_3 = FESTWIDERSTAND_3 * (1023.0 / (float)DURCHSCHNITT_3 - 1.0);
      lnR2_3 = log(R2_3);
      TEMP_3 = (1.0 / (A_3 + B_3 * lnR2_3 + C_3 * lnR2_3 * lnR2_3 * lnR2_3)); // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
      TEMP_3 =  TEMP_3 - 273.15;
      // Der nachfolgende Teil sendet die Daten zusätzlich über den seriellen Port.
      Serial.print("Temperatur:     ");
      Serial.print(TEMP_2);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
      Serial.println(" °C");
      Serial.println();
      Serial.print("Temperatur2:     ");
      Serial.print(TEMP_3);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
      Serial.println(" °C");
      Serial.println();
      // Nach 5 Sekunden Wartezeit wird eine neue Messung der Temperaturen vorgenommen.
      delay(5000);
    }
edit:
habs mir angeschaut und den fehler wohl gefunden.
nur leider wird aktuell doch nur ein Wert ausgespuckt.
Temperatur : 41,02 C
(dann leer Zeile)
Temperatur : 41,02 C

werde mich dann morgen wohl nochmal ransetzen
Title: Re: FIS für Motorrad
Post by: noiasca on Aug 14, 2018, 10:26 pm
a) verwende für Code code tags nicht quote tags

b)
bei
Code: [Select]

for (i = 0; i < EINZELMESSUNGEN1; i++) {
    SUM_EM_2 = analogRead(MESSFUEHLER1);
    delay(10);
    for (i = 0; i < EINZELMESSUNGEN2; i++)
      SUM_EM_3 = analogRead(MESSFUEHLER2);
      delay(10);
    }


ist die SUM_EM_3 Berechnung innerhalb der SUM_EM_2 Berechnung und wird daher 25 x 25 mal durchgeführt. Willst du das wirklich?
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 14, 2018, 10:50 pm
Okay also ausklammern und extra machen ?!!

Sehe gerade das es wohl mit Copy Paste da irgendwas nicht richtig will ....
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 15, 2018, 05:57 pm
Hi

Du musst Das so hinschreiben, wie Du Das machen willst.
Ich kann mir nur halbwegs zusammen reimen, was Dein Sketch machen soll, eben durch die Anweisungen, Die Du darin verteilt hast.

C&P hat jeder hier zu Anfang wohl 'programmiert' - aber man sollte sehen, daß man da recht schnell von weg kommt - also verstehen lernen, was Du Da 'programmiert hast'.
Dann kannst Du Dir auch selber helfen, da Du im Kopf 'durchgehen kannst', was in dem Sketch passiert.

Wird aber wohl werden.

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 15, 2018, 06:24 pm
Da hast du vollkommen recht .....

Meinte c&p von dem Sketch bei mir ( der lief ) zu dem im Forum ( den ich gepostet hatte )

Aber verstehen Versuch ich das schon .....

Habe es mittlerweile soweit , das zwei verschiedene Temperaturen angezeigt werden . Nur leider , wenn ich einen erwärme , geht die Temperatur runter :/ da muss ich noch mal schauen wo der Hund begraben ist
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 16, 2018, 01:17 pm
Werte ändern sich nun in die richtige Richtung . Soweit so gut .

RTC ist angekommen . Das wird das nächste :)

Mein nextion Display lässt leider auf sich warten .
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 16, 2018, 09:42 pm
RTC läuft und hat aktuelles Datum und Uhrzeit und hällt diese.

Hatte schon etwas getestet mit der Einbindung in den anderen Sketch . Leider erfolglos .

Hat jemand einen Ansatz ?! Oder Idee ?


Gruß
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 17, 2018, 06:35 pm
Die zwei Sensoren inkl DS18B20 laufen :)

Bisschen an den Einstellungen noch Pfeilen . Werte Stimmen noch nicht überein .

Kur den RTC einzubinden is schwieriger als ich dachte :/
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 17, 2018, 07:09 pm
Hi

Was für eine RTC?
Bei einer DS3231 sind's nur ein paar I2C-ABfragen und Du hast die Uhrzeit ausgelesen (also auch ohne Library)

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 17, 2018, 07:49 pm
Ja genau .
Ds3231.
Ah ja....
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 17, 2018, 09:01 pm
Hi

Schau Dir an, wie die Zusatz-Infos bei der RTC ausgelesen werden.
Dieser I2C-Scanner wurde hier im Forum (http://forum.arduino.cc/index.php?topic=560572.msg3822995#msg3822995) vorgestellt.
Der dortige Quell-Link ist aber down.

Ich habe Den als 'I2C_dump_scanner' auf Platte.(mit eingefügtem Code >9000 Zeichen - also bitte dem Link folgen und dort die Abfragen zur Uhr abkupfern)

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 17, 2018, 10:51 pm
Vielen Dank .

Werde ich mal durchstöbern ..
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 18, 2018, 08:59 am
Moin,

@postmaster-ino ,
Wenn ich das richtig verstanden habe , so verkabeln und in dem Link von dir den Scanner draufspielen und über den seriellen Monitor kann ich dann was erkennen ?!
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 18, 2018, 10:22 am
Einfach getestet und hier die ergebnisse

Code: [Select]

I2C Scanner

Scanning...

I2C device found at address 0x57 (87) it could be a EEPROM AT24Cxxxx
I2C device found at address 0x68 (104) it could be a Real Time Clock DS3231/DS1337/DS1307/...

Done!

Dump of memory content (111 bytes) from I2C device at address 0x57 (87)
⸮(0xFF)
.....
⸮(0xFF)

End of Dump

Dump of NVRAM content (19 bytes) from I2C device at address 0x68 (104)
The information is apply only for chip DS3231, partially for chips DS1337 and DS1307 (and maybe for another similar chips)
0x00 Seconds             = 39
0x01 Minutes             = 18
0x02 Hours               = 10
0x03 Weekday             = 7
0x04 Day                 = 18
0x05 Month/Century       = 8
0x06 Year                = 2018
0x07 Alarm 1 Seconds     = 0
0x08 Alarm 1 Minutes     = 8
0x09 Alarm 1 Hours       = 0
0x0A Alarm 1 Day&Date    = 8
0x0B Alarm 2 Minutes     = 0
0x0C Alarm 2 Hours       = 0
0x0D Alarm 2 Day&Date    = 0
0x0E Control             = 11100
0x0F Control/Status      = 10001000
0x10 Aging Offset        = 0
0x11 Temperature MSB+LSB = 28.50⸮C
End of Dump

Send any key to repeat...


und mit den 0x?? kann ich dann später das, was ich brauche auslesen richtig

Dann schaue ich mal wie ich die einbinden kann...
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 18, 2018, 03:38 pm
Hi

Die vielen 0xFF sind das EEprom, Das auf der RTC mit drauf sitzt.
Dieses ist momentan komplett leer - beim EEprom kann man einzeln nur Bits löschen (also beim 'was drauf schreiben').
Wenn man was Anderes drauf schreiben möchte, muß man das EEprom erst wieder löschen - macht die Lib aber dann wohl für Dich.
Darin besteht auch die Gefahr: Das EEprom hat nur eine begrenzte Anzahl an Schreibzugriffen (10000 oder 100000 - zur Not auf der Platine die Bezeichnung des 8-Beiner in Google eintragen und das DaBla kontaktieren).
Es gab hier aber einen Post, wo Einer das EEprom gegen einen FRam ausgetauscht hat - beliebig oft und beliebig schnell beschreibbar, keine Wartezeiten - habe hier ein FRam, daß bereits 191261000 Schreibzugriffe auf die ersten 4 Speicherzellen erleben durfte - darin lasse ich gerade eine 32bit Zahl in jedem loop()-Durchlauf +1 zählen und speichern ... Spielerei :).

Um irgend welche User-Eingaben zu speichern, kannst Du das EEprom aber gut für hernehmen - bis Du 10000 Mal irgend etwas umgestellt hast, werden wohl auch 1...2 Jahre vergangen sein ;)

Zum Auslesen der RTC:
In dem I2C-Scanner findest Du den Abschnitt, wo die Daten aus der RTC ausgelesen werden.
Dort wird nur die RTC 'angesprochen', Ihr wird eine Register-Nummer übergeben und dann werden x Byte an Daten angefordert und ausgelesen.
Mehr als diese paar Befehle brauchst Du auch nicht, um an die Uhrzeit zu kommen.

Wie geschrieben: Wenn Du die Uhr nicht stellen können musst, war's Das schon!
Sonst verrät Dir das Datenblatt aber auch, welche Befehle zum Stellen nötig sind - da brauchst Du aber als User-Eingabe das einzustellende Datum und Uhrzeit!

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 18, 2018, 03:58 pm
Alles eingestellt am RTC ist ja bereits...
mir gehts nur noch darum, Datum und Uhrzeit angezeigt zu bekommen...

und da hapert es gerade bei mir :/

suche und versuche es schon ca 2std .....
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 18, 2018, 04:18 pm
Hi

Da, wo Du die Uhrzeit auslesen willst, kommt dieser Code hin (wobei NumberOfBytes hier 19 ist):
Code: [Select]
 Wire.beginTransmission(DS3231_ADDRESS);
  Wire.write(0);
  Wire.endTransmission();
  if ( Wire.requestFrom(DS3231_ADDRESS, NumberOfBytes) == NumberOfBytes ) {
    while (!Wire.available())
    {
      // waiting
    }
    byte addr = 0;
    Serial.println(F("The information is apply only for chip DS3231, partially for chips DS1337 and DS1307 (and maybe for another similar chips)"));
    PrintAddress(addr++, 4); Serial.print(F("Seconds             = ")); Serial.println(bcdToDec(Wire.read() & 0x7F));
    PrintAddress(addr++, 4); Serial.print(F("Minutes             = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Hours               = ")); Serial.println(bcdToDec(Wire.read() & 0x3F));
    PrintAddress(addr++, 4); Serial.print(F("Weekday             = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Day                 = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Month/Century       = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Year                = ")); Serial.println(bcdToDec(Wire.read()) + 2000);
    PrintAddress(addr++, 4); Serial.print(F("Alarm 1 Seconds     = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Alarm 1 Minutes     = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Alarm 1 Hours       = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Alarm 1 Day&Date    = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Alarm 2 Minutes     = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Alarm 2 Hours       = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Alarm 2 Day&Date    = ")); Serial.println(bcdToDec(Wire.read()));
    PrintAddress(addr++, 4); Serial.print(F("Control             = ")); Serial.println(Wire.read(), BIN);
    PrintAddress(addr++, 4); Serial.print(F("Control/Status      = ")); Serial.println(Wire.read(), BIN);
    PrintAddress(addr++, 4); Serial.print(F("Aging Offset        = ")); Serial.println(Wire.read());
    PrintAddress(addr++, 4); Serial.print(F("Temperature MSB+LSB = "));
    //MSB of Temp
    float ttc = (float)(int)Wire.read();
    //LSB of Temp
    addr++;
    byte portion = Wire.read();
    if (portion == 0b01000000) ttc += 0.25;
    if (portion == 0b10000000) ttc += 0.5;
    if (portion == 0b11000000) ttc += 0.75;
    char buffer[16];
    String TempStr = dtostrf(ttc, 5, 2, buffer);
    TempStr = TempStr + "\xB0\x43"; //oC for Western Character Set
    Serial.println(TempStr);

Klar: Die "Serial.println(bcdToDec(Wire.read() & 0x7F));" musst Du so anpassen, daß Deine Variable dabei gesetzt wird - bei der Sekunde also was in der Richtung
Code: [Select]
mySekunde=bcdToDec(Wire.read() & 0x7F);
if (mySekunde_alt!=mySekunde && mySekunde!=0) break; //Abbruch, wenn sich nur die Sekunde geändert hat, brauchen wir nicht weiter lesen
....

Verständlich, wie ich Das meine?

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 18, 2018, 04:26 pm
das schaue ich mir gleich mal an und teste....

hatte eben das ganze mit so etwas versucht.. natürlcih ohne LCD und eingebaut . aber er meckert bei
Code: [Select]

#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
DS3231  rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
 rtc.begin(); // Initialize the rtc object
 lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
 lcd.setCursor(0,0);
 lcd.print("Time:  ");
 lcd.print(rtc.getTimeStr());
 
 lcd.setCursor(0,1);
 lcd.print("Date: ");
 lcd.print(rtc.getDateStr());
 
 delay(1000);
}


DS3231  rtc(SDA, SCL);

no matching function for call to 'DS3231::DS3231(const uint8_t&, const uint8_t&)'

Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 18, 2018, 04:31 pm
Hi

Wie geschrieben, brauchst Du dafür die DS3231-Lib nicht - Du brauchst hierfür nur die wire.h, Die Du eh für I2C einbinden wirst.
(Und: Die wohl ebenfalls von der DS3231-Lib eingebunden würde, wenn Diese nicht bereits eingebunden ist)
Du kannst Dir also Speicherplatz sparen, wenn Du mit den Einzel-Zahlen als Rückgabewert leben kannst.

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 18, 2018, 04:38 pm
okay... ich steig nicht mehr ganz durch... das war etwas zu viel probieren und machen...

hier mein aktueller Code, vielleicht noch nicht ganz schön  , aber naja...
Code: [Select]


#include <OneWire.h>
#include <DallasTemperature.h>
#include <DS3231.h>
#include <Wire.h>


#define MESSFUEHLER1 A0  // Messfühler1
#define MESSFUEHLER2 A1  // Messfühler2
#define ONE_WIRE_BUS 2 //DS18b20
#define EINZELMESSUNGEN1 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.
#define EINZELMESSUNGEN2 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.
#define A_2 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_2 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_2 0.988058093e-07   // C-Koeffizient des Messfühlers

#define FESTWIDERSTAND_2 3000.0  // Widerstandswert des Serienfestwiderstandes des Messfühlers


OneWire oneWire(ONE_WIRE_BUS); //DS18b20
DallasTemperature sensors(&oneWire); //DS18b20


uint16_t SUM_EM_2[EINZELMESSUNGEN1];
uint16_t SUM_EM_3[EINZELMESSUNGEN2];


  uint8_t i=0;
  float DURCHSCHNITT_2 = 0.0;
  float DURCHSCHNITT_3 = 0.0;
  float TEMP_2 = 0.0;
  float TEMP_3 = 0.0;
  float R2_2 = 0.0, lnR2_2 = 0.0;
  float R2_3 = 0.0, lnR2_3 = 0.0;

void setup(void) {
   sensors.begin();  //DS18b20
   DS3231.begin(); // Initialize the rtc object
   Wire.begin(); // Initialize the rtc object
   rtc.begin();
   Serial.begin(9600);
}


void loop(void) {

  // Berechnung des Durchschnittswertes aller Einzelmessungen des Messfühlers.
  DURCHSCHNITT_2 = 0.0;
  DURCHSCHNITT_3 = 0.0;

  for (i=0; i< EINZELMESSUNGEN1; i++) {
   SUM_EM_2[i] = analogRead(MESSFUEHLER1);
   DURCHSCHNITT_2 += SUM_EM_2[i];

   // weiter optimiert
   DURCHSCHNITT_3 += analogRead(MESSFUEHLER2);

   delay(10);
  }
  DURCHSCHNITT_2 /= EINZELMESSUNGEN1;
  DURCHSCHNITT_3 /= EINZELMESSUNGEN1;

 
// Berechnung der Temperatur mit Steinhart-Hart Gleichung
  R2_2 = FESTWIDERSTAND_2* (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
  lnR2_2 = log(R2_2);
  TEMP_2 = (1.0 / (A_2 + B_2*lnR2_2 + C_2*lnR2_2*lnR2_2*lnR2_2)); // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_2 =  TEMP_2 - 273.15;
 
  R2_3 = FESTWIDERSTAND_2* (1023.0 / (float)DURCHSCHNITT_3 - 1.0);
  lnR2_3 = log(R2_3);
  TEMP_3 = (1.0 / (A_2 + B_2*lnR2_3 + C_2*lnR2_3*lnR2_3*lnR2_3)); // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_3 =  TEMP_3 - 273.15;

  // Der nachfolgende Teil sendet die Daten zusätzlich über den seriellen Port.
  Serial.print("WT:     ");
  Serial.print(TEMP_2);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
  Serial.println(" °C");
  Serial.print("LT:     ");
  Serial.print(TEMP_3);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
  Serial.println(" °C");
  sensors.requestTemperatures();
  Serial.println(sensors.getTempCByIndex(0));


    delay(5000);
}



würdest du mir verraten wo genau ich dein COde einfügen kann?!

das anpassen mit 0X00 werd ich hinbekommen ..

wäre n netter zug von dir .
Danke
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 18, 2018, 05:26 pm
Hi

Raus:
#include <DS3231.h>
DS3231.begin();
rtc.begin();

Das bindest Du gerade ein, um mit der RTC zu spielen, richtig?
Ja -> diese Libs brauchst Du NICHT, wenn Du nur die Uhrzeit auslesen willst, dafür reicht die wire.h

Wenn Du statt der jeweils festen 25 Messungen in jedem loop()-Durchlauf nur EINE machst, und diese neue Messung immer 'auf den nächsten Platz' schreibst, hast Du eine Art mitlaufenden Mittelwert.
Dafür müsste man sich nur merken, wo man zuletzt geschrieben hat und diesen Zeiger entsprechend wieder auf Null setzen.
Dann klappt natürlich Dein Durchschnitt_2 nicht mehr, da Dieser immer 'am Stück' gefüllt werden muß - oder man müsste VOR dem Eintragen des neuen Messwertes den Alten von dieser Zahl abziehen - auch ein Weg.

Statt Deinem delay(5000); mit millis(), Nachtwächter und Blink_without_delay diese Messwerterhebung verlangsamen.

Und dann, irgendwo in loop(), packst Du (am Besten auch mit einer millis()-Abfrage) folgenden Snipped rein:
(die DS3231_ADDRESS musst Du auf die I2C-Adresse (bei Dir 0x68) Deiner RTC setzen - denke, Das übernimmt derzeit die Lib mit viel Speicherplatz)
Code: [Select]

... global (also vor setup(); ) kommt
const byte DS3231_ADDRESS=0x68;         //I2C-Adresse der RTC


... irgendwo in loop() kommt:

Wire.beginTransmission(DS3231_ADDRESS);
  Wire.write(0);                    //Einstellen der Adresse 0
  Wire.endTransmission();
  byte NumberOfBytes=19;         //es sollen bis zu 19 Bytes ausgelesen werden (in der DS3231 sind maximal 19 Bytes auslesbar)
  if ( Wire.requestFrom(DS3231_ADDRESS, NumberOfBytes) == NumberOfBytes ) {
    while (!Wire.available())
    {
      // waiting
    }
byte mySekunde=bcdToDec(Wire.read() & 0x7F);
byte myMinute=bcdToDec(Wire.read());
byte myStunde=bcdToDec(Wire.read() & 0x3F);
byte myWeekDay=bcdToDec(Wire.read());                     //User-Eingabe, diese Zahl wird gegen Mitternacht +1 gezählt
byte myDay=bcdToDec(Wire.read());
byte myMonat=bcdToDec(Wire.read());
byte myJahr=bcdToDec(Wire.read()) + 2000);
byte myAlarm1Sekunde=bcdToDec(Wire.read());   //Alarmzeit 1
byte myAlarmMinute=bcdToDec(Wire.read());
byte myAlarmStunde=bcdToDec(Wire.read());
byte myAlarmTagDatum=bcdToDec(Wire.read());
byte myAlarm2Minute=bcdToDec(Wire.read());    //Alarmzeit 2, hat keine Sekunden
byte myAlarm2Stunde=bcdToDec(Wire.read());
byte myAlarm2TagDatum=bcdToDec(Wire.read());
byte myKontrolle=Wire.read();                           //siehe DaBla
byte myStatus=Wire.read();                              //Bit 7 zeigt, daß die RTC stehen geblieben ist, siehe DaBla
byte myAlterungsOffset=Wire.read();
byte myGradanzahl=Wire.read();
byte myKommaGrad=Wire.read();                     //Bit 7 = halbe Grad, Bit 6 Viertel Grad

Wenn Du die ganzen Werte nicht brauchst, kannst Du weniger anfordern (statt 19 Byte z.B. nur 3 für Sekunde, Minute, Stunde - dann aber den Rest auch nicht versuchen, auszulesen ;))

Was Du letztendlich damit anstellst, bleibt nur Deiner Phantasie überlassen.

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 18, 2018, 08:00 pm
Danke dir viel Mals .

Werde später oder morgen mal ran.

Bin gespannt .

Mich wundert es dennoch warum das andere nicht will :/

Aber besten Dank .

Das mit den millis() ist dann Feintuning!?
Das werd ich mir dann später mal anschauen .

Da ja alle werte eigentlich nur jede Minute angefordert werden müssten .....


Muss man eigentlich jetzt schon was beachten in Hinblick auf die Nutzung eines nextion Displays?
Gruß
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 18, 2018, 11:08 pm
Hi

Beim Nextion bin ich (ebenfalls noch) überfragt.
Habe zwar ebenfalls Eines, aber noch unbespielt :(
Da das Nextion aber seriell Befehle/Daten zugeschickt bekommt, wird's auf eine State-Maschine hinaus laufen - Gleiches kannst Du für Deine Messwerte benutzen.
Per millis() prüfst Du, ob 'die Zeit um ist' um irgend etwas zu machen - z.B. einen neuen Messwert aufzunehmen um den Mittelwert zum Display (Terminal) zu schicken.
Da das Nextion auch seriell abgefragt werden kann, ob irgendwo hinge'touch'ed wurde, kann man so auch die Anzeige manipulieren.

... also rein Theoretisch ...
Bei Dem, was man so liest, sollte Das aber praktisch auch passen.

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 18, 2018, 11:20 pm
Besten Dank ,

Ja touch Funktion werde ich erstmal nicht brauchen , aber fand es praktisch . Deswegen gekauft .

Dann freue ich mich mal auf die nächsten Tage .
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 19, 2018, 12:02 am
ich weiß die millis noch nicht berücksichtigt.

aber so schaut das gut aus? es kommt keine Fehlermeldung !

Code: [Select]


#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>


#define MESSFUEHLER1 A0  // Messfühler1
#define MESSFUEHLER2 A1  // Messfühler2
#define ONE_WIRE_BUS 2 //DS18b20
#define EINZELMESSUNGEN1 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.
#define EINZELMESSUNGEN2 25  // Das verändern der Zahl ändert auch die Anzahl der Einzelmessungen.
#define A_2 1.401592401e-03   // A-Koeffizient des Messfühlers
#define B_2 2.375252635e-04   // B-Koeffizient des Messfühlers
#define C_2 0.988058093e-07   // C-Koeffizient des Messfühlers

#define FESTWIDERSTAND_2 3000.0  // Widerstandswert des Serienfestwiderstandes des Messfühlers


OneWire oneWire(ONE_WIRE_BUS); //DS18b20
DallasTemperature sensors(&oneWire); //DS18b20

uint16_t SUM_EM_2[EINZELMESSUNGEN1];
uint16_t SUM_EM_3[EINZELMESSUNGEN2];


uint8_t i = 0;
float DURCHSCHNITT_2 = 0.0;
float DURCHSCHNITT_3 = 0.0;
float TEMP_2 = 0.0;
float TEMP_3 = 0.0;
float R2_2 = 0.0, lnR2_2 = 0.0;
float R2_3 = 0.0, lnR2_3 = 0.0;

const byte DS3231_ADDRESS = 0x68;       //I2C-Adresse der RTC
byte mySekunde, myMinute, myStunde, myDay, myMonat;
byte bcdToDec(byte val)
{
  return( (val/16*10) + (val%16) );
}

void setup(void) {
  sensors.begin();  //DS18b20
  Wire.begin(); // Initialize the rtc object
  Serial.begin(9600);
}


void loop(void) {

  // Berechnung des Durchschnittswertes aller Einzelmessungen des Messfühlers.
  DURCHSCHNITT_2 = 0.0;
  DURCHSCHNITT_3 = 0.0;

  for (i = 0; i < EINZELMESSUNGEN1; i++) {
    SUM_EM_2[i] = analogRead(MESSFUEHLER1);
    DURCHSCHNITT_2 += SUM_EM_2[i];

    // weiter optimiert
    DURCHSCHNITT_3 += analogRead(MESSFUEHLER2);

Wire.beginTransmission(DS3231_ADDRESS);
  Wire.write(0);                    //Einstellen der Adresse 0
  Wire.endTransmission();
  byte NumberOfBytes = 5;       //es sollen bis zu 19 Bytes ausgelesen werden (in der DS3231 sind maximal 19 Bytes auslesbar)
  if ( Wire.requestFrom(DS3231_ADDRESS, NumberOfBytes) == NumberOfBytes )
    while (!Wire.available())
    {
      // waiting
    }
    byte mySekunde = bcdToDec(Wire.read() & 0x00);
    byte myMinute = bcdToDec(Wire.read());
    byte myStunde = bcdToDec(Wire.read() & 0x02);
    //byte myWeekDay = bcdToDec(Wire.read());                   //User-Eingabe, diese Zahl wird gegen Mitternacht +1 gezählt
    byte myDay = bcdToDec(Wire.read());
    byte myMonat = bcdToDec(Wire.read());
//    byte myJahr = bcdToDec(Wire.read()) + 2000);
    //byte myKontrolle=Wire.read();                           //siehe DaBla
    //byte myStatus=Wire.read();                              //Bit 7 zeigt, daß die RTC stehen geblieben ist, siehe DaBla
    //byte myAlterungsOffset=Wire.read();
    //byte myGradanzahl=Wire.read();
    //byte myKommaGrad=Wire.read();                     //Bit 7 = halbe Grad, Bit 6 Viertel Grad

    delay(10);
  }
  DURCHSCHNITT_2 /= EINZELMESSUNGEN1;
  DURCHSCHNITT_3 /= EINZELMESSUNGEN1;


  // Berechnung der Temperatur mit Steinhart-Hart Gleichung
  R2_2 = FESTWIDERSTAND_2 * (1023.0 / (float)DURCHSCHNITT_2 - 1.0);
  lnR2_2 = log(R2_2);
  TEMP_2 = (1.0 / (A_2 + B_2 * lnR2_2 + C_2 * lnR2_2 * lnR2_2 * lnR2_2)); // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_2 =  TEMP_2 - 273.15;

  R2_3 = FESTWIDERSTAND_2 * (1023.0 / (float)DURCHSCHNITT_3 - 1.0);
  lnR2_3 = log(R2_3);
  TEMP_3 = (1.0 / (A_2 + B_2 * lnR2_3 + C_2 * lnR2_3 * lnR2_3 * lnR2_3)); // Steinhart-Hart Gleichung. T  = 1 / {A + B[ln(R)] + C[ln(R)]^3}
  TEMP_3 =  TEMP_3 - 273.15;

 
//byte mySekunde, myMinute, myStunde, myDay, myMonat;
    // Der nachfolgende Teil sendet die Daten zusätzlich über den seriellen Port.
    Serial.print("WT:     ");
    Serial.print(TEMP_2);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
    Serial.println(" °C");
    Serial.print("LT:     ");
    Serial.print(TEMP_3);          // Hier wird der Temperaturwert des Messfühlers vom Arduino an den seriellen Port gesendet.
    Serial.println(" °C");
    sensors.requestTemperatures();
    Serial.println(sensors.getTempCByIndex(0));
    Serial.print(myStunde, DEC);
    Serial.print(":");
    Serial.print(myMinute, DEC);
    Serial.print(":");
    Serial.println(mySekunde, DEC);
    //Serial.print(myDay);
    //Serial.print(":");
    //Serial.print(myMonat);
        delay(5000);
  }



Gruß und gute nacht! Getestet wird wenn morgen

EDIT: angepasst, aber zeigt nur 0:0:0 an .

oh man
Title: Re: FIS für Motorrad
Post by: postmaster-ino on Aug 19, 2018, 11:47 am
Hi

myWeekDay MUSST Du trotzdem auslesen, da der ausgelesene Wert nach myStunde eben myWeekDay ist.
Du musst diesen Wert nicht benutzen, kannst also myDay 2x hintereinander aufrufen.

Die Daten kommen in der Reihenfolge, die hier (oder im DaBla) angegeben ist.
Du kannst natürlich auch zu euner beliebigen Stelle springen - macht bei einem Byte Versatz aber viel mehr Aufwand, als das eine Byte einfach zu lesen und zu ignorieren.

Bei mir wirft Dein Sketch einen Fehler - in Zeile 85 die Klammer willst Du, denke ich, über die RTC-Abfragen haben.
(außerhalb der FOR-Klammern sind die Variablen myStunde ect.pp. nicht mehr existent)

... und schmeiß das blöde delay() raus ...

MfG
Title: Re: FIS für Motorrad
Post by: Aceli on Aug 19, 2018, 12:07 pm
moin

also habe myweekday auskommentiert,


einen klammerfehler in Zeile 85? bei mir nicht ... komisch

ich versteh das einfach nicht.... rein logisch...