Arduino Regelung |
|
1 2 3 4
|
15.02.2016 12:50
plataaaa
|
Re: Arduino Regelung
Hi, Du verwendest ein UNO? da wird der Platz sicherlich knapp, ich habe ein NANO inkl. dem W5100 mini im Einsatz und der Platz war gerade so ausreichend. DS18B20 sind auch bei meiner Steuerung im Einsatz :-) die sind nicht übel. Wenn Du den Kasten für den Aussenbereich einsetzen möchtest, musst Du dringend eine Platine verwenden und alle Bauteile verlöten. Die Stecker werden Dir mit der Zeit oxidieren. Das Umschalten müsstest Du aber dann mit attachInterrupt() machen und hier kannst Du ausschließlich den D2 und D3 verwenden, somit müsstest Du für alle anderen Bauteile auch andere Pins verwenden. An Pin D2 oder D3 könntest Du dann den Taster für das Umschalten anschließen. Das einzige Problem an der ganzen Arduino Lösung ist, dass man das Teil alle 50 Tg. neu starten muss, da ein Überlauf eintritt wegen den millis(). Allerdings möchte ich sowieso die ganze Steuerung bzw. den Kollektor über Nacht mit einer Zeitschaltuhr kpl. ausschalten. ich mach mal ein Bild vom Innenleben die Tage....
|
|
|
|
15.02.2016 13:55
plataaaa
|
Re: Arduino Regelung
Hi, ja, das Problem haben leider alle Arduino´s das liegt einfach an der Funtkion millis(), die benötige ich, da ich im 15min. Abstand die Temperaturen sende. Eine Funtkion für die Uhrzeit gibt es so auch nicht, da müsstest Du den Quelltext einer Seite auslesen. Würde bestimmt machbar sein, aber mit Aufwand. den Sketch stell ich die nächsten Tage rein, hab diesen gerade nicht greifbar....
|
|
|
15.02.2016 14:53
Highway
|
Re: Arduino Regelung
Ha da sollte das doch gehen, http://www.sunfounder.com/index.php?c=ca...0Arduino%20V2.0 die rtc müsste es auch einzeln geben. Dann kann ich den Zeitstempel mit schreiben, und über die Minuten auch alle 15Min schreiben. Aber alles noch fiktiv, werde ich aber probieren. Hauptsache mein Kollektor fährt schon schön Warmluft ein, komisch ist nur das seit ich ihn stehen habe nur Wolken bei mir abhängen. Hätte villeicht doch erst ein Wasserrad bauen sollen?
Warum sollte mich die Welt mögen, mir langen meine Freunde, die kommen aus aller Welt!
Highway
|
|
|
15.02.2016 15:05
plataaaa
|
Re: Arduino Regelung
jep, das scheint zu funktionieren, jedoch kommt das für meine Steuerung nicht mehr in Frage, da ich keine weitere Pins frei habe. LAN-Modul, LCD, LED, Sensoren, Servo und das Relay. Leider alles voll
|
|
|
15.02.2016 15:32
Randvogelsberger
|
Re: Arduino Regelung
Moin ihr zwei.
Ich dachte der Arduino läuft von selbst nach 49,6 Tagen an, beginnt selbständig bei Null. --> http://playground.arduino.cc/Learning/BlinkWithoutDelayDe Hab ich das falsch verstanden?
Der Arduino führt einen eigenständigen Reset durch, läuft dadurch ewig nur die Zeitspanne milis wird die 49,6 Tage nie überschreiten. Das ist nur problematisch, wenn Du die Zeit seit dem Start aufzeichnen willst. Es werden die milis seit dem Start gezählt. Daraus einen Zeitstempel zu machen wird schwierig. Deshalb verwendet man dann lieber die RTC oder einen Abgleich aus dem Internet.
Und wenn plataaa keine Ports mehr frei hat -> Internetzeit abrufen. Aber wenn Du nix aufzeichnen willst, brauchst Du das nicht.
So jedenfalls hab ich das verstanden......
Gruß Andy
|
|
|
15.02.2016 15:51
plataaaa
|
Re: Arduino Regelung
jep, hast Du richtig verstanden. das Clock-Modul wäre eine brauchbare Lösung, aber nur dann, wenn man unbedingt die Uhrzeit benötigt. ich speichere einfach im loop die Differenz zweier Variablen befüllt mit millis und somit wäre es egal, ob die besagten Tage erreicht werden oder nicht. Trotzdem werde ich vorsorglich den kpl. Kollektor inkl. der Schaltung über Nacht ausschalten.
|
|
|
|
08.03.2016 12:38
Highway
|
Re: Arduino Regelung
Hi Plataaaa, kannst du dir mal den Code ansehen wegen des DS18B20, so müsste es gehen, weis nur nicht ob das mit der Reihenfolge der Fühler so stimmt? Kann es leider erst Donnerstag checken.
#include <SPI.h> #include <Ethernet.h> #include <OneWire.h> #include <DallasTemperature.h> #include <LiquidCrystal.h> #include <Wire.h> /----------------------------------------------------------------------------/ // initialize the library with the numbers of the interface pins LiquidCrystal lcd(4, 6, 10, 11, 12, 13);
#define ONE_WIRE_BUS 7 // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); const int keyPin = 2; //the number of the key pin int anzeige = 0;
// Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; IPAddress ip(192, 168, 178, 25);
// Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80); /---------------------------------------------------------------------------/ void setup() { // start serial port Serial.begin(9600); // Serial.println("Dallas Temperature IC Control Library Demo"); // Start up the library sensors.begin(); lcd.begin(16, 2); // set up the LCD's number of columns and rows: pinMode(keyPin,INPUT);//initialize the key pin as input // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // start the Ethernet connection and the server: Ethernet.begin(mac, ip); server.begin(); Serial.print("server is at "); Serial.println(Ethernet.localIP()); }
void loop() { //----------------------------------- Taster fuer Anzeige ---------------------------------------------------- if(digitalRead(keyPin) ==HIGH ) { anzege = anzeige +1;//Anzeige umschalten delay(1500);//Warten damit der Finger wech kommt } if(anzeige = 4) { anzeige = 0; } //----------------------------------- Sensor ---------------------------------------------------- // call sensors.requestTemperatures() to issue a global temperature // request to all devices on the bus //Serial.print("Requesting temperatures..."); sensors.requestTemperatures(); // Send the command to get temperatures // Serial.println("DONE"); //----------------------------------- LCD ---------------------------------------------------- if(anzeige = 0) { lcd.setCursor(15,0); // set the cursor to column 15, line 0 lcd.print("Zulufttemp"); lcd.setCursor(15,1); // set the cursor to column 15, line 1 lcd.print("Temp: "); lcd.print(sensors.getTempCByIndex(0)); // Print a message to the LCD. lcd.print(" C"); } if(anzeige = 1) { lcd.setCursor(15,0); // set the cursor to column 15, line 0 lcd.print("Aussentemp"); lcd.setCursor(15,1); // set the cursor to column 15, line 1 lcd.print("Temp: "); lcd.print(sensors.getTempCByIndex(1)); // Print a message to the LCD. lcd.print(" C"); } if(anzeige = 2) { lcd.setCursor(15,0); // set the cursor to column 15, line 0 lcd.print("Kellertemp"); lcd.setCursor(15,1); // set the cursor to column 15, line 1 lcd.print("Temp: "); lcd.print(sensors.getTempCByIndex(2)); // Print a message to the LCD. lcd.print(" C"); } if(anzeige = 3) { lcd.setCursor(15,0); // set the cursor to column 15, line 0 lcd.print("Kollektortemp"); lcd.setCursor(15,1); // set the cursor to column 15, line 1 lcd.print("Temp: "); lcd.print(sensors.getTempCByIndex(3)); // Print a message to the LCD. lcd.print(" C"); } //---------------------------------------Server-------------------------------------------- // listen for incoming clients EthernetClient client = server.available(); if (client) { Serial.println("new client"); // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // the connection will be closed after completion of the response client.println("Refresh: 5"); // refresh the page automatically every 5 sec client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); // ausgabe Sensoren client.print("Zulufttemperatur"); client.print(sensors.getTempCByIndex(0)); client.print(" °C "); client.println("<br />"); client.print("Aussentemperatur = "); client.print(sensors.getTempCByIndex(1)); client.print(" °C "); client.println("<br />"); client.print("Kellertemperatur = "); client.print(sensors.getTempCByIndex(2)); client.print(" °C "); client.println("<br />"); client.print("Kollektortemperatur = "); client.print(sensors.getTempCByIndex(3)); client.print(" °C"); client.println("<br />"); } client.println("</html>"); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(1); // close the connection: client.stop(); Serial.println("client disconnected"); } //--------------------------------------Hier kommt der Datenlogger -------------------------------------- }
----------------------------------------------------------------------------------------------------------------------------------------------
Wann wird es endlich wieder Sonnig?
Highway
|
|
|
08.03.2016 16:00
plataaaa
|
Re: Arduino Regelung
so auf die schnelle würde ich sagen, dass es passt, sofern du insg. 4 Sensoren am Bus hast. welcher Sensor dann an welchem index ist, musst Du rausfinden. wenn Du Sensor 3 benötigst, kann es sein, dass dieser mit Index 0 angesprochen wird oder mit 1, so meine ich das, ansonsten sieht´s passabel aus. einfach mal testen
|
|
|
|
1 2 3 4
|