Skocz do zawartości

Robot balansujący - Zasilanie


Pomocna odpowiedź

Jeśli mogę:

Spróbowałbym (jeśli jeszcze nie puściłeś płytki) ograniczyć pasmo sygnałów (proste RC) z wyjść wszystkich czterech wzmacniaczy INA. Z pewnością nie będziesz tego mierzył zbyt szybko bo nie ma takiej potrzeby - to tylko informacja o poborach prądu w poszczególnych gałęziach, a skoro LM43603 "umieją" w PFM, to możesz tam zobaczyć dziwne rzeczy gdy zapotrzebowanie na prąd danej gałęzi spadnie.

Dałbym też (nawet jakieś lekkie, po 22k?) pull-downy na wszystkich "Enablach" LM43603, bo zanim ruszą porty procesora, będziesz tam miał float a akurat niekontrolowane machanie zasilaniami to ostatnia rzecz jaką lubimy.

Wstawiłbym też rezystory na RT tych scalaków. Na teraz możesz ich nie obsadzać i być może tak docelowo zostanie, ale a) w żaden sposób nie synchronizujesz tych przetwornic więc efekty pracy na bardzo bliskich częstotliwościach domyślnych (a nawet niechcianej resynchronizacji) mogą być zaskakujące, b) może się okazać, że zejście poniżej 500kHz daje w tym konkretnym przypadku jakiś plus do sprawności czy minimalizacji zakłóceń. W każdym razie jest wtedy pole do testów, teraz go sobie zamknąłeś.

Spróbowałbym zwolnić/wydłużyć załączanie klucza Q6. Nie wiem co tam dalej siedzi na jego wyjściu tj. jak obciążona pojemnościowo jest ta linia, ale taki siłowo-szybki skok raczej nikomu nie posłuży. Tym bardziej, że sam wypracowujesz sygnał dla bramki, dodanie nawet małego kondensatorka (100nF?) równolegle do diody Zenera dałoby chociaż kilka(naście?) milisekund na spokojniejszy start linii DCLINE_POWER. To przecież nie zabije tranzystora.

Wszelkie elementy, które mogą "rozsymetryzować" pomiary różnicowe (np. kondensatory wiszące na wejściach ACN/ACP ładowarki) muszą być podpięte do dobrej (i takiej samej) masy analogowej blisko scalaka, bo w przeciwnym wypadku tylko pogarszają sprawę "pompując" śmieci ze złej masy do linii pomiarowych. Nie widzę layoutu, to tylko tak dla pewności wspominam.

Podobnie z ew. opornikami szeregowymi - one zwiększają impedancję źródła a linie różnicowe w części "za nimi" stają się bardziej podatne na odbiór (w szczególności asymetrycznych) zakłóceń. Te oporniki (np. R25/R25 w ładowarce) powinny także dostać adnotację "blisko scalaka".

Bezpieczniki polimerowe fajnie wyglądają i pozornie są wygodne, ale to bardzo zdradliwy element. Ja bym wstawił -  w szczególności na linię akumulatora - normalny drut topikowy. Przecież na tej linii będzie albo wszystko dobrze, albo 200A więc precyzyjnego zabezpieczenia nie potrzebujesz, z resztą polimer tego nie daje a ten jego obszar przejściowy gdzie robi za grzałkę a prąd spada tylko trochę, jest upiorny.

Spróbuj policzyć ile mocy wydzieli się na bezpieczniku a ile na Zenerze w momencie podłączenia zbyt dużego napięcia. Jeśli tam rzeczywiście jest coś w SMB (zamiast D2PAK?), to stawiałbym na dym z diody. Podobnie z zabezpieczeniem przed zmianą polaryzacji, tam naprawdę jest maluszek w SMA? Testowałeś te fragmenty, czy to tylko tak trochę dla uspokojenia sumienia?

Nie widzę niczego co zapobiegałoby emisji zakłóceń szerokopasmowych z przetwornicy do kabla zasilającego ładowarkę i do kabla akumulatora. Czy coś takiego (toroid, dławik CM?) przewidujesz poza płytką? Na kablu?

 

  • Lubię! 1
  • Pomogłeś! 1
Link to post
Share on other sites
(edytowany)

@marek1707 Zacznę od podziękowań za poświęcony czas i wnikliwą analizę schematu.

8 godzin temu, marek1707 napisał:

Spróbowałbym (jeśli jeszcze nie puściłeś płytki) ograniczyć pasmo sygnałów (proste RC) z wyjść wszystkich czterech wzmacniaczy INA. Z pewnością nie będziesz tego mierzył zbyt szybko bo nie ma takiej potrzeby - to tylko informacja o poborach prądu w poszczególnych gałęziach, a skoro LM43603 "umieją" w PFM, to możesz tam zobaczyć dziwne rzeczy gdy zapotrzebowanie na prąd danej gałęzi spadnie.

Zgodnie z sugestią dodam miejsce na filtr RC. Domyślnie wlutuję tam rezystor 0 Ohm oraz nie wlutuję kondensatora. W razie gdy zobaczę zakłócenia zacznę kombinować.

Cytat

Dałbym też (nawet jakieś lekkie, po 22k?) pull-downy na wszystkich "Enablach" LM43603, bo zanim ruszą porty procesora, będziesz tam miał float a akurat niekontrolowane machanie zasilaniami to ostatnia rzecz jaką lubimy.

Jak najbardziej jest to dobry pomysł. Miałem już podobny problem przy prototypowaniu kontrolera silników, gdzie w momencie resetu uC przez chwilę układ pobierał maksymalny prąd bo linia EN drivera była w nie określonym stanie.

Cytat

Wstawiłbym też rezystory na RT tych scalaków. Na teraz możesz ich nie obsadzać i być może tak docelowo zostanie, ale a) w żaden sposób nie synchronizujesz tych przetwornic więc efekty pracy na bardzo bliskich częstotliwościach domyślnych (a nawet niechcianej resynchronizacji) mogą być zaskakujące, b) może się okazać, że zejście poniżej 500kHz daje w tym konkretnym przypadku jakiś plus do sprawności czy minimalizacji zakłóceń. W każdym razie jest wtedy pole do testów, teraz go sobie zamknąłeś.

Na to miejsce powinno się znaleźć. W dokumentacji pisze że dla 500kHz można pozostawić floating, ale faktycznie zawsze warto mieć jakieś wyjście awaryjne

Cytat

Spróbowałbym zwolnić/wydłużyć załączanie klucza Q6. Nie wiem co tam dalej siedzi na jego wyjściu tj. jak obciążona pojemnościowo jest ta linia, ale taki siłowo-szybki skok raczej nikomu nie posłuży. Tym bardziej, że sam wypracowujesz sygnał dla bramki, dodanie nawet małego kondensatorka (100nF?) równolegle do diody Zenera dałoby chociaż kilka(naście?) milisekund na spokojniejszy start linii DCLINE_POWER. To przecież nie zabije tranzystora.

To da się łatwo zrobić. Ta linia będzie zasilać drivery silników. Silniki nie ruszą do puki nie otrzymają komendy z RPi, ale są tam na wejściu dość znaczne pojemności (2x100uF) więc może faktycznie warto spowolnić załączanie.

Cytat

Wszelkie elementy, które mogą "rozsymetryzować" pomiary różnicowe (np. kondensatory wiszące na wejściach ACN/ACP ładowarki) muszą być podpięte do dobrej (i takiej samej) masy analogowej blisko scalaka, bo w przeciwnym wypadku tylko pogarszają sprawę "pompując" śmieci ze złej masy do linii pomiarowych. Nie widzę layoutu, to tylko tak dla pewności wspominam.

Podobnie z ew. opornikami szeregowymi - one zwiększają impedancję źródła a linie różnicowe w części "za nimi" stają się bardziej podatne na odbiór (w szczególności asymetrycznych) zakłóceń. Te oporniki (np. R25/R25 w ładowarce) powinny także dostać adnotację "blisko scalaka".

Tu akurat trafiłeś bo wspomniane układy filtrujące mam przy samych rezystorach pomiarowych. Sugerowałem się rozmieszczeniem elementów wg dokumentacji płytki referencyjnej (https://www.ti.com/lit/ug/sluubg6/sluubg6.pdf).

U mnie masa PWR jest oddzielona od reszty układa "strefą roboczą" przetwornicy (GND PWR znajduje się na samej górze płytki), więc można powiedzieć że masy są rozdzielone.

005.thumb.JPG.9cc1d2c9f62d15046edcf3fa42d53433.JPG

Od spodu masa analogowa jest oddzielona strefą VBUS która także rozciąga się praktycznie od krawędzi do krawędzi płytki. Jedynym połączeniem pomiędzy masami poszczególnych linii zasilania a minusem baterii jest dolna warstwa płytki. Dlatego tyle przelotek.

006.thumb.JPG.e7b90dfcd5c188229b44cd4019c0f19b.JPG

Cytat

Bezpieczniki polimerowe fajnie wyglądają i pozornie są wygodne, ale to bardzo zdradliwy element. Ja bym wstawił -  w szczególności na linię akumulatora - normalny drut topikowy. Przecież na tej linii będzie albo wszystko dobrze, albo 200A więc precyzyjnego zabezpieczenia nie potrzebujesz, z resztą polimer tego nie daje a ten jego obszar przejściowy gdzie robi za grzałkę a prąd spada tylko trochę, jest upiorny.

Spróbuj policzyć ile mocy wydzieli się na bezpieczniku a ile na Zenerze w momencie podłączenia zbyt dużego napięcia. Jeśli tam rzeczywiście jest coś w SMB (zamiast D2PAK?), to stawiałbym na dym z diody. Podobnie z zabezpieczeniem przed zmianą polaryzacji, tam naprawdę jest maluszek w SMA? Testowałeś te fragmenty, czy to tylko tak trochę dla uspokojenia sumienia?

Przed przepięciem po obu stronach nie stosuję zwykłego zenera tylko diodę TVS (transil).
Tu datasheet: https://www.tme.eu/Document/0b6222bec7e12d83185b51d73cb6a54d/SMBJ_ser.pdf

Założyłem (być może błędnie) że w przypadku podpięcia baterii ze złą polaryzacją dioda TVS oraz dioda Schottky podzieliłyby obciążenie. TVS powinien wytrzymać 100A przez 8ms, a Schottky 80A przez 8ms.

Może zamiast pary diod TVS/Schottky zastosować pojedynczą ale dużo większą TVS?

Nie wiem też czy doczytałeś, ale płytka będzie współpracować z pakietem Li-Ion 4P4S z wbudowanym balanserem oraz zabezpieczeniami (w tym między innymi przeciwzwarciowe). Przyznam że nie testowałem tego zabezpieczenia, ale zakładam że działa skoro pakiet został złożony na zamówienie w firmie która tym się zajmuje. Zakładałem że w takiej sytuacji max prąd będzie ograniczony do wartości (do 70A) oraz czasie (max 15ms). Tu datasheet płytki wbudowanej w pakiet: https://www.bto.pl/pdf/04936/PCM-L04S20-690.pdf.

Zawsze jednak należy założyć że ktoś może próbować podłączyć baterię bez zabezpieczeń (np zwykłą LiPo 4S). Pomyślę jeszcze nad tymi zabezpieczeniami.

Co do zamiany bezpiecznika polimerowego na zwykły to nie widzę problemu aby to zrobić.

Cytat

Nie widzę niczego co zapobiegałoby emisji zakłóceń szerokopasmowych z przetwornicy do kabla zasilającego ładowarkę i do kabla akumulatora. Czy coś takiego (toroid, dławik CM?) przewidujesz poza płytką? Na kablu?

Bateria robota będzie ładowana z typowego zasilacza do laptopa 19,5V. Zasilacz który zamierzam podłączyć posiada filtr na kablu.

 

Jeszcze raz dziękuję za cenne wskazówki. Zabieram się za poprawki.

Pozdrawiam,
Marek

Edytowano przez MR1979
  • Lubię! 1
Link to post
Share on other sites
(edytowany)

Ok. Wprowadziłem następujące zmiany do projektu:

1. Miejsca pod filtry RC jednak nie zrobiłem. Okazało się że nie mam miejsca na dodatkowe 10 elementów 0805. Będę filtrować sygnał na uC.
2. Rezystory 10k pull-down na liniach EN LM43603 dodane
3. Miejsce na rezystor do linii RT LM43603 dodane, więc będę mógł w razie czego zmienić częstotliwość układu
4. Kondensator na tranzystorze Q6 dodany
5. Bezpieczniki polimerowe zastąpione na topnikowe (4A i 8A) w obudowie 1206
6. Zabezpieczenie przeciwko przepięciom oraz odwrotnej polaryzacji będą realizować pojedyncze diody TVS (600W) w obudowie SMB. Diode Schottky całkowicie usunąłem. Chciałem diodę w obudowie SMC, ale już nie zmieszczę. Może coś pośredniego?
7. Dodałem też strefy ochronne pod dużymi rezystorami pomiarowymi, oraz cewkami (żeby jeszcze lepiej oddzielić PWR GND od reszty)
8. Dodałem przelotki na padach krytycznych elementów dla lepszego chłodzenia (pod przetwornicami LM43603 i mosfetami w układzie ładowarki)

Pozdrawiam,
Marek

Edytowano przez MR1979
Link to post
Share on other sites
(edytowany)

Postępy prac:

Hardware - płytka zamówiona, brakujące części zamówione. Pozostaje czekać

Software - oto co mam na razie napisane i przetestowane:

1. Biblioteka do obsługi przetworników LM43603. Oto przykładowa inicjalizacja linii 5V:

dc5_0v.config.voltage = 5000;
dc5_0v.config.adc_value = &adcbuf[1];
dc5_0v.config.en_pin = GPIO_PIN_0;
dc5_0v.config.en_port = GPIOB;
dc5_0v.config.pg_pin = GPIO_PIN_1;
dc5_0v.config.pg_port = GPIOB;
dc5_0v.config.shunt_value = 100;				// In mOhms
dc5_0v.config.shunt_gain = 20;					// Gain from associated INA opamp
dc5_0v.config.h_current1_value = 2500;			// First level of overcurrent protection in mA
dc5_0v.config.h_current1_delay = 10000;			// Delay for first level in ms
dc5_0v.config.h_current2_value = 2800;			// Second level of overcurrent protection in mA
dc5_0v.config.h_current2_delay = 10;			// Delay for second level in ms
dc5_0v.config.pg_low_delay = 10;				// Delay for Power Good pin LOW
dc5_0v.config.l_current_value = 0;				// Underload protection
dc5_0v.config.l_current_delay = 5000;			// Delay for underload protection
DCLINE_Init(&dc5_0v);

Jak widać z powyższego biblioteka implementuje następujące funkcje:
- Możliwość współpracy z różnymi wartościami rezystora pomiarowego oraz wzmacniaczami sygnału
- 2 stopnie zabezpieczenie nadprądowego, gdzie dla każdego stopnia można zdefiniować opóźnienie
- Opóźnienie dla niskiego sygnału na lini PG (Power Good)
- Detekcja niskiego obciążenia linii wraz z opóźnieniem. Tą funkcją można łatwo wykryć czy zasilany układ np RPi został wyłączony.
- Zabezpieczenia przeciwzwarciowe jest zaimplementowane w samej przetwornicy
- Układ przelicza też na bieżąco obciążenie danej linii na mW i wartość ta w każdej chwili może być wykorzystana przez program główny

Odczyty z rezystorów pomiarowych realizowane przez DMA w pętli.
 

2. Biblioteka do obsługi układu ładowarki i kontroli zasilania. Przykładowa inicjalizacja:

 // Configuring Charger unit
  charger.conf.i2c = &hi2c1;
  charger.conf.i2c_addr = 0xD6;
  charger.conf.chrok_port = GPIOB;
  charger.conf.chrok_pin = GPIO_PIN_4;
  charger.conf.prochot_port = GPIOB;
  charger.conf.prochot_pin = GPIO_PIN_5;

  charger.conf.min_system_voltage = 12000;		// minimum output (system) voltage in mV
  charger.conf.max_input_current = 2048;		// maximum input current from power adapter in mA
  charger.conf.min_input_voltage = 19000;		// minimum input voltage from power adapter in mV
  charger.conf.charge_treshold_voltage = 16000; // to start charging, battery must be below this voltage in mV
  charger.conf.max_charging_voltage = 16750;	// maximum charging voltage in mV
  charger.conf.max_charging_current = 2048;		// maximum charging current in mA
  charger.conf.cut_off_current = 960;			// TODO: current value to complete charging in mA
  charger.conf.cut_off_delay = 30;				// TODO: delay for completing charging in seconds
  charger.conf.max_discharging_current = 8192;	// maximum discharging current from battery in mA

Zaimplementowane funkcje:
- Po uruchomieniu zasilania, następuje inicjalizacja układu ładowarki oraz power-path. Jeżeli jest wykryte zasilanie na wejściu adaptera, to cały program przechodzi w tryb ładowania baterii. Jeżeli nie ma podłączonego zewnętrznego ładowania, program przechodzi w tryb zasilania. Trybu mieszanego w robocie nie przewiduję, bo trudno żeby robot mógł się swobodnie poruszać z podłączonym kablem.
- Bieżąca kontrola parametrów zasilania i baterii wg wartości zdefiniowanych przy konfiguracji
- min_system_voltage - minimalne napięcie które może być dostarczone na wyjściu (do innych przetworników DC/DC). Jeżeli warunek tan jest nie spełniony to nie uruchomimy robota. Jeżeli napięcie baterii spadnie poniżej tego napięcia - 500mV to zablokowana zostanie także możliwość ładowania takiej baterii.
- max_input_current - maksymalny prąd dozwolony z zewnętrznej ładowarki podczas ładowania
- min_input_voltage - minimalny dozwolony prąd z zewnętrznej ładowarki. Nie uruchomimy ładowania jeżeli zewnętrzne ładowanie będzie poniżej tego progu.
- charge_treshold_voltage - dozwolone jest ładowanie baterii której napięcie spadło poniżej tego progu. Ma to zapobiec ładowaniu baterii która jest w pełni naładowana
- max_charging_voltage - maksymalne napięcie ładowania w trybie CV
- max_charging_current - maksymalny prąd ładowania baterii w trybie CC
- cut_off_current - ładowanie zostanie zakończone w trybie CV, gdy prąd spadnie poniżej tej wartości i będzie na tym poziomie przez czas zdefiniowany w cut_off_delay
- max_discharging_current - maxymalne prąd jaki możemy pobierać z baterii. W trybie zasilania gdy ta wartość zostanie przekroczona, to nastąpi wyłączenie zasilania.

Dodatkowe zabezpieczenia są zaimplementowane sprzętowo na samym układzie, płytce PCB oraz w balanserze wbudowanym w pakiet baterii.

Płytka którą zaprojektowałem posiada także możliwość podpięcia termistora pakietu baterii, i to także zostanie zaimplementowane.
 

Pozdrawiam,
Marek

Edytowano przez MR1979
Link to post
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.