Unimik
Unimik steht für Unimog-Mikrocontroller, er soll Informationen über ein Fahrzeug messen, auswerten und ausgeben können.
Der Ideengeber des Unimik war Thomas mit seinen Getriebewächter, super Idee und Umsetzung!
Inhaltsverzeichnis
Vorplanung
- Sensoren
- 7x Temperatursensoren Getriebe
- 1x Temperatursensor Motor
- 1x Temperatursensor Kühlwasser
- 1x Temperatursensor Aussen
- 1x Hygrometer Aussen
- 1x GPS Einheit
- 1x Durchflussmesser Benzin
- 1x Neigungssensor (x,y,z)
- Funktionen
- Anzeige schaltbar für Aussen-, Motor- und Getriebetemperaturen (LCD)
- Warnen bei kritischen Aussen-, Motor- und Getriebetemperaturen (LCD, LED Schema)
- GPS Daten aufzeichnen und evtl. anzeigen (LCD)
- Spritverbrauch & Reichweite anzeigen (LCD)
- Motor- & Kofferbatterieanzeige?
Erstmal informieren & Bauteile suchen =)
- Bauteile
- Temperatursensoren
- Durchflussmengen
- *** Conrad - 22,50
- GPS
- Neigungssensor
- [2] ,
Als Grundlage dient der bereits vorhandene Arduino Mega 2560 sowie ein Breadboard und diverse Kleinteile zum basteln. Ich werde mir jetzt im Internet die dafür notwendigen Bauteile besorgen und dann geht es weiter!
- Links
- GPS +Arduino Tutorial
Digital mit dem DS18S20 via 1-Wire oder Analog? Wie fasse in ich den Sensor gut ein...hmmmm [3] [4]
Erster Einkauf:
- 2x Heissleiter B57703m103g40 10k - Conrad - 3,69€ - 7,38€
- 2x Temperatur-Sensor Pt1000 DIN 1/3 W-Eyk 6 - Conrad - 14,73€ - 29,46€
- 2x DS18S20 (Digital One wire)
Erster Versuch
Ich fang mit den DS18S20 als Temperatursensor an welcher mit One-Wire arbeitet, dafür muss ich die Arduino IDE um Library`s erweitern. Das heisst One-Wire & DallasTemperature Library herunterladen und in das Arbeitsverzeichnis von Arduino entpacken. Dann bin ich auf fertige Sketche gestossen, das erste ermittelt die angeschlossenen DS18S20, das zweite kann diese dann auslesen. Danke an fluuux.de =)
Also los gehts, Breadboard ist wie folgt bestückt:
- 2x DS18S20 + 1x 4,7kOhm (Data an Pin2)
- 2x Led`s + 2x 220 Ohm (LED an Pin3,4)
Der folgende Entwurf soll die grüne LED solange leuchten lassen, solange die Temperatur 25°C überschreitet, wenn das der Fall ist soll die grüne ausgehen und die rote LED leuchten.
#include <OneWire.h> #include <DallasTemperature.h> // Pin Belegung OneWire ds(2); // Datenpin für DS18S20 int led1 = 3; // grün int led2 = 4; // gelb //DeviceAdressen DeviceAddress sensor1 = { 0x10, 0x0, 0x74, 0xB3, 0x2, 0x8, 0x0, 0xA9 }; DeviceAddress sensor2 = { 0x10, 0x19, 0xBD, 0xB4, 0x2, 0x8, 0x0, 0x33 }; // Sensor NBame für die Ausgabe auf dem Serial Monitor char sensor1Name[] = "Sensor1: "; char sensor2Name[] = "Sensor2: "; void setup(void) { Serial.begin(9600); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); } void writeTimeToScratchpad(byte* address) { //reset the bus ds.reset(); //select our sensor ds.select(address); //CONVERT T function call (44h) which puts the temperature into the scratchpad ds.write(0x44,1); //sleep a second for the write to take place delay(1000); } void readTimeFromScratchpad(byte* address, byte* data) { //reset the bus ds.reset(); //select our sensor ds.select(address); //read the scratchpad (BEh) ds.write(0xBE); for (byte i=0;i<9;i++){ data[i] = ds.read(); } } float getTemperature(byte* address) { int tr; byte data[12]; writeTimeToScratchpad(address); readTimeFromScratchpad(address,data); //put in temp all the 8 bits of LSB (least significant byte) tr = data[0]; //check for negative temperature if (data[1] > 0x80) { tr = !tr + 1; //two's complement adjustment tr = tr * -1; //flip value negative. } //COUNT PER Celsius degree (10h) int cpc = data[7]; //COUNT REMAIN (0Ch) int cr = data[6]; //drop bit 0 tr = tr >> 1; return tr - (float)0.25 + (cpc - cr)/(float)cpc; } void loop(void) { float temp1 = getTemperature(sensor1); float temp2 = getTemperature(sensor2); int temp1_int = getTemperature(sensor1); Serial.print(sensor1Name); Serial.print(temp1); Serial.println(" Celsius"); // Temperaturüberwachung led if (temp1_int > 25){ digitalWrite(led2, HIGH); digitalWrite(led1, LOW); } else{ digitalWrite(led2, LOW); digitalWrite(led1, HIGH); } // 2.Temp nur als Referenz ohne LED auf Serial ausgeben Serial.print(sensor2Name); Serial.print(temp2); Serial.println(" Celsius"); Serial.println(); delay(1000); }
Das ging schnell, jetzt noch die anderen Sensoren kaufen und weiter gehts, bin mir noch unschlüssig wie groß das display werden soll :/
Einkauf
Weiter geht es mit dem Einkauf der verschiednen Bauteile.
- GPS-Modul
Die Wahl viel schnell auf dieses Modell, da es bereits gekapselt ist und sich leicht montieren lässt. https://www.amazon.de/MOD-GPS-Wasserdichte-Magnetische-GPS-Modul-Glonass/dp/B01CRFBL0S/ref=sr_1_11?ie=UTF8&qid=1471369589&sr=8-11&keywords=arduino+gps+modul
- Gear Flow Sensor
Einfach gehaltener Durchflussmesser zur Überwachung des Benzinverbrauchs. Dieser gibt für jeden Milliliter der durch ihn fließt einen Impuls aus. https://www.amazon.de/dp/B01DDNYRRM/ref=pe_386171_146209001_TE_3p_dp_1
- Öl-Temperatur Fühler