![]()
Benutzerinformationen überspringen
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
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
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
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
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
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
Registrierungsdatum: 17. März 2010
Wohnort: Da wo der Berch wohnt
Beruf: Inginöööör und Freundinbeschäftiger

Benutzerinformationen überspringen
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
Registrierungsdatum: 17. März 2010
Wohnort: Da wo der Berch wohnt
Beruf: Inginöööör und Freundinbeschäftiger


Benutzerinformationen überspringen
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
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
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
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
.
), aber das ist ja erstmal nicht so schlimm.Benutzerinformationen überspringen
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

