Lieber Besucher, herzlich willkommen bei: We-Mod-It | Das Forum von Moddern für Modder. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
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
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
Benutzerinformationen überspringen
Fühlt sich wohl hier
Registrierungsdatum: 13. November 2012
Wohnort: Bad Salmoden- Stallfinster
Beruf: Steuerungsprogrammierer
Benutzerinformationen überspringen
Wenn I Murksen muss... Aaarrgh..
Registrierungsdatum: 18. Juli 2009
Name: Patrick Betz
Wohnort: Simbach bei Landau a. d. Isar
Beruf: Kraftfahrer (Gelernter Schreiner)
Ich wolte noch die Sketch Datei hochladen, falls ihr noch etwas daran ändern würdet, leider ist diese Datei eine ungültige Endung (.fzz) :-(
Hallo Lukas, da hat sich der Fehlerteufel eingeschlichen
Display:
SDA vom Display muss an Pin A4 und SCL an Pin A5
https://www.arduino.cc/en/Main/ArduinoBoardNano
Temperatursensor:
Die Leitung zum Arduino muss an die linke Seite deines Widerstands. Also zwischen NTC und Widerstand. Das ist ein Spannungsteiler
[DIY How To Arduino] Arduino Tutorial 5 - Sensoren
Lüfter:
Der PWM Eingang des Lüfters (blaue Leitung) muss auch beim Arduino an einen PWM fähigen Pin. Das sind beim Nano Pin 3, 5, 6, 9, 10 und 11. Kannst dir einen aussuchen
Aber sonst passt alles soweit ich sehe.
Gruß Bert
Sehr schönes Projekt. Finde ich auf jeden Fall interessant.
Ich habe aber noch eine Frage bezüglich der LED Heizung. Wie sieht die denn aus? Ist das eine einfache Ansammlung riesiger 3W Monster die auf einem Kühlblock kleben?
Oder kann man das kommerziell kaufen?
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 |
if (temp < minTemp) { minTemp = temp; } if (temp > maxTemp) { maxTemp = temp; } |
Benutzerinformationen überspringen
1. Platz Enermax Casecon Contest
Registrierungsdatum: 12. März 2012
Wohnort: München
Beruf: Maschinenbautechniker
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 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
#include <Wire.h> #include <LiquidCrystal_I2C.h> // Konstanten const int fanPin = 3; // PWM Pin des Lüfters const int fanPower = 4; // Pin zum schalten des Transistors für Lüfter An/Aus const int ntc = A0; // Pin für den 10kO NTC Wiederstand 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 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 const int tMin = 22; // Minimaltemperatur. Unterschalb schaltet der Lüfter ab const int tMax = 30; // Maximaltemperatur. Ab dieser Temperatur läuft der Lüfter mit 100% // Variablen int fanSpeed = 0; // Variable für den PWM Wert des Lüfters boolean fanOut = true; // Zustand des Lüfters (An/Aus) 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 float minTemp = 0; // Variable für die niedrigste gemessene Temperatur float maxTemp = 0; // Variable für die höchste gemessene Temperatur // Setzt die I2C Adresse des LCD auf 0x27 für ein 20 Zeichen und 4 Zeilen Display LiquidCrystal_I2C lcd(0x27, 20, 4); void setup() { pinMode(ntc, INPUT); // Setzt den Pin des NTC Wiederstands als Eingang pinMode(fanPin, OUTPUT); // Setzt den PWM Pin des Lüfters als Ausgang pinMode(fanPower, OUTPUT); // Setzt den Power Pin des Lüfters als Ausgang lcd.begin(); // Initialisiert das LCD lcd.backlight(); // LCD Hintergrundbeleuchtung einschalten lcd.print("Phytokammer"); // Begrüßungsnachricht anzeigen delay(2000); // Zeige die Begrüßung 2s an lcd.clear(); // Display leeren // Erste Temperatuerfassung um die min/max Werte festzulegen temperaturberechnung(); minTemp = temp; maxTemp = temp; } void loop() { // Startet die Temperaturerfassungsroutine temperaturberechnung(); // Wenn die Temperatur kleiner als die minTemp ist, den Wert als neue minTemp speichern if (temp < minTemp) minTemp = temp; // Wenn die Temperatur größer als die maxTemp ist, den Wert als neue maxTemp speichern if (temp > maxTemp) maxTemp = temp; // Wenn die Temperatur unter die von tMinn fällt, schält der Lüfter ab if (temp < tMin) { fanOut = true; digitalWrite(fanPower, LOW); } // Hysterese(Einschaltverzögerung) if(temp >= (tMin + 1)) { fanOut == false; digitalWrite(fanPower, HIGH); } // Lüftergeschwindigkeit über den Temperaturbereich einstellen // TMin->0% PWM | TMax->100% PWM if (fanOut == false) { fanSpeed = map(temp, tMin, tMax, 0, 255); } // Ausgabe der aktuellen Temperatur in Zeile 1 lcd.setCursor(0, 0); lcd.print("Temperatur "); lcd.print(temp); lcd.print(" *C"); // Ausgabe der niedrigsten Temperatur in Zeile 2 lcd.setCursor(0, 1); lcd.print("Min. Temp "); lcd.print(minTemp); lcd.print(" *C"); // Ausgabe der höchsten Temperatur in Zeile 3 lcd.setCursor(0, 2); lcd.print("Min. Temp "); lcd.print(minTemp); lcd.print(" *C"); delay(1000); } 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 } |
© 2011-2014 We-Mod-It.com | Das Forum von Moddern für Modder | © Design by Jama
Forensoftware: Burning Board® 3.1.8, entwickelt von WoltLab® GmbH