Spis treści:

1) Opis turbiny, cele projektu

Projekt turbiny wiatrowej – KNE

Program wiatrak

Uwarunkowania środowiskowe

System ograniczania prędkości obrotowej – różne rozważane koncepcje

Przepisy

Odbiór mocy

2) Zadania systemu sterowania

3) Układ elektryczny i mechaniczny

4) Układ elektroniczny

5) Kod

Kod z komentarzami

Pseudokod

Wysyłanie danych na serwer

6) Zdalna archiwizacja

Koncepcje

Serwis thingspeak

Ograniczenia

7) Wizualizacja danych

8) Podsumowanie projektu

Napotkane trudności

Efekt końcowy

10) Bibliografia

1) Opis turbiny, cele projektu

Projekt turbiny wiatrowej – KNE

Projekt turbiny wiatrowej powstał w Kole Naukowym Energetyków. Jego celem było zbudowanie turbiny wiatrowej o mocy 500 W wraz z opomiarowaniem i umieszczenie jej na dachu Instytutu Techniki Cieplnej. Zebrane dane miały służyć do analizy opłacalności instalacji małych turbin wiatrowych na dachach budynków w zabudowie miejskiej.

W wyniku przeprowadzonych prac studenci działający w projekcie rozwinęli swoją wiedzę na

temat odnawialnych źródeł energii, mogli zdobyć praktyczne umiejętności w dziedzinie automatyki, elektrotechniki oraz konstrukcji i projektowania maszyn. Dodatkowo w przyszłości turbina może posłużyć jako stanowisko laboratoryjne.

Program wiatrak

W celu dobrania odpowiednich parametrów turbiny do warunków panujących w miejscu instalacji posłużył program Wiatrak 1.1 – Program do obliczeń silników wiatrowych, autorstwa Krzysztofa Baranowicza.

Wykres mocy i momentu obrotowego w zależności od prędkości obrotowej (prędkości obliczeniowa wiatru – 10 m/s):

Uwarunkowania środowiskowe

Ze względu na nietypowe umiejscowienie turbiny (na dachu budynku, w przestrzeni miejskiej) możliwa do osiągnięcia produkcja energii elektrycznej jest trudna do oszacowania, nawet przy wykorzystaniu archiwalnych danych pogodowych z terenu Warszawy (przede wszystkim dotyczących kierunku i prędkości wiatru).

Dane archiwalne z budynku wydziału inżynierii środowiska:

Wykres jakościowy czasu występowania różnych prędkości wiatru

Points scored

Wykres jakościowy szacowanej możliwej do uzyskania energii, przy uwzględnieniu częstości występowania rożnych prędkości wiatru. Najwięcej energii z pracy przy prędkości wiatru ~5 m/s.

Points scored

System ograniczania prędkości obrotowej – różne rozważane koncepcje

  • Hamulec mechaniczny – w postaci obciążników z klockami hamulcowymi na sprężynach, Obciążniki po przekroczeniu krytycznej prędkości obrotowej rozsuwają się na tyle, że następuje kontakt z powierzchnią cierną.
  • Hamulec magnetyczny
  • Automatyczny system odczytujący prędkość obrotową łopat i zmieniający kąt wirnika względem kierunku wiatru przy pomocy zmiany kąta ogona

Przepisy

Zgodnie z prawem budowlanym pozwolenie na budowę nie jest wymagane, jeśli instalacja bądź urządzenie nie wystaje więcej niż 3 metry poza obrys budynku.

Fragment ustawy:

Pozwolenie na budowę oraz zgłoszenie nie jest wymagane w przypadku wykonywania robót budowlanych polegających na instalowaniu urządzeń na obiektach budowlanych – art. 29 ust. 2 pkt 15 w zw. z art. 30 ust. 1 ustawy – Prawo budowlane.
Wyjątek stanowi instalowanie na obiektach budowlanych urządzeń o wysokości powyżej 3 m, które zgodnie z art. 30 ust. 1 pkt 3 lit. b ustawy Prawo budowlane, wymaga zgłoszenia właściwemu organowi. Oznacza to, że w celu instalacji urządzeń o wysokości poniżej 3 m, nie ma obowiązku uzyskania pozwolenia na budowę ani dokonania zgłoszenia.

Jednym z wymagań konstrukcyjnych, było więc to, aby konstrukcja nie przekraczała wysokości 3m.

Odbiór mocy

Odbiór mocy jest realizowany poprzez grzałkę elektryczną, która podgrzewa wodę w zbiorniku. Grzałka zasilana jest prądem stałym – wytworzony w generatorze prąd jest prostowany w 3 fazowym mostku prostowniczym, który wykorzystuje diody prostownicze.

2) Zadania systemu sterowania

  • zabezpieczenie przed zbyt dużą prędkością

Zbyt duża prędkość mogłaby doprowadzić do uszkodzenia uzwojenia generatora, dlatego konieczne jest zaimplementowanie systemu ograniczającego prędkość obrotową wirnika.

  • kontrola pracy w czasie rzeczywistym on-line

Umożliwia kontrolę prawidłowej pracy urządzenia, wykrywanie uszkodzeń.

Dodatkowym źrodłem informacji o turbinie jest kamera IP, zainstalowana tak, by w kadrze mieściła się cała konstrukcja.

  • pomiary i archiwizacja danych

3) Układ elektryczny i mechaniczny

Układ elektryczny zasilany jest trójfazowym generatorem, na wale generatora przymocowane są łopaty turbiny wiatrowej. Z uwagi na większą użyteczność prądu stałego oraz łatwiejsze pomiary, trzy fazy zostają wyprostowane w mostkowym prostowniku trójfazowym. Na gałęzi DC mierzone jest napięcie, natomiast natężenie mierzone jest dwókrotnie aby obliczyć żużycie energii na potrzeby własne turbiny oraz moc użyteczną na odbiorze R. Poprzez regulator ładowany jest akumulator, który zasila arduino oraz siłownik. Z uwagi na niższe napięcie zasilania arduino – 5V, zostało ono podłączone za pomocą zasilacza samochodowego USB. Obód siłownika jest zamykany i otwierany przez przekaźnik, którym streruje arduino.

  • Generator wolnoobrotowy PMG -500-40-450-G stanowi źródło zasilania układu. Jest to prądnica trójfazowa o napięciu przemiennym 40V i mocy 500W. Zostałą osadzona na froncie gondoli a bezpośrednio na jej wale zamontowano wirnik turbiny wiatrowej.
ParametrWartość
Moc [W]500
Napięcie znamionowe [VAC]3 x 40
Prędkość znamionowa [obr/min]450
Moment startu [Nm]<0,5
Moment przy mocy znamionowej [Nm]14,8
Waga [kg]12,7

Schematy generatora od producenta

Charakterystyki generatora od producenta

  • Akumulator żelowy VIPOW LP20-12 pełni funkcję zapasowego źródła energii w przypadku braku wiatru lub awarii turbiny. Umożliwia to nieprzerwane monitorowanie działania układu oraz powrót do normalnej pracy po zatrzymaniu generatora.

ParametrWartość
Napięcie [V]12
Pojemność [Ah]20
Waga [kg]6,2
  • Regulator ładowania Tracer-4215BN zapewnia odpowiednie parametry ładowania akumulatora i zapobiega jego przeładowaniu.

ParametrWartość
Napięcie nominalne [V]12
Maksymalne napięcie wejście [V]150
Maksymalna moc [W]520
Waga [kg]2,9
  • Mostek prostowniczy trójfazowy przekształca trzy fazy prądu zmiennego na na stałe napięcie.

ParametrWartość
Napięcie wsteczne maksymalne [V]100
Prąd znamionowy [A]3 x 40
Prąd w impulsie maksymalny450
  • Grzałki stanowią główny odbiór energii w układzie. W pojemniku z wodą o pojemności 20l zostłay umieszczone grzałki wymontowane z pralki. W przyszłości jest możliwość zmiany układu i podłączenie do systemu elektroenergetycznego.
  • Siłownik elektryczny 12V – CAR 250 jest przymocowany do gondoli oraz ogona. Gdy prędkość obrotowa przekracza krytyczną wartość składa ogon do momentu powrotu do bezpiecznej pracy.

