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



Teraz jest 27 lip 2026, o 15:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 21 ] 
Autor Wiadomość
PostNapisane: 2 gru 2014, o 14:51 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

Witam serdecznie,
Trochę już walczę z tematem i nie mogę sobie za bardzo poradzić.
Mianowicie jestem w trakcie budowy zasilacza impulsowego sterowanego sygnałem PWM z uC Atmega8.
Napisałem już program realizujący pomiar napięcia oraz prądy na wyjściu zasilacza oraz program do generowani sygnału PWM.
Chciałbym aby maksymalny prąd wyjściowy wynosił 4A i pracował jako źródło prądowe.
Problem mój polega na zbudowaniu algorytmu który będzie tak regulował współczynnik wypełnienia płynnie aby na wyjściu były utrzymane te 4A.
Pomiar prądu dokonuje na boczniku oraz wzmacniaczu operacyjnym obliczenia są tak wykonane że gdy przez bocznik płynną 4A to na wejściu ADC mam 2 V.
Częstotliwość pracy to 70kHz. Myślałem że może zrobić to na if'ach ale jakoś też nie mam pomysłu na to.
Bardzo byłbym wdzięczny gdyby ktoś miał jakieś rady albo robił już takie ograniczenie prądowe ponieważ w C jestem trochę noga.

Pozdrawiam serdecznie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 15:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lis 2013
Posty: 77
Pomógł: 6

Watpliwości :
1. Rozumiem ze skoro PWM ma 70kHz to sygnał prądowy próbkujesz minimum 140kHz i uśredniasz ?

Odpowiedzi :
1. Potrzebujesz zaimplementować jakiś typ regulatora : PID, dwustanowy, w zależności co chcesz realizować.

Podobne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 15:59 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

dziękuję za odpowiedź

1. Niestety z tego co wyczytałem w nocie to atmega8a może próbkować z max F 15kHz
Obrazek

2. Hmm PID coś o tym słyszałem ale rozumiem że nie jest gotowa funkcja w C dla uC ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 gru 2014, o 18:05 
Offline
Użytkownik

Dołączył(a): 22 sie 2013
Posty: 73
Pomógł: 7

Zobacz sobie ten filmik: https://www.youtube.com/watch?v=g1BXAfzC89g tam od 35min. gość pokazuje prosty program do sterowania przetwornicą. Co prawda na arduino ale może Cie to jakoś naprowadzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 14:44 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

hmm trochę mnie ten filmik naprowadził,

Obrazek

chodzi mi o to aby przy zmianie rezystancji obciążenia, a co za tym idzie zmiany "ochoty" na ilość prądu nie wpływała na wartość tego prądu. czyli aby współczynnikiem wypełnienia regulować jego wartość a dokładnie gdy impuls jest załączany to aby był tak długo załączany żeby prąd wzrósł tylko do wartości 4 A.
Aktualnie reguluję współczynnik wypełnienia poprzez rezystor wpięty do ADC atmegi, mam też już przygotowany bocznik na którym mierzę napięcie sygnał jest wzmacniany na wzmacniaczu i gdy płynie prąd 4 A wartość ADC to równe 1000. ale jak myślę jak zaadaptować wartość tego pomiaru tak aby regulowała płynie współczynnikiem wypełnienia to boli mnie głowa, bo na sztywno to robię tzn np
"if (ADC<1000)OCR2 = 100;
else OCR2 =200; "
ale to takie sztywne przypisywanie wartości a nie płynne. ;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 15:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Może w ten sposób?
Zmieniając wartość zmiennej Imax mamy wpływ na maksymalny prąd wyjściowy.
unit8_t Imax = 1000
"if (ADC<Imax) ++OCR2 ;
else - - OCR2 ; "

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 15:13 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

a jaki jest skutek "++OCR2" ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 15:17 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

A może tak?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


------------------------ [ Dodano po: 2 minutach ]

venciak napisał(a):
a jaki jest skutek "++OCR2" ?


taki że wartość w rejestrze OCR2 jest zwiększona o jeden.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 15:23 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

rozumiem że zwiększana o 1 aż do momentu osiągnięcia ADC<=1000 ???
tylko zwiększa się to z częstotliwością taktowania procesora ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 15:23 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

To co z kolegami Ci zapodaliśmy to takie dociąganie, jeżeli odczyt z ADC jest mniejszy od 1000 czyli płynie prąd < 4A to zwiększa się wartość w rejestrze od PWM o jeden, czyli impulsy w każdym obiegu pętli są corasz szersze w przypadku gdy wartość będzie równa 4A to w każdym obiegu pętli wartość OCR2 będzie dekrementowana czyli zmniejszy się wartość wypełnienia. To takie "programowe ujemne sprzężenie zwrotne" jakby to ładnie powiedzieć.

------------------------ [ Dodano po: 2 minutach ]

venciak napisał(a):
rozumiem że zwiększana o 1 aż do momentu osiągnięcia ADC<=1000 ???


nie, do momentu aż będize 4A czyli ADC=1000

venciak napisał(a):
tylko zwiększa się to z częstotliwością taktowania procesora ?


