Serdecznie Witam wszystkich!
Oto mój problem.
Pracuję nad przetwornicą step-down dc/dc do prądnicy prądu przemiennego wzbudzanej magnesami stałymi, bez uzwojenia wzbudzenia. Chciałbym wykonać tenże układ na uC z wykorzystaniem czegoś takiego jak tzw. feedback - aby bez względu na to jakie napięcie jest na wejściu na wyjściu otrzymywać zawsze stałą wartość z możliwością delikatnej regulacji 11-15 [V]. - tutaj za pomocą ADC
Przejdę do sedna, zadany regulator/przetwornica miała by stabilizować napięcie z układu unregulated DC 16-70[V] na DC 12-14.5[V] w celu ładowania akumulatora i zasilania odbiorników w motocyklu. Posiadam zestaw Andromeda 1.5a z uC Atmega32A i bluebook. Zawzięcie analizuję treści i poradniki lecz moja wiedza jest jeszcze dość mizerna i ciężko mi wykrzesać coś więcej niż zawarte prostsze przykłady Pana Mirka

. Wymyśliłem sobie aby całość zrealizować po stronie wyprostowanego napięcia DC ponieważ ściemniacz(bluebook) pracował na sinusoidzie sieci sztywnej o stałej częstotliwości, a u mnie ulega ona zmianie wraz z obrotami prądnicy.
Stwierdziłem że zaciągnę do pracy pomiar napięcia wyjściowego ADC i PWM sprzęgając je jakoś razem i kluczując tym sposobem za pomocą driver'a bramką mosfeta typu n w układzie High Side z f=5kHz a dalej podając sygnał na dławik 140uH/15A z równolegle diodą zwrotną i kondensatorem do masy w standardowym układzie przetwornicy step down.
Wpadłem na pomysł aby użyć sprzętowego rejestru OCR2(PWM) i zwiekszać go lub zmniejszać gdy uzyskiwane napięcie na wyjściu przetwornicy przekracza lub nie wartość zadaną np. 13V która odpowiada przyrównywanej wartości ADC. np. taki warunek if (wynikADC>13V) zwieksz OCR0...else...zmniejsz OCR0 bądź za pośrednictwem pętli while.
Odnośnie przetwornika analogowo-cyfrowego:
Napięcie odniesienia wybrałem 2,56V. Dobrałem dzielnik rezystorowy na 270k i 10k o współczynniku podziału 28. Przy 12V na wejściu dzielnika ADC=171,42, natomiast przy 15V ADC=214,2. Ustawiłem programowo chwilowo wartość na 170. Napięcie maksymalne graniczne na wejściu dzielnika oszacowałem na 70V wtedy ADC=1000.
Odnośnie zmiany wypełnienia impulsu(PWM):
Ustawiłem częstotliwość na około 4kHz, i skonfigurowałem do pracy w metodzie Fast PWM.
Zastanawia mnie tylko sposób rozwiązania, idea warunku sterowania PWM przez ADC(ich powiązania). Chciałbym się upewnić czy mój pomysł jest w miarę poprawny, prosiłbym o drobną wskazówkę jakich funkcji/rejestrów uC użyć i jak mniej więcej skonfigurować aby ruszyło. Układu jeszcze nie testowałem. Kompiluje się prawidłowo na płytce ATB, lecz zastanawia mnie czy fizycznie ma prawo funkcjonować? Oto kod i schemat mojego układu:
Przepraszam za ewentualne błędy jest to mój pierwszy temat na forum.
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.