ParametrWartość
Maksymalne napięcie zasilania [V]12
Prędkość wysuwania [mm/s]10
Maksymalne obciążenie [N]1000
Zasięg [mm]300
Masa [kg]1,5
  • Ładowarka samochodowa USB podłączona do akumulatora zapewnia odpowiednie napięcie dla arduino.

4) Układ elektroniczny

Układ elektroniczny oparty jest na module Arduino Uno, komunikuje się ona za pomocą wejść cyfrowych oraz analogowych z innymi elementami układu sterując nimi i zbierając pomiary. Wizualizacja oraz przesyłanie danych do internetu odbywa się dzięki dołączonemu modułowi sieciowemu, który za pomocą kabla ethernet przesyła dane dane do internetu. Na schemacie poniżej przedstawiono sposób połączenia układu.

schemat_bbb.png

Arduino Uno jest to moduł bazujący na mikrokontrolerze ATmega328. Posiada 14 analogowych wyjść/wejść oraz 6 wejść analogowych w zakresie do 5V, częstotliwość zegara wynosi 16 MHz. Płytka komunikuje się z komputerem za pomocą wbudowanego złącza mini-USB. Za pomocą tego portu następuje wgrywanie programu napisanego w języku C/C++ do mikrokontrolera.

Moduł sieciowy Ethernet ENC28J60 umożliwia połączenie mikrokontrolerów z siecią Ethernet. Interfejsem komunikacyjnym jest cyfrowa magistrala SPI. Maksymalna prędkość transmisji danych to 10 Mb/s. Na płytce znajduje się gniazdo Ethernet RJ-45 na przewód sieciowy oraz wyprowadzenia goldpin do połączenia z płytką główną. Napięcie zasilania układu to 3,3 V.

 

Czujnik temperatury DS18B20 jest to cyfrowy czujnik wyposażony w interfejs komunikacyjny 1 wire. Działa w zakresie od -55 °C do 125 °C. Zasilany jest napięciem od 3,0 V do 5,5 V.

Czujnik ciśnienia BMP180 to cyfrowy barometr o zakresie pomiarowym 200 – 1100 hPa z dokonanością 0,02 hPa. Zasilany jest napięciem z zakresu 1,8 – 3,6 V, komunikuje się przez magistralę I2C. Dodatkowo czujnik umożliwia pomiar temperatury.

Czujnik odbiciowy KTIR0711S wysyła wiązkę promieniowania poprzez nadajnik podczerwieni, następnie mierzy natężenie światła odbitego za pomocą fototranzystora. Wyjściem jest sygnał napięciowy, zależny od natężenia światła padającego na detektor. Powierzchnia jasna odbija światło, a ciemna pochłania, dlatego sygnał będzie mocniejszy w przypadku białego materiału. W układzie umożliwia on pomiar prędkości obrotowej turbiny. Wał w tylnej części generaotra został pomalowany na biało i czarno dzięki czemu czujnik odczytuje każdy obrót. elementy.jpg

Czujnik prądu ACS715 wykorzystujący efekt Halla. Sygnałem wyjściowym jest sygnał analogowy, a zakres mierzonych prądów wynosi 0 – 30A. Rezystancja układu wynosi 1,2 mΩ, precyzja pomiaru rzędu 1,5%

Dzielnik napięcia został zrobiony z 3 oporników o oporze kolejno R1=10kΩ, R2=47kΩ, R3=2,2kΩ. Umożliwia on pomiar napięcia stałego przez arduino, którego zakres wynosi 5V. Oporniki połączone szeregowo podłączone są do głównego układu, napięcie rozkłada się proporcjonalnie do oporu. Pomiar jest realizowany na oporniku o mniejszym oporze, a następnie obliczany jest ze wzoru: U = Uzmierzone/R3*(R1+R2+R3) elementy_bb.png

  • Inne zastosowane elementy
    • Podstawka do układów DIP 14 pin zwykła
    • Dwukanałowy moduł przekaźników RM3 5V 10A/125VAC
    • Zestaw przewodów połączeniowych 20cm 3 x 40 szt: m-m, ż-ż, m-ż
    • Złącze KF301 2pin (-) 10 mm 5szt
    • Płytka stykowa 830 otworów
    • Wyświetlacz LCD 4×20 znaków niebieski