nie, z częstotliwością obiegu głównej pętli programu. Jeżeli chcesz by ta wartość zwiększała się o jeden bądź malała z jakąś określoną częstotliwością ustaw sobie jakiś timer np co 10us i w nim albo zwiększaj albo zmniejszaj w zależności od tego co pokazuje Ci ADC ale lepiej żeby to było jak najszybciej bo prąd Ci za dużo może narosnąć.

------------------------ [ Dodano po: 4 minutach ]

Ogólnie rzecz biorąc to taki najprostszy regulator, a jaki to Ci nie powiem bo automatyke miałe dawno i jej nie lubiłem ;p


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 15:29 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

dokładnie, zależy mi na tym aby było jak najszybciej czyli będzie należało użyć timera. więc siadam do lektury dotyczących timerów:) jak macie jakieś ciekawe artykuł lub posty to chętnie przyjmę każdą propozycję :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 gru 2014, o 15:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Zawartości OCR2 będzie zwiększana aż ADC>Imax wtedy nastąpi zmniejszanie OCR2
Gdy osiągniemy zadany prąd wtedy OCR2 będzie oscylować +-1


EDIT kolega uprzedził wyżej
EDIT2 jeśli ma być szybko to zrobić to w pętli a gdy ADC = Imax wtedy dopiero uruchomić pozostałe funkcje np: wyświetlanie danych. W pętli nie używaj delajów

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 08:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lis 2013
Posty: 77
Pomógł: 6

Primo ultimo : Częstotliwość graniczna Nyquista. Częstotliwość próbkowania sygnału powinna być 2x wieksza od czestotliwosci sygnału. Nie wiem jak masz zrealizowana cześc analogowa pomiaru bocznik + wzmacniacz. Ale twój pomiar jest wysoce nie pewny.

Taki prosty regulator na poczatek wystarczy, jak go już zaimplementujesz polecam PID, PID_2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 08:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Jest okazja to zapytam.
Czy dobrze zrozumiałem.
Jeżeli steruje w przetwornicy sygnałem pwm i mierzę napięcie na wyjściu przez ADC to częstotliwości próbkowania ADC powinna być 2x większa od sygnału pwm?

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 09:04 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

Chyba nie, wydaje mi się że tutaj chodzi o częstotliwość próbkowanego sygnału, czyli częstotliwość próbkowanego sygnału powinna być dwa razy wyższa niż sygnał próbkowany. no ale w sumie są próbkowane przebiegi generowane przez PWM :> aaaj nie wiem, tym bardziej że jak pisałe wyżesz częstotliwość pomiaru atmegi to makx 15kHz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 09:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Takie bezpośrednie próbkowanie sygnału PWM i tak nie wiele wniesie jeśli nie będzie układu całkującego badane napięcie. Robiłem kiedyś przetwornice step-up ze stabilizacją prądową dla led na tiny13 z dobrym skutkiem, ale napięcie badane musi być wygładzone i uśrednione.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 10:37 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

tzn sam PWM nie będzie próbkowany tylko jego skutek tak jak na obrazku wyżej, a zasilacz impulsowy mam zamiar użyć do powolnego ładowania akumulatora 12V także napięcia nie są szybko zmienne lecz prąd tak jak w tym miejscu zaznaczyłęm

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 10:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

W tym temacie kiedyś opisałem moją lampkę http://www.elektroda.pl/rtvforum/topic2476512.html,
a poniżej fragment kodu odpowiedzialnego za stabilizację prądu i miękki start, aby nie było uderzenia prądowego.
Wszystko działało bez użycia przerwań dlatego ten jeden wait się tam napatoczył :)
Może Ci się do czegoś przyda idea...

Składnia: [ Pobierz ] [ Ukryj ]
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Reg - wartość wpisywana do rejestru PWM
Amper - odczyt prądu z bocznika
Limit - wartość prądu, który stabilizuję

W warunkach nie może być znaku "=", bo trzeba dać szansę układowi, że "trafi" w odpowiedni prąd i nie będzie musiał wciąż modyfikować PWM :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 11:40 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

kurdę basica nie znam za bardzo ale staram się to trochę rozpisać i przekształcić w C :) dzięki wielkie kolego .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 11:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Ależ to wszystko jest proste, przy if dodasz tylko nawiasy, a zamiast then otworzysz klamry, incr to ++, a decr --, reszta już powinna być jasna :)


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 gru 2014, o 20:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

SylwekK napisał(a):
Takie bezpośrednie próbkowanie sygnału PWM i tak nie wiele wniesie jeśli nie będzie układu całkującego badane napięcie. Robiłem kiedyś przetwornice step-up ze stabilizacją prądową dla led na tiny13 z dobrym skutkiem, ale napięcie badane musi być wygładzone i uśrednione.


Ja oczywiście miałem na myśli pomiar po wygładzeniu filtrem LC

Podobnie jak kolega SylwekK zrealizowałem regulację prądu w moim prostowniku.
Niestety nie podoba mi się długi czas narastania jego gdy np: ustawię wartość 7A
Myślę jednak nad czymś w stylu PID gdzie z początku wartość pwm rosła by szybko a w końcowej fazie wolno dochodziła do zadanego progu.

_________________
"Nie programuj w święta - bug się rodzi"



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: 21 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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