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ą.
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ść
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 ![]()
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”
Te LEDy w układzie są tak potrzebne jak ząb teściowej - tylko po to żeby bolał. Wywalił bym wszystkie.
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:
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.
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)