Dear visitor, welcome to We-Mod-It | Das Forum von Moddern für Modder. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
This post has been edited 21 times, last edit by "Scynd" (Mar 12th 2015, 12:34pm)
Users who thanked for this post:
der_george (22.02.2015), Socke (23.02.2015), lister (09.04.2018)
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
// Konstanten const long interval = 1000; // Interval wie oft die Temperatur abgefragt wird (milliseunden) const int abfrageZahl = 5; // Je mehr abfragen, desto stabiler isr das Ergebnis, dauert aber länger const int ntc = A0; // Pin für den 10kO NTC Wiederstand const int ntcNominal = 10000; // Wiederstand des NTC bei Nominaltemperatur const int tempNominal = 25; // Temperatur bei der der NTC den angegebenen Wiederstand hat const int bCoefficient = 3977; // Beta Coefficient(B25 aus Datenblatt des NTC) const int serienWiederstand = 10000; // Wert des Wiederstands der mit dem NTC in Serie geschalten ist // Variablen int abfrage[abfrageZahl]; // Array Variable für das Mitteln der Temperatur float durchschnitt = 0; // Variable für das Mitteln der Temperatur float temp; // Variable für die Berechnung der temperatur nach Steinhart unsigned long letzteMillis = 0; // Speichert die letzte Zeit (millis) der Temperaturabfrage void setup() { Serial.begin(9600); // Baudrate für die Ausgabe am Serial Monitor pinMode(ntc, INPUT); // Setzt den Pin des NTC Wiederstands als Eingang } void loop() { // Erfasst die aktuelle Zeit für den Abfrageinterval unsigned long aktuelleMillis = millis(); // Löst bei erreichen der Intervalzeit die Temperaturberechnung aus if(aktuelleMillis - letzteMillis >= interval) { letzteMillis = aktuelleMillis; // speichert die Zeit der letzten Abfrage Temperaturberechnung(); // Startet die Temperaturerfassungsroutine // Ausgabe an den Seriellen Monitor Serial.print("Temperatur "); Serial.print(temp); Serial.println(" *C"); } } void Temperaturberechnung() { // Nimmt N Abfragen in einer Reihe, mit einem kurzen delay for (int i=0; i < abfrageZahl; i++) { abfrage[i] = analogRead(ntc); delay(10); } // Mittelt alle Abfragen durchschnitt = 0; for (int i=0; i < abfrageZahl; i++) { durchschnitt += abfrage[i]; } durchschnitt /= abfrageZahl; // Umwandlung des Wertes in Wiederstand durchschnitt = 1023 / durchschnitt - 1; durchschnitt = serienWiederstand / durchschnitt; // Umrechnung aller Ergebnisse in die Temperatur mittels einer Steinhard Berechnung temp = durchschnitt / ntcNominal; // (R/Ro) temp = log(temp); // ln(R/Ro) temp /= bCoefficient; // 1/B * ln(R/Ro) temp += 1.0 / (tempNominal + 273.15); // + (1/To) temp = 1.0 / temp; // Invertieren temp -= 273.15; // Umwandeln in °C } |
This post has been edited 31 times, last edit by "Scynd" (Feb 22nd 2015, 8:48pm)
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#include <OneWire.h> // OneWire-Bibliothek einbinden #include <DallasTemperature.h> // DS18B20-Bibliothek einbinden // Konstanten const int owPin = 2; // Pin für OneWire Bus definieren const int interval = 1000; // Interval wie oft die Temperatur abgefragt wird (milliseunden) // Variablen unsigned long letzteMillis = 0; // Speichert die letzte Zeit (millis) der Temperaturabfrage OneWire oneWire(owPin); // OneWire Referenz setzen DallasTemperature sensors(&oneWire); // DS18B20 initialisieren void setup() { Serial.begin(9600); // Baudrate für die Ausgabe am Serial Monitor sensors.begin(); // DS18B20 starten //Anzahl der angeschlossenen Sensoren ausgeben Serial.print("Sensoren: "); Serial.println(sensors.getDeviceCount()); } void loop() { // Erfasst die aktuelle Zeit für den Abfrageinterval unsigned long aktuelleMillis = millis(); // Löst bei erreichen der Intervalzeit die Temperaturerfassung aus if(aktuelleMillis - letzteMillis >= interval) { letzteMillis = aktuelleMillis; // speichert die Zeit der letzten Abfrage sensors.requestTemperatures(); // Temperatursensoren auslesen // Temperaturen der Sensoren auslesen for(int i = 0; i < sensors.getDeviceCount(); i++) { show_temperature(i + 1, sensors.getTempCByIndex(i)); } } } // Temperatur am Seriellen Monitor ausgeben void show_temperature(byte num,float temp) { Serial.print("Sensor "); Serial.print(num); Serial.print(": "); Serial.print(temp); Serial.print(" "); Serial.write(176); // damit wird das °-Zeichen dargestellt Serial.println("C"); } |
This post has been edited 22 times, last edit by "Scynd" (Feb 22nd 2015, 3:31pm)
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// Konstanten const int abfrageZahl = 5; // Je mehr abfragen, desto stabiler isr das Ergebnis const int ldr = A0; // Pin für den Fotowiederstand // Variablen int helligkeit = 0; // Variable für die Helligkeit int abfrage[abfrageZahl]; // Array Variable für das Mitteln der Temperatur float durchschnitt = 0; // Variable für das Mitteln der Temperatur void setup() { Serial.begin(9600); // Baudrate für die Ausgabe am Serial Monitor pinMode(ldr, INPUT); // Pin des NTC Wiederstands als Eingang } void loop() { // Nimmt N Abfragen in einer Reihe, mit einem kurzen delay for (int i=0; i < abfrageZahl; i++) { abfrage[i] = analogRead(ldr); delay(10); } // Mittelt alle Abfragen durchschnitt = 0; for (int i=0; i < abfrageZahl; i++) { durchschnitt += abfrage[i]; } helligkeit = durchschnitt/abfrageZahl; // Ausgabe an den Seriellen Monitor Serial.print("LDR "); Serial.println(helligkeit); } |
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
// Konstanten const int abfrageZahl = 5; // Je mehr abfragen, desto stabiler isr das Ergebnis const int ldr = A0; // Pin für den Fotowiederstand const int led = 2; // Variablen int helligkeit = 0; // Variable für die Helligkeit int abfrage[abfrageZahl]; // Array Variable für das Mitteln der Temperatur float durchschnitt = 0; // Variable für das Mitteln der Temperatur void setup() { Serial.begin(9600); // Baudrate für die Ausgabe am Serial Monitor pinMode(ldr, INPUT); // Pin des NTC Wiederstands als Eingang pinMode(led, OUTPUT); } void loop() { // Nimmt N Abfragen in einer Reihe, mit einem kurzen delay for (int i=0; i < abfrageZahl; i++) { abfrage[i] = analogRead(ldr); delay(10); } // Mittelt alle Abfragen durchschnitt = 0; for (int i=0; i < abfrageZahl; i++) { durchschnitt += abfrage[i]; } helligkeit = durchschnitt/abfrageZahl; // Ausgabe an den Seriellen Monitor Serial.print("LDR "); Serial.println(helligkeit); // Schalte bei Dunkelheit die LED an if(helligkeit > 950) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } |
This post has been edited 22 times, last edit by "Scynd" (Feb 22nd 2015, 8:58pm)
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
// Konstanten const int empfPin = 2; // Pin des Empfängers const int ledPin = 13; // LED auf dem Arduino initialisieren // Variablen int signal = 0; void setup() { pinMode(empfPin, INPUT); // Pin des Senders als Eingang pinMode(ledPin, OUTPUT); // Pin der LED als Ausgang } void loop() { // Lichtschrankenstatus in Variable speichern signal = digitalRead(empfPin); // Wenn Lichtschranke unterbrochen wird, geht die LED an if(signal == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } } |
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// Konstanten const int empfPin = A1; // Pin des Empfängers const int ledPin = 13; // LED auf dem Arduino initialisieren // Variablen int signal = 0; void setup() { Serial.begin(9600); // Baudrate für die Ausgabe am Serial Monitor pinMode(empfPin, INPUT); // Pin des Senders als Eingang pinMode(ledPin, OUTPUT); // Pin der LED als Ausgang } void loop() { // Lichtschrankenstatus in Variable speichern signal = analogRead(empfPin); // Wenn Lichtschranke unterbrochen wird, geht die LED an if(signal > 900) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } // Zur Kontrolle an den Seriellen Monitor senden Serial.println(signal); } |
This post has been edited 14 times, last edit by "Scynd" (Mar 12th 2015, 12:47pm)
"Mein Name ist George - Der George"
Date of registration: Mar 17th 2010
Location: Da wo der Berch wohnt
Occupation: Inginöööör und Freundinbeschäftiger
"Mein Name ist George - Der George"
Date of registration: Mar 17th 2010
Location: Da wo der Berch wohnt
Occupation: Inginöööör und Freundinbeschäftiger
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
if (temp >= 60 && temp < 70) { // Ausgabe für 10er Stelle digitalWrite(A, LOW); digitalWrite(B, HIGH); digitalWrite(C, HIGH); digitalWrite(D, LOW); // Ausgabe 1er Stelle temp = temp - 60; // Dann bleibt nur die 1er Stelle, also 8 übrig sitch (temp) { case 0: { digitalWrite(A, LOW); digitalWrite(B, LOW); digitalWrite(C, LOW); digitalWrite(D, LOW); break; } case 1: { digitalWrite(A, HIGH); digitalWrite(B, LOW); digitalWrite(C, LOW); digitalWrite(D, LOW); break; } case 2: { digitalWrite(A, LOW); digitalWrite(B, HIGH); digitalWrite(C, LOW); digitalWrite(D, LOW); break; } usw....... |
Users who thanked for this post:
Flexplays (02.04.2017)
1. Platz Enermax Casecon Contest
Date of registration: Mar 12th 2012
Location: München
Occupation: Maschinenbautechniker
Arduino, DS18B20, Lichtschranke, NTC, Photowiederstand, Temic K153P, Temperaturmessung, Thermistor, Tutorial
© 2011-2014 We-Mod-It.com | Das Forum von Moddern für Modder | © Design by Jama