Skocz do zawartości

Wybieranie ogniw zasilających przy pomocy przekaźników.


Vroobee

Pomocna odpowiedź

Eh, ciężko opisać wrażenia z oglądania PCB. Generalnie pewnie wszystko jest połączone (nie sprawdzałem w 100%) więc to trochę jak kompilujący się program - pierwszy warunek został spełniony. A teraz czy robi to co miał robić? W przypadku tej płytki miałeś wydzielić dwie osobne wyspy masy. Wyspy, czyli duże, w miarę spójne placki miedzi. W jednej miałeś zanurzać elementy mocy, w drugiej część pomiarową. Pierwsza zamieniła się w żałosnej szerokości (20-30mils?) ścieżynkę pomiędzy C1 a C2 połączoną z resztą elementów po lewej stronie płytki długą ścieżką przez pojedyncze przelotki. Nie wykorzystałeś mnóstwa powierzchni właśnie na tę masę (a zmarnowałeś ją na niepodłączoną wylewkę nie wiadomo czego). Na płytce robionej z założeniami małych rezystancji i dużych prądów właściwie nie powinno być pustego miejsca. Wszystko co można powinna zajmować masa, ale tak wylana i tak poprzecinana przerwami by stanowiła realizację pierwotnego zamysłu. Do której masy zamyka się prąd płynący przez akumulator i R28? Dlaczego napięcia pomiarowego nie bierzesz wprost z padu z R28 tylko z jakiegoś złącza? Dlaczego driver nie stoi pomiędzy T1 a C20 - tam miałby idealnie blisko do głównej masy itd. Dlaczego obwód oscylatora kwarcowego jest tak rozciągnięty? Dlaczego jego kondensatory C9 i C10 stają na jakiejś przypadkowej ścieżce a nie są podłączone wprost do pinu 6 procesora? Przecież on właśnie po to tam jest. Kładziesz blisko kwarc, tuż obok niego oba 22pF i zawijasz je do pinu 6. Dopiero od tego pinu masa może być pociągnięta do innych GND procesora. Nic przez ten fragment masy nie powinno płynąć dalej, bo oscylator to jeden z najczulszych fragmentów Twojej płytki. Od niego zależy niezawodność działania całości. Moim zdaniem połączyłeś to dokładnie tak jak pokazał Ci program a nie tak jak miało być. Płytka jest pierwszym, bardzo zgrubnym podejściem i w żadnym stopniu nie spełnia założeń wstępnych. Jeżeli masz ochotę ją poprawić, przeczytaj raz jeszcze co pisałem wcześniej. Może spisz to na kartce i zacznij od nowa. To wszystko da się spełnić. Wywal wszystkie ścieżki i zacznij od przesuwania elementów. Pogrupuj elementy które muszą stać na wspólnej masie (np. te od przetwornicy łącznie z driverem). Na razie tej masy nie wylewaj ale załóż sobie, że będą połączone wspólnym dużym plackiem i tamtędy nie mogą przechodzić żadne inne ścieżki. Pierwszą ścieżkę zacznij rysować gdy masz już pewność w jaki połączysz wszystkie masy wszystkich elementów. Możesz ją sobie najpierw całą narysować. Może to niezły pomysł. Taki półfabrykat mógłbyś pokazać i tam od razu będzie widać czy projekt rokuje.

To tylko moje prywatne zdanie i na pewno płytka spełniająca wszystkie założenia łatwa ani ładna nie będzie. Do tego dochodzi rosnąca trudność prowadzenia mniej znaczących ścieżek w miarę zapełniania powierzchni więc często trzeba przesuwać już połączone elementy lub całe fragmenty układu. Mimo wszystko myślę, że da się wiele poprawić. Wyobrażaj sobie w głowie prądy - to pomaga 🙂 Ścieżki napięciowe/bezprądowe (sygnałowe, cyfrowe) mogą być cienkie i długie, ale te prądowe muszą być krótkie i szerokie.

I nie bierz sobie do serca krytyki. Każdemu łatwo mówić gdy nie siedzi przy kompie i nie wciska ścieżek między pady. Zrobiłem takich płytek setki, ale każda jest inna, wyjątkowa i nie ma uniwersalnych porad.

Link do komentarza
Share on other sites

Konstruktywną krytykę biorę do siebie 🙂 to są dobre porady, które wręcz należy wziąć i warto słuchać się kogoś kto ma doświadczenie w czymś w czym sam nie mam! Poprawię się na pewno 🙂

Link do komentarza
Share on other sites

Okej, wracam do tematu po dwóch miesiącach. Miałem okazję chwilę posiedzieć nad schematem. Spróbowałem zrobić poprawki, na które zwrócono mi wcześniej uwagę. Wyniki są w obrazkach 🙂 czekam na krytykę o ile ktoś jeszcze pamięta o co chodziło 😃

P.s. W czerwonych kółkach przedstawione są łączenia mas. Masa analogowa połączona jest z masą 5V pod procesorem, a masa 5V z masą przetwornicy na górze po lewej stronie.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Witam po długiej przerwie w temacie 🙂

Właśnie jestem na etapie testowania płytki. Generalnie wyszła bardzo fajnie - wahania wartości z ADC na poziomie 3-4 LSB dla każdego pomiaru napawa mnie wielką radością 🤣 ale...

.. no właśnie. Jak przyszło do testowania przetwornicy już nie było tak fajnie. Pierwsze testy - spalone 2 tranzystory. Człowiek uczy się na błędach (rada dla początkujących, w przypadku przetwornicy boost nigdy nie stawiajcie tranzystora w stanie przewodzenia na dłuższy czas - czyt. UWAGA WIELKIE ZWARCIE). Jak już udało mi się uruchomić fast PWM na ATmega32 na timerze 16 bitowym z prescalerem 256 (częstotliwość 62500 Hz) postanowiłem zmierzyć napięcie wyjściowe na przetwornicy przy zasilaniu z USB. Próby, próby i jeszcze raz próby ustalenia wartości wypełnienia dla uzyskania odpowiedniego napięcia. Ale w końcu udało się. Podłączam VUSB i patrzę na miernik - pierwsze 2 sekundy piękne i stabilne 8,4 V. Po dwóch sekundach spadek do 6,9 i wahania na poziomie +/- 1,5 V 🤯 Co się stało ?

Postanowiłem przeliczyć jeszcze raz przetwornicę. Parametry obecnej:

- L = 220 uH,
- Cin/Cout = 220 uF,
- Shottky 1N5819.

- N-Mosfet STS11NF30L (LINK )

Znalazłem sobie kalkulator przetwornic boost na stronie Adafruit, no i wpisałem parametry jakie chcę uzyskać na swojej przetwornicy. Wyniki na obrazku, który załączam poniżej.

Czyżbym się walnął i dał nie taką cewkę ? 220 uH a 22 uH to spora różnica 😃 może przez to są takie wahania ...

Link do komentarza
Share on other sites

Takie układy uruchamia się przy użyciu zasilacza laboratoryjnego z kontrolowanym napięciem i ograniczeniem prądu. Jeśli ustawisz limit np. na 2A to nie masz szans spalić tranzystora którego prąd jest np. 10-krotnie większy. Przy zbyt długim załączeniu (i narośnięciu prądu) napięcie spadnie i układ się wyłączy.

Przetwornicę boost musisz odpalać z obciążeniem. Bez tego napięcie wyjściowe będzie nieprzewidywalne, bo nic nie ściąga energii z kondensatora wyjściowego. Tu nie jest tak jak w step-down, gdzie Uout=Uin*PWM. Podłącz do wejścia 5V, ustaw PWM=50%, daj na wyjście 39Ω i wtedy zacznij zabawę. Możesz robić proste eksperymenty ze zmianą napięcia (i mocy) przez zmianę wypełnienia a potem próby stabilizacji napięcia przy zmianach obciążenia gdy już napiszesz pętlę regulacji. Może daj ograniczenie (w programie) wypełnienia (np. do 80-90%) no i zawsze będzie musiało działać programowe ograniczenie nadnapięciowe wyłączające PWM (np. na krótką chwilę - tryb burst) gdy obciążenie jest zbyt małe tj. pobiera za mało prądu.

Indukcyjność dławika nie wpływa na napięcie przy danym wypełnieniu. Prąd może szybciej lub wolniej rosnąć w czasie cyklu i z tego powodu będą większe lub mniejsze tętnienia napięcia związane z samym przełączaniem. Poza tym takie kalkulatory podają minimalną indukcyjność a nie optymalną. Przy tej wyliczonej będziesz miał nie większe tętnienia prądu w dławiku niż założone. Większy dławik po prostu kosztuje więcej i jest większy - dlatego nie ma sensu przesadzać, ale Twoje 220uH jest jeszcze OK dla 62kHz i daje małe wahania prądu co jest dobre ze względu na pomiar od strony wejścia. Może być mniejszy, jeśli będziesz potrzebował dużych prądów. Trochę już nie pamiętam założeń 🙁

Link do komentarza
Share on other sites

Dzięki za odpowiedź 🙂

W domu nie mam dostępu do zasilacza laboratoryjnego, dlatego sprawdzam na USB i zasilaczu sieciowym. Jeśli chodzi o obciążenie dałem rezystor 330Ω i zwykłą czerwoną diodę LED. Wydawało mi się, że przy stałym napięciu (5V z USB), stałym taktowaniu klucza i stałym obciążeniu w postaci diody z rezystorem, wyjście nie powinno aż tak bardzo się wahać, żeby był potrzebny od razu regulator. Jak wspomniałem przez pierwsze dwie sekundy jest ok, później zaczyna się kosmos.

Link do komentarza
Share on other sites

A ten timer to rzeczywiście ma włączony prescaler 1:256 i do tego jeszcze sam liczy z okresem 256 (co daje PWM 244Hz), czy jednak bity podziału zegara masz ustawione na 1:1 i dalej już tylko 8-bit fast PWM?

OK, jeżeli jest jakieś obciążenie, to jakbyś nie ustawił wypełnienia (choć warto zaczynać od małych typu 50%) to napięcie wyjściowe wzrośnie tylko do takiego, przy którym równowaga mocy in/out zostanie zachowana. Chociaż LED+330Ω to raczej marne obciążenie i napięcie wyjściowe robi się na tyle duże (aby popłynął odpowiedni prąd), że zaczynają przepuszczać np. elektrolity wyjściowe.

Być może też wejściowe 5V przysiada. W takich warunkach, bez kontroli napięć i prądów we/wy trudno coś na poważnie robić.. Skołuj zasilacz laboratoryjny - i tak Ci będzie potrzebny do symulacji baterii słonecznej i robienia MPPT.

Wypełnienie możesz zmierzyć multimetrem. Zmierz na zakresie DC napięcie na pinie PWM procesora. Wynik będzie ułamkiem zasilania procka równym wypełnieniu, tj. np. 330mV to 10% przy Vcc=3.3V. Czasem można się pomylić programując tryb wyjść (tzw. prosty/zanegowany PWM).

Link do komentarza
Share on other sites

Jest 20.01.2017 dlatego wrzucam krótki wynik postępów mojej pracy 🙂

Podczas prac miałem trochę przestojów związanych z magisterką i innymi zajęciami ale ostatnio powróciłem do tematu i postanowiłem ponownie zająć się programowaniem układu przetwornicy. Ale najpierw wrócę do trochę wcześniejszych wydarzeń. Mianowicie po wykonaniu projektu płytki zleciłem jej wykonanie do firmy Satland. Z wykonania samej płytki jestem bardzo zadowolony 🙂 następnie polutowałem wszystkie elementy. W efekcie cała płytka prezentuje się w następujący sposób:

