Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 1 gru 2024, o 10:50


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 6 lis 2013, o 15:52 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

Witajcie wszyscy.
Jestem początkujący w programowaniu - co prawda TurboPascala miałem na studiach, ale to było wieki temu - ale od paru miesięcy gdzie zacząłem przygodę z elektroniką zaciekawiłem się również procesorami m.in. AVR i parę tygodni temu poczyniłem pierwsze kroki w świat programowania C.
Przerobiłem już zapalanie się diod w Atmedze. Za pomocą świetnego filmu mam już rozpracowany pomiar napięcia i działa to świetnie więc teraz czas na resztę programu.
Zaplanowałem zrobić kontroler oparty na Atmedze8A do sterowania grzałkami w funkcji nasłonecznienia.
Są generalnie 3 pomysły lub mix (1 z 2 i 1 z 3):
1. Załaczanie kaskadowe grzałek
2. Sterowanie napięciem za pomocą automatycznego PWM (takie sterowanie wypełnieniem PWM, aby utrzymać zadane napięcie - które da wyciągnie maksymalną moc z paneli)
3. Sterowanie napięciem w oparciu o algorytmy MPPT (w zasadzie jak wyżej z tym, że nie będzie utrzymywało stałe napięcie tylko utrzymywało maksymalną moc pobieraną z solarów).

Elektronicznie w zasadzie już mam gotowy i przetestowany układ z wykorzystaniem Mosfetu N,(schemat zamieszczę wkrótce), ale pozostaje kwestia oprogramowania Atmegi.
Zapytacie po co robić te 3 punkty skoro MPPT jest najlepsze. Otóż przeprowadziłem parę doświadczeń i nie jestem tego taki pewien. Mam trzy panele identyczne oraz 3 identyczne grzałki (no w miarę identyczne) - za pomocą Atmegi chcę podłaczyć wszystkie 3 układy i sprawdzić ich "wydajność"
Miałem jeszcze poczekać z założeniem wątku, aż rozwiążę pierwszy przypadek, ale może niepotrzebnie wyważam drzwi - i ktoś już z Was robił coś podobnego i może doradzić.

AD1. Odnośnie kaskady grzałek to trzeba zrobić tablicę przyporządkowania.
Rozrysowałem układ podłączenia grzałek. Dla 3 grzałek sterowanych przekaźnikiem istnieje 6 możliwości ustawienia ich.
Wykorzystałbym do tego celu dowolne porty - powiedzmy PD5,PD6,PD7
Kod:
DDRD |= 0xE0 //Ustawienie PD5,PD6,PD7 jako wyjścia
PORTD |= 0xE0 //Podciągnięcie PD5,6,7 do VCC


i teraz pytanie - jak można zrobić tablicę odwzorowania zgodną z załącznikiem?
I jeszcze sprawa taka, że jeżeli powiedzmy mierzone napięcie na PC3 będzie powiedzmy X to po zmianie stanu przekaźnika ("biegu" jak w aucie) nastąpi spadek lub wzrost napięcia.
Na razie tak napiszę ogólnie bez kodu - tak zamierzałem to zrobić

Podprogram 1 - opcja 67W
Ustawiamy PORTD 5,6,7 na stan wysoki (jak przy starcie) i mierzymy cały czas napięcie - jeśli przekroczy nam określony próg to wyłazi z pętli i idzie do podprogramu 2 - opcja 100W w którym odpowiednio ustawiamy porty i mierzymy napięcie i jeśli przekroczy próg to idziemy do podprogramu 3 itd.

Ale to mi się nie podoba bo co jeśli w trakcie wykonywania programu 2 okaże się że napięcie zmalało a nie wzrosło. I tutaj myślałem dać funkcję goto podprogram 1.


To nie jest gotowy projekt, przenoszę - Różowy J.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2013, o 01:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 paź 2013
Posty: 57
Pomógł: 0

kaskadę odpuść sobie na samym starcie lepsze jest PWM

Ale jak już chcesz się bawić w coś co jest mało wydajne. JA bym to zrobił na zmiennych. i porównywaniu do nich i wykonywaniu warunków.
Ale też dopiero się ucze więc może niech się ktoś bardziej obeznany wypowie.

_________________
Chomikujemy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lis 2013, o 01:25 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

Witajcie.
Trochę mi zeszło z przerobieniem dzieła Mirka, ale się udało.
Mam już 6 kanałowy miernik i mogę iść dalej.

Odpowiadając na pytanie dlaczego kaskada a nie PWM - to powiem Ci, że się uczę i dałem sobie to za cel - czyli jak zrobić takie przerzucanie biegami.
Tak naprawdę mógłbym sobie to ominąć - mianowicie na kanale 1 mierzyłbym napięcie na solarach a na kanale 2 mierzyłbym natężenie w funkcji napięcia i potem mnożąc jedno przez drugie otrzymam moc.
A moc już zachowuje się proporcjonalnie do natężenia promieniowania słonecznego więc te "biegi" mógłbym sobie odpuścić (dla przykładu wymnożyłem odczyt z 1 i 6 kanału i w zależności od wyniku dioda się inaczej zachowuje), ale nie chcę.
Zamiast robić program "hello World" wolę zrobić taki program zmieniający biegi.

Ale do rzeczy.
Oto przerobione dzieło Mirka i pytanie.
Żeby się to wszystko nie mieszało dałem dla każdego kanału nową funkcję z nowymi zmiennymi.
Czyli funkcja get_vol1, get_vol2 itd. Na początku myślałem, że zmienna zadeklarowana w funkcji nie jest globalna i przy drugim wywołaniu funkcji powinna się zerować, ale nie w tym przypadku - bo ustaliliśmy że tą samą wartość funkcja ma do uśrednienia przeliczyć parę razy - więc musiałem dać tyle funkcji ile zmiennych - ale może się mylę.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lis 2013, o 11:49 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2587
Pomógł: 128

Z innej beczki. Mozesz jeszcze dorobic funkcjonalnosc rownomiernego obciazenia stykow przekaznikow (zmieniac numery zalaczonych dla tego samego zapotrzebowania na moc) ;)

Sent from my GT-I9300 using Tapatalk



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lis 2013, o 15:59 
Offline
Użytkownik

Dołączył(a): 11 lut 2013
Posty: 29
Lokalizacja: Dziekanów Leśny
Pomógł: 1

Ciekawy projekt. Chętnie się w wolnej chwili 'wgryzę', zwłaszcza, że pracuję nad podobnymi historiami. Na razie gratulacje i pozdrawiam.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 02:47 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

micky napisał(a):
Z innej beczki. Mozesz jeszcze dorobic funkcjonalnosc rownomiernego obciazenia stykow przekaznikow (zmieniac numery zalaczonych dla tego samego zapotrzebowania na moc) ;)

Jest tylko parę kombinacji więc nie wydaje mi się żeby to miało sens.

Kaskadę robię dla nauki jęzka C i potem do porównania z PWM i MPPT - docelowo chyba będzie to ostatnie z uwagi na wydajność, ale nie uprzedzajmy faktów.
Na początek każdemu się wydaje że MPPT będzie najlepsze, ale należy zwrócić uwagę na fakt, że Słońce w jakimś krótkim okresie świeci z jednakową mocą. Gdy teraz tą jednakową moc poszatkujemy na odcinki (PWM, MPPT) z wypełnieniem 50% (powiedzmy przykładowo) to przez pierwsze 50% czasu uzyskamy jakąś moc na odbiorniku potem jest czas przerwy i energia się marnuje potem jak przyjdzie nam czas pracy to Słońce nie da nam więcej energii, bo ani solar ani powietrze nie magazynuje jej (przynajmniej nie w znaczącym wymiarze). Czyli zmniejszając wypełnienie tylko sztucznie zwiększamy napięcie na kolektorach - a wiąże się to z bezwładnością miernika czy kontrolera.
Zastosowanie kondensatora który w czasie przerwy w pracy odbiornika będzie się ładował niby rozwiązuje problem, ale nie do końca. Jaki dać kondensator? Największy z możliwych? Znowu na skutek pulsowania napięcia trzeba dać filtr LC lub RC i z pozoru prosta sprawa nie jest taka prosta. A Moce mierzone na MPPT czy PWM na aukcjach mogą się mijać z rzeczywistością z uwagi na uśrednianie napięcia. Idealnie żeby w każdym cyklu procesora była zliczana cząstka MOCY uzyskanej - a czy tak robią te sterowniki?
Na razie zdradzę Wam tylko, że przy próbach na Kaskadzie uzyskałem większą temperaturę na zasobniku niż przy PWMie sterowanym z LK. Tylko że jest tak wiele parametrów dodatkowych że na tą chwilę ciężko będzie to określić dokładnie (tzn zużycie wody w danym dniu itp)
Dlatego pomysł z AVR i pomiarem na raz na wszystkich układach z tym samym nasłonecznieniem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 15:14 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

No tak, ale ktore ogniwa to maja. Producenci Chrl raczej nie chwala sie parametrami



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lis 2013, o 16:09 
Offline
Użytkownik

Dołączył(a): 11 lut 2013
Posty: 29
Lokalizacja: Dziekanów Leśny
Pomógł: 1

Nie bardzo rozumiem cel cwiczenia ( no poza nauka programowania...).sprawnosci poszczegolnych regulacji sprawdzono. Stosuje sie je na zasadzie price/performance....tzn. tanie rozwiazanie ->tania regulacja...
mam kilka pytań ad hoc....na razie bez analizy kodu....

1/ jesli chcesz mierzyc dokladnie 'uzysk' - czyli moc dostarczaną przez ogniwo to raczej Attiny 26 - wieksza rozdzielczosc ADC czemu wybraleś Mega8A?
2/ dlaczego stosujesz przekaźniki w projekcie? - duza bezwladnosc przełaczania zabije ci efektywnosc przelaczania, dodatkowo obciazenie reaktancyjne cewek....no chyba, ze mowimy o takim procesie "slonce wyszlo wlacz, slonce zaszlo wylacz ale wtedy to po co dokladnie mierzyc napięcie?"
I jeden hint....w postaci linku ( z przykladowym algorytmem 'oprogramowanym' - co prawda nie na atmelu ale kod jest kod....

http://ww1.microchip.com/downloads/en/AppNotes/00001521A.pdf

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 01:09 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

gayetan napisał(a):
( no poza nauka programowania...)

dokładnie.

gayetan napisał(a):
1/ jesli chcesz mierzyc dokladnie 'uzysk' - czyli moc dostarczaną przez ogniwo to raczej Attiny 26 - wieksza rozdzielczosc ADC czemu wybraleś Mega8A?

rozdzielczosc ADC Attiny26 i Atmega8A jest 10bitow więc nie widzę różnicy.
dla Attiny:
Kod:
– 10-bit ADC
11 Single Ended Channels
8 Differential ADC Channels
7 Differential ADC Channel Pairs withProgrammable Gain (1x, 20x)

dla Atmega8A
Kod:
– 8-channel ADC in TQFP and QFN/MLF package
• Eight Channels 10-bit Accuracy
– 6-channel ADC in PDIP package
• Six Channels 10-bit Accuracy


gayetan napisał(a):
2/ dlaczego stosujesz przekaźniki w projekcie? - duza bezwladnosc przełaczania zabije ci efektywnosc przelaczania, dodatkowo obciazenie reaktancyjne cewek....no chyba, ze mowimy o takim procesie "slonce wyszlo wlacz, slonce zaszlo wylacz ale wtedy to po co dokladnie mierzyc napięcie?"

Przekaźniki są tylko tymczasowo do odpalenia MPPT i działają jak napisałeś, ale skoro są to będzie idealne porównanie o ile razy wzrośnie efektywność przy PWM a ile przy MPPT.
Ale rozgadałem się, a tu miał być jeżykC a nie elektronika i celowość.

Mój kod do obsługi tych 3 przekaźników i wspomnę tylko że to jest mój pierwszy kod w całości napisany bez samouczków itp:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

I jeszcze na koniec dodam, że zmienna Timer1 mogłaby iść z Timera wbudowanego i prescalera, ale nie wiem czy to ma jakieś znaczenie. Tak też powinno działać. Opóźnienie dodane żeby przekaźniki zmieniały się nie częściej niż co 10sek. Nie mam co prawda teraz możliwości sprawdzenia na Atmedze, ale patrząc się na ten kod mam tylko dwie wątpliwości.
Czy w funkcji if dajemy jeden = czy podwójny ==
Dlaczego jeśli dajemy == to nie dajemy przy znaku mniejszości i większości << i >>



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lis 2013, o 02:21 
Offline
Użytkownik

Dołączył(a): 01 lut 2013
Posty: 28
Lokalizacja: okolice Koszalina
Pomógł: 1

"=" -przypisanie
"==" -porównanie

:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO