Czujnik Prądu PZEM-004T V3

Zdjęcia są nieostre, potrzeba takich gdzie widać napis na tych elementach i wartości rezystorów R8, R9, R10.

Ale już na tej fotce widać, że płytki się różnią.


One się czymś różnią czy coś źle czytam toznaczy że jeden jest stustrotna to chyba nie realne.

A to chyba są te same🙈

4 Ohms 5%
4.7 Ohms 5%

Brawo za spostrzegawczość :slight_smile: Pomierzyłem rezystory i wyszło, że w tej działającej R8=4.5k a w niedziałających R8=4.7k.
R9 i R10 są na obu takie same - 1 k.
Zdjęcie zrobię jutro przy dziennym świetle, bo teraz nie wychodzą za dobrze.

Oznaczenie 472 to kodowo 4.7kΩ więc nie wiem skąd taka różnica skoro na obydwu płytkach jest to samo, chyba że tolerancja madeInchina. Sprawdź czy są te same układy na obu płytkach, porównaj napięcia na układach, na dobrej i nie działającej płytce, często można się spotkać z niedolutowanym elementem.

To będzie kluczowe, zastanawia mnie skąd bierze się taka różnica w napięciach:

Na zdjęciach przy tym świetle z trudem daje się odczytać oznaczenia na układach, ale wydają się być takie same.
Muszę mieć dzienne światło. Póki co - dzięki za pomoc.

Na moje oko są odwrotnie wlutowane

Czasem odcień fioletowego wygląda jak czarny

Nie ma to większego znaczenia różnica jest o ~4% (dobrze zaprojektowana elektronika dopuszcza odchyłki wartości elementów ±10% a nawet ±20% często uchodzi bez szkody dla działania)

O - to to to :rofl:
tyle, że akurat te wcześniejsze 4.7oma mieszczą się w tym co tam zakodowane w paskach (a jaką tolerancję mają smd? no skoro 472, to też góra 5%, bo dokładniejsze mają inne oznaczenia i są spoza podstawowego szeregu wartości)

raczej inna partia produkcyjna (lub inny realny wykonawca)

Zdjęcia wychodzą idealnie przy sztucznym świetle, tylko trzeba poeksperymentować z kątem pod którym pada światło, czasem się przydaje alternatywna aplikacja aparatu (lupa)

Czyli ścieżka pull-up dla TX jest przerwana lub ten rezystor w ogóle nie jest podłączony do linii sygnałowej

To czemu działa po USB z konwerterem?

Moja teoria (zresztą nie wiem czy słuszna) jest taka że USB-TTL ma własne pull up.

Zresztą się nawet pytałem

Załóżmy, że to ten sam sprzęt, te trzy płytki.
Czy jesteś pewien jaki adres ma każda z płytek PZEM i czy taki adres używasz w kodzie YAML w ESPHome? Czy zmieniasz kod pomiędzy płytkami gdy podłączasz je pod ESP? Zakładam, że na razie robisz to pojedynczo.

Sprawdź adresy i podaj nam cały kod YAMl dla swojej płytki ESP.

Poniżej mój działający kod dla 3 szt PZEM04T V3 i WT32-ETH01

substitutions:
  device_name: "wt32-eth01 [35]"
  device_name_lower: "wt32-eth01-3pzem"

esphome:
  name: ${device_name_lower}

esp32:
  board: esp32dev
  framework:
    type: esp-idf

logger:

api:

ota:
  - platform: esphome

web_server:
  port: 80

bluetooth_proxy:
  active: true

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO16

uart:
  rx_pin: GPIO05
  tx_pin: GPIO17
  baud_rate: 9600
  stop_bits: 2
  id: ubus1

modbus:
  uart_id: ubus1
  send_wait_time: 200ms

sensor:
  - platform: pzemac
    id: pzem1
    address: 1
    update_interval: 5s
    voltage:
      name: "PZEM-1 Napięcie"
      unit_of_measurement: V
    current:
      name: "PZEM-1 Prąd"
      unit_of_measurement: A
    energy:
      name: "PZEM-1 Energia"
      unit_of_measurement: kWh
      accuracy_decimals: 2
      filters:
        - multiply: 0.001
    power:
      name: "PZEM-1 Moc"
      unit_of_measurement: W
    frequency:
      name: "PZEM-1 Częstotliwość"
      unit_of_measurement: Hz
    power_factor:
      name: "PZEM-1 Współczynnik mocy"

  - platform: pzemac
    id: pzem2
    address: 2
    update_interval: 6s
    voltage:
      name: "PZEM-2 Napięcie"
      unit_of_measurement: V
    current:
      name: "PZEM-2 Prąd"
      unit_of_measurement: A
    energy:
      name: "PZEM-2 Energia"
      unit_of_measurement: kWh
      accuracy_decimals: 2
      filters:
        - multiply: 0.001
    power:
      name: "PZEM-2 Moc"
      unit_of_measurement: W
    frequency:
      name: "PZEM-2 Częstotliwość"
      unit_of_measurement: Hz
    power_factor:
      name: "PZEM-2 Współczynnik mocy"

  - platform: pzemac
    id: pzem3
    address: 3
    update_interval: 7s
    voltage:
      name: "PZEM-3 Napięcie"
      unit_of_measurement: V
    current:
      name: "PZEM-3 Prąd"
      unit_of_measurement: A
    energy:
      name: "PZEM-3 Energia"
      unit_of_measurement: kWh
      accuracy_decimals: 2
      filters:
        - multiply: 0.001
    power:
      name: "PZEM-3 Moc"
      unit_of_measurement: W
    frequency:
      name: "PZEM-3 Częstotliwość"
      unit_of_measurement: Hz
    power_factor:
      name: "PZEM-3 Współczynnik mocy"

button:
  - platform: restart
    name: Restart
    entity_category: diagnostic
    disabled_by_default: false
    icon: mdi:restart
    device_class: restart

text_sensor:
  - platform: ethernet_info
    ip_address:
      name: ESP IP Address
    mac_address:
      name: ESP MAC Addr

Wróciłem do początku by przejrzeć czy coś pominęliśmy…

jeśli chodzi o działający to sfajczysz ESP (chyba, że stosujesz konwerter poziomów logiki TTL<>LVTTL o którym też nie ma nigdzie ani słowa, albo chociaż jakiś dzielnik napięcia - ESP na dowolnym swoim wejściu toleruje napięcia do 3.6V a “spodziewa się” napięć do 3.0V )

raczej te pozostałe się nadają do łączenia z ESP niż ten pierwszy…
weź inny egzemplarz ESP (ten już może mieć częściowo uszkodzone GPIO)
ale zanim go podłączysz zadbaj o logikę na poziomach zgodnych z LVTTL (de facto chodzi o CMOS 3.3V)

Te LEDy są źródłem problemów w komunikacji UART poza specyfikacją (układ, który się stosuje jest dość bezczelnym rozwiązaniem, dlatego są potrzebne diody impulsowe)

Jest zgodny z logiką TTL i pewnie podciąga linie.

@angler Cała tajemnica twojego kodu polega chyba na tym, że używasz 2 bitów stop, choć PZEM wystarczy 1. Teoretycznie to nie przeszkadza, a przy źle zaprojektowanym układzie stabilizuje magistralę. Cisza na magistrali to też jedynka więc ten dodatkowy bit jest nie do wykrycia.
Skoro wszyskie mierniki są sprawne to powinno działać i problem jest w czymś innym. Temat był wałkowany i wynika że układy jest na tyle źle zaprojektowany i wymaga “strojenia” :wink: Te LEDy w układzie są tak potrzebne jak ząb teściowej - tylko po to żeby bolał. Wywalił bym wszystkie.

1 polubienie

Mówisz o LED’ach na płytkach PZEM przy złączu TTL?