5) Kod

Język programowaniaC++
KompilatorArduino Software 1.6.9

Zastosowane biblioteki:

  • DallasTemperature – obsługa termometru
  • Ethercardmaster – obsługa karty ethernet
  • OneWire – obsługa termometrów
  • Adafruit_BMP085 – obsługa barometru

Kod z komentarzami

#include <EtherCard.h>
#include <OneWire.h>
#include <Wire.h>
#include <Adafruit_BMP085.h>

char char2[7]=”&field”;
char char1[6]=””; //bedzie przechowywac chwilowo wartosci w formie znakow
char wpis[100]; //bufor
int k=0; //licznik wpisywania znakow do bufora
float napiecie=NULL, natezenie=NULL, moc=NULL, cisnienie=NULL, t1=NULL, t2=NULL;
bool czy_liczyc=1;
Adafruit_BMP085 bmp; // inicjaliza barometru

OneWire ds(7); // 7 pin – pin termometru

static uint8_t mymac[6] = {0x54, 0x55, 0x58, 0x10, 0x00, 0x24}; // ustawienie adresu mac
static uint8_t ip[4] = {192, 168, 0, 115}; // ustawienie adresu IP
static uint16_t port = 80; //ustawienie portu
byte Ethernet::buffer[700]; //zdefiniowanie wielkości bufora ethernet
static uint32_t timer;
const char website[] PROGMEM = „api.thingspeak.com”;

//zdefiniowanie zmiennych dotyczących liczenia prędkości obrotowej

double obroty;
unsigned long t=0;
unsigned long start;
int x; //aktualny stan czujnika odbiciowego
int y; //poprzedni stan czujnika odbiciowego
int n=0;
unsigned long t0=0, tx; //zmienne przechowujące czasy procesora – poprzedni i aktualny
#define tab 10 //ilośc obrotów pomiarów do uśrednienia
int pred

={0,0,0,0,0,0,0,0,0,0};
int ruch= 6;
int skok= 5000;

void setup()
{
Serial.begin(57600);
bmp.begin(); //inicjalizacja barometru
pinMode(ruch, OUTPUT);
}

//funkcja wpisywania wartosci do bufora
void wpisz (char fieldnumber, float wartosc, int cyfry, int poprzecinku)
{
if (wartosc!=NULL)
{
for(int i=0;i<6;i++) //wpisanie slowa &field1=, &field2= itd.
{
wpis[k]=char2[i];
k++;
}
wpis[k]=fieldnumber; k++;
wpis[k]=’=’; k++;
memset( (void *)char1, ‚\0’, sizeof(char1));
dtostrf(wartosc,cyfry,poprzecinku,char1); //przepisanie wartosci do char1
for(int i=0;i<cyfry;i++) //przepisanie char1 do bufora „wpis”
if (char1[i]!=’ ‚)
{
wpis[k]=char1[i];
k++;
}
}
}

//funkcja usuwająca wartości, jest to istotne, gdyż w przeciwnym razie w przypadku uszkodzenia sensora ciagle był by wysyłany ten sam wynik, co opoźnia diagnozę awarii
void zer ()
{
napiecie=NULL;
natezenie=NULL,
moc=NULL,
cisnienie=NULL,
t1=NULL,
t2=NULL,
}

void loop () //cześć programu wykonywana w pętli
{
licz_obr();
ruch_ogona();
if (millis() > timer)
{
czy_liczyc=0;
timer = millis() + 5000;

//przykladowe wartosci
natezenie=(analogRead(A1)*5./1024.-0.5)/0.133; //przeliczenie natężenia prądu za pomocą funkcji dostarczonej w specyfikacji przez producenta czujnika
napiecie=analogRead(A0)*(37.1+2.11)*5./(2.11*1024.); //obliczanie napięcia na podstawie użytych oporników w dzielniki napięcia
moc=napiecie*natezenie; //obliczenie mocy
cisnienie=bmp.readPressure(); //odczytanie cisnienia
t1 = getTemp(); //odczytanie temperatury 1
t2=bmp.readTemperature(); //odczytanie temperatury 2
k=0; //wyzerowanie licznika wpisywania znakow do bufora
memset( (void *)wpis, ‚\0’, sizeof(wpis)); //wyzerowanie bufora

//wpisywanie wartosci do bufora, struktura: wpisz(numer kanału, zmienna, ilosc cyfr rozwiniecia dziesiętnego, ilosc cyfr po przecinku);
wpisz(‚1’,obroty,4,0);
wpisz(‚2’,napiecie,4,1);
wpisz(‚3’,natezenie,5,2);
wpisz(‚4’,moc,5,0);
wpisz(‚5’,cisnienie,6,0);
wpisz(‚6’,t1,5,2);
wpisz(‚7’,t2,5,2);
zer(); //zerowanie wartosci

//wysłanie danych na serwer

ether.browseUrl(PSTR(„/update?key=<klucz API thingspeak>”),wpis, website, NULL);
}
}

//funkcja zwracająca temperaturę
float getTemp()
{
byte data[12];
byte addr[8];
if ( !ds.search(addr))
{
ds.reset_search();
return NULL;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1);
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);
for (int i = 0; i < 9; i++)
{
data[i] = ds.read();
}
ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];
float tempRead = ((MSB << 8) | LSB);
float TemperatureSum = tempRead / 16;
return TemperatureSum;
}

//funkcja obliczania prędkości obrotowej na podstawie wskazań czynnika odbiciowego
void licz_obr()
{
int a=analogRead(A3); //wartosc z czujnika odbiciowego
int b; //wartość określająca skwantowaną odczytaną jasność powierzchni
if(a>500) b=HIGH;
else b=LOW;
x=b;
if(x!=y)
{
y=x;
if (x==0)
{
n=n+1;
tx=millis(); //odczytanie czasu procesora
t=tx-t0; //obliczenie czasu od ostatniej zmiany koloru (czarny->biały)
t0=tx;

if(czy_liczyc)
{
for (int i=tab-1;i>0;i–) //przepisywanie w dol wartości w tablicy
pred[i]=pred[i-1];

pred[0]=60000./t; //obliczenie prędkości obrotowej w obr/min
obroty=0;
for (int i=0;i<tab;i++)
obroty=obroty+pred[i];
obroty=obroty/(double)tab; //obliczenie wartości prędkości obrotowej jako średniej z ostatnich 10 pomiarów
}
else
czy_liczyc=1;
}
}
if (millis()-t0>10000) obroty=0.; //jeśli nie ma odczytu przez 10 sekund, przyjmowana jest prędkość obrotowa = 0
}

//funkcja sterująca zginaniem ogona, na podstawie prędkości obrotowej

void ruch_ogona()
{
if(obroty>500)
zsun();
else
{
if (obroty<480)
rozsun();
}
}

//funkcja do rozsuwania siłownika
void zsun()
{
digitalWrite(ruch, LOW);
}

//funkcja do zsuwania siłownika
void rozsun()
{
digitalWrite(ruch, HIGH);
}

Pseudokod

dołączenie bibliotek;

zdefiniowanie zmiennych globalnych;

ustawienie adresu mac karty ethernet;

ustawienie adresu IP karty ethernet;

ustawienie portu karty ethernet;

zdefiniowanie pinów;

pętla() //cześć programu wykonywana w pętli

{

licz_obr();

ruch_ogona();

if (minęło 5 sekund)

{

wyznaczenie natężenia prądu za pomocą funkcji dostarczonej w specyfikacji przez producenta czujnika i na podstawie sygnału analogowego z czujnika prądu;

obliczanie napięcia na podstawie użytych oporników w dzielniki napięcia;

obliczenie mocy, jako iloczynu napięcia i natężenia;

odczytanie cisnienia;

odczytanie temperatury 1;

odczytanie temperatury 2 – z barometru;

wpisywanie odczytanych wartości do bufora;

zerowanie wartosci zmiennych;

}

}

//funkcja obliczania prędkości obrotowej na podstawie wskazań czujnika odbiciowego

licz_obr()

{

odczytanie wartości z czujnika odbiciowego;

określenie czy zaszła zmiana koloru;

odczytanie czasu procesora i obliczenie czasu od ostatniej zmiany koloru;

obliczenie prędkości obrotowej w obr/min;

wpisywanie wartości do bufora;

jeśli nie ma odczytu przez 10 sekund, przyjmowana jest prędkość obrotowa = 0;

}

 

//funkcja sterująca siłownikiem

ruch_ogona()

{

jeśli obroty większe niż 500 to zsuwaj silownik (zginanie ogona);

jeśli obroty mniejsze niż 480 to rozsuwaj silownik;

}

Wysyłanie danych na serwer

Wykorzystanie funkcji:

ether.browseUrl(PSTR(„/update?key=<klucz API thingspeak>”),wpis, website, NULL);

Funkcja wywołuje adres url z domeną przechowywaną w zmiennej website z dopisanym kluczem API i ciągiem znaków „wpis” zawierającym zakodowane wartości mierzonych zmiennych. Taka forma przesyłania informacji umożliwia jedynie komunikację jednostronną (arduino -> serwer), ale dla naszych zastosowań jest to rozwiązanie wystarczające.

6) Zdalna archiwizacja

Koncepcje

Rozważane metody gromadzenia danych:

  • Baza danych SQL, komputer zakupiony do projektu miałby funkcjonować jako serwer. Dane byłyby pobierane i zapisywane poprzez wysyłanie zapytań do serwera.
  • Program napisany w języku Python operujący na danych w postaci plików csv działający non-stop na komputerze stacjonarnym. Pobieranie danych odbywałoby się poprzez wczytywanie danych ze strony w formacie HTML generowanej przez kartę ethernet podłączonej do arduino
  • Skorzystanie z bezpłatnego serwisu o archiwizacji danych thingspeak.com

Serwis thingspeak

Domenathingspeak.com
Hasło reklamowe The open data platform for the Internet of Things

Zadania:

  • Pobieranie danych z sensorów
  • Analizowanie zebranych danych i wizualizowanie ich
  • Wyzwalanie reakcji/alertów

Funkcje:

  • Zbieranie danych w czasie rzeczywistym i ich magazynowanie bez limitu ilości rekordów
  • Komunikacja pomiędzy urządzeniami
  • Alarmowanie
  • Planowanie akcji
  • Otwarte API
  • Dane geolokacyjne

Działa z:

  • Arduino
  • Raspberry Pi
  • Electric Imp
  • Aplikacje mobilne i webowe
  • Twitter
  • Matlab

Aby wykorzystać potencjał serwisu należy założyć konto i utworzyć kanał.

Każdy kanał może zawierać do 8 zmiennych. Dla każdego kanału zostaje wygenerowany klucz w postaci ciągu znaków, który autoryzuje zapisywanie nowych danych oraz odczyt danych. Jeśli kanał jest ustawiony jako publiczny, wtedy do pobrania danych klucz nie jest potrzebny.

Komunikacja naszego programu z serwerem następuje w najprostszy możliwy sposób.

Karta ethernet współpracująca z arduino cyklicznie wywołuje adres url na który składa się:

  • Domena thingspeak.com
  • Klucz API autoryzujący zapis danych i jednocześnie identyfikujący kanał i użytkownika
  • Zakodowane dane

Wywołanie takiego adresu zostaje odnotowane przez serwer, który odkodowuje dane z adresu url i dopisuje je do bazy danych.

Ograniczenia

Mimo, że nie ma ograniczeń co do ilości zapamiętanych wartości, to jednak przestrzeń dyskowa thingspeak nie jest nieskończenie pojemna.

