Kun
siniaalto kokoaaltotasasuunnataan, muodostuu sykkivää
tasajännitettä, mistä voidaan suodattamalla ja reguloimalla sada
stabiilia tasajännitettä kulloiseenkin tarpeeseen.
Kokoaaltotasasuuntauksen jälkeen signaali näyttää oheisin kuvan
kaltaiselta. Siinä nollatason yläpuolella on 50 Hz siniaallon
puolikkaita.
Tässä
päivityksessä teen täsmälleen päin vastoin. Arduinon avulla
”hakkaan” siniaallon puolikkaita, joita sitten
kytkintransistorien avulla jaan muuntajan ensiön puolelta toiselle.
Itse asiassa muuntajaakin käytän väärinpäin, sillä sen
merkinnät ovat: ensiö 2 x 115V/50 – 60 Hz ja toisio 2 x 6V 1,25A.
Eli tässä toisio muutetaan ensiöksi. Molemmat puoliskot kytketään
sarjaan siten että keskikohtaan syötetään näitä aallon
puolikkaita ja reunoja kytketään maahan aina puolijakson keston
ajaksi. Toision puolikkaat kytketään sarjaan, jolloin lähdössä
on 230V:in sinimuotoinen vaihtojännite.
Vaikka
tämä nyt onkin lähinnä vain yksi Arduinon ohjelman
sovellusesimerkki, tulee inverttereiden käyttö tulevaisuudessa
voimakkaasti kasvamaan, koska sähköautot lisääntyvät ja mm.
niiden akkuja tullaan käyttämään energiavarastona. Kaikki muukin
uusiutuvan energia käyttö kasvaa tulevaisuudessa voimakkaasti.
Tätä
laitetta ei kuitenkaan saa mennä kytkemään verkkoon, sillä se
vaatii kytkijältä koulutuksen, osaamisen ja asianomaiset luvat.
Invertterin kytkeminen verkkoon energian syöttötarkoituksessa ei
ole jokamiehen oikeus, kuten marjastus ja sienestys.
Videolla
(antinarduvideo49.youtube.com)
näkyy kylläkin, että kytkin tämän
johtohässäkän verkkoon osoittaakseni sen, että tämä voitaisiin
myös synkronoida verkkojännitteen tahtiin, jolloin energian syöttö
sähköverkon suuntaan olisi mahdollista. Indikaattorina tässä on
kaksi hohtopurkauslamppua sarjassa (jännite on maksimissaan
siniaaltojen puolikkaiden ollessa vastakkaisvaiheisina 460V RMS, eli
649V (huippu on tehollisarvo (RMS) kertaa neliöjuuri 2, eli 460 *
1,41 = 648,6V)). Hehkulamppu (tai analoginen jännitemittari) olisi
parempi osoittamaan synkronointia, mutta sopivan tehoisia ei
”miljoonalaatikko” sattunut sisältämään. Tuollainen
glimlamppu syttyy ja sammuu noin 210 voltin (noin 150V RMS
sinimuotoisella) jännitteellä. Kun nuo kaksi sarjassa olevaa
lamppua palavat kirkkaimmillaan, ovat verkkojännite ja tämän
invertterin jännitteet vastakkaisvaiheisia (huippujännite
kaksinkertainen) ja puolessa välissä pimeäaikana samanvaiheisia.
Tämä tarkkuus riittäkköön, sillä tarkoitus ei ole kytkeä tätä
verkkoon. Jaksonaikaa on mahdollista säätää muuttujalla int
Int_Kesto = 380; Tässä olen
säätänyt sen havainnollisuuden vuoksi hiukan pieleen, jotta
verkkojännitteen ja invertterin taajuusero tulisi videolla
havainnollisemmaksi. Lamppujen värinästä voi myös nähdä, että
invertterin jännite ei ole aivan puhdasta siniaaltoa (lähelle
kylläkin), vaan siinä on säröä johtuen siniaallon
muodostamisesta pulssinleveysmodulaatiolla (taajuus noin 200 kHz).
Kuvassa
näkyy koko hässäkkä. Kun käytetään suurempia tehoja, on hyvä
kytkeä Arduinon ja tehoelektroniikan väliin optoerottimet. Tässä
kuvassa nämä ovat kokonaan galvaanisesti erossa toisistaan, koska
Arduino UNO saa syöttönsä tietokoneelta. Jos tämä olisi
todellinen laite, jolloin kaikki tehosyöttö tulisi yhdestä
lähteestä, esimerkiksi akusta, olisi erotus silloinkin tarpeen ja
maat (- potentiaali) kytkeä yhteen ainoastaan yhdestä pisteestä,
jolloin maajohtojen virrat ja niissä syntyvät jännitehäviöt
eivät aiheuttaisi häiriöitä. Seuraavassa ”hässäkän”
kytkentä:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv1gn1YlE2V30egjlJVWiaRg7odLrFpdj6Ah0e5fLT5uOI3MRf3bc3QT3seakfIbhwiG99Rs3MnPCUSo39K9PBW7jpuP4fRpU6Vjs2_ft32p3SCTPVj662path8cU-hqW2oNRMnfNlCu2e/s640/Kytkenta_v1.jpg)
Tuosta
kytkentäkaaviosta on hyvä huomioida seuraavaa: 6 voltin muuntajan
syöttöön tarvitaan kuitenkin 18V syöttöjännite? Tuon
verkkomuuntajan arvot ovat ensiö 230V (käämit sarjaan kytkettynä)
ja toiso 2 x 6V. Nämä ovat nimellisarvot, mitkä toteutuvat
nimelliskuormituksella. Tuo verkkomuuntaja on tarkoitettu
käytettäväksi päinvastaiseen suuntaan. Kun sen ensiöön
kytketään 230 V, on toisiossa kuormittamattomana 2 x 7 V. Eli
muuntosuhde nyt käytettyyn suuntaan ei ole tuo 230/6. Lisäksi
muuntajan ensiöön (siis tässä käytössä) pitää tulla jännite
9,87 V, eli sinijännitteen huippuarvo. Lisäksi muuntajan häviöt
ovat nyt tähän suuntaan. Seuraavaksi kuristimen (tässä 3,1 mH,
mikä ei ole optimoitu tähän käyttöön) yli pitää olla
jännitettä myös siniaallon huipun kohdalla. Lisäksi
pulssimodulaation kutsussa vähennetään (Fun_Pulssit(Int_Kesto -
50);) maksimista ”jotain, tässä tapauksessa 50 us. Tällöin
induktanssin jälkeinen huippujännite jään alle maksimin. Tällä
vähennyksellä voidaan säätää jännitettä kuormituksen tarpeen
mukaan. Tätä säätöä ei ole toteutettu tässä esityksessä.
Tietysti myös kytkintransistorin BDX34C yli jää myös pieni
jännite, vaikka se ohjataankin täysin johtavaan tilaan.
Transistorin
kollektorilla oleva diodi (NFC25G) on välttämätön, sillä tuon
kytkintransistorin siirtyessä johtamattomaan tilaan, on
induktanssissa edelleen olemassa magneettivuo, mikä purkautuessaan
synnyttää virran, millä täytyy olla purkaustie kondensaattoriin
ja muuntajaan.
Tässä
käyttämäni puolijohteet eivät tietenkään ole ainoita
mahdollisia, vaan sellaisia, mitä sattui olemaan. Toiminta ja
komponenttien jännite- ja tehon kestot ovat oleellisia. Ongelmana
minulla onkin, että lajitelmani alkaa olla niin iäkästä, että
datan löytyminen netistä on toisinaan mahdotonta.
Toteutuksessa
pääohjelman osuus on varsin vaatimaton. Siinä ainoastaan kutsutaan
aliohjelmaa, missä muodostetaan siniaallon puolikkaita ja
varmennetaan niiden välissä nollajännite. Sen jälkeen vaihdetaan
muuntajan ohjaustransistoreiden tila.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg13VbjfTxSiucYRUe-XcS8BW8TPMRvHm6iG8fBFGlFma8NSTKETUVOYHnOEpGNkc1ySQP1kZ5XOIajAGN5DmiNt858omoug4EUlQggF75UNuBOPtSakkyLxpudG0UI9OvqT5IBcy2VHqo3/s200/Kuva_2p.jpg) |
Neljän
kanavan optoerotin.
|
Aliohjemassa
on kolme (3) osaa: 1. Lasketaan ja ohjataan nousevan siniaallon arvo
ja vastaava pulssin leveys yhdeksän (9) asteen välein. Koska
Sini-funktio (Arduinon C-kielessä) käyttää radiaaneja, on
asteiden ja radiaanin suhde laskettu valmiiksi ( 0.01744). 2.
Saadulla sinin arvolla kerrotaan perusviive ja saadaan kullekin
kulmalle kytkintransistorin (2N3904 ja BDX34C) johtavuusaika (ON). 3.
Perusviiveestä vähentämällä johtavuusaika, saadaan taukoaika
(OFF). Tämän muuttuvan suhteen ansiosta jännite muuntajan syötössä
kasvaa siniaallon mukaan.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwblPaJyMRx8dLILQ0sOaJrtZz3F-GZIlsVoKZdbp28OWdG_kyVssEXxHu75dXJjaTYrNGg_HiZnW_Bm0ub-g8fKe23YGdu47blBsR4CXByMxhVJYinZSFQqiGK6FVauVwIAFfXeo6d8JY/s200/Kuva_3p.jpg) |
Tehot pieniä, mutta tukeva kiinnitys. |
|
Seuraavaksi
muodostetaan laskevan siniaallon (eli kokoaallon neljännes)
päinvastaisessa järjestyksessä. Periaate on kuitenkin sama.
Lopuksi ohjataan nollaustransistori (IRFZ44N) johtavaksi, eli
oikosulkuun, jotta päätetransistorien vaihdon aikana muuntajan
syöttöpisteen jännite on varmasti nolla (0) volttia.
Miksi
sitten ei käytetä Arduinon tarjoamaa analogialähtöä (PWM), mikä
on myös pulssinleveysmoduloitu, johtuu siitä että sen taajuus on 1
ms, jolloin 50 Hz taajuudella neljännesaallolle tulisi ainoastaan
viisi (5) porrasta. Tämä on liian karkea ohjaus. Mitä korkeampi
ohjauksen kytkintaajuus on, sitä paremmin ohjaus noudattaa
siniaallon muotoa.
OHJELMA
49
/*******************************
*
Ohjelma SiniInvertteri_49
*
07.11.2017
*
Muodostetaan 230V:in 50H:n siniaaltoa
*/
//
Määrittelyt
const
int Con_Pulssit = 6;
const
int Con_Nollaus = 5;
const
int Con_VasenTr = 8;
const
int Con_OikeaTr = 9;
boolean
Bol_Vaihto = false;
int Int_Kesto = 380; // Määrittää puolijakson keston
int Int_MaxArvo = Int_Kesto;
//
Siniaallon puolikkaan aliohjelma
void
Fun_Pulssit(int maksimi){
int Viive = maksimi;
int kulma = 9;
float
radian = 0.0;
double
sini = 0.0;
int ONviive = 0;
int OFFviive = 0;
//
Kasvava looppi
for(int i = 0; i < 91; i = i + kulma){
radian
= 0.01744 * i;
sini
= sin(radian);
ONviive
= sini * Viive;
OFFviive
= 380 - ONviive; //Int_Kesto - ONviive;
//
Kasvava sinineljännes
bitSet(PORTD,Con_Pulssit);
delayMicroseconds(ONviive);
bitClear(PORTD,Con_Pulssit);
delayMicroseconds (OFFviive);
}
// Kasvava neljännes loppu
//
Laskeva sinineljännes
for (int i = 90; i > 0; i = i - kulma){
radian
= 0.01744 * i;
sini
= sin(radian);
ONviive
= sini * Viive;
OFFviive
= Int_Kesto - ONviive;
//
Laskeva sinineljännes
bitSet (PORTD,Con_Pulssit);
delayMicroseconds (ONviive);
bitClear (PORTD,Con_Pulssit);
delayMicroseconds (OFFviive);
}
// Laskeva neljännes loppu
//
Puolijakson nollaus
bitSet (PORTD,Con_Nollaus);
delayMicroseconds (70);
bitClear (PORTD,Con_Nollaus);
delayMicroseconds (70);
}
// Pulssien aliohjelma loppu
//
Asetukset
void
setup() {
pinMode(Con_Pulssit, OUTPUT);
pinMode(Con_Nollaus, OUTPUT);
pinMode(Con_VasenTr, OUTPUT);
pinMode(Con_OikeaTr, OUTPUT);
Serial.begin(9600);
}
//Pääohjelma
void
loop() {
Fun_Pulssit(Int_Kesto - 50);//
Vakiolla voi säätää jännitettä
digitalWrite(Con_VasenTr, Bol_Vaihto);
digitalWrite(Con_OikeaTr,
!Bol_Vaihto);
Bol_Vaihto
= !Bol_Vaihto;
}
// Pääohjelma loppu