Taka uwaga, którą cennie chyba wskazał Claude:
“W nowszym ESPHome (esp-idf framework) zmienił się sposób obsługi UART — bufor TX jest współdzielony i gdy dwa sensory z identycznym update_interval: 5s startują praktycznie jednocześnie, ich bajty trafiają do bufora bez separacji. W starszym Arduino framework każde zapytanie blokujące czekało na zakończenie — teraz tak nie jest.”

Obejrzałem pod lupą oznaczenia układów na płytkach. Na działającym (D) jest π121m31, na nie działającym (ND) π121u31 vs. AI podaje > Główna różnica między izolatorami cyfrowymi 2Pai Semi π121U31 a π121M31 leży w ich prędkości transmisji danych (data rate). Model

π121M31 jest szybszy (obsługuje 10 Mbps) i przeznaczony do szybkich sygnałów, takich jak TXD/RXD, natomiast π121U31 to wolniejszy wariant (150 Kbps) stosowany do wolniejszych sygnałów.


@RobinI30 - Masz na myśli żeby je zewrzeć?

Wywalić - znaczy wylutować w miernikach. Nie zaszkodzi a może poprawi🙂 Trudno wymagać ale oscyloskop dużo by powiedział.

Analiza LLM’a ciąg dalszy:

Różnica leży w budowie wyjścia izolatora

EDIT:
Sugestia o różnicy w budowie układów wydała mi się halucynacją więc kazałem mu porównać oba datasheet tych układów:

Mam oba datasheety — i to jest bardzo zaskakujące!

Kluczowe odkrycie: Oba układy mają IDENTYCZNE specyfikacje wyjścia!

Z tabeli DC Specifications obu kart katalogowych:

Parametr π121M31 π121U31
VOH przy -20µA VDDx − 0,1V VDDx − 0,1V
VOH przy -2mA VDDx − 0,2 do VDDx − 0,1V VDDx − 0,2 do VDDx − 0,1V
VOL 0,1V 0,1V
Pobór prądu (spocz.) ~524µA/stronę ~539µA/stronę
UVLO threshold 2,65V 2,65V

Oba układy to push-pull z tym samym poziomem wyjścia. Przy VDD2=5V obydwa POWINNY wystawiać ~4,9V. Moja wcześniejsza teoria o open-drain vs push-pull była błędna.

Co to oznacza dla Twojego problemu?

Ponieważ oba układy są elektrycznie identyczne wg specyfikacji, a Ty mierzysz 2,95V zamiast ~4,9V na π121U31, oznacza to tylko jedno:

Twoje egzemplarze π121U31 są uszkodzone lub wadliwe fabrycznie — nie jest to fundamentalna różnica w architekturze, tylko zły egzemplarz lub uszkodzona partia produkcyjna.

No według mnie jest pull up dla TX jest przerwany lub nie jest podłączony do linii sygnałowej co już zresztą pisalem.

To razcej jest prawda.

I miałem takie podejrzenia od początku że to jakaś wada w produkcji.


Trzeba założyć gdzieś rezystor tylko nie jestem narazie wstanie stwierdzić gdzie bo piszę z telefonu i może ktoś bardziej doświadczony to określi

To jakieś bredzenie AI, chyba nie mówisz poważnie - zobacz jaka prędkość wystarcza by czytać te czujniki

tyle to można osiągnąć na katarynce kręconej korbą…
przy takich szybkościach działa nawet programowy serial w ESP8266

Ta kwestia gdzieś na forum była już opisywana (może i w tym wątku) - konstrukcja z kontrolkami LED w PZEM jest idiotyczna, w dodatku powszechne jest stosowanie UARTów połączonych poza specyfikacją (więc łącząc “na pirata” = jeden do trzech zamiast jeden do jeden, trzeba dokładać diody impulsowe, które zabierają cenne napięcie przy logice 3.3V)
zero informacji o tych diodach impulsowych, więc zakładam @Peter001 , że ich nie użyłeś
dodatkowo warto zmodyfikować rezystory…

A pomijając wszystko pokaż nam swój YAML z ESPHome (wklej jako kod)

1 polubienie