tijdschakelaar voor wc ventilator
36 berichten
• Pagina 4 van 4 • 1, 2, 3, 4
Re: tijdschakelaar voor wc ventilator
ik zal eea. in de WC ventilator gaan bouwen, ga een Optocoupler gebruiken voor de licht ingang, en een transistor (bc547) met een klein relais om de ventilator aan te sturen.
als voeding ga ik een klein SMPS voedinkje gebruiken (zie test viewtopic.php?f=4&t=2366) , als arduino een mini pro.
hopelijk krijg ik alles (veilig) in de ventilator behuizing,
de (voorlopig) laatste versie code:
rest nog dank aan koepel / nico en shooter
zonder hun hulp was het mij (nog niet) geluk, de code zal wel veel beter / netter kunnen, maar die kennis en ervaring met arduino heb ik nog niet
cpp code
als voeding ga ik een klein SMPS voedinkje gebruiken (zie test viewtopic.php?f=4&t=2366) , als arduino een mini pro.
hopelijk krijg ik alles (veilig) in de ventilator behuizing,
de (voorlopig) laatste versie code:
rest nog dank aan koepel / nico en shooter
zonder hun hulp was het mij (nog niet) geluk, de code zal wel veel beter / netter kunnen, maar die kennis en ervaring met arduino heb ik nog niet
cpp code
// wim lemson FSM machine voor wc ventilator 10-02-2017 v 1.6
// zie ook: viewtopic.php?f=8&t=2371&start=20
// PIN definitions
#define lichtschakelaarpin 10
#define ventilatorpin 3
#define plasledpin 2
#define naloopledpin 6
#define lichtledpin 7
// FSM states // de diverse state van de FSM
#define idle_state 0
#define plas_state 10
#define poep_state 20
#define naloop_state 30
// variables
int fsm_state = 0;
// beschrijving timers voorbeeld(millis()-nalooptimer >= 10000?)
unsigned long nalooptimer;
unsigned long plastimer;
void setup() {
// beschrijvng van de in en outputs
pinMode(lichtschakelaarpin, INPUT);
pinMode(lichtledpin, OUTPUT);
pinMode(ventilatorpin, OUTPUT);
pinMode(plasledpin, OUTPUT);
pinMode(naloopledpin, OUTPUT);
}
void loop() {
if (digitalRead(lichtschakelaarpin) == HIGH) // licht wc aan?
{
digitalWrite (lichtledpin, HIGH); // als licht aan ,zet licht controle led aan
}
else
{
digitalWrite (lichtledpin, LOW); // als licht uit , zet licht controle LED weer Uit
}
// FSM states
switch (fsm_state) {
case idle_state: // idle_state, wacht op lichtaktie
if (digitalRead(lichtledpin) == HIGH) // kijk of licht aan is
{
plastimer = millis(); // start plastimer
fsm_state = plas_state;
}
break;
case plas_state: // als tijd langer dan plas timer,en licht nog aan , dan ventilator aan, anders terug naar begin
digitalWrite(plasledpin, HIGH); // indicatie plastimer loopt
if (digitalRead(lichtledpin) == LOW) // terug naar idle_state als licht uit , voordat plas tijd is verstreken
{
fsm_state = idle_state;
}
else if (millis() - plastimer >= 90000) // tijd van de plastimer 90sec x 1000mS= 90000 mS
{
digitalWrite(ventilatorpin, HIGH); // ventilator start
fsm_state = poep_state; // ga naar state poep
}
break;
case poep_state:
if (digitalRead(lichtledpin) == LOW)
{
digitalWrite(naloopledpin, HIGH); // indicatie nalooptimer loopt
nalooptimer = millis();
fsm_state = naloop_state; // change naar state naloop
}
break;
case naloop_state: // naloop ventilator, als licht uit en toiletbezoek was langer dan de Plastimer
if (digitalRead(lichtledpin) == HIGH)
{
digitalWrite(naloopledpin, LOW); // zet naloop uit
fsm_state = plas_state; // opnieuw naar plas_state bij tweede bezoek in naloopttijd
}
else if (millis() - nalooptimer >= 600000) // tijdsduur naloop timer 10 min (10m x 60 s x 1000mS= 600000)
{
digitalWrite(ventilatorpin, LOW); // zet ventilator uit
digitalWrite(naloopledpin, LOW); // zet naloop led uit
fsm_state = idle_state;
}
break;
delay(200); // vertraging voor stabiliteit
}
}
Advertisement
Re: tijdschakelaar voor wc ventilator
misschien heb je boven de lamp meer plek om het in te bouwen. daar zit ook de centraaldoos, waar je de voeding kunt halen.
paul deelen
shooter@home.nl
shooter@home.nl
Re: tijdschakelaar voor wc ventilator
bedankt voor idee, maar ik wil eigenlijk niet "zelfbouw spul" in de huisinstallatie zetten,probeer deze altijd zo origineel mogelijk te houden, en alleen goedgekeurde componenten te gebruiken, dit raad ik ook ieder ander aan, hobby is leuk, maar je moet het wel veilig houden!
de ventilator die ik nu in de wc heb (CATA fan B10)heeft lammellen die open gaan , deze constructie maakt dat er een uitbouw aan de ventilator zit die wel wat ruimte geeft (minipro en smps past, maar interfacing relais en opto met weerstand/condensator weet ik nog niet) .
zodra ik het af heb meld ik mij.
ps . origineel zat er een timer in deze fan, maar om onduidelijke reden heeft deze het begeven, bleek HC4060 en een transitor defect te zijn, daar het smd spul is dat ook nog eens verlijmd aan de pcb zit ehb ik de print defect gemaakt tijdens verwijderen , (sporen eraf), omdat alles live is zag ik niet direct kans dit veilig te maken, vandaar dit "arduino" project. )heb ik gelijk weer iets nuttigs voor de arduino
de ventilator die ik nu in de wc heb (CATA fan B10)heeft lammellen die open gaan , deze constructie maakt dat er een uitbouw aan de ventilator zit die wel wat ruimte geeft (minipro en smps past, maar interfacing relais en opto met weerstand/condensator weet ik nog niet) .
zodra ik het af heb meld ik mij.
ps . origineel zat er een timer in deze fan, maar om onduidelijke reden heeft deze het begeven, bleek HC4060 en een transitor defect te zijn, daar het smd spul is dat ook nog eens verlijmd aan de pcb zit ehb ik de print defect gemaakt tijdens verwijderen , (sporen eraf), omdat alles live is zag ik niet direct kans dit veilig te maken, vandaar dit "arduino" project. )heb ik gelijk weer iets nuttigs voor de arduino
Re: tijdschakelaar voor wc ventilator
voorlopige eindstatus, ingebouwd en werkend:
interface: zie bijlage
foto ingebouwd in ventilator: zie bijlage
code: zie hieronder,
cpp code
interface: zie bijlage
foto ingebouwd in ventilator: zie bijlage
code: zie hieronder,
cpp code
// wim lemson FSM machine voor wc ventilator 10-02-2017 v 1.6
/* zie ook: viewtopic.php?f=8&t=2371&start=20
*/
// PIN definitions
#define lichtschakelaarpin 6
#define ventilatorpin 3
#define plasledpin 10
#define naloopledpin 13
#define lichtledpin 9
// FSM states // de diverse state van de FSM
#define idle_state 0
#define plas_state 10
#define poep_state 20
#define naloop_state 30
// variables
int fsm_state = 0;
// beschrijving timers voorbeeld(millis()-nalooptimer >= 10000?)
unsigned long nalooptimer;
unsigned long plastimer;
void setup() {
// beschrijvng van de in en outputs
pinMode(lichtschakelaarpin, INPUT_PULLUP);
pinMode(lichtledpin, OUTPUT);
pinMode(ventilatorpin, OUTPUT);
pinMode(plasledpin, OUTPUT);
pinMode(naloopledpin, OUTPUT);
}
void loop() {
if (digitalRead(lichtschakelaarpin) == LOW) // licht wc aan?
{
digitalWrite (lichtledpin, HIGH); // als licht aan ,zet licht controle led aan
}
else
{
digitalWrite (lichtledpin, LOW); // als licht uit , zet licht controle LED weer Uit
}
// FSM states
switch (fsm_state) {
case idle_state: // idle_state, wacht op lichtaktie
if (digitalRead(lichtledpin) == HIGH) // kijk of licht aan is
{
plastimer = millis(); // start plastimer
fsm_state = plas_state;
}
break;
case plas_state: // als tijd langer dan plas timer,en licht nog aan , dan ventilator aan, anders terug naar begin
digitalWrite(plasledpin, HIGH); // indicatie plastimer loopt
if (digitalRead(lichtledpin) == LOW) // terug naar idle_state als licht uit , voordat plas tijd is verstreken
{
digitalWrite(plasledpin, LOW);
fsm_state = idle_state;
}
else if (millis() - plastimer >= 90000) // tijd van de plastimer 90sec x 1000mS= 90000 mS
{
digitalWrite(ventilatorpin, HIGH); // ventilator start
fsm_state = poep_state; // ga naar state poep
}
break;
case poep_state:
delay(200);
if (digitalRead(lichtledpin) == LOW)
{
delay(200);
nalooptimer = millis();
digitalWrite(naloopledpin, HIGH); // indicatie nalooptimer loopt
fsm_state = naloop_state; // change naar state naloop
}
break;
case naloop_state: // naloop ventilator, als licht uit en toiletbezoek was langer dan de Plastimer
delay(200);
if (digitalRead(lichtledpin) == HIGH)
{ delay(200);
digitalWrite(naloopledpin, LOW); // zet naloop uit
fsm_state = plas_state; // opnieuw naar plas_state bij tweede bezoek in naloopttijd
}
else if (millis() - nalooptimer >= 600000) // tijdsduur naloop timer 10 min (10m x 60 s x 1000mS= 600000)
{
digitalWrite(ventilatorpin, LOW); // zet ventilator uit
digitalWrite(naloopledpin, LOW); // zet naloop led uit
fsm_state = idle_state;
}
break;
delay(200); // vertraging voor stabiliteit
}
}
- Bijlagen
-
- wc ventilaor.jpg (33.58 KiB) 4841 keer bekeken
-
- interface wc arduino.jpg (10.8 KiB) 4841 keer bekeken
Re: tijdschakelaar voor wc ventilator
bij het schema heb ik toch wel wat opmerkingen:
De weerstand bij de lamp, moet wel 230 Volt minstens zijn , want anders krijg je snel vonkoverslag in of over de weerstand.
dat had je beter op kunnen lossen met een condensator.
de pullup pin is 50 kohm, dat is wellicht wat veel om betrouwbaar te schakelen.
de transistor en de spoel van plaats wisselen, dan wordt de transistor niet zo heet, want dan hij kan in verzadiging komen.
dat is de reden waarom heel veel naar gnd geschakeld wordt.
De weerstand bij de lamp, moet wel 230 Volt minstens zijn , want anders krijg je snel vonkoverslag in of over de weerstand.
dat had je beter op kunnen lossen met een condensator.
de pullup pin is 50 kohm, dat is wellicht wat veel om betrouwbaar te schakelen.
de transistor en de spoel van plaats wisselen, dan wordt de transistor niet zo heet, want dan hij kan in verzadiging komen.
dat is de reden waarom heel veel naar gnd geschakeld wordt.
paul deelen
shooter@home.nl
shooter@home.nl
Re: tijdschakelaar voor wc ventilator
ja wat de weerstand heb je gelijk, maar dit is een speciale hoogspannings weerstand, een condensator had ook gekund, maar dan moest het weer een X1 of X2 condensator zijn, en die had ik niet in de juiste waarde.
condensator en gelijkrichter waren wel nodig , anders aan/uit met lichtfrequentie.
transistor zit nu is de plus, had ook in de min gekund, gezin de korte bedrijfstijd (max 20 min?) verwacht ik daar geen problemen., relais gebruikt ook maar max 50 mA
als laatste , ik heb een extrene pullup weerstand bij de arduino, staat niet in het schema.
Bedankt voor meedenken
condensator en gelijkrichter waren wel nodig , anders aan/uit met lichtfrequentie.
transistor zit nu is de plus, had ook in de min gekund, gezin de korte bedrijfstijd (max 20 min?) verwacht ik daar geen problemen., relais gebruikt ook maar max 50 mA
als laatste , ik heb een extrene pullup weerstand bij de arduino, staat niet in het schema.
Bedankt voor meedenken
36 berichten
• Pagina 4 van 4 • 1, 2, 3, 4
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 25 gasten