tijdschakelaar voor wc ventilator

Arduino specifieke Software
Berichten: 88
Geregistreerd: 16 Jul 2015, 21:02

Re: tijdschakelaar voor wc ventilator

Berichtdoor wim2584 » 11 Feb 2017, 22:18

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
// 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

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: tijdschakelaar voor wc ventilator

Berichtdoor shooter » 11 Feb 2017, 23:06

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

Berichten: 88
Geregistreerd: 16 Jul 2015, 21:02

Re: tijdschakelaar voor wc ventilator

Berichtdoor wim2584 » 11 Feb 2017, 23:22

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 :oops: , (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 :D

Berichten: 88
Geregistreerd: 16 Jul 2015, 21:02

Re: tijdschakelaar voor wc ventilator

Berichtdoor wim2584 » 12 Feb 2017, 22:56

voorlopige eindstatus, ingebouwd en werkend:

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
wc ventilaor.jpg (33.58 KiB) 4834 keer bekeken
interface wc arduino.jpg
interface wc arduino.jpg (10.8 KiB) 4834 keer bekeken

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: tijdschakelaar voor wc ventilator

Berichtdoor shooter » 13 Feb 2017, 12:40

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.
paul deelen
shooter@home.nl

Berichten: 88
Geregistreerd: 16 Jul 2015, 21:02

Re: tijdschakelaar voor wc ventilator

Berichtdoor wim2584 » 13 Feb 2017, 13:27

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

Vorige

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 35 gasten