Kezdjük valami egyszerűvel.
Találkoztatok már azzal a jelenséggel, (főleg gyerekes családoknál fordul elő) hogy a frissen megszáradt ruha utolsó percben lesz kivasalva indulás előtt, és a vasaló bekapcsolva marad és ott kattog a vasalódeszkán ameddig hazajössz és észre nem veszed, hogy furcsán meleg van ebben a szobában pedig itt a fűtés alapjáraton szokott menni. 🙂
Aztán rájössz, hogy a vasaló volt és hogy tűzveszélyes meg, hogy 8 órán keresztül 1500W lógott a hálózaton és vámpírkodott a villanyszámládon.
A következő projekt ezt hivatott orvosolni.
Szükséges kellékek:
Egyéb hozzávalók:
- ellenállás R1,R2 1K 2db
- ellenállás R3 10K 1db
- tranzisztor Q1 BC817 1db
- dióda D1 1N4148 1db
- 3mm piros LED DS1 1db (nem kötelező)
- 5V relé 10A tudjon kapcsolni AC-ben (nagyon fontos, hogy a vasaló által felvett teljesítményhez igazítsd)
- mikrokapcsoló S1 1db
- pc speeker (hangszóró) LS1 1db
Működés:
Az áramkör feladata időzítés, hogy a rákapcsolt eszköz csak bizonyos ideig működjön. A készüléken található egy bekapcsoló gomb, ezt megnyomva a készülék bekapcsolja a rádugott eszközt, jelzi a bekapcsolást zenével, leszámolja a programban megadott időt jelen estben 30 percet majd kikapcsol. 29 percnél zenével jelzi hogy ki fog kapcsolni, ha tovább akarunk vasalni meg kell nyomni a bekapcsoló gombot és újabb 30 perc áll rendelkezésre. 30-dik perc végén kikapcsol. (a hosszabbítás bármikor indítható a gomb benyomásával) Így megelőzi a bekapcsolva felejtett vasaló jelenségét. 🙂
NAGYON FONTOS, hogy a relé kapcsolási teljesítményét a fogyasztó, jelen estben vasaló által felvett teljesítményhez igazítsd, különben egy olvadt műanyag pacát találsz a helyén és tűzveszélyes is lehet. A vasalón fel van tüntetve mennyit fogyaszt pl.:1500W a relén viszont az átfolyatható áram van megadva pl.:10A. Mivel 230V feszültségen és 10A fog átfolyni rajta ezért P=U x I x cos(Fi) jelen esetben a fázisszög elhanyagolható, mivel rezisztív fogyasztónk van. Tehát a kapcsolható teljesítmény P= 230 x 10 tehát 2300W ami elegendő a vasalóhoz.
MÉG-FONTOSABB! Az áramkör egyes részei életveszélyes feszültségen vannak, ennek figyelembevételével építsd meg. Bármilyen anyagi, illetve nem anyagi kár esetén engem felelősség nem terhel. Én szóltam!!! 🙂
Program:
A programot több Arduino példaprogramból ollóztam össze (főleg csak a saját részeket fogom lefordítani). Az Arduino pro mini panel gyárilag beépített LED-jét hagytam villogni. A programban nincsenek késleltetések (delay) ugyanis egy delay idejére tulajdonképpen szünetel a mikrokontrollerben a programfutás, várakozik.
#include „pitches.h”
// hangok:
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};// hangok ideje: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4
};
// kimenetek, bemenetek és változók megadása
const int ledPin = LED_BUILTIN;// the number of the LED pin
int rele=6; // relé a 6 lábon
int gomb=A1; // nyomógomb az A1 bemeneten
int g_allapot; // változó a nyomógomb állapotának tárolására
long kikapcs = 0;//ennyit várjon kikapcsolás előtt változó// Variables will change :
int ledState = LOW; // ledState used to set the LED// Generally, you should use „unsigned long” for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0; // will store last time LED was updated// constants won’t change :
const long interval = 1000; // interval at which to blink (milliseconds)void setup() {
pinMode(ledPin, OUTPUT);
pinMode(rele, OUTPUT);
digitalWrite(rele, LOW);
pinMode(gomb, INPUT);
}void loop() {
g_allapot=analogRead(gomb); // gomb állapotának beolvasása
if(g_allapot<=100){ // mivel beépített AD átalakítót használunk ha 100 alá esik az AD által mért érték
kikapcs=1800000; // 30 perc milliszekundumban
digitalWrite(rele, HIGH); // relé behúz
hang(); // nóta indul 🙂
}
unsigned long currentMillis = millis();if (currentMillis – previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
kikapcs=kikapcs-interval;if(kikapcs==60000){ // mivel visszaszámlálás folyik ha kikapcs változó elérte az 1 percet
hang(); // nóta indul
}if(kikapcs<=0){ // ha kikapcs változó elérte a 0-át
kikapcs=0;
digitalWrite(rele, LOW); // relé elenged
}
// if the LED is off turn it on and vice-versa:
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
}// hang lejátszó funkció 8 lábon a hangszóró
void hang(){
// iterate over the notes of the melody:
for (int thisNote = 0; thisNote < 8; thisNote++) {// to calculate the note duration, take one second
// divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000 / noteDurations[thisNote];
tone(8, melody[thisNote], noteDuration);// to distinguish the notes, set a minimum time between them.
// the note’s duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(8);
}}
Végeredmény:
Indul:
Többszöri újraindítás (fárasztó tartani a telefont 🙂 ):
Kikapcsolás jelzése és kikapcsolás: