Hallo zusammen,
danke für die Tip's und Kommentare. Der Einbau folgt erst noch, somit der "Härtetest" auch.
Das Einbinden der Photos habe ich jetzt auch rausgefunden, danke....
Die "schmutzige" Energieversorgung soltte kein Problem sein, der LM2560 bringt eine stabile Spannung, die mittels Spindeltrimmer eingestellt wird. im Bereich von 7-15V Vin stehen 5V an, was hoffentlich reicht. Vom Sensor an bis zum Mega sind geschirmte Kabel dran, sollte auch kein Thema sein.
am Sketch kann mann sicher noch viel verbessern, wie gesagt ist der zusammen geschustert, aber er Funktionert....
der Sketch:
#include <Adafruit_MLX90614.h> //Infrarot Thermofühler Library
#include <RtcDS3231.h> //RTC Library
#include <max6675.h> //Thermofühler Library Max6675
#include <DallasTemperature.h>
#include <Wire.h>
#include <OneWire.h>
RtcDS3231<TwoWire> Rtc(Wire); //RTC 3231, I2C Adresse 0x68 Zeit/ 0x57 interner Thermistor
#include "U8glib.h" //Oled Library
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK //Oled Treiber I2C Adresse 0x3C
char str[10]; //u8g
char datestring[20]; //RTC3231
// Thermofühler Innen Temperatur (Infrarot) MLX90614
Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //Infrarot Thermofühler SDA,SCL I2C Adresse 0x5A
// Thermofühler Aussen Temperatur DS18B20
#define ONE_WIRE_BUS 7
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
//Thermofühler für die Oel Temperatur Max6675
int thermoDO = 10;
int thermoCS = 9;
int thermoCLK = 8;
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
const float scalefactor = 0.066;//Scalefactor für WCS1700
//Spannung Sensor VCC<25V für die Fahrzeugspannung in Volt
int analogInput = A4;
float vout = 0.0;
float vin = 0.0;
float R1 = 30000.0; //
float R2 = 7500.0; //
int value = 0;
void setup ()
{
//Oled, einmalige Ausgabe beim Start
u8g.firstPage();
do {
u8g.setFont(u8g_font_helvR14);
u8g.drawStr( 30, 15,"NISSAN");
u8g.drawStr(34, 55,"GT 4x4");
u8g.setFont(u8g_font_helvR12);
u8g.drawStr(36, 34,"Primera ");
}while( u8g.nextPage() );
delay(3000);
//RTC 3231
RtcDateTime now = Rtc.GetDateTime();
printDateTime(now);
pinMode(analogInput, INPUT); //Sensor VCC<25V Spannung Eingang definieren
mlx.begin(); //Infrarot Thermo Messung beginnen
Rtc.Begin(); //RTC3132 Messung beginnen
sensors.begin(); //DS18B20 Aussen Thermistor Messung beginnen
}
//RTC Definition Zeitanzeige
#define countof(a) (sizeof(a) / sizeof(a[0]))
void printDateTime(const RtcDateTime& dt)
{ snprintf_P(datestring,
countof(datestring),
PSTR("%02u:%02u"),
dt.Hour(),
dt.Minute());
}
void loop ()
{
//DS188B20
sensors.requestTemperatures();
//Spannung Sensor
value = analogRead(analogInput);
vout = (value * 5.0) / 1024.0; // see text
vin = vout / (R2/(R1+R2));
//Oled, wiederholende Ausgabe Zeit, Innen/Aussen und Oel Temperatur, Bordspannung (Kfz)
u8g.firstPage();
do {
u8g.setFont(u8g_font_fur17r);
u8g.drawStr( 35, 22,datestring);
u8g.drawFrame(0,0,28,30);
u8g.drawFrame(100,0,28,30);
u8g.drawFrame(0,33,62,22);
u8g.drawFrame(66,33,62,22);
u8g.setFont(u8g_font_profont12);
u8g.drawStr( 8, 12,"IN");
u8g.setPrintPos(6, 25); // set position
u8g.println(mlx.readObjectTempC(), 0);
u8g.drawStr( 19, 25,"\260");
u8g.drawStr( 106, 12,"OUT");
u8g.drawStr( 106, 25, dtostrf(sensors.getTempCByIndex(0), 2, 0, str));
u8g.drawStr( 119, 25,"\260");
u8g.setFont(u8g_font_profont15);
u8g.drawStr( 75, 49,"Oil");
u8g.drawStr( 106, 49, dtostrf(thermocouple.readCelsius(), 2, 0, str));
u8g.drawStr( 119, 49,"\260");
u8g.drawStr( 6, 49, dtostrf(vin, 2, 1, str));
u8g.drawStr( 40, 49,"V");
}while( u8g.nextPage() );
}
Die grösse ist nicht so tragend, aber je kleiner umso feiner.
die Zutaten: