Készül a Box

Elkészült a PCB, kettőt élesztek.

Nagyvonalakban:

Táp: 10-32V
De működni fog USBről is, (voltaképpen már most onnan megy, lehet bele sütni fw-t)
3 relé ACS árammérővel
2 RS485
2 Opencollector
2 DI
2 0-10V OUT
4 PT1000 in, vagy átszerelhető 4-20mA-re, vagy NTC-re, vagy 0-10V be-re
DS2482 one wire master
ESP32-WROOM custom firmware debug uart csatival inplace programozható
STM32F103 SWD csatival
3 feedback led.
build in html page
modbus slave/master, multi master handling a két rs485-tel
wifi access , json api
ble advertising parse: pl ha ble advertisingot csinálsz valami mással, akkor tudsz szórni hőmérségletet, vagy bármit, amit ezzel be lehet fogni, és tolja tovább + ble serial

Hozzászólások

Ha publikus a kapcs rajz, en szivesen raneznek.

Par 5let:
- relekbol tobbfele footprintet raknek ra, tipikusan amit szeretnek (olcso rele), es a kotelezo finder 40.52...

- jol latom hogy a szelen levo forszemekre ha csatlakozot tennek, akkor lelogna a nyakrol?

A kovetkezo nyak amit butykolni fogok, ott minden csatlakozo melle plusz forrszem, hogyha ugy hozza a sors akkor fixen be tudjam forrasztani (es ne kelljen a csatit leforrasztani).

Egyebkent hajra. Teher alatt no a palma:)

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

kalapsin, fain.

Engem a pt100(0)/4-20mA bemenet kapcs rajz reszlete erdekelne legjobban.

Ha az egesz nem publikus, akkor csak azt a reszletet megmutatod?

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

A bemenetre köthető feszültséget az R39 terhelhetősége határozza meg.
Ha mondjuk normál 1206, akkor +/-33V körül van.

Ha megszakadok, sem értem, hogy miért ~0..0,8V az ADC bemenete.
Szemmel láthatóan rengeteg felesleges alkatrészt tartalmazó, hibásan összeollózott áramkör.

Itt kezdődnek a problémák: milyen 5 voltot??

Az lm358 maximális kimenő feszültsége 3,8V. Ha meg ezt leosztod a 10k/2,7k osztóval, akkor mit véd a BAT54S felső diódája? És az alsó?

Megpróbálom leírni hogyan készül egy ilyen áramkör. No, nem próbálkozással, mert azt a kutya szokott. ;)
Meg is lehet tervezni.

1. Az ADC-t nem használjuk ki teljesen, mert az összeadódó tűrésekből (osztó tagok, táp és ADC) az is kijöhet, hogy a 10V helyett csak 9,6V lesz a végkitérés.

2. Osztó méretezés.
2.1 Az mcu adatlapjából meg kell határozni a megengedett clamping áramot. (Absolute maximum ratings.)
Az osztó felső tagja legyen ennél nagyobb: Ube max/R1 < Iclamp max.
Ha zajos környezetben nagyobb zavarimpulzusok várhatók, akkor külön védődiódák, vagy esd védő diódák is kellenek. (mint itt a BAT54S).

2.2 Az osztó alsó tagjával be kell állítani a kívánt osztási arányt.

Példa:
- nem használok (5V usb) tápot az ADC-hez, hanem egy soic tl431xI-t. Azért választom a nagyobb tokot, mert így még a nyákon is meghűtve termikusan stabilabb lesz.
Tehát a referencia feszültség 2,495V +/-1%.
- a mérendő 12V-hoz az osztó 10k/1,43k. Ez teljesíti a 2.1 feltételeket legalább 60V-ig. A végkitérés kb. 20V és <+/-4%
(Az osztási arány ~8, egyszerű shift segítségével lehet vele számolni.)
- az összejött hibákat kiegyenlítem:
-- a Vref értékét megmérem és pl. eepromban tárolom a mért érték számításához
-- következő lépésként ismert (>0,5*20V) feszültséggel meghatározom az osztó hibáját, és az így keletkezett szorzót a későbbiekben felhasználom a számításokhoz.
Ezzel a szerkezet pl. szobahőmérsékleten és a környékén elég pontos lesz. (lásd: tl431 adatlap)

2.3 Az adc mintavételi frekvencia, vagy annak a felénél kisebb maximális mérendő frekvencia alapján meg kell határozni az R2-vel párhuzamos kapacitás értékét. Ehhez szükség lehet az ADC bemeneti paramétereire. Ennek alapján meg kell határozni a mintavételi idő minimális értékét.

Konklúzió:
Az áramkörödből az (R36, R37, R38,) R39, (C21,) (R40,) R46, C23, (D4) elemeket kell megtartani és megfelelően méretezni. Össze kell kötni az R39(2) és R46(2) pontokat. Minden más kuka.
A zárójelben levő alkatrészek opcionálisak, csak a hangoláshoz, más méréshatároz vagy a zavarvédelemhez szükségesek.

Már csak két probléma maradt:
- Hol a gnd és a csillag topológia milyen hibákat fog okozni?
- Milyen zavarok lesznek, és ehhez kell e további szoftveres szűrést alkalmazni.

Ha ellenállhatatlan vágyat érzel a műveleti erősítők használatáta, méghozzá iyen kis feszültségeken, akkor javaslom az MCP6001-et. Az legalább nem múlt el 40 éves. ;)

Ezt kerlek peldaval mutasd be:

Az adc mintavételi frekvencia, vagy annak a felénél kisebb maximális mérendő frekvencia alapján meg kell határozni az R2-vel párhuzamos kapacitás értékét. Ehhez szükség lehet az ADC bemeneti paramétereire. Ennek alapján meg kell határozni a mintavételi idő minimális értékét.

Aztan leirom en is miert ilyen amilyen meg mikor fogok labormuszertet gyartani (soha)

Sokan nem tudnak meretezni akkor mert mindenhol 1n 10n 100n konder a hianycikk. :) meg lattam en mar muverosito nelkul mcu labra kotve meteres zsinort...

------------------------
uint8_t *data; // tipussal megszorozzuk az adatot. wtf?

A dolognak semmi köze a laborműszerekhez. A kis cég, ahol dolgozom, kis sorozatban gyárt motordiagnosztikai műszereket. Elég gáz, ha a két eladott műszer közül a 12,2V akkufeszültséget az egyik 11,2V, a másik meg 13,1V értékűnek méri. A hitelesítést 1200Ft-os kínai műszerrel végezzük, amiben asszem Microchip ADC van, és valószínűleg ugyanúgy hitelesítették gyártáskor, mint mi.

Nem értem teljesen a hiánycikk fogalmát. A sarki bótban valószínűleg nem fogsz semmit kapni. Ha meg nem ott vásárolsz, akkor bármit. Ehhez persze ismerni kell az alkatrészeket. Sőt, én úgy tervezem az egyes áramköröket, hogy lehetőleg minél több egyforma alkatrészt kelljen vásárolni. Pedig a sorozatnagyság nem indokolja.
Nemrég volt egy speciális esetem. Egy meglévő áramkört kellett bővíteni, konkrétan egy osztó alsó tagját variálni. Mivel általában a TME készletét veszem alapul, (a szomszád utcában van a HR Elektronika), ezért kiszámoltam az alsó tag határértékeit, majd megnéztem a a választékot 780 és 560 Ohm 1% között.

Elárulom a titkot: Bort lehet szőlőből is csinálni.
Ja, nem, az a másik. ;)
Egy mcu bemenetére bármit ráköthetsz. Tudod, van az adatlap, abban meg le van írva mit bír. Egészen addig, amíg a bemeneti jel nem lépi túl a határértékeket, addig nem fog megsérülni.
Azért csak "megsérűlni", mert egyáltalán nem biztos, hogy azonnal tönkremegy. Láttam egy néhány méteres árnyékolt vezeték végén csücsülő réselt optocsatolóval megvalósított impulzusszámlálót. Sztatikus feszültségek voltak, de a bemeneti védelem kifelejtődött. És érdekes módon egyre jobban szaporodtak a kimaradó impulzusok. Valószínűleg a bemeneti fet gate szigetelése átütött és elkezdett "korhadni". Erről a jelenségről 35 éve olvastam, de csak most láttam élőben működni. Tán azért, mert addig ilyen dilettáns és trehány mérnököt sem láttam. :-D

Nézzük azt a méretezési példát:
- mintavételi frekvencia 5000Hz
- osztó R1/R2 = 10k/1,43k

1. Határfrekvencia fh1=5000/2 kHz
fh1 = 1/(2*pi*(R1xR2)*C)
C>50nF - az áramkörbe elég 47nF 50V X7R

Valójában nem túl fontos, mert a további szűrés helyett túlmintavételezek (kb. 10x), így utófeldolgozás nélkül is szép lehet a grafikon.

2. ADC minimális mintavételi idő (alacsonyabb frekvenciákon)
(Gondolom, más SAR ADC is hasonlóan működik, ezért a saját szemétdombomról mutatok példát.
Az alkalmazott mcu pic18f24k50, 10 bites ADC))
Az adatlap 298. oldalán a "18.4 A/D Acquisition Requirements" fejezet alapján számolok.
Rs=R1xR2=1251 Ohm
Tad=4/3 us

Tc=0,2 us
Tacq=5,2 us - a harmadik hőmérséletfüggő tagot elhagytam
Tacq/Tad=3,9 ~ 4 + 1 - itt meg visszanyertem a hőmérsékleti tagot

Tehát Tacq = 5*Tad

Miért van erre szükség? Minél kisebb a mintavételezési időablak, annál pontosabb lesz a mintavétel. Egyrészt szebb lesz a rajzolt görbe, másrészt pontosabb lesz az esetleges további szűrés eredménye is.

Ebben találod a Figure 23 (36.oldal) tetején:
R114+U9 -> Vref
Szerintem a C58 lehet felejtős is.
A C58 felett ott látod a Vref feliratot. Ezt kell rákötni az mcu "VREF+ Positive reference voltage" lábájára. Az ADC-t meg úgy kell programozni, hogy ezt a feszültséget használja. Ekkor a méréshatár nem 0..Vdd, hanem 0..Vref+ között lesz.

A fenti áramkör méretezése:
R58 < (Vdd-Vref)/1mA - lásd tl431 adatlap: Ika min.
Erre 800 Ohm jön ki, tehát azért 470, mert akkor nem túl meleg. ;)

Én a ST Microelectronics TL431AID típust használom, mert jobban tetszik a kompenzációja.

van egy 0-10V-os/4-20mA-es nyomásmérő. Rákötöm a 40 éves LM-re. nulla nyomásnál mutat az adc 40et, 5 barnal meg mutat mondjuk 3419-et. Ezzel be is kalibáltam. Az érkező értéket meg szűröm, hogy egyszer átlagolok a DMAnal, aztán meg ertek=ertek+((ujertek-ertek)/filter), ahol a filter 4-8-16, tehát lomha mint a zállat, de még is kellően gyors.

aztán annyi a logika, ha a nyomás 3bar alá esik huzd meg a relét, és ha a nyomás 3.1 bar akkor engedd el.

2 db opamp van a 40 éve lm-ben, a másikra meg egy potit kötök, és a hasonlo felépítésű opampra (kapaszkodj, ott lm324 van) pt1000rel hőmérsékletet mérek, hasonlo modon, mint a nyomásnál. A potival beállítanak egy hőfokot, és egy pid+pwm logikával(ha kell, vagy hiszterézis) opencollectorral kapcsolgatok egy relét fűteni.

szal ez kellő pontosság. úgy gondolom. meg annyi procit cseréltünk már, mert el lett lőve az adc mert nem volt opamp. akármilyen opamp jo lett volna. szal nem patikamérleg ez...


------------------------
uint8_t *data; // tipussal megszorozzuk az adatot. wtf?

Értem én, neked működik.
Nekem meg van rá két referencia értékű példám. ;)

Nagyértékű elődöm egy (négy) 12V-os nyomásmérővel dolgozott. A gyártó óvatosan megtervezett 8V-os áramkörét beollózta egy 5V-os áramkörbe. (Ezzel kinyírva a hőkompenzációt.) Működött, el is adtak belőle vagy 500 darabot.
Mindig akadt valami probléma, ezért terveztem egy másikat, ami akár 10x olcsóbb és legalább 20x kisebb lett. Aztán elkezdett dühöngeni a szoftveresünk, hogy már megint majdnem elkészült, de a főnöknek már megint újabb ötletei támadtak. Ezért aztán végigszámoltam a régi áramkört, megnéztem a szoftvert is. Csak annyi történt, hogy a főnök - aki elég jól ért a motorokhoz - újabb részleteket fedezett fel a nyomásgörbéken. Az új áramkör meg maximum 2000, de minimum 500 százalékkal pontosabb lett.
Ha az új áramkör is jó messze van egy "laborműszertől", akkor minek neveznéd a másikat?
Én hulladéknak, de működött és vitték mint a cukrot. :-D

Ennél kisebb szenzáció egy másik segédáramkör. Sok év alatt sok ezer példányt vettek belőle. Aztán megkaptam a kérdést: Miért lett húszból húsz selejt?
Csak azért, mert a referenciának is használt 78L05 ebben a sorozatban véletlenül a tűrés szélére került. Feldobtam egy grafikonra, és megmondtam melyik két tartományban van a hiba. És ott is volt.
A dilettáns kolléga választott egy "jó pontos" áramkört, csak elfelejtette kiszámolni az adatlap alapján a türések hatását.

Hidd el egy öreg szakembernek, hogy egy opamp nem zavarszűrő és túlfeszültségvédő alkatrész!
Itt egy multifunkciós műszer. Ugyan használat közben nincs rajta hosszú kábel, de a 4 db 12V-os bemenet a gyújtótrafóra van kötve (300V hosszabb impulzuszavarra méretezve), meg ott a kék gyűrűvel (egy másikkal) 1200A-ig tudunk áramot mérni. Ha megfigyeled, ott a 4 db BAT54S is. 7 bemenet közvetlenül az mcu bemenetére van kötve, egy meg opampon keresztül, mert ott egy differenciál integrátorra volt szükség. Biztosan nem fog elromlani, hiszen én terveztem. :-D

Szóval nem érdemes sem jól, sem pontosan dolgozni, mert minek. Úgy is működik.
Nekem meg soha nem kellett sem cpu-t sem mást cserélni.

En azon agyaltam regebben, hogy hogyan lehetne megoldani a 4-20mA jel fogadasat ugy, hogyha veletlenul 230V jelenik meg ugyanott (elkotes), akkor se menjen tonkre.

Csak nehany elgondolas:
1. Megprobalom szurni, vedeni (majd jegyzeteimet elokeresem), de ezzel elakadtam.

2. Optikailag levalasztott bemenet.
2a. Az ad atalakito valamilyen digitalis modon kommunikal (i2c, soros, akarmi)
2b. V->f atalakito, az at tud menni optocsatolon, a tuloldalon csak szamolunk.

Szerinted melyik ut a nyero?

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

Ezen a dolgon kár agyalni.
A 4-20mA jeladó törpefeszültségű.
Az ilyet a 230V-tól adott távolságra szabad csak vezetni a zavar- és érintésvédelem miatt.
Célszerű a szétválasztást polarizált csatlakozóval (nem lehet másképp bedugni) és eltérő színű és szerkezetű kábelekkel megoldani. Nagyon amatőr munkánál is célszerű a bekötést megjelölni és a kapcsolási rajz bekötésre vonatkozó részét elhelyezni a készüléken.

Ennek ellenére egyes bemeneteket lehet és kell is túlfeszültség ellen védeni. Egy egyszerű példa. (Nem rajzolom le, csak ha másképp nem érted.)
8X---
Itt egy egyszerű osztó, ami 12V bemenő jelet alakít 5V mcu bemenetté.

bemenet - 33k - 33k - mcu bemenet - 51k - gnd

A bemeneti jel egy motor gyújtótrafója.
Az osztóból a 12V névleges feszültségen 5,23V jön ki. A gyakorlatban azt kell biztosítani, hogy 10V körüli akkufeszültségnél is elérje a cmos Schmitt-trigger 0,7Vdd értékét.
Gyújtáskor bemeneti jelen néhányszor 100V értékű impulzus jelenik meg. Ezért, illetve a magasabb akkufeszültség miatt biztosítani kell, hogy az mcu bemenete ne kapjon túlfeszültséget.
Ehhez az osztót ki kell egészíteni egy BAT54S túlfeszültségvédő dióda párral:

Vdd - K| - mcu bemenet - K| - gnd

A 33k ellenállások maximális teljesítménye 0,25W, maximális feszültsége 250V.
- a két ellenállás elméletileg 500V feszültséget elvisel
- ekkor 7,6 mA áram folyik, amit a BAT54 elvisel
- a 500V esetén csúcsteljesítmény 3,78W (sok, de nem folyamatos)
- folyamatos terhelés mellett az osztó 182V feszültséget visel el
- a felső dióda biztosítja a megengedett <=Vdd+0,3 feszültséget az mcu bemenetén

Ha a felső diódán folyó áram összemérhető az áramkör fogyasztásával, akor a Vdd helyett (aminek az értéke ekkor megemelkedne) pl. egy 4,7V zener segítségével lehet elnyelni a felesleges áramot.

További zavarszűrés vagy határfrekvencia beállítás céljából az mcu bemenet és a gnd közé egy megfelelően méretezett kondenzátort lehet kötni.
8X---
A fenti méretezés szabályai
- ki kell alakítan az üzemi paramétereknek megfelelő bemenetet
- ki kell egészíteni egy olyan áramkörrel, ami csak az üzemi paramétereken kívül kapcsolódik be (egy dióda vagy zener segítségével)
- ellenőrizni kell, hogy az áramkör elviseli-e a maximális feszültség és áram okozta terhelést

A fenti osztó üzemi árama ~0,1mA, ezért könnyű a megfelelő védőáramkört kialakítani.
A 4-20mA bemeneti áramnál - a sokkal nagyobb áram miatt - sokkal nagyobb teljesítményű védőáramkör kellene. Mondjuk a 24V/20mA helyett 240V/200mA esetén 48W teljesítményt kellene elnyelni, ami kicsit túlzásnak tűnik. ;)

Hogyan csinálnám?

szenzor és/vagy beavatkozószerv - mcu, uart vagy i2c - meghajtás (leválasztás) - kábel --- központ

- Az mcu (3-400Ft) kezeli az egyes perifériákat, egységes protokollra alakítja a "tennivalókat".
- A vonal csavart érpár (utp).
- A vonali protokoll és meghajtás rs485 (szimplex, (half)duplex), vagy (d)i2c. Ez utóbbi lényegesen drágább, és rendesen kihasználva nem kezdő szint.
- A leválasztás lehet optikai (sok irodalom van hozzá), vagy digital isolator (drágább).
- Ha tényleg szükséges a leválasztás, ahhoz van megfelelő tápegység modul is (meg ilyen), vagy lehet kábelen táplálni.

Hogy válaszoljak is valamit. ;)

Igazad van abban, hogy kétpontszabályzáshoz nem kell űrrakéta.
Ahova meg erősítés vagy illesztés kell, oda kell!

A problémám csak az lm358 hibás és felesleges alkalmazásával volt az adott áramkörben.
A határértékek hibás figyelembevétele okozott már néhány kalamajkát.
- Jurassic park - a dínók számáról azt hitték, hogy csak kevesebb lehet
- Apollo 13 - a szuperhideg tartályról nem gondolták, hogy jól felmelegedhet
- az első ózonlyuk mérések - a túl magas értékeket eldobták mint mérési hibát
- 5V kimenetről beszéltél - azt hitted, hogy az lm358 rail to rail kimenetű
:-D

mi lesz ha 5V-ra méretezem az oszót, hogy 3.3 legyen az adc-nek, és közben nem 5 V lesz ott? mindegy hova ül ki, 4V-ra, 3.5-re, akárhova. a kapcsrajz átalakitható PT100(0) mérésre is, nem akartam tovább variálni.
ez egy hobbi, mondhatjuk botcsinálta vagyok ebben a témában, próbálok túllépni az arduino szinten, de mégis olyant készíteni, ami a későbbi terveimnek megfelel. ha pontos mérésre van szükségem, esetleg nagy hőmérsékletre, veszek ipari erre kitalált rtd modult amire pt-t K J tipusút közhetek, ami hőmérséklet kompenzált apámfaxa 100ezeré. itt egy 40ftos opamp kellő pontosságot ad. nekem teljesen mindegy, hogy 80fokot mérek, 78at, vagy 82t. Ha nagyon kritikus több pontos kalibrálást lehet alkalmazni, aztán még jobb lesz, de elég az ami van.

van benne ACS árammérő is feszültségmérés nélkül, igazán az áramérték a fontos. ami megint nem fontos hogy pontos legyen, mert mindegy, hogy 1A folyik, vagy 1.05A. Azt kell tudnom, hogy 0.1A folyik, ha a szivattyú elejtette a vizet, és 0.5A ha szállít vizet. így ha áram van indul egy timer, mely ha lejár, folyni kell 0.5A-nak. Ha nem, bontjuk a relét, és notifikációt küldünk. szárazfutásvédelem. Ha pontos teljesítménymérés kell veszek datcont.

egyébként az opampnál vannak nagyobb bajaim is, mind tudásban, mint működésben, de rajta vagyok. pl lehet hogy a fejedet fognád, de van rajta egy LMR62014(vagy ujabbja) step up 12V-ra (5V-ról), melyre szintén egy LM358 van kötve, melyet 3.3V pwm-mel hajtva készítettem a 10V-ot. és ez elég egy EC ventilátor vezérlésére. és működik. tudod, mint a kezdő az iskolában. összerakja, tanul. ...


------------------------
uint8_t *data; // tipussal megszorozzuk az adatot. wtf?

Erre most mit mondjak?
Én kérek elnézést, hogy egyáltalán megszólaltam!

De folyamatosan csodákozok azon, hogy aki botcsinálta, az miért utasítja mindig vissza a profi tanácsát? Vajon miből gondolja, hogy 35 év fejlesztőmérnöki tapasztalattal szemben mindent jobban tud?

De mindegy, mert nekem is az az alapelvem, hogy saját kárán tanul a gyerek, nem a szülői intelmekből. A jótanácsok értelme csak a tapasztalat után lesz világos. ;)

Visszafogom magam a hülyébnél-hülyébb hasonlatok gyártásában. :)
De ez a kopipészt programming ütött. Pár hónapja új szoftveresem van. Éppen egy olyan feladatot csinál, amihez szinte csak klónozni kell egy korábbi projektet. Közben állandóan nekem szegzi a kérdést: Hogy működhet ez a program több száz ügyfélnél? - Hááát, nagyon nagy szerencsével. ;)
Bizony, a másik szoftveres összeollózott bizonyos dolgokat. Az algoritmus néha nincs, néha csak befejezve nincs, néha meg semmit sem csinál, de azt ostoba módon.
De működik!!!

Tudod, az elektronika is olyan mint a sakk. Pont olyan, mint a Polgár Zsuzsával készült ismeretterjesztő film. Abban elmegy egy furgon, oldalán egy sakktáblával. A leányzó egy-két másodpercig látta, de az értelmes állást fel tudja állítani. Az ellenpróbát viszont nem, mert ott értelmetlen volt az állás.
Az elektronika is hasonló. Még a kis gyakorlattal rendelkező szakember is felismeri, hogy rádiót lát, vagy zabhegyező gépet a kapcsolási rajzon. Szóval mintafelismerés. A kapcsolási rajz is kisebb, rutinszerű mintákból tevődik össze. A minták sorrendje, pozíciója is tipikusnak mondható. Az attól eltérő felismerése talán még egy-két másodpercbe is kerülhet.

Természetesen még az értelmetlen áramkör is működhet, akár kielégítő módon is. (Mindössze a finom grófkisasszonyi lelkem tiltakozik ellene. ;)) Aztán, ha mégsem, akkor majd a botcsinálta majd jól megoldja azt is. "Mert én szeretem a kihívásokat!" (Doktor Szöszi)