Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Dieser Beitrag wurde bereits 21 mal editiert, zuletzt von »Scynd« (12. März 2015, 12:34)
Benutzer, die sich für diesen Beitrag bedankt haben:
der_george (22.02.2015), Socke (23.02.2015), lister (09.04.2018)
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Quellcode |
|
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 } |
Dieser Beitrag wurde bereits 31 mal editiert, zuletzt von »Scynd« (22. Februar 2015, 20:48)
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Quellcode |
|
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"); } |
Dieser Beitrag wurde bereits 22 mal editiert, zuletzt von »Scynd« (22. Februar 2015, 15:31)
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Quellcode |
|
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); } |
Quellcode |
|
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); } } |
Dieser Beitrag wurde bereits 22 mal editiert, zuletzt von »Scynd« (22. Februar 2015, 20:58)
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Quellcode |
|
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); } } |
Quellcode |
|
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); } |
Dieser Beitrag wurde bereits 14 mal editiert, zuletzt von »Scynd« (12. März 2015, 12:47)
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
"Mein Name ist George - Der George"
Registrierungsdatum: 17. März 2010
Wohnort: Da wo der Berch wohnt
Beruf: Inginöööör und Freundinbeschäftiger
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
"Mein Name ist George - Der George"
Registrierungsdatum: 17. März 2010
Wohnort: Da wo der Berch wohnt
Beruf: Inginöööör und Freundinbeschäftiger
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
Neu Hier!
Registrierungsdatum: 1. November 2014
Name: Jonathan
Wohnort: in der Nähe von Stuttgart
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
Neu Hier!
Registrierungsdatum: 1. November 2014
Name: Jonathan
Wohnort: in der Nähe von Stuttgart
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
Neu Hier!
Registrierungsdatum: 1. November 2014
Name: Jonathan
Wohnort: in der Nähe von Stuttgart
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Quellcode |
|
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....... |
Benutzer, die sich für diesen Beitrag bedankt haben:
Flexplays (02.04.2017)
Benutzerinformationen überspringen
Neu Hier!
Registrierungsdatum: 1. November 2014
Name: Jonathan
Wohnort: in der Nähe von Stuttgart
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: 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