Professional Documents
Culture Documents
KÉSZÍTETTE:
Boros Rafael Ruben
VILLAMOSMÉRNÖK HALLGATÓ
KONZULENS:
Dr. Bodnár István PhD
egyetemi adjunktus
Elektrotechnikai és
Elektronikai Intézet
Miskolc, 2017
TARTALOMJEGYZÉK 2
Tartalomjegyzék
TARTALOMJEGYZÉK ................................................................................................................. 2
1. BEVEZETÉS ............................................................................................................................... 3
2. A NAP, NAPELEM, ALKALMAZÁSAI .................................................................................. 5
2.1. NAP, MINT ENERGIAFORRÁS…………………………………………….……... 5
2.2. A NAPELEM MŰKÖDÉSE………………………………………………….……… 6
2.3. OTTHONI NAPELEMES RENDSZEREK, NAPKÖVETŐ NAPELEM
ELŐNYEI……………………………….………………………………………………… 8
3. HARDVERES KIVITELEZÉSEK .......................................................................................... 12
3.1. A LÉPTETŐMOTOR VEZÉRLÉSE……………………………………...….…… 12
3.2. MIKROVEZÉRLŐ, ARDUINO…………………………………………….…...… 16
3.3. ULN2003A TRANZISZTORMEZŐ………………………………………….…… 18
3.4. ÁRAMMÉRÉS INA219 INTEGRÁLT ÁRAMKÖRREL……………….….…… 19
3.5. FÉNYÉRZÉKELÉS FOTOELLENÁLLÁSSAL…………………………….…… 21
3.6. 18650 LI-ION AKKUMULÁTOR, DC/DC BOOST KONVERTER……..…...….24
4. FÉNYINTENZITÁSMÉRÉS, ADATKIÉRTÉKELÉS ......................................................... 25
4.1. FÉNYINTENZITÁSMÉRÉS…………………………………………………….… 25
4.2. ADATRÖGZÍTÉS MEMÓRIAKÁRTYÁRA, ADATOK KIÉRTÉKELÉSE….. 26
BEFEJEZÉS ................................................................................................................................... 28
IRODALOMJEGYZÉK ................................................................................................................ 30
MELLÉKLETEK…………………………………………………………………………………… 31
BEVEZETÉS 3
1. Bevezetés
3. Hardveres kivitelezések
Az öt kivezetés:
+5V (piros)
1 (kék)
2 (rózsaszín)
3 (sárga)
4 (narancssárga)
A LÉPTETŐMOTOR VEZÉRLÉSE 14
értéke, ha eléri a maximális 1.000 W/m2 értéket, és ezt 1.024-el elosztjuk, akkor 0,94
W/m2 lenne a pontosság. Ezt a pontosságot javítani lehet az INA219 integrált
áramkörrel.
Árammérési célokra az INA219 integrált áramkör jól alkalmazható. A
mérendő árammal sorba kell kötni egy kis értékű ellenállást, mely sönt ellenállásként
funkcionál.
Ha áram folyik az ellenálláson, akkor feszültségesés következik be, ezt a feszültséget
lehet mérni. Ohm törvény alkalmazásával (2.1. képlet) az árammérést vissza
vezethetjük egy ellenálláson keresztül feszültség mérésre.
U RI (2.1.)
A megírt programban a zárójelben lévő neveken van elnevezve, melyet az 1.18. ábra
mutat.
4.Fényintenzitásmérés,
adatkiértékelés
4.1. Fényintenzitásmérés
Befejezés
Irodalomjegyzék
[1] http://nagysandor.eu/AsimovTeka/blackbody_physlet/solar_spectrum_hu.png
(letöltés éve: 2017)
[2] http://www.naplopo.hu/tudastar/szakcikkeink-hasznos-irasaink/28-
magyarorszagra-vonatkozo-fontosabb-napsugarzasi-adatok (letöltés éve: 2017)
[3] VÉGHELY TAMÁS: Napelemek és napelemrendszerek szerelése. BUDAPEST, 2013
[4] https://debrecenbar.com/2012/11/30/napkoveto-napelemes-rendszer-pro-es-kontra
(letöltés éve: 2017)
[5] http://www.solarside.hu/wp-content/uploads/2010/09/rajz.jpg (letöltés éve: 2017)
[6] http://qtp.hu/elektro/leptetomotor_mukodese.php (letöltés éve: 2017)
[7] www.ti.com/jp/lit/pdf/slrs027 (letöltés éve: 2017)
[8] http://www.hobbielektronika.hu/cikkek/willi_v20_robotika_es_avr_
kezdoknek.html?pg=4 (letöltés éve: 2017)
1. MELLÉKLET 31
Mellékletek
1. melléklet
#include <SPI.h>
#include <Wire.h>
#include <SD.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_INA219.h>
#include "RTClib.h"
File myFile; //objektum létrehozás
RTC_DS3231 rtc;
Adafruit_INA219 ina219;
#define OLED_RESET 0
Adafruit_SSD1306 display(OLED_RESET);
#define tajolas_1 9
#define tajolas_2 10
#define tajolas_3 11
#define tajolas_4 12
#define doles_1 5
#define doles_2 6
#define doles_3 7
#define doles_4 8
#define BF A11
#define BA A10
#define JF A9
#define JA A8
1. MELLÉKLET 32
#define pinCS 53
int BF_ertek, BA_ertek, JF_ertek, JA_ertek;
float current_mA = 0;
float current_ertek = 0;
float current_szazalek = 0;
int intenzitas = 0;
unsigned short int poz_tajolas = 1;
unsigned short int poz_doles = 1;
int aef, aea, aej, aeb;
int diff_fuggoleges, diff_vizszintes;
int tolerancia = 6;
int kalibralo;
int program = 0;
void setup() {
Serial.begin(115200);
Serial.setTimeout(10);
pinMode(tajolas_1, OUTPUT);
pinMode(tajolas_2, OUTPUT);
pinMode(tajolas_3, OUTPUT);
pinMode(tajolas_4, OUTPUT);
pinMode(doles_1, OUTPUT);
pinMode(doles_2, OUTPUT);
pinMode(doles_3, OUTPUT);
pinMode(doles_4, OUTPUT);
pinMode(pinCS, OUTPUT);
ina219.begin();
ina219.setCalibration_16V_400mA();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
if (SD.begin())
{
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(WHITE);
1. MELLÉKLET 33
display.setCursor(20, 20);
display.println("SD OK");
display.display();
Serial.println("SD kartya keszen all");
delay(2000);
} else
{
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 20);
display.println("SD ERROR");
display.display();
Serial.println("SD kartya inicialasi hiba");
delay(2000);
return;
} //SD end
} // Setup end
void loop() {
program++;
DateTime now = rtc.now();
JF_ertek = analogRead(JF);
JA_ertek = analogRead(JA);
BF_ertek = analogRead(BF);
BA_ertek = analogRead(BA);
aef = (JF_ertek + BF_ertek) / 2;
aea = (JA_ertek + BA_ertek) / 2;
aeb = (BF_ertek + BA_ertek) / 2;
aej = (JF_ertek + JA_ertek) / 2;
diff_fuggoleges = aef - aea;
diff_vizszintes = aeb - aej;
if (diff_fuggoleges < tolerancia) {
coiloff_doles();
}
1. MELLÉKLET 34
display.setCursor(0, 20);
display.println(current_szazalek); display.setCursor(40, 20); display.println("%");
display.setCursor(0, 30);
display.println(intenzitas);
display.setCursor(45, 30);
display.println("W/m");
display.setCursor(64, 27);
display.println("2");
display.display();
Serial.println("------------");
Serial.println(JF_ertek);
Serial.println("****");
Serial.println(JA_ertek);
Serial.println("****");
Serial.println(BF_ertek);
Serial.println("****");
Serial.println(BA_ertek);
Serial.println("------------");
Serial.println("");
program = 0;
}
if (now.second() % 60 == 0) {
myFile = SD.open("adat.txt", FILE_WRITE);
if (myFile) {
myFile.print(now.hour());
myFile.print(":");
myFile.print(now.minute());
myFile.print(":");
myFile.print(now.second());
myFile.print(",");
myFile.println(intenzitas);
myFile.close();
// Serial.println("Adat kiirva");
display.setCursor(60, 0);
display.println("Data Saved");
1. MELLÉKLET 36
display.display();
delay(999);
}
else {
Serial.println("Hiba a fajl irasakor");
display.setCursor(60, 0);
display.println("ERROR");
display.display();
delay(2500);
}
}
} // loop vege
void jobbra_tajolas(int lepesszam, int kesleltetes) {
for ( unsigned int i = 0; i < lepesszam; i++) {
switch (poz_tajolas) {
case 1:
digitalWrite(tajolas_1, HIGH);
digitalWrite(tajolas_2, HIGH);
digitalWrite(tajolas_3, LOW);
digitalWrite(tajolas_4, LOW);
poz_tajolas = 2;
break;
case 2:
digitalWrite(tajolas_1, LOW);
digitalWrite(tajolas_2, HIGH);
digitalWrite(tajolas_3, HIGH);
digitalWrite(tajolas_4, LOW);
poz_tajolas = 3;
break;
case 3:
digitalWrite(tajolas_1, LOW);
digitalWrite(tajolas_2, LOW);
digitalWrite(tajolas_3, HIGH);
digitalWrite(tajolas_4, HIGH);
poz_tajolas = 4;
break;
1. MELLÉKLET 37
case 4:
digitalWrite(tajolas_1, HIGH);
digitalWrite(tajolas_2, LOW);
digitalWrite(tajolas_3, LOW);
digitalWrite(tajolas_4, HIGH);
poz_tajolas = 1;
break;
} //switch vége
delay(kesleltetes);
}//for vege
} // jobbra vége
void coiloff_tajolas()
{
digitalWrite(tajolas_1, LOW);
digitalWrite(tajolas_2, LOW);
digitalWrite(tajolas_3, LOW);
digitalWrite(tajolas_4, LOW);
} // tekercs kikapcsolás vége
poz_tajolas = 3;
break;
case 3:
digitalWrite(tajolas_1, LOW);
digitalWrite(tajolas_2, HIGH);
digitalWrite(tajolas_3, HIGH);
digitalWrite(tajolas_4, LOW);
poz_tajolas = 4;
break;
case 4:
digitalWrite(tajolas_1, HIGH);
digitalWrite(tajolas_2, HIGH);
digitalWrite(tajolas_3, LOW);
digitalWrite(tajolas_4, LOW);
poz_tajolas = 1;
break;
}
delay(kesleltetes);
}
} // ******************************
digitalWrite(doles_4, LOW);
poz_doles = 3;
break;
case 3:
digitalWrite(doles_1, LOW);
digitalWrite(doles_2, LOW);
digitalWrite(doles_3, HIGH);
digitalWrite(doles_4, HIGH);
poz_doles = 4;
break;
case 4:
digitalWrite(doles_1, HIGH);
digitalWrite(doles_2, LOW);
digitalWrite(doles_3, LOW);
digitalWrite(doles_4, HIGH);
poz_doles = 1;
break;
} //switch vége
delay(kesleltetes);
}
} // jobbra vége
void coiloff_doles()
{
digitalWrite(doles_1, LOW);
digitalWrite(doles_2, LOW);
digitalWrite(doles_3, LOW);
digitalWrite(doles_4, LOW);
} // tekercs kikapcsolás vége
digitalWrite(doles_2, LOW);
digitalWrite(doles_3, LOW);
digitalWrite(doles_4, HIGH);
poz_doles = 2;
break;
case 2:
digitalWrite(doles_1, LOW);
digitalWrite(doles_2, LOW);
digitalWrite(doles_3, HIGH);
digitalWrite(doles_4, HIGH);
poz_doles = 3;
break;
case 3:
digitalWrite(doles_1, LOW);
digitalWrite(doles_2, HIGH);
digitalWrite(doles_3, HIGH);
digitalWrite(doles_4, LOW);
poz_doles = 4;
break;
case 4:
digitalWrite(doles_1, HIGH);
digitalWrite(doles_2, HIGH);
digitalWrite(doles_3, LOW);
digitalWrite(doles_4, LOW);
poz_doles = 1;
break;
}
delay(kesleltetes);
}
}
2. MELLÉKLET 41
2. melléklet
3. MELLÉKLET 42
3. melléklet
3. MELLÉKLET 43