Dlatego też, pomiary można przesyłać nie częściej niż co 15 sekund, co może zaburzać wskazania i skłania do rozważenia uśredniania większej ilości pomiarów i wysyłania średniej co 15 sekund.

Takie rozwiazanie uniemożliwia obserwowanie zdarzeń krótszych niż 15 sekund.

Korzystanie z serwisu zewnetrznego może też budzić obawy co do bezpieczeństwa danych i ich prywatności.

W naszym projekcie nie jest to istotnym problemem, gdyż dane nie są poufne.

Serwis thingspeak oferuje możliwość pobrania zgromadzonych danych w celu wykonania kopii zapasowej.

7) Wizualizacja danych

  • Zastosowanie framework’u highcharts (darmowy do zastososowań niekomercyjnych)
  • Kod napisany w jezyku javascript wykorzystujący API highcharts
  • Interaktywny wykres umożliwia: wybieranie zakresu czasowego, podświetlanie i wygaszanie konkretnych pomiarów (poprzez kliknięcie nazwy parametru w legendzie pod wykresem)
  • Wykres pobiera dane z serwisu thingspeak i może uaktualniać je w czasie rzeczywistym
  • Po najechaniu kursorem na dane miejsce wyświetla się okienko z dokładnymi wartościami
  • Mierzone i wyświetlane wartości
ParametrJednostka
Prędkość obrotowaobr/min
napięcieV
natężenieA
mocW
Ciśnienie atmosferycznePa
Temeperatura 1°C
Temperatura 2°C

8) Podsumowanie projektu

Napotkane trudności

Podczas testowania wiatraka uszkodzeniu uległo mocowanie siłownika, ze względu na zamontowany ogranicznik obrotów (ograniczający zakres ruchu gondoli do jednego pełnego obrotu, aby zapobiec skręcaniu się kabli: ethernet i wyprowadzenia mocy). Zachodzi potrzeba opracowania innego rozwiązania.

Efekt końcowy

Ze wzgledu na uszkodzenia, niezbędne jest przeprojektowanie i naprawienie wiatraka, tak aby można było zrealizować zakładane na początku projektu analizy. Krótkie testowanie przed usterką pokazało, że występujące wiatry są wystarczające do wprawienia łopat w ruch z dużymi prędkościami, co pozwala przewidywać, że po naprawie będzie możliwa praca z zakładaną mocą.

10) Bibliografia

  1. Arduino UNO – https://www.arduino.cc/en/main/arduinoBoardUno, data dostępu: 24-06-2016
  2. Moduł sieciowy Ethernet ENC28J60 – http://botland.com.pl/moduly-sieciowe-ethernet/1471-modul-sieciowy-ethernet-enc28j60.html, data dostępu: 24-06-2016
  3. Czujnik temperatury DS18B20 – cyfrowy 1-wire THT – http://botland.com.pl/czujniki-temperatury/165–czujnik-temperatury-ds18b20-cyfrowy-1-wire-tht.html, data dostępu: 24-06-2016
  4. BMP180 – cyfrowy barometr, czujnik ciśnienia I2C – moduł SparkFun – http://botland.com.pl/czujniki-cisnienia/2128-bmp180-barometr-czujnik-cisnienia-modul-sparkfun.html, data dostępu: 24-06-2016
  5. Czujnik transoptor odbiciowy KTIR0711S – http://botland.com.pl/transoptory-odbiciowe/53-ktir0711s-czujnik-odbiciowy.html, data dostępu: 24-06-2016
  6. Siłownik elektryczny 12V – CAR 2500 – http://www.elektrobim.pl/sklep/silownik-elektryczny-12v-car-2500/, data dostępu: 24-06-2016
  7. KONTROLER ŁADOWANIA Tracer-4215BN 12V/24V 40A MPPT – http://www.ecosystemprojekt.pl/?151,kontroler-ladowania-tracer-4215bn-12v-24v-40a-mppt-nowosc, data dostępu: 24-06-2016
  8. Thingspeak – https://thingspeak.com/, data dostępu: 24-06-2016