maanantai 21. marraskuuta 2016

Hämäräkytkin KY-018 ja LED

Kodit muuttuvat nykyisin yhä enemmän ”älykkäiksi”. Ainakin tuosta aiheesta meuhkataan nykyään aika tavalla. Toisaalta on ehkä hyväkin miettiä, onko ihmisen syytä kovinkaan paljon luovuttaa aivotoimintaansa automaatille.

No, joka tapauksessa sarja-37:stä löytyy paljon hyödyllisiä osasia kodin ”älykkyyden” nostamiseksi. Näin syksyllä kun päivätkin hämärtyvät ja iltapäivät ovat jo aivan pimeitä, aloitan tämän teeman hämäräkytkimellä.

Sarjassa 37 on yhtenä osasena LDR (Light Dependent Resistor ) eli valovastus. Niin kuin nimikin kertoo, riippuu komponentin vastusarvo valon voimakkuudesta. Ensimmäiseksi ryhdyin mittaamaaan vastuksen arvon riippuvuutta valon voimakkuudesta. Sain aluksi aivan omituisia ja epäloogisia arvoja. Toisin sanoen törmäsin taas tähän kiinalaiseen ”laatuun”. Kun katselin piirilevyä suurennuslasin läpi, huomasin siinä kylmiä juotoksia. Toisin sanoen tina ei ollut kunnolla sulanut ja tarttunut valovastuksen ja liittimen johtoihin. Käytännössä tämä merkitsee sitä, että sähkön johtavuus näiden komponenttien rajapinnoissa on häilyvä. Tästä selvisin juottamalla komponentit uudestaan.

Nyt merkinnät piirilevyllä ovat oikein. Miinus tulee maihin, plus 5V kytketään keskelle ja signaali (analogia input) saadaan pisteestä S. Mitattaessa vastusarvo vaihteli 250 ohmin (kirkkaan valon alla) ja 500 kilo-ohmin (suojattuna kynän hylsyllä) välillä. 10 kilo-ohmin etuvastus on valmiina piirilevyllä. Kytkettynä Arduinon analogiatuloon, vaihteli muunnoksen jälkeinen signaali 150 (pöytälamppu päällä) ja 800 välillä (LDR peitettynä hylsyllä). Valitsin rajaksi 350 (const int Con_ValoRaja = 350;).

Ohessa kykentä Arduinoon:

 Raja-arvo sattui ihan hyvään kohtaan, sillä jo kädellä peittäminen sai LEDin syttymään.
Vasemmalla päytälamppu päällä ja oikealla pois päältä

Tästä on hyvä jatkaa älykodin kehittämistä. Voisi laittaa liiketunnistimen. Jos herää aamuyöstä, niin laite voisi laittaa vessaan valot valmiikisi päälle ja sammuttaa, kun tärkeimmät on hoidettu. LEDeillä voi myös lähettää dataa toiselle laitteelle joka voisi tallettaa käyntikerrat, jolloin aamulla ei tarvitsi keskustella asiasta, koska faktat ovat tallessa. Samoin kuorsausta voisi tarkkailla, jolloin voisi tilastoida jokaisen rahinan ja apnean ajankohdan ja keston. Ja varmaan paljon muutakin hyödyllistä. Mutta olkoon tässä nyt vain tämä hämäräkytkin.

HÄMÄRÄKYTKIMEN OHJELMA
/***************************************
* Ohjelma 24
* 21.11.2016
* Hämäräkytkin LDR -> LED
**************************************/

// MÄÄRITTELYT:
// Ajastukset
const int Con_Kierrokset = 800;
unsigned int Unt_Sekunnit = 0; // Viivelaskuri
unsigned int Unt_Kierrokset = 0; // Ohjelmakierroslaskuri
int Int_Kierrokset = 0;

// Tulostuksen tahdistus
const int Con_PrintViive = 1000;
int Int_PrintViive = Con_PrintViive;

// Hämärän määrittelyt
const int Con_LDR = 0; // Analogiamittaus A0
const int Con_ValoRaja = 350; // LEDin sytytysraja
int Int_LDR_Ana = 0; // LEDin mittausmuuttuja
const int Con_LED = 2; // Lähtöpinni LEDille

// ASETUKSET:
void setup(){
Serial.begin(9600);
pinMode(Con_LED, OUTPUT);
}// Asetuksen loppu

// FUNKTIOT
void Fun_Tulostus(){
Serial.print("Valomuunnos :"); Serial.println(Int_LDR_Ana);
}

// PÄÄLOOPPI
void loop(){
// Ohjelmakierros / viivelaskuri
Unt_Kierrokset++;
if(Unt_Kierrokset > Con_Kierrokset){ // Luvulla sovitetaan kierr -> sek
Unt_Sekunnit++;
Unt_Kierrokset = 0;
} // Kierroslakuri loppu

Int_LDR_Ana = analogRead(Con_LDR);

if(Int_LDR_Ana > Con_ValoRaja){
digitalWrite(Con_LED, HIGH);
}else{
digitalWrite(Con_LED, LOW);
}

Int_PrintViive--;
if(Int_PrintViive == 0){
Fun_Tulostus();
Int_PrintViive = Con_PrintViive;
}
delay(1);
} // Pääohjelma LOPPU


Ei kommentteja:

Lähetä kommentti