INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Dimmen nach Zeit
18.02.2014, 19:37 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2014 17:46 von TrashCo.)
Beitrag #1
Dimmen nach Zeit
Hi Leute,

bin noch Anfänger und bräuchte ein bisschen Hilfestellung.
Habe vor 12V Lampen mittels Mosfets N-Channel zu dimmen und zwar nach Zeit.
Dafür hab ich hier ein fertig Programmiertes RTC Modul.

Also morgens von 6Uhr beginnend bis 7Uhr langsam hochdimmen und am Abend umgekehrt.

Irgendwie gelingt mir das nicht da ich den Code nicht so ganz verstehe der Aufbau an sich passt ist ja auch nicht schwer Rolleyes

Kann mir da jemand helfen wie der Code aussehen muss bzw. Ansätze das der Mosfet mit bestimmten Werten geregelt wird?

Mfg
TrashCo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 06:58
Beitrag #2
RE: Dimmen nach Zeit
Hallo TrashCo,
Zitat:Irgendwie gelingt mir das nicht da ich den Code nicht so ganz verstehe
Wir hier im Forum bis jetzt auch nicht, da wir den Code nicht sehen.
Ich habe gerade nicht den Staubwedel da um meine Kristallkugel zu putzen Confused
Vielleicht kannst du uns helfen und den Code mal reinstellen. Dann können wir vielleicht auch dir helfen Smile

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 17:43 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2014 17:49 von TrashCo.)
Beitrag #3
RE: Dimmen nach Zeit
Hi,

also Folgendermaßen solls laufen:
Meine Lichter sollen um 6Uhr eingeschalten werden und langsam bis 7Uhr auf 100% hochgedimmt werden.
Am abend solls von 9Uhr bis 10Uhr auf 0% runtergedimmt werden. Habe diesen Code so ähnlich im Internet gefunden und umgeschrieben allerdings
tuh ich mich schwer alles von dem Code zu verstehen und klappen tut er auch nicht :/

Der Teil mit Dämmerung Licht dimmen versteh ich nicht ganz wofür der gut sein soll Huh

void setup()
{
int MosfetPin = 3;
const unsigned long HOUR = 60 * 60;
const unsigned long MINUTE = 60;
const int TARGET_BRIGHTNESS = (255); // Helligkeit 100%
}

void loop()
{
///// Erfasse Zeit in RTCStunde, RTCMinute
unsigned long time = RTCHour * HOUR + RTCMinute * MINUTE; // Zeit erfassen

analogWrite(MosfetPin brightness(time, 6*HOUR, 21*HOUR));

delay(1000);
}

byte brightness(int Pin, unsigned long time, unsigned long fadeUpStart, unsigned long fadeDownStart)
{
// Licht auf maximale Helligkeit hochdimmen
if (time >= fadeUpStart + 1*HOUR && time <= fadeDownStart)
return TARGET_BRIGHTNESS;

// Dämmerung: Licht dimmen
if (time >= fadeUpStart && time <= fadeUpStart + 1*HOUR) // Dimmen bis
{
unsigned long seconds = time - fadeUpStart; // Anzahl der Sekunden in die Dimmzeit
return TARGET_BRIGHTNESS * seconds / (HOUR*1); // Hochdimmen auf Basis von Teil-Intervall
}

// Nacht: Licht runterdimmen
if (time >= fadeDownStart && time <= fadeDownStart + 1*HOUR) // Runterdimmen
{
unsigned long seconds = (fadeDownStart + (HOUR*1)) - time; // Anzahl der Sekunden, bis Intervall abgeschlossen
return TARGET_BRIGHTNESS * seconds / (HOUR*1); // Runterdimmen basierend auf Teil-Intervall
}

// Die übrige Zeit zur Nacht um die Lichter auszuschalten
return 0; // Sollte hier nicht kommen
}


Ich bekomme auch haufenweise Fehler beim kompilieren aber verstehe nur Bahnhof Confused

MFG
TrashCo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 18:11
Beitrag #4
RE: Dimmen nach Zeit
Hallo TrashCo,

das ist definitv nicht der gesamte Code. Vorm Setup() fehlt noch etliches.
Ebenso wären die Fehlermeldungen wichtig!

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 18:43 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2014 19:09 von TrashCo.)
Beitrag #5
RE: Dimmen nach Zeit
Sry falscher Sketch das war mein erster Versuch hier ist ein mein aktueller Stand meiner bastlerei:

#include "Wire.h"
#define DS1307_ADDRESS 0x68 // I2C Adresse

const int MosfetPin = 3;
const unsigned long HOUR = 60 * 60;
const unsigned long MINUTE = 60;
const int TARGET_BRIGHTNESS = (255); // Helligkeit 100%

void setup()
{
Wire.begin();
}

byte bcdToDec(byte val)
{
//Konventierung von Binary Dezimal zu normal Dezimal
return ( (val/16*10) + (val%16) );
}

void loop()
{
///// Erfasse Zeit von RTC in RTCHOUR, RTCMINUTE, RTCSECOND
//Setzt den Registerpointer zu 0 (Second)
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write((byte)0);
Wire.endTransmission();

// Lese Sekunde, Minute, und Stunde
Wire.requestFrom(DS1307_ADDRESS, 3);

int RTCSecond = bcdToDec(Wire.read());
int RTCMinute = bcdToDec(Wire.read());
int RTCHour = bcdToDec(Wire.read() & 0b111111); //24 hour time


unsigned long time = RTCHour * HOUR + RTCMinute * MINUTE + RTCSecond; // Zeit in Sekunden

analogWrite(MosfetPin, brightness(time, 6*HOUR, 21*HOUR));

delay(1000);
}

byte brightness(unsigned long time, unsigned long fadeUpStart, unsigned long fadeDownStart)
{
// Licht auf maximale Helligkeit hochdimmen
if (time >= fadeUpStart + 1*HOUR && time <= fadeDownStart)
return TARGET_BRIGHTNESS;

// Dämmerung: Licht dimmen
if (time >= fadeUpStart && time <= fadeUpStart + 1*HOUR) // Dimmen bis
{
unsigned long seconds = time - fadeUpStart; // Anzahl der Sekunden in die Dimmzeit
return TARGET_BRIGHTNESS * seconds / (HOUR*1); // Hochdimmen auf Basis von Teil-Intervall
}

// Licht herunterdimmen
if (time >= fadeDownStart && time <= fadeDownStart + 1*HOUR) // Herunterdimmen
{
unsigned long seconds = (fadeDownStart + (HOUR*1)) - time; // Anzahl der Sekunden, bis Intervall abgeschlossen
return TARGET_BRIGHTNESS * seconds / (HOUR*1); // Runterdimmen basierend auf Teil-Intervall
}

// Die übrige Zeit zur Nacht um die Lichter auszuschalten
return 0; // Sollte hier nicht kommen
}


Die Fehlermeldungen habe ich gerade weggebracht waren not Define RTCHOUR, RTCMINUTE, RTCSECOND ist nun gefixt aber es tut sich nichts Confused

EDIT: Habs soweit gebracht das wenn der Arduino startet die Lichter hochdimmen wenn sie aber 100% erreichen gehen sie schlagartig aus und er fängt von neu an hoch zu dimmen

MFG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 21:22
Beitrag #6
RE: Dimmen nach Zeit
Hallo TrashCo,

um die Zeit setzen zu können, musst du, auch wenn du nicht alle Elemente brauchst, sowohl Zeit als auch Datum setzen.
Guck dir mal dieses Beispiel an:
http://bildr.org/2011/03/ds1307-arduino/
Interessant ist hier die Zeile:

Danach lass dir mal die aktuelle Zeit auf dem Serialmon ausgeben. Wenn die Zeit stimmt sehen wir weiter.

Grüße RK

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 21:44 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2014 21:55 von TrashCo.)
Beitrag #7
RE: Dimmen nach Zeit
Hi,

Zeit und Datum sind wie im meinem 1.Post schon gesetzt habe ein anderes Tutorial genutzt und die aktuelle Zeit und Datum auf den RTC aufgespielt und am Serial Monitor ausgeben lassen.
Habe Ihn nochmal nach deinem Tutorial neu beschrieben selbes Ergebnis er dimmt die Lampe hoch langsam ca. 1minute so wie ich es geschrieben habe allerdings bei erreichen der 100% geht er
schlagartig auf 0% zurück und wiederholt den Vorgang in einer Endlosschleife

Mfg
TrashCo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.02.2014, 22:25
Beitrag #8
RE: Dimmen nach Zeit
Hallo TrashCo,
initialisiere mal die seconds variable oben vor dem Setup(), sonst gibt es irgendwann einen Speicherüberlauf.
Dann mal die 1. If-Abfrage in brightness() nach unten, als letzte Abfrage setzen.

Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  while Schleife nach sleep mode interrupt tklaus 13 230 23.11.2016 17:40
Letzter Beitrag: Tommy56
Question Keine Verbindung via USB nach flashen des Programms chaoscrack 5 203 23.08.2016 14:58
Letzter Beitrag: hotsystems
  String nach UTF16 konvertieren (UTF-16) ThoEngel 0 299 20.02.2016 19:22
Letzter Beitrag: ThoEngel
  Zeit - Verzögerung bergfrei 12 765 14.01.2016 22:09
Letzter Beitrag: Bitklopfer
  Softserial nach Serial1 für den MEGA2560 umsetzen. arduinofan 2 423 27.12.2015 18:40
Letzter Beitrag: arduinofan
  Integer nach Ascii-String ? itoa arduinofan 2 586 22.12.2015 15:34
Letzter Beitrag: arduinofan
  LED mit Joystick steuern / Dimmen und versch. Modis? Hansaplast 12 851 26.10.2015 19:30
Letzter Beitrag: P.Martin
  Mathe-(nach)-hilfe für UTFT rkuehle 9 1.283 30.08.2015 09:11
Letzter Beitrag: rkuehle
  TinyGPSplus: Zeit (1/100 sec) auslesen von GPS Modul GY-NEO-6M V2 HaWe 0 802 23.07.2015 21:20
Letzter Beitrag: HaWe
  Anfänger braucht Hilfe: Avr libs sind nach Update nicht mehr ansprechbar Legofriend 1 625 15.03.2015 23:32
Letzter Beitrag: Foto-Ralf

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste