Vier goedkope Modbus analoge uitgangsmodules, een voor een gemeten tegen dezelfde meter.

Analoge uitgangsmodules vergeleken

Wat is een analoge uitgangsmodule?
Een analoge uitgangsmodule maakt van een digitaal commando een analoog signaal. Je stuurt er een getal naartoe over RS485, RS232, USB of Ethernet, meestal met Modbus, en op de uitgang komt een spanning of een stroom te staan. Meestal 0-10 V, 0-20 mA of 4-20 mA. Veel meer doet zo'n module niet.

In de industrie stuur je er vanuit een PLC een klep, een frequentieregelaar of een regelaar mee aan. Thuis op de werkbank zijn het vooral goedkope instelbare bronnen: een stroom of spanning die je vanuit software zet, zonder dat je er een labvoeding of een calibrator voor nodig hebt.

Hoe nauwkeurig die uitgang dan is staat zelden ergens vermeld. Dat is precies wat ik hier gemeten heb.

Wat deze vergelijking wel en niet is
Dit is een vergelijking tussen modules, geen kalibratie. De meter is een Yokogawa 7552 die officieel buiten kalibratie is. Voor deze vraag maakt dat niet uit: dezelfde meter meet alle vier de modules, dus zijn eigen fout zit in elke meting en valt weg zodra je de modules onderling vergelijkt.

Elke module levert een kanaal, ingesteld op 0-20 mA. Een sessie, een middag, een kanaal per module. Geen productietest dus.

Methode

  • Meter - Yokogawa 7552, RS232, 20 mA bereik, autorange uit, 45 minuten warmgedraaid
  • Sweep - 0 tot 19,8 of 20 mA in 101 stappen, aangestuurd door de Param Sweeper van TestController
  • Grafiek - X-Y met de instelwaarde van de module op de X-as, zodat runs van uren later over elkaar heen liggen
  • Gelogd - instelwaarde, meteruitlezing, verschil in uA en de fout in procent van de uitlezing
  • Geladen - alleen de module die aan de beurt is en de meter, ook al blijft de rest bedraad

De sweep stopt onder 20 mA. Het 20 mA bereik van de 7552 heeft geen ruimte boven bereik: bij 20,000 slaat hij om naar overbelasting, en die punten gooi ik weg.

Elke module houdt zijn fabriekskalibratie. Alle gebruikersinstellingen heb ik op nul gezet en teruggelezen, zodat er geen restje van een eerdere test kan doorgaan voor gedrag van de module.

De fout staat als instelwaarde min meter. Een negatief getal betekent dus dat de module meer levert dan gevraagd.

De modules

Module                  Betaald    Wanneer      Uitgangen
Ebyte ME31-XAXA0404     EUR 42,59  24-08-2026   4 AO + 4 AI, Ethernet, OLED
Elecdemo YK-AO23020VC   EUR 18,19  24-05-2026   1 V uit + 1 A uit
Eletechsup N4DBA06      EUR 17,99  10-03-2026   2 V + 1 A uit, analoge in, DI, DO
Eletechsup N4IOA01      EUR  5,09  13-02-2026   1 A uit

De behuizing hoort bij de prijs. De XAXA0404 zit in een eigen kast, afgedicht tegen vocht. De AO23020VC in een standaard gesloten kast. De N4DBA06 kocht ik met DIN-houder, hij is ook zonder te koop. De N4IOA01 is een kale print met een pinconnector, verder niets.

Prijzen bewegen, dus de datum hoort bij het bedrag. Per uitgangskanaal kom je op ongeveer EUR 11, EUR 10, EUR 6 en EUR 5. De Eletechsup printen zijn per kanaal het goedkoopst, en dat zijn ook precies de twee zonder kast en de laatste zelfs zonder schroefklemmen voor de stroom uitgang.

Links en plaatjes

Elecdemo YK-AO23020VC : https://www.aliexpress.us/item/3256812057715797.html?gatewayAdapt=glo2…

https://www.uploadarchief.net/files/download/xexx0600.png
(soortgelijke module, niet de XAXA0404)
Ebyte ME31-XAXA0404 : https://www.cdebyte.com/products/ME31-XAXA0404

https://www.uploadarchief.net/files/download/n4dba06.jpg
Eletechsup N4DBA06 : https://485io.com/current-voltage-adc-collector-c-2_3_6/n4dba06r-8ch-0…

https://www.uploadarchief.net/files/download/n4ioa01.jpg
Eletechsup N4IOA01 : https://485io.com/series-1-c-9_10/n4ioa01-dc-12v-24v-rs485-to-420ma-02…

Resultaten
Alle vier dezelfde behandeling: rijen met overbelasting eruit, en rijen die op de ondergrens van een module blijven hangen een keer geteld.

                        YK-AO23020VC  ME31-XAXA0404  N4DBA06       N4IOA01
gebruikte punten           100            96            96            99
ondergrens               +17,3 uA      +18,1 uA      518,6 uA      555,1 uA
                                                     (500 ingest) (500 ingest)
gemiddelde fout            -5,7 uA     -181,6 uA      -41,8 uA      -1,6 uA
gemiddelde abs. fout        6,7 uA      181,6 uA       41,9 uA      22,7 uA
grootste fout             -29,3 uA     -345,3 uA      -90,4 uA     -61,0 uA
      bij                  19,8 mA       19,6 mA       16,6 mA       1,0 mA
beste lijn, gain         +0,105 %      +1,663 %      +0,364 %     -0,419 %
beste lijn, offset         -4,6 uA      +20,0 uA       +5,2 uA     +44,3 uA
restfout, rms              6,01          1,13         12,37        10,75
restfout, % van 20 mA     0,110 %       0,013 %       0,173 %      0,129 %

De N4IOA01 is de enige die laag leest, en zijn offset duwt de andere kant op. Daardoor gaat zijn fout rond 8 mA door nul. Meet je een punt bij 10 mA, dan lees je 2 uA af en lijkt het prachtig. Over het hele bereik is de gemiddelde absolute fout 22,7 uA. Een beter voorbeeld van waarom een punt geen meting is kan ik niet bedenken.

De bovenste regels zeggen hoe nauwkeurig een module is zoals je hem uit de doos haalt. De onderste twee zeggen hoe goed de converter eronder is, want dat blijft over nadat je de best mogelijke gain- en offsetcorrectie hebt toegepast.

Geen van de vier haalt nul. De twee modules met kast blijven bij instelwaarde 0 rond de 18 uA hangen. Beide Eletechsup printen stoppen bij 0,5 mA en melden die waarde ook nog eens terug, in plaats van wat je gevraagd had.

Het gedrag per module
ME31-XAXA0404 - een helling. Zijn hele fout zit in een getal: hij loopt 1,66 % te hoog, en dat over de hele lijn, met een restfout van nog geen 2 uA. Een gaincorrectie zet de hele kromme op nul.

YK-AO23020VC - een kromming. Waar het het meeste telt is hij goed: 0,03 % door het midden van het bereik, omdat hij in de fabriek op twee punten is getrimd. Wat overblijft is kromming aan beide uiteinden. Kromming krijg je niet weg met een gainregister of met een tweepuntskalibratie.

De twee Eletechsup printen - ruis. De N4DBA06 heeft een keurige 0,36 % gain, maar daaronder zit plus en min 30 uA spreiding die van punt naar punt 15 uA verspringt. De N4IOA01 doet hetzelfde met -0,42 % gain en rms 10,75. Daar helpt geen enkele kalibratie tegen, want het herhaalt zich niet. Twee verschillende printen van dezelfde fabrikant die op dezelfde plek uitkomen: dan is het een eigenschap van het merk en niet een slechte print.

Gerangschikt naar de kwaliteit van de converter eronder, restfout rms in uA:

XAXA0404      1,13    een helling - met een getal te corrigeren
YK-AO23020VC  6,01    kromming - voorspelbaar, maar niet met gain of offset weg
N4IOA01      10,75    ruis
N4DBA06      12,37    ruis - nergens mee te corrigeren, en herhaalt zich niet

Helling, kromming en ruis. Niets daarvan staat op een datasheet.

Waarom ze verschillen
Het gedrag past bij de drie bedrijven. Elecdemo verkoopt analoge meetapparatuur, dus een getrimde converter met zijn kalibratie in het apparaat is het product. Ebyte is een IoT-bedrijf in Chengdu: de Ethernet, de afgedichte kast en het OLED-schermpje waarmee je het adres zonder bus instelt, daar gaat het bij hen om. Het analoge trimmen is bijzaak, en daarom is de beste converter hier tegelijk de minst nauwkeurige uit de doos. Eletechsup in Guangzhou verkoopt RS485-modules bij de dozijn met een kleine marge: je koopt de breedte aan I/O, en de analoge prestatie is wat dat kost.

Welke moet je kopen
Wil je hem een keer corrigeren: de ME31-XAXA0404. Vijf keer zo lineair als al het andere hier, en zijn fout is een getal. Je krijgt er vier analoge ingangen, Ethernet en een display bij. Met zijn eigen Output Scaling zou je de gainfout weg moeten kunnen regelen, maar dat heb ik nog niet getest.

Wil je een getal dat je zonder werk kunt vertrouwen: de YK-AO23020VC. In de fabriek getrimd, 0,03 % door het midden, en voor dezelfde EUR 20 krijg je er een spanningskanaal bij. Je betaalt het met de kromming aan de uiteinden en met de traagste insteltijd van de drie: 0,25 tot 0,3 s per stap, waar de Ebyte onder de 0,1 blijft.

Wil je de meeste I/O voor het minste geld: de N4DBA06. Twee spanningsuitgangen, een stroomuitgang, analoge in, DI en DO voor EUR 18. Gebruik hem om iets aan te sturen, niet om een stroom te zetten waar je op moet kunnen bouwen.

Heb je alleen een stroomuitgang nodig: de N4IOA01, EUR 5. Kale print met een pinconnector, -0,42 % gain en dezelfde Eletechsup-ruwheid. Voor dat geld valt er weinig tegen te vallen, zolang je hem niet beoordeelt op een punt vlak bij zijn nuldoorgang.

Drift
Aan het eind van de sessie heb ik de YK nog een keer gedraaid, als controle op de meter. Ik heb hem met de hand gestopt bij 8 mA. Over dat stuk lag het verschil in dezelfde band van 0 tot +2 uA als 's ochtends, dus over die vier uur zie ik in de onderste helft van het bereik geen drift. De bovenste helft heb ik niet herhaald. Het is dus een halve controle. Ik zet het er expliciet bij, want elk verschil in de tabel hierboven staat of valt met een meter die zich de hele middag hetzelfde gedraagt.

----------------------------------------------

Automatisering versus handwerk
Het meten kostte vijfentwintig minuten. Het opzetten kostte de rest van de dag.

Vier sweeps van vijf tot negen minuten, onbewaakt, geen timeouts, een gemiste meting op vierhonderd. Die helft doet precies wat hij belooft, en een kromme zien ontstaan tegen een meter is gewoon leuk.

Nu de andere helft.

Ik heb twaalf pogingen nodig gehad om een kolom uA te laten zeggen in plaats van V. De eenheid wordt een keer gelezen, op het moment dat je de rij aanmaakt, en daarna genegeerd. Aanpassen doet niets, hernoemen doet niets. Het enige dat werkt is de rij weggooien en een nieuwe maken. En dan houdt de grafiek zijn eigen oude kopie vast, dus daar mag je het nog een keer doen.

Elke wijziging in een definitie betekent TestController afsluiten, bewerken, opslaan en opnieuw starten. Ik ben de tel kwijtgeraakt hoe vaak dat vandaag was. De NullPointerException bij importeren kwam een keer of twintig langs.

Een variabele waar een struct in heeft gezeten kun je niet printen, niet vergelijken en niet opnieuw vullen. Alle drie geven dezelfde exception, en de foutmelding wijst naar de regel na de regel die het echt deed. Dan zit je een half uur naar de verkeerde regel te kijken. De oplossing bleek er eerst een dummywaarde in te zetten.

Een commando stond gewoon in het bestand, correct, en werd nooit geregistreerd. Niets in de log, geen fout, gewoon afwezig. Verplaatsen loste het op en ik weet nog steeds niet waarom.

Het voorbeeld in de documentatie van de sweeper gebruikt aanhalingstekens die niet werken. De automatisch opgeslagen bestanden kwamen in een map terecht die ik niet gekozen had. Een as kwam op van -1 tot 0 met alle data opgestapeld bij nul.

Niets daarvan is moeilijk als je het eenmaal weet. Maar dat is precies het punt: het zijn allemaal dingen die je moet weten en onthouden, en bijna niets ervan staat opgeschreven. Wat je ermee kunt bouwen is fascinerend. Makkelijk instapwerk is het niet, en niemand moet binnenlopen in de verwachting dat het dat wel is.

----------------------------------------------

Metingen door Flash2b, 13-09-2026. De TestController-definities van alle vier de modules zijn van mijn hand, net als die van de Yokogawa. Meter: Yokogawa 7552, s/n 51WF0456, buiten kalibratie.

----------------------------------------------

De meet details en grafieken:

Elecdemo YK-AO23020VC, CH2, 13-09-2026
zero floor +17.3 uA - it does not reach 0
mean error -5.71 uA
mean |error| 6.65 uA
worst error -29.3 uA at 19.8 mA
best fit gain +0.105 %, offset -4.6 uA
residual +22.00 / -8.11 uA, rms 6.01
residual % FS 0.110 %

Ebyte ME31-XAXA0404, CH1, 13-09-2026
zero floor +18.1 uA - it does not reach 0 either
mean error -181.60 uA
mean |error| 181.60 uA
worst error -345.3 uA at 19.6 mA
best fit gain +1.663 %, offset +20.0 uA
residual +2.65 / -2.09 uA, rms 1.13
residual % FS 0.013 %

Eletechsup N4DBA06, CH3, 13-09-2026
floor 500 uA setpoint, meter reads 518.6 - it clamps below 0.5 mA and reports the clamped value back, so those rows share an X
mean error -41.77 uA
mean |error| 41.94 uA
worst error -90.4 uA at 16.6 mA
best fit gain +0.364 %, offset +5.2 uA
residual +34.57 / -26.49 uA, rms 12.37
residual % FS 0.173 %
step to step residual moves 15.3 uA between neighbouring points

Eletechsup N4IOA01, 13-09-2026
floor 500 uA setpoint, meter reads 555.1
mean error -1.59 uA
mean |error| 22.69 uA
worst error -61.0 uA at 1.0 mA
best fit gain -0.419 %, offset +44.3 uA
residual +25.77 / -21.44 uA, rms 10.75
residual % FS 0.129 %
step to step 8.1 uA

Ha flash2b,

Een hoop info, en een hoop meetwerk!

Het zou helpen fotootjes te zien van de gemeten modulen, zodat het een idee geeft over wat voor beesten het gaat. Wordt het wat minder abstract :-)

Linkjes naar die modulen zou ook fijn zijn...

.

Het meten kostte vijfentwintig minuten. Het opzetten kostte de rest van de dag.

Dat klinkt bekend. Iets meten is één ding. Nadenken hoe je precies moet meten om te zien wat je belangstelling heeft is een ander.
En regelmatig dwingen de meetresultaten je dan om je meting (of schakeling) te veranderen. Omdat je niet ziet wat je verwacht, om dat het meetobject anders reageert dan gehoopt / verwacht.
Geeft allemaal meer inzicht! :-)

.

Wat je hiermee kunt bouwen is fascinerend. Het is geen instaptesten, en niemand moet binnenlopen in de verwachting dat het dat wel is.

Dat is het leuke van Testcontroller: Je kunt er complexe metingen mee opzetten.
Maar aan de andere kant kun je heel makkelijk en basic loggen met met een een DMM of counter. Daarvoor is de instapdrempel net zo laat als bij andere logprogramma's.
Zeker nu er meer meters ondersteund worden dan bij welk ander meetprogramma ook. :-)

groet! Gertjan.

Dank voor je commentaar, ik zal het meenemen als ik weer tijd heb.

Het ging mij primair om de metingen, en die zitten erbij.

Op maandag 14 september 2026 13:17:42 schreef miedema:
Dat klinkt bekend. Iets meten is één ding. Nadenken hoe je precies moet meten om te zien wat je belangstelling heeft is een ander.
En regelmatig dwingen de meetresultaten je dan om je meting (of schakeling) te veranderen. Omdat je niet ziet wat je verwacht, om dat het meetobject anders reageert dan gehoopt / verwacht.
Geeft allemaal meer inzicht! :-)

Om het behapbaar te houden moest ik ook scripts schrijven, en hier had ik dus geen rekening mee gehouden. Nu heb ik 4 scripts voor een re-run dus nog een keer zal sneller gaan maar de scripttaal is weer een extra leer traject bovenop de definitie taal. En dan is er ook nog het scripttaal dialect wat in de definitie moet worden gebruikt. Bovenop ook nog gebrekkige documentatie die soms fout is of dat TC weer eens een bug heeft maken het een lange dag.

Foto's en links toegevoegd.