logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Switch z pasywnym PoE na STM32F107

Sareph 10 Lut 2019 15:42 6543 12
  • Switch z pasywnym PoE na STM32F107

    Po co? Bo potrzebowałem zastąpić taki zestaw urządzeń:

    Switch z pasywnym PoE na STM32F107

    Czyli switcha 100M, ładowarkę USB, rozdzielacz, dwa 3 portowe (używane 4 porty w sumie) "wstrzykiwacze" PoE (jednego nie ma na zdjęciu) jednym urządzeniem, bo schludniej. Poza tym była okazja, żeby zbudować switcha, tego jeszcze nie robiłem. A, że posiadanie w domu szyny 12V DC jest wygodne, można nią zasilać różne czujniki, switche, access pointy, ładowarki do telefonów, etc - wszystko jednym zasilaczem, buforowym, energetyka czasem daje ciała. Jak się do tego jeszcze dorzuci ethernet, to w większości wypadków wystarczy tylko jeden kabelek podłączyć do urządzenia i po kłopocie. Jedyny problem z pasywnym PoE jest taki, że jak się podłączy "przewód z prądem" do urządzenia, które nie obsługuje zasilania w ten sposób i ma tylko jeden kondensator od EMI przy transformatorze (chyba 99,9% wszystkich konstrukcji) - spalimy transformator, kiedyś wypadało będzie zastąpić wszystkie kable "pod prądem" takimi w kolorze czerwonym.

    W efekcie powstał switch, potrafiący serwować zasilanie do 4 urządzeń eth (4x1A max) i 4 USB (4x2,5A) z opcją rozszerzania go o różne dodatki, bo przecież żadna nóżka MCU nie może się zmarnować.

    Główne cechy:
    * 4 porty 100Mbps (piąty zajmuje STM32F107)
    * Pomiar napięcia i prądu na każdym porcie, automatyczne odłączanie przy przeciążeniu
    * Każdy port posiada:
    ** Konfigurowalny próg ich automatycznego odłączenia
    ** Opcję zdalnego włączenia i wyłączenia
    ** Wykrywają sytuację kiedy sam switch jest zasilany przez port eth a nie z zewnętrznego zasilacza
    ** Sygnalizację stanu zasilania na porcie
    * Porty 1 i 4 mają zabezpieczone linie danych transilami
    * Wyświetlacz LCD

    Budowa całości nie jest jakoś bardzo skomplikowana, zacznijmy zatem od zasilania:

    Switch z pasywnym PoE na STM32F107

    Nic szczególnie nietypowego, płytka przystosowana do obsługi głownie EUP3458 (30V/1,2A), ale jakby nie było to można zainstalować także MP2359 (24V/1,2A) albo SX2106 (21V/2A). Zasilanie przystosowane do max 25V, ograniczone przez mosfety (AO4407) mające maksymalnie Vgs +-25V. 1V2 potrzebne dla układu switcha "produkowane" jest przez regulator liniowy TPS76312. Switch posiada co prawda swój regulator 1V2, ale żeby z niego skorzystać trzeba dołożyć więcej elementów niż dając zewnętrzny regulator. Do tego klika dzielników rezystorowych do monitorowania napięć systemowych. Jeśli chcemy zasilać układ przez port eth, trzeba połączyć wejście B+ (zasilanie "systemowe") razem z VIN (wejście zasilania dla urządzeń zewnętrznych).

    Switch z pasywnym PoE na STM32F107

    Zastosowałem gniazda RJ45 bez transformatora, ciężko dostać takie, które obsługują POE i nie kosztują fortuny. A tak można zastosować tanie i powszechne 4 portowe złącze + popularny transformator HR601680. Każdy port posiada swój mosfet odcinający prąd (AO4407), rezystor pomiarowy (0R082) podłączony do jednego z 2 INA3221, oraz warystor mający chronić wyjścia przed skokami napięcia. W końcu jedno urządzenie (stacja meteo) znajduje się na zewnątrz budynku. Poza funkcją odcinania zasilania, mosfety chronią także switcha przed podłączeniem zasilania przez port ethernetu z odwrotną polaryzacją, a jeśli MCU wykryje, że jest zasilany przez jeden z portów, to automatycznie otwiera dany mosfet i wyłącza jego ręczne sterowanie. Każdy port ma swoją konfiguracje zapisaną w EEPROMie (pin sterujący, limit prądu, adres i typ urządzenia pomiarowego) i może być niezależnie od reszty włączany i wyłączany. Cztery z 8 ledów w portach (Link) są podłączone do układu switcha. Pozostałe cztery do STM32 i sygnalizują stan zasilania:

    * 100ms puls co 1s - brak poboru prądu zasilanie włączone
    * Ciągle włączone - pobór prądu powyżej 10mA
    * 4 100ms błyski na sekundę - błąd, przeciążenie
    * Wyłączone - port odłączony od zasilania

    Switch z pasywnym PoE na STM32F107

    Sercem układu jest zarządzalny 5 portowy switch KSZ8895RQX produkcji Micrela (Microchip), połączony przez RMII/MDIO z nadzorującym go STM32F107VC. Generatorem zegara jest zewnętrzny 50MHz układ, SG7050CAN-50. Co prawda zegar 50MHz da się wydobyć z układu switcha po podłączeniu doń 25MHz kryształu, ale że potrzebowałem zrobić coś z generatorami, które od lat leżały kurzyły się oczekując na jakąś okazję, no to wykorzystałem je zamiast kryształu. Ten sam zegar jest podstawą taktowania głównego zegara MCU i interfejsu RMII. Dodatkowo na pokładzie znajduje się standardowy 32KHz kryształ dla zegara RTC i wyprowadzenia dla baterii/superkondensatora podtrzymującego domenę RTC.

    Switch z pasywnym PoE na STM32F107 Switch z pasywnym PoE na STM32F107


    Aby dało się switcha rozszerzyć, na złącza micro-JST wyprowadzona jest: magistrala I2C wraz z pinami portów UART, SPI, piny analogowe (pomiar napięcia sieciowego w UPS), SWD, USB-OTG (obecnie nieużywane) i OneWire. Jeśli dane złącze UART/I2C nie jest skonfigurowane jako port szeregowy piny używane są jako standardowe GPIO, do sterowania ledem czy włączenia układu ładowarki. Magistrale SPI i I2C skonfigurowane i włączone są zawsze. Switch z dostępnych dodatków wykorzystuje jeden port I2C na potrzeby ładowarki USB oraz jeden port SPI dla wyświetlacza LCD.

    Switch z pasywnym PoE na STM32F107 Switch z pasywnym PoE na STM32F107

    Wyświetlacz bazuje na UC1601 i może być podłączony do płytki zarówno przez I2C jaki przez SPI, przy czym przez I2C jest rozpoznawany automatycznie, poprzez SPI musi byc skonfigurowany w EEPROMie. Aktualnie brakuje jeszcze klawiatury, ale jak tylko będę miał chwilkę, to switch dostanie taką samą klawiaturę na i2c jaka jest w monitorze moich UPSów:

    Switch z pasywnym PoE na STM32F107

    Na pokładzie znajdują poza tym, wspomniany wcześniej EEPROM (8kiB) - konfiguracja oraz DataFlash (8MiB) - pliki potrzebne dla interfejsu WWW.

    Aktualnie switch pokazuje na wyświetlaczu Aktualne obciążenie ładowarki USB, ilość przesyłanych danych na sekundę dla każdego portu (i całości), sumaryczną wielkość danych otrzymanych oraz aktualne obciążenie każdego z portów. Konfiguracja portów w sofcie:

    Switch z pasywnym PoE na STM32F107

    I stan switcha:

    Switch z pasywnym PoE na STM32F107

    Z uwagi na to, że UPS podaje informacje po sieci, że utracono zasilanie sieciowe porty mogą być odłączne w zależności od tego czy sieć pracuje na bateriach czy nie, lub w zależności od poziomu napięcia zasilania/akumulatorów. Całość dodatkowo zabezpieczona 8A bezpiecznikiem na wejściu głównego zasilania. I tak oto switch zasila zegar, panel wyświetlaczy, switcha, dwa access pointy i kilka czujników rozsianych po mieszkaniu.

    Fajne? Ranking DIY
    O autorze
    Sareph
    Poziom 24  
    Offline 
    Sareph napisał 638 postów o ocenie 378, pomógł 65 razy. Jest z nami od 2004 roku.
  • #2 17770822
    paluszasty
    Poziom 25  
    Posty: 1113
    Pomógł: 56
    Ocena: 268
    Świetny projekt. Gratuluje.
    Czy ja dobrze rozumiem ze ukłaad KSZ8895RQX to komplenty układ 5 portowego Switcha?
    Ilu warstwowe PCB udało się zmieścić na 2 warstwach czy 4?
  • #3 17770909
    Sareph
    Poziom 24  
    Posty: 638
    Pomógł: 65
    Ocena: 378
    paluszasty napisał:
    Czy ja dobrze rozumiem ze ukłaad KSZ8895RQX to komplenty układ 5 portowego Switcha?

    Dokładnie tak. Nawet z wbudowaną terminacją. Tylko transformatorów, zasilania, gniazd i źródła zegara brakuje.

    paluszasty napisał:
    Ilu warstwowe PCB udało się zmieścić na 2 warstwach czy 4?

    2 warstwy, i nawet wrzucę pcb, bo zapomniałem o nim. ;)
    Switch z pasywnym PoE na STM32F107
  • #4 17771767
    voltbolt
    Poziom 13  
    Posty: 74
    Ocena: 26
    Super projekt. Moim zdaniem jeśli by rozszerzyć konstrukcję do 8 portów to spokojnie znalazł byś na to nabywców. Jak by jeszcze giga lan był ... :)
  • #5 17772031
    Sareph
    Poziom 24  
    Posty: 638
    Pomógł: 65
    Ocena: 378
    voltbolt napisał:
    Super projekt. Moim zdaniem jeśli by rozszerzyć konstrukcję do 8 portów to spokojnie znalazł byś na to nabywców.
    To by się dało zrobić, ale...

    voltbolt napisał:
    Jak by jeszcze giga lan był ... :)
    ... z tym jest większy problem. Głownie w złączach/transformatorach. Dla przykładu, złącz 8 port ze wsparciem PoE nie ma (przynajmniej w TME), za to 12 portowe kosztuje bagatelka 538,69zł/szt netto przy zakupie minimum 36 sztuk, toż to za same złącza wyjdzie n razy więcej niż za elektronikę. :D (a farnell ma za durna wyszukiwarkę żeby tam coś znaleźć) Pojedyncze sa za około 20... ale ten switch musiałby finalnie kosztować z 800zł żeby być jako tako opłacalnym przy niskiej produkcji. A za jakieś 400 to już znajdziesz 8 portowego, gigabitowego switcha z "prawdziwym" PoE. ;)
  • #7 17774636
    voltbolt
    Poziom 13  
    Posty: 74
    Ocena: 26
    Sareph napisał:
    voltbolt napisał:
    Super projekt. Moim zdaniem jeśli by rozszerzyć konstrukcję do 8 portów to spokojnie znalazł byś na to nabywców.
    To by się dało zrobić, ale...

    voltbolt napisał:
    Jak by jeszcze giga lan był ... :)
    ... z tym jest większy problem. Głownie w złączach/transformatorach. Dla przykładu, złącz 8 port ze wsparciem PoE nie ma (przynajmniej w TME), za to 12 portowe kosztuje bagatelka 538,69zł/szt netto przy zakupie minimum 36 sztuk, toż to za same złącza wyjdzie n razy więcej niż za elektronikę. :D (a farnell ma za durna wyszukiwarkę żeby tam coś znaleźć) Pojedyncze sa za około 20... ale ten switch musiałby finalnie kosztować z 800zł żeby być jako tako opłacalnym przy niskiej produkcji. A za jakieś 400 to już znajdziesz 8 portowego, gigabitowego switcha z "prawdziwym" PoE. ;)


    Ja jeśli mam pomysł na narzędzie które przyda mi się, lub ułatwi pracę to je wykonuje, nawet jeśli czasem nakład pracy jest znaczny. Plus jest taki, że mam coś dopasowanego dokładnie do swoich potrzeb. Poza tym mamy ogromną satysfakcję jeśli na co dzień korzystamy z czegoś własnoręcznie wykonanego.
  • #8 17775949
    morswin89
    Poziom 23  
    Posty: 834
    Pomógł: 23
    Ocena: 190
    Pojedyncze złącza RJ45 z wbudowanym transformatorem i obsługą PoE można nabyć na alliexpress za około 6,5 zł
    https://www.aliexpress.com/item/HY931147C-RJ4...819.html?spm=a2g0s.9042311.0.0.27424c4dCY0uCO
  • #9 17775988
    Sareph
    Poziom 24  
    Posty: 638
    Pomógł: 65
    Ocena: 378
    morswin89 napisał:
    Pojedyncze złącza RJ45 z wbudowanym transformatorem i obsługą PoE można nabyć na alliexpress
    I to w sumie interesująca opcja do moich zabawek pobierających zasilanie po eth. Tylko do dostarczania prądu się nie nadają, bo mają wbudowane mostki diodowe uniemożliwiające wypływ prądu na zewnątrz. Ale widać czas ponownie przebadać ofertę HanRun i AliExpress.

    Dopisane: Ale znalazłem nadające się, HR971169C ;)
  • #10 19404159
    Ondo
    Poziom 12  
    Posty: 104
    Pomógł: 3
    Ocena: 17
    Pytanko jak sobie radzą te klucze mosfet i logika wykrywania przeciążania konkretnego wyjścia? Pytam bo chciałbym zrobić podobne zasilanie do swojego systemu czujników (nie ethernet). Czy nie ma ryzyka że przypadku zwarcia jednego wyjścia napięcie zdąży tak spaść żeby zresetować cały układ sterujący? Czy może lepiej zrobić to "analogowo" i obsługę czyli nadzorowanie i "resetowanie" bezpiecznika w procesorze?
  • #11 19404191
    Sareph
    Poziom 24  
    Posty: 638
    Pomógł: 65
    Ocena: 378
    Ondo napisał:
    Pytanko jak sobie radzą te klucze mosfet i logika wykrywania przeciążania konkretnego wyjścia?
    Ale o co pytasz? Bo klucze są przewymiarowane, że hej - nie ma opcji żeby sobie nie poradziły (skrętka zniesie maks około 1A, te mosfety tolerują z 10A). Limity są wpisane do INA3221, jak ten układ wykryje przekroczenie któregoś limitu, ciągnie pin przerwania, wtedy CPU sprawdza o który port chodzi i odłącza wtedy go. Reset tylko ręczny.

    Ondo napisał:
    Czy nie ma ryzyka że przypadku zwarcia jednego wyjścia napięcie zdąży tak spaść żeby zresetować cały układ sterujący?
    Prędzej bym się obawiał, że zasilacz wykryje zwarcie i wyłączy wszystko. Ale nie, mogę sobie robić zwarcia i wszystko działa poprawnie, kondensatory przy zasilaniu mają najwyraźniej wystarczającą pojemność na kilka ms podtrzymania pracy całości.

    Ondo napisał:
    Czy może lepiej zrobić to "analogowo" i obsługę czyli nadzorowanie i "resetowanie" bezpiecznika w procesorze?
    Jak Ci wygodnie w sumie, cyfrowy układ jest prostszy i możesz zmienić jego zachowanie jeśli potrzebujesz. Generalnie to zależy jakie masz wymagania.
  • #12 19404801
    Ondo
    Poziom 12  
    Posty: 104
    Pomógł: 3
    Ocena: 17
    Sareph napisał:
    Ondo napisał:
    Pytanko jak sobie radzą te klucze mosfet i logika wykrywania przeciążania konkretnego wyjścia?
    Ale o co pytasz? Bo klucze są przewymiarowane, że hej - nie ma opcji żeby sobie nie poradziły (skrętka zniesie maks około 1A, te mosfety tolerują z 10A). Limity są wpisane do INA3221, jak ten układ wykryje przekroczenie któregoś limitu, ciągnie pin przerwania, wtedy CPU sprawdza o który port chodzi i odłącza wtedy go. Reset tylko ręczny.

    Ondo napisał:
    Czy nie ma ryzyka że przypadku zwarcia jednego wyjścia napięcie zdąży tak spaść żeby zresetować cały układ sterujący?
    Prędzej bym się obawiał, że zasilacz wykryje zwarcie i wyłączy wszystko. Ale nie, mogę sobie robić zwarcia i wszystko działa poprawnie, kondensatory przy zasilaniu mają najwyraźniej wystarczającą pojemność na kilka ms podtrzymania pracy całości.

    Ondo napisał:
    Czy może lepiej zrobić to "analogowo" i obsługę czyli nadzorowanie i "resetowanie" bezpiecznika w procesorze?
    Jak Ci wygodnie w sumie, cyfrowy układ jest prostszy i możesz zmienić jego zachowanie jeśli potrzebujesz. Generalnie to zależy jakie masz wymagania.

    MOSFETy mnie nie martwią (do pewnego poziomu), bardziej chodziło mi o ryzyko że jednym kanałem można całość zresetować. Czyli jak mam rozumieć że nawet w przypadku zwarcia "metalicznego", jeśli procesor zareaguje w ciągu kilkudziesięciu milisekund i wyłączy MOSFET to nadal nie przeciąża zasilacza głównego?
  • #13 19405091
    Sareph
    Poziom 24  
    Posty: 638
    Pomógł: 65
    Ocena: 378
    Ondo napisał:
    MOSFETy mnie nie martwią (do pewnego poziomu), bardziej chodziło mi o ryzyko że jednym kanałem można całość zresetować. Czyli jak mam rozumieć że nawet w przypadku zwarcia "metalicznego", jeśli procesor zareaguje w ciągu kilkudziesięciu milisekund i wyłączy MOSFET to nadal nie przeciąża zasilacza głównego?
    Nie tego, który mam. Ale rezultaty mogą być różne w zależności od zasilacza. Ten konkretny, o ile pamiętam, potrzebował coś 80ms+ aby zaczęło mu coś nie pasować.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik zaprezentował projekt switcha z pasywnym PoE oparty na układzie KSZ8895RQX, który ma na celu zastąpienie kilku urządzeń, takich jak switch 100M, ładowarka USB i rozdzielacze PoE, jednym kompaktowym urządzeniem. Projekt zakłada zasilanie z 12V DC, co umożliwia zasilanie różnych urządzeń, takich jak czujniki i access pointy, jednym zasilaczem. W dyskusji poruszono kwestie dotyczące liczby portów, kosztów komponentów oraz możliwości rozbudowy projektu do 8 portów. Użytkownicy wymienili się informacjami na temat dostępnych złączy RJ45 z transformatorem oraz omówili kwestie związane z zabezpieczeniami i wykrywaniem przeciążeń w systemie zasilania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA