HUOM!
Älä tee kytkentöjä suurempijännitteisiin ulkoisiin laitteisiin omin päin vaan aina sähköluvallisen henkilön seurassa ja valvonnassa!
Tässä projektissa tutustutaan siihen, miten voit käynnistää auton valoja Arduinon välityksellä. Projekti on hyvää jatkoa kolmannen luvun harjoitukselle Haaste: Leluhakkerointi. Ulkoisia laitteita, joissa on suurempi jännite, kytketään päälle ja pois päältä yleensä transistorin sijaan releen (relay) kautta.
Rele on periaatteessa aivan kuin Leluhakkerointi-harjoituksessa käytetty transistori, mutta soveltuu suuremmille jännitteille.
Alla olevassa videossa esitellään projektia, joka toteutettiin Stadin ammattiopiston autoalan opettajien ja opiskelijoiden kanssa keväällä 2017.
Osa | Kuva | Kuvaus | |
---|---|---|---|
LED | Pidempi jalka (kuvassa mutkallinen) eli anodi + -napaan eli Arduinon porttiin. Lyhyempi jalka eli katodi miinus-napaan eli maahan. | ||
Vastus 330 Ω | Vastus vastustaa sähkövirran kulkua. Vastuksen arvo mitataan ohmeissa (Ω) ja ilmoitetaan komponentissa erivärisinä raitoina. | ||
Vastus 10kΩ | 10 kilo-ohmin vastuksessa on ruskea, musta, oranssi ja kullanvärinen raita. | ||
NPN-transistori | Transistoria käytetään tässä harjoituksessa virtapiirin jakamiseen. Mustapäisiä transistoreja on Maker-kitissäsi kolme kappaletta. Varmista, että valitsemasi komponentin pintaan on kirjoitettu MP5 eikä TMP (kuten lämpötilasensorissa) tai FT66T (kuten melodiapiirissä). | ||
Diodi | Diodi päästää sähkövirtaa läpi vain yhteen suuntaan. Sitä käytetään virtapiirissä varmistamaan, ettei virtapiikkejä vahingossakaan pääse väärään suuntaan. Harmaa viiva osoittaa pään, jonka suunnasta virta ei pääse läpi (kuvan diodissa virta siis pääsee oikealta vasemmalle, muttei päinvastoin). | ||
Anturi | Valitse haluamiasi antureita. Esim. äänianturi, etäisyysanturi ja valovastus käyvät tarkoitukseen hyvin. | ||
Sähkölaite, johon on kiinniettty rele (releen ohjausjännite esim. 12V) | Lisätietoa releistä: https://fi.wikipedia.org/wiki/Rele | ||
12V DC-virtalähde (polariteetti positiivinen) | Tasavirtalähteessä on oltava pyöreä barrell jack -liitin, jotta sen voi kytkeä suoraan Arduinoon. Virtalähteestä saatavaa jännitettä käytetään Arduinon Vin-portin kautta releiden laittamiseen päälle ja pois päältä. |
Lopulta tulemme käynnistämään Arduinon avulla releeseen kiinnitetyn sähkölaitteen, esim. auton valot. Sitä ennen harjoitellaan kytkentää siten, että releen tilalle on kytketty led.
Alla on virtapiirikaaviot etäisyysanturille ja valovastukselle. Erilaisilla antureilla voi olla projektin kannalta erilaisia merkityksiä.
void setup() {
pinMode(8, OUTPUT);
Serial.begin(9600);
}
void loop() {
int anturi = analogRead(A0);
Serial.println(anturi);
if (anturi > 300) {
digitalWrite(8, HIGH);
delay(300);
} else {
digitalWrite(8, LOW);
}
}
Edellinen ohjelma piti ledin päällä aina silloin, kun anturin arvo on yli 300. Kokeile myös seuraavaa ohjelmaa. Se vaihtaa ledin tilan päinvastaiseksi aina, kun arvo on yli 300. Jos led on päällä, se menee pois päältä, ja jos se on pois päältä, se menee takaisin päälle.
int tila = LOW;
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop() {
int anturi = analogRead(A0);
Serial.println(anturi);
if (anturi > 300) {
if (tila == LOW) {
tila = HIGH;
} else {
tila = LOW;
}
digitalWrite(13, tila);
}
}
Kokeile vielä seuraavaa virtapiiriä, jossa on useampi ledi.
.
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop() {
int anturi = analogRead(A0);
Serial.println(anturi);
if (anturi > 300) {
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
delay(300);
} else {
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
}
}
Jos haluat, voit lisätä mukaan vielä kytkimen. Katso lisätietoja erilaisista kytkimistä kolmannen luvun harjoituksesta Monenlaiset kytkimet.
Auton valot voisivat mennä päälle kytkimen avulla, kun esimerkiksi:
Alla olevassa kaaviossa on käytetty magneettiin reagoivaa reed-kytkintä, joka on kytketty porttiin 2 ja maahan.
Alla on koodiesimerkki, jossa myös porttiin 2 kiinnitetty kytkin kääntää valot päälle ja pois riippuen siitä, onko kytkin pohjassa vai ei.
.
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
int anturi = analogRead(A0);
Serial.println(anturi);
if (anturi > 300) {
digitalWrite(8, HIGH);
delay(300);
} else {
digitalWrite(8, LOW);
}
if (digitalRead(2) == LOW) {
digitalWrite(9, HIGH);
delay(300);
} else {
digitalWrite(9, LOW);
}
}
Olet ohjelmoinut tähän mennessä ledejä päälle ja pois päältä. Seuraavaksi ledien tilalle kytketään releet, jolloin voit ohjelmoida päälle ja pois päältä käytännössä mitä tahansa sähkölaitetta!
Ainoa haaste liittyy jännitteeseen. Ledejä on helppo laittaa päälle ja pois päältä Arduinon digitaalisista porteista saatavalla 5V-jännitteellä, mutta monet releet vaativat 12V ohjausjännitteen, jotta ne saa päälle ja pois.
Arduinoon voi kuitenkin kiinnittää ulkoisen 12V jännitelähteen, ja Vin-portin kautta tämän 12V jännitteen voi syöttää suoraan koekytkentälevylle ja releille.
Vin-portista tuleva jännite on koko ajan päällä, eikä siihen voi vaikuttaa ohjelmoimalla. Releen ohjaamiseksi 12V jännite täytyy voida laittaa päälle ja pois. Apuna käytetään transistoria: transistoriin ohjataan pieni virta Arduinosta (portti 8), mikä johtaa releelle Vin-portista tulevan jännitteen.
Lisätietoa releiden toiminnasta löydät täältä: https://www.explainthatstuff.com/howrelayswork.html
Kytkinten ja antureiden sijoittelu:
Mihin kytkimet ja anturit tulisi sijoittaa, jotta niiden toiminnassa olisi järkeä? Esim. etäisyysanturin voisi sijoittaa auton eteen, jolloin autoa lähestyvät ihminen käynnistäisi auton valot. Mikrofonin taas voisi laittaa auton katolle, jolloin se rekisteröisi ääniä kaikkialta ympäriltä.