Po tym wszystkim rozpocząłem programowanie płytki. Na początku kilka prostych programów typu miganie diodą itp., żeby sprawdzić czy wszystko odpowiada. Następnie spróbowałem zaimplementować prosty regulator PID do boostowania napięcia przez przetwornicę. Źródłem był zasilacz 5V z ograniczeniem do 500 mA. I już tutaj popełniłem można powiedzieć, że banalny błąd, który wlókł się za mną przez długi czas. Napisanie samego regulatora i dobranie nastaw trochę zajęło, robiłem to pierwszy raz w czystym C. Napisałem więc taki fragment kodu:

void regulator (int input_v1, int input_v2, uint8_t target){
value = (input_v1*100) + (input_v2/1);
error = target - value;
integral = integral + error;
derivative = error - last_error ;
reg = (error * Kp) + (integral * Ki_l / Ki_m) + (derivative * Kd);
reg = reg / pid_mul;
last_error = error;
OCR1A += reg;
}

Do funkcji wprowadzane są wartości całkowite i ułamkowe oraz wartość zadana dla regulatora w postaci np. 700 mA -> 70. Odpowiedź na zmiany obciążenia była całkiem fajna jeśli chodzi o ustalanie się napięcia na poziomie np. 8 V. Jednak nie udało mi się zarejestrować tej odpowiedzi. Błędem o którym wspomniałem wcześniej było zastosowanie timera w trybie CTC, a nie Fast PWM. Podejrzewam, że gdybym wtedy zastosował tryb PWM odpowiedź mogłaby być znacznie lepsza 🙂

Po udanej próbie implementacji regulatora rozpocząłem pierwsze próby z ładowaniem ogniw. No i tutaj zaczynały się kolejne problemy bo zastosowanie tryby CTC niestety powodowało zmiany częstotliwości sygnału a nie wypełnienia. Poza tym wykorzystywałem timer 16 bitowy, a nie 8, co też zmniejszyło częstotliwość timera. No i ogniwa po prostu nie ładowały się. Ostatecznie nie zastosowałem się do podstawowych założeń podczas projektowania przetwornicy (regulacja wypełnienia sygnału o częstotliwości 62,5 kHz). Ale w końcu po wielokrotnych próbach i analizie problemu (nie tylko przeze mnie ale i przez @marek1707, któremu serdecznie dziękuję za wytknięcie karygodnych błędów) zastosowanie wcześniej wspomnianego 8bitowego trybu Fast PWM regulatora tylko z częścią P zaowocowało tym, że ogniwa w końcu zaczęły się ładować. Poniżej wstawiam screeny z terminala kolejno dla ogniw rozładowujących się i ładujących:

No i tutaj rozpoczyna się kolejna moja zagwozdka. Mianowicie jak widać na screenach, które dotyczą tego samego kompletu ogniw, podczas rozładowania układ pobiera ładnie ok. 50 mA prądu z ogniw akumulatora. Natomiast podczas ładowania widać, że wzrasta napięcie z 7,7V do 7,93V co jest logiczne bo przecież przetwornica je boostuje, natomiast Ichg czyli prąd ładowania jest taki jak zakładam wcześniej w targecie dla regulatora czyli 700 mA. Natomiast parametr Iuse, który ma świadczyć o tym czy ogniwo się ładuje czy nie wskazuje na ładowanie ogniw prądem 0,26 mA co jest trochę dziwne biorąc pod uwagę, że parametr Ichg wskazuje na pobór z zasilacza okrąglutkich 700 mA. Jest możliwe, że źle przeliczyłem wartość ADC dla przesunięcia zera prądu w układzie za przetwornicą chociaż wątpię bo dla zasilania ATmegi z programatora Iuse wskazywało 0,0 A.

Co do obserwacji samego procesu ładowania wszystko wskazuje na to, że ogniwa nie są ładowane prądem 700 mA, ponieważ dla zastosowanych przeze mnie ogniw 1600 mAh taki prąd naładowałby je w czasie ok. 2,5 h. Czyli wartość od 2,8V na ogniwo do 4,2V powinna w tym czasie się mieścić. A w ciągu 30 minut napięcie wzrosło zaledwie o ok. 30 mV. Dlatego wnioskuję, że coś jednak jest nie halo 🙂

Link do komentarza
Share on other sites

Chyba nie wiemy skąd te liczby/wyniki bierzesz więc ciężko oceniać ich sensowność a jeszcze trudniej wskazywać źródła błędów.

Może zacznij od opowiedzenia jak powstają te screeny tzn. co tam wypisujesz i jak to liczysz. Ja np. nie wiem (może powinienem, ale nie pamiętam) czym różni się Ichg od Iuse albo Uout od Ubal.

A przede wszystkim taki układ uruchamia się po kolei. Już to pisałem wielokrotnie, ale widzę, że wciąż masz z tym problem.

Jeśli nie uruchomiłeś i nie skalibrowałeś poprawnie bipolarnego pomiaru prądu akumulatora, to jakim cudem ma dawać dobre wyniki? A nawet gdyby przypadkiem tak się złożyło, że liczby będą jakoś sensowne, to za grosz nikt nie będzie miał do nich zaufania. Tak więc proponuję zapomnieć o ładowarce jako kompletnym urządzeniu a po kolei zabrać się za uruchomienie, pomierzenie i kalibrację poszczególnych bloków wejściowych. Przecież to wyłącznie z nich procesor czerpie informację o stanie procesu. Począwszy od pomiarów wszystkich napięć a skończywszy na prądzie wejściowym i prądzie akumulatora. Jeśli już to wszystko zrobiłeś, to opisz to. Jak kalibrujesz, czym, gdzie trzymasz współczynniki itd. Pokaż fragmenty kodu za to odpowiedzialne itd. Dopiero na tej podstawie możesz zacząć tworzyć warstwy oprogramowania korzystające z danych. Bez tego Twój soft jest głuchy, ślepy i głupi. Wygląda jakbyś zaczął od samej góry - regulator PID? Po co on, skoro - jak się okazuje - nie wiesz jaki płynie prąd? Nie masz tam gdzieś multimetru? Musisz spowodować, by w jakimś układzie testowym wielkość fizyczna (prąd, napięcie itp) wymuszana np. zewnętrznym zasilaczem lub obciążeniem i mierzona multimetrem była taka sama jak to co wypisujesz procesorem np. przez port szeregowy.

Podejdź do tego tak jakbyś robił jedno proste urządzenie na raz:

- miernik napięcia USB,
- miernik napięcia jakiegośtam_innego itd..

- miernik prądu wejściowego,
- miernik prądu akumulatora.

Zastanów się (albo opisz jeśli to już działa) jak zorganizowałeś pomiary ADC tych wszystkich wielkości. Jak często mierzysz, z jakim VREF, czy synchronizujesz pomiary ADC do czegoś, jak i czy uśredniasz wyniki, czy i jak przeliczasz to na jednostki fizyczne (jakie?), jakie postaci danych używasz w programie, np. czy napięcia w Twoim kodzie to int-y 16 bitowe wyrażające [mV] czy float-y oznaczające [V] itd itp..

To nie będzie trywialne urządzenie więc musi być przemyślane - to dotyczy także konstrukcji całego programu - bo samo "z buta" nie zadziała na pewno. Masz tego przykład.

Link do komentarza
Share on other sites

marek1707, już odpowiadam Ci praktycznie na cały Twój post.

Otóż pomiary ADC zorganizowałem sobie już na samym początku tak, aby były wygodne do odczytu i później do przeliczania. Nie wykorzystuje float'ów tylko dzielę sobie wartość na część całkowitą i ułamkową. Całość pomiarów realizuję podobnymi funkcjami co Pan M. Kardaś w poradniku o ADC na YT.

Przedstawię teraz po kolei funkcje, które wykorzystuję - najpierw pomiar ADC:

uint16_t adc_read (uint8_t channel){
ADMUX = (ADMUX & 0b11111000) | channel;
ADCSRA |= (1<<ADSC);
while (ADCSRA & (1<<ADSC));
return ADCW;
}

Teraz przetworzenie wartości ADC otrzymanej z przetwornika na napięcie łącznie z zastosowanymi strukturami i wartościami kalibracyjnymi:

typedef struct {
//uint16_t vol_mid;
uint16_t ref_adc;     //wartość ADC dla kalibracji
uint16_t ref_v;        //napięcie kalibracyjne
char v1[3];             //część całkowita napięcia [V]
char v2[3];             //część ułamkowa napięcia [mV]
} TVOL;

TVOL u_pv_vol;              //napięcie na wejściu panelu PV
TVOL vusb_vol;              //napięcie na USB
TVOL vout_vol;               //napięcie wyjściowe (ogniwa akumulatora)
TVOL ball_vol;                //napięcie międzyogniwowe
TVOL ichg_vol;               //napięcie wejścia ADC pomiaru prądu ładowania
TVOL iuse_vol;               //napięcie wejścia ADC pomiaru prądu zyżycia

//ADC Calibration
vout_vol.ref_adc = 845;    //wartość ADC
vout_vol.ref_v = 772;       //wartość napięcia 7,72V => 7 V*100+720 mV

ball_vol.ref_adc = 539;
ball_vol.ref_v = 384;

u_pv_vol.ref_adc = 407;
u_pv_vol.ref_v = 289;

vusb_vol.ref_adc = 716;
vusb_vol.ref_v = 511;

ichg_vol.ref_adc = 364;
ichg_vol.ref_v = 94;

iuse_vol.ref_adc = 350;
iuse_vol.ref_v = 90;

void get_vol(TVOL * voltage, uint16_t adc){
uint16_t wynik = (adc * (uint32_t) voltage -> ref_v) / voltage -> ref_adc;
div_t divmod = div(wynik, 100);
itoa (divmod.quot, voltage -> v1, 10);
itoa (divmod.rem, voltage -> v2, 10);
if (divmod.rem < 10){
	voltage -> v2[0] = '0';
	voltage -> v2[1] = divmod.rem + '0';
}
voltage -> v1[2] = 0;
voltage -> v2[2] = 0;
}

Dzięki zastosowaniu powyższych funkcji i struktur otrzymuję na terminalu skalibrowane już napięcia dla poszczególnych wejść przetwornika ADC. Wartości te są zapisane w zmiennych typu char. Zastosowanie wszystkiego w kodzie:

adc = adc_read(VUSB);
tr_locate(3,17);
uart_putint(adc, 10);
get_vol(&vusb_vol, adc);
tr_locate(3,0);
uart_puts("Uusb = ");
uart_puts(vusb_vol.v1);
uart_puts(".");
uart_puts(vusb_vol.v2);
uart_puts(" [V]");
adc = 0;

W ten sam sposób przeliczane i wyświetlane są wszystkie napięcia. W przypadku pomiaru prądu napisałem sobie dodatkową funkcję wraz ze strukturą:

typedef struct {
char v1[3];
char v2[3];
} TCUR;

TCUR iuse_cur;
TCUR ichg_cur;

void get_cur(TCUR * current, uint16_t cur){
div_t divmod = div(cur, 100);
itoa (divmod.quot, current -> v1, 10);
itoa (divmod.rem, current -> v2, 10);
if (divmod.rem < 10){
	current -> v2[0] = '0';
	current -> v2[1] = divmod.rem + '0';
}
current -> v1[2] = 0;
current -> v2[2] = 0;
}

Dzięki temu możliwe jest otrzymanie wartości prądu ładowania w następujący sposób:

adc = adc_read(ICHG);
avg_i = avg_i * dt;
avg_i = avg_i + adc;
avg_i = avg_i / (dt + 1);     //uśrednienie pomiaru prądu, bufor na 4 próbki
tr_locate(7,17);
uart_putint(avg_i, 10);
get_vol(&ichg_vol, avg_i);
tr_locate(7,0);
uart_puts("Ichg = ");
ichg = (atoi(ichg_vol.v1) * 100 + atoi(ichg_vol.v2)) * 307 / 256; 
get_cur(&ichg_cur, ichg);
uart_puts(ichg_cur.v1);
uart_puts(".");
uart_puts(ichg_cur.v2);
uart_puts(" [A]");
adc = 0;

Linijka:

ichg = (atoi(ichg_vol.v1) * 100 + atoi(ichg_vol.v2)) * 307 / 256;

to obliczanie napięcia na wejściu ADC pomiaru prądu ładowania. A dokładniej:

ichg = napięcie na wejściu ADC * LSB / Vref

Ta wartość rozbijana jest później przez funkcję get_cur() na dwie części, całkowitą i ułamkową podobnie jak z napięciem w celu ułatwienia wyświetlania. W przypadku pomiaru prądu zuzycia dzieje się podobnie jak dla prądu ładowania z tym, że uwzględniony jest offset zera prądu (i_zero = 0,087 mV):

#define     i_zero      87

adc = adc_read(IUSE);
	tr_locate(7,39);
	uart_putint(adc, 10);
	get_vol(&iuse_vol, adc);
	tr_locate(7,22);
	uart_puts("Iuse = ");
	iuse = (atoi(iuse_vol.v1)*100 + atoi(iuse_vol.v2));
	if ( iuse < i_zero){
		iuse = (i_zero - iuse)* 352 / 256;
	} else if (iuse >= i_zero){
		iuse = (iuse - i_zero)* 352 / 256;
	}
	get_cur(&iuse_cur, iuse);
	uart_puts(iuse_cur.v1);
	uart_puts(".");
	uart_puts(iuse_cur.v2);
	uart_puts(" [A]");
	adc = 0;

Tak to się mniej więcej odbywa. Wrzucam również screena z przeliczeniem wzmacniaczy dla wejść z pomiarem prądu.

Vref = 2,56 V czyli typowe dla ATmegi32.

Jeśli chodzi o prąd ładowania to wszystko idzie fajnie. Zasilacz pobiera 700 mA i wskaz z terminala jest taki sam. Natomiast w przypadku prądu zużycia wskaz wynosi na ładowanie aku prądem 0.3 A więc nie wiem gdzie się te 0.5 A podziało.

Wszystkie wartości napięć kalibracyjnych zostały mierzone multimetrem i sprawdzane z odczytami przetwornika ADC.

  • Lubię! 1
Link do komentarza
Share on other sites

Strasznie przekombinowane z tymi podziałami na części ułamkowe i całkowite (w wolnej chwili możemy o tym pogadać bo szkoda kodu procesora, czasu i pamięci), ale i tak jestem pod wrażeniem. Dziękuję, kawał pracy odwaliłeś chyba wcale tego nie planując -wspominam temat wątku. Mam nadzieję, że doświadczenie tu zdobyte wykorzystasz w wielu jeszcze ciekawszych projektach.

To teraz tak: sięgając kilkanaście postów wcześniej do schematu zrozumiałem, że mierzysz dwa prądy: ten wejściowy pobierany ze źródła zasilania (na razie zasilacz?) i ten dwukierunkowy, płynący przez akumulatory. No i chyba zaczynam rozumieć Twoje pytanie o "znikanie" prądu. Czy nie zapomniałeś o tym, że jest to przetwornica DCDC robiąca konwersję postaci mocy? Weźmy dla przykładu dane z Twoich screenów:

Napięcie wejściowe: 4.67V

Prąd wejściowy: 0.7A

Napięcie wyjściowe: 7.93V

Prąd wyjściowy: 0.26A

Mamy zatem:

Moc wejściowa: 3.27W

Moc wyjściowa: 2.06W

Sprawność: 63%

Popraw mnie jeśli coś tu pokręciłem, ale jak na pierwszą przymiarkę do inteligentnego boost-DCDC to wyszło całkiem OK. Straty na diodzie, indukcyjności i samym kluczu są niestety dość duże więc sprawność taka sobie, ale działać - działa 🙂

Martwi trochę ten wspomniany brak postępu w ładowaniu, ale musisz to sprawdzić. Bo albo pomiar prądu akumulatorów szwankuje albo pomiar ich napięcia. Jeżeli urządzenie pobiera z wejścia ponad 3W a nigdzie tego nie oddaje, to coś musi się grzać. Trzech watów ciepła nie sposób niezauważyć 🙂

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.