Het grote "Zwembad DIY Automatiserings" topic

Pagina: 1 ... 5 ... 18 Laatste
Acties:

Onderwerpen


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op donderdag 20 mei 2021 @ 13:37:
[...]


Hier is het Aliexpres kabeltje al binnen, en aangezien hij er eerder dan de warmtepomp is kan ik hem niet passen, maar als ik de foto's icm de grote van jouw vingers vergelijk met de mijne dan lijkt het te kloppen.
Ik heb ze ook vandaag al binnen :D
Meerdere kabels had ik besteld, voor de zekerheid.
Maar degene die jij linkt passen, net getest.

De linkse zwarte dus op deze foto. De witte zijn kleiner.
Afbeeldingslocatie: https://tweakers.net/i/jQNG_u8HCyi-ymt-0EZzFjaF1Hw=/800x/filters:strip_icc():strip_exif()/f/image/5s4sPTgd9QHs7URXGWdt39AL.jpg?f=fotoalbum_large


Ik weet nog niet wanneer ik tijd heb om het relais met warmtepomp erbij te testen, ik denk uiterlijk as. maandag.
Het idee is als volgt:
- aan beide kanten van connector in WP deze nieuwe kabel inpluggen (female/male kant)
- 1 vd twee draden verbinden (wel zorgen dat die aan beide kanten op dezelfde kleur uitkomt)
- andere van de twee verlengen en dan 1 naar relais COM en andere naar relais NO
- testen door warmtepomp aan te zetten en kijken wat er gebeurt zonder signaal, en met signaal

Kan het dan nog niet testen met daadwerkelijk water stroming, want zwembad staat nog niet. En maandag ook nog niet ;)
Dus als het goed is zal er bij mijn uiteindelijke test weinig veranderen, want er is geen water doorstroming. Ik kan wel even de flow switch zelf triggeren. De warmtepomp heeft toch wat opstarttijd nodig dus dat kan geen kwaad volgens mij.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

ik ga deze bestellen https://nl.aliexpress.com/item/1005001988591094.html
samen met https://savjee.be/2019/07...-ESP32-CT-Sensor-Emonlib/

dit lijkt me wat veiliger dan een acs712 ...

Tja vanalles


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op donderdag 20 mei 2021 @ 14:12:
[...]


Ik heb ze ook vandaag al binnen :D
Meerdere kabels had ik besteld, voor de zekerheid.
Maar degene die jij linkt passen, net getest.

De linkse zwarte dus op deze foto. De witte zijn kleiner.
[Afbeelding]


Ik weet nog niet wanneer ik tijd heb om het relais met warmtepomp erbij te testen, ik denk uiterlijk as. maandag.
Het idee is als volgt:
- aan beide kanten van connector in WP deze nieuwe kabel inpluggen (female/male kant)
- 1 vd twee draden verbinden (wel zorgen dat die aan beide kanten op dezelfde kleur uitkomt)
- andere van de twee verlengen en dan 1 naar relais COM en andere naar relais NO
- testen door warmtepomp aan te zetten en kijken wat er gebeurt zonder signaal, en met signaal

Kan het dan nog niet testen met daadwerkelijk water stroming, want zwembad staat nog niet. En maandag ook nog niet ;)
Dus als het goed is zal er bij mijn uiteindelijke test weinig veranderen, want er is geen water doorstroming. Ik kan wel even de flow switch zelf triggeren. De warmtepomp heeft toch wat opstarttijd nodig dus dat kan geen kwaad volgens mij.
Mooi dat ze passen, bedankt voor de bevestiging.
En zo aansluiten was ik iig hier ook van plan, ben benieuwd naar je test maandag.

Eind van de maand begin volgende maand lijkt het iets beter weer te worden en dan zou de warmtepomp ook komen dus hopelijk kan ik dan alles opzetten en aansluiten en maar meteen hacken denk ik :)

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Dat is ook een mooie optie.
Ik vraag me wel af of die SCT niet hetzelfde "probleem" heeft mbt het analoge signaal op je ESP. Als ik het goed begrijp sluit je hem namelijk ook op de A0 aan en dan heb je dus 10-bit resolutie. Met mogelijk een foutmarge zoals ik ook had bij de ACS712. Daarom heb ik nu een ADS1115 die ik ertussen ga zetten zodat ik een 16-bit resolutie heb. Dan is de foutmarge nog maar ~1 mA. Kan ik binnekort al testen want hij is al binnen :)
Maar zoals ik al zei, ik weet niet of dit bij die SCT sensoren ook speelt. En of het in dezelfde orde van grootte is.


Veiliger, tja... ligt een beetje aan de situatie.
Aangezien ik toch al met een relais zou gaan werken heb ik daar een fase draad nodig. De stap is dan klein om die ACS712 er gewoon tussen te zetten.
Ik zorg uiteraard wel voor goede scheiding van dit gedeelte van mijn systeem vergeleken met de andere sensoren. Goede behuizingen en bescherming van draden zorg ik ook voor.

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
En hoe "schoon" zet de analoge spanningen die jullie willen meten?
En hoe zuiver zijn de referentiespanningen en de GND nog als je inductief schakelt en in de buurt bent van velden die worden veroorzaakt door al het 230V gebeuren?
Zit er iets van filtering op de ADC's?
Want ik weet niet hoe goed je SNR is maar denk dat de laatste bitjes alleen maar ruis aan het meten zijn.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Ep Woody
  • Registratie: September 2003
  • Laatst online: 20:46
Ik heb een SHP13 op de pomp en op het ZWS zitten. Die geeft een aardig beeld qua energiegebruik, dat is voor mij het belangrijkste, zien of de pomp draait en wat het ZWS aan het doen is.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op donderdag 20 mei 2021 @ 15:06:
Dat is ook een mooie optie.
Ik vraag me wel af of die SCT niet hetzelfde "probleem" heeft mbt het analoge signaal op je ESP. Als ik het goed begrijp sluit je hem namelijk ook op de A0 aan en dan heb je dus 10-bit resolutie. Met mogelijk een foutmarge zoals ik ook had bij de ACS712. Daarom heb ik nu een ADS1115 die ik ertussen ga zetten zodat ik een 16-bit resolutie heb. Dan is de foutmarge nog maar ~1 mA. Kan ik binnekort al testen want hij is al binnen :)
Maar zoals ik al zei, ik weet niet of dit bij die SCT sensoren ook speelt. En of het in dezelfde orde van grootte is.
ik heb de adac al liggen volgens mij :) uit een eerdere bestelling, de SCT ga ik nog bestellen. dus ik kan het wel beantwoorden tzt

Tja de acs712 ik vind het niet veilig ogen als ik 4A-10A oid eroverheen jas . kans is klein maar je zal net ff een apparaat inpluggen en brand krijgen doordat je er geen erg in hebt dat het niet bestand is .. zelfde met de relais . (zoals jazsie doet met 2 relais ..) vind ik dat voorkomen beter is dan genezen.

* vso heeft wel eens zijn "serverpark" plat zien gaan (op afstand) doordat mvr vso de stofzuiger inplugte B-) wel eens waar op de UPS maar goed je snapt hem

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op donderdag 20 mei 2021 @ 15:28:
En hoe "schoon" zet de analoge spanningen die jullie willen meten?
En hoe zuiver zijn de referentiespanningen en de GND nog als je inductief schakelt en in de buurt bent van velden die worden veroorzaakt door al het 230V gebeuren?
Zit er iets van filtering op de ADC's?
Want ik weet niet hoe goed je SNR is maar denk dat de laatste bitjes alleen maar ruis aan het meten zijn.
Veel vragen :)

De ACS712 is een "hall effect sensor". Spec sheet en verdere info:
https://www.sparkfun.com/datasheets/BreakoutBoards/0712.pdf

Output is een analoog signaal in mV's , die je kan omrekenen naar current in ampere.
Wat ik dus merkte bij het testen is dat ik een te grote foutmarge heb, vooral vanwege de ADC in mijn ESP8266. Die doet maar 10-bit. Nu heb ik een ADS1115 en die doet 16-bit. Meer info in deze post.

Je hebt overigens gelijk dat het relais invloed heeft. Als die te dichtbij ligt.
Als ik met de ADS115 ertussen ga testen (hopelijk ook as. maandag of ergens tussendoor) dan zal ik eens kijken hoe groot dat effect is. Desnoods zorg ik ervoor dat ze wat verder uit elkaar liggen.

(edit)

Mijn doel is om het stroomverbruik van filterpomp én warmtepomp te meten. Bij een te grote foutmarge is dat niet echt nuttig vind ik. Dan weet je nog niet hoe zuinig de warmtepomp draait. De filterpomp zal nagenoeg altijd hetzelfde verbruiken.

(edit2)

Waarom gebruik ik geen tussenstekker of shelly: een paar redenen. Ten eerste vind ik het leuk om met dit spul te hobbyen, ten tweede wil ik dat het relais doorgaat ook al valt wifi (tijdelijk) uit en ten derde krijg ik dit kleine spul allemaal makkelijk in waterdichte behuizingen. Met tussenstekkers wordt dat vooral groter om voorelkaar te krijgen. Een Shelly zou ik wellicht nog in mn opbouw stopcontact kunnen stoppen (al is het krap zag ik), maar dat is weer op wifi.

[ Voor 22% gewijzigd door Plenkske op 20-05-2021 16:59 ]


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
@Plenkske Ben toevallig "as we speak" een PCB aan het simuleren waar ook een allegro stroomsensor (ACS772KCB-150B) op zit, echter moet deze stromen van meer dan 100A meten dus even kijken of de PCB het aan kan.

Maar probeer vooral de GND van de ADC schoon te houden, dus bijvoorbeeld niet vanaf de ESP naar het relais te gaan en dan naar ADC want dan krijg je dus een smerige GND, een ster GND is dan beter.

Verder kan je voor de ADC nog een Lowpass filter plaatsen, (weerstand in serie met een condensator naar GND)

Maar ik zou vooral al het analoge gebeuren zo kort mogelijk houden ivm storingen, digitaal is iets robuuster, hoewel een I2C lijn ook hoog ohmig is door het open collector circuit icm een pullup weerstand. Dus ook storingsgevoeliger.

Daarom ben ik voorstander van kant en klare oplossingen ( zoals de shelly plugs ) omdat er best veel mis kan gaan ;)

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Tinusvolkel schreef op donderdag 20 mei 2021 @ 17:08:
Maar probeer vooral de GND van de ADC schoon te houden, dus bijvoorbeeld niet vanaf de ESP naar het relais te gaan en dan naar ADC want dan krijg je dus een smerige GND, een ster GND is dan beter.

Verder kan je voor de ADC nog een Lowpass filter plaatsen, (weerstand in serie met een condensator naar GND)
ik begrijp je wel met "smerige gnd" maar snap je uitleg niet (visueel ingesteld) . .

teminste als ik het in mijn leken begrip vertaal zeg je iets vergelijkbaars als een ruis/brom op de lijn krijgen bij een audio stekker inpluggen oid ..

wat is een lowpass filter dan ?

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op donderdag 20 mei 2021 @ 17:08:
@Plenkske Ben toevallig "as we speak" een PCB aan het simuleren waar ook een allegro stroomsensor (ACS772KCB-150B) op zit, echter moet deze stromen van meer dan 100A meten dus even kijken of de PCB het aan kan.

Maar probeer vooral de GND van de ADC schoon te houden, dus bijvoorbeeld niet vanaf de ESP naar het relais te gaan en dan naar ADC want dan krijg je dus een smerige GND, een ster GND is dan beter.

Verder kan je voor de ADC nog een Lowpass filter plaatsen, (weerstand in serie met een condensator naar GND)

Maar ik zou vooral al het analoge gebeuren zo kort mogelijk houden ivm storingen, digitaal is iets robuuster, hoewel een I2C lijn ook hoog ohmig is door het open collector circuit icm een pullup weerstand. Dus ook storingsgevoeliger.

Daarom ben ik voorstander van kant en klare oplossingen ( zoals de shelly plugs ) omdat er best veel mis kan gaan ;)
Inkomend fase draad komt in de ACS. Uitgaand (dus alles wat ik wil meten) splits ik naar relais enerzijds en stopcontact anderzijds.

Qua GND weet ik niet zeker of ik je goed begrijp maar ik sluit alles (sensoren, relais etc.) aan met een eigen GND draad. Ik ben een PCB aan het maken met schroefterminals. Mijn inkomende 5V en GND komen op een eigen schroefterminal. Die terminals hebben beide een rijtje terminals verbonden aan elkaar, daar sluit ik dan alles wat 5V en GND nodig heeft op aan.

Bedoel je dat met de goede manier dat je "ster GND" noemt ?

Acties:
  • +2 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op donderdag 20 mei 2021 @ 17:24:
[...]


Inkomend fase draad komt in de ACS. Uitgaand (dus alles wat ik wil meten) splits ik naar relais enerzijds en stopcontact anderzijds.

Qua GND weet ik niet zeker of ik je goed begrijp maar ik sluit alles (sensoren, relais etc.) aan met een eigen GND draad. Ik ben een PCB aan het maken met schroefterminals. Mijn inkomende 5V en GND komen op een eigen schroefterminal. Die terminals hebben beide een rijtje terminals verbonden aan elkaar, daar sluit ik dan alles wat 5V en GND nodig heeft op aan.

Bedoel je dat met de goede manier dat je "ster GND" noemt ?
Met de terminals maak je idd een ster GND dus je hebt het goed begrepen :)

En @vso een lowpass filter haalt de storing met een hogere frequentie weg uit het originele laag frequent signaal, dus er gaat een meer zuiver signaal de ADC in.
Maar jullie meten wisselstroom dus moet je sowieso zorgen dat je iig ruim boven de 50Hz gaat zitten met wegfilteren.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

ik zat zelf aan zoiets te denken als "diy" kleppen regelaar (plaatje dat ik ergens vond)
Afbeeldingslocatie: https://i.imgur.com/CoFT2A8.png

Je zou een draad-eind kunnen gebruiken voor de 2 van/naar de mat en 1 voor de normale bypass.
Afbeeldingslocatie: https://i.imgur.com/N8KyT63.jpg

maar ach anderzijds als je voor 13 per stuk bij ome ali kan bestellen ..

Tja vanalles


Acties:
  • +1 Henk 'm!

  • Ep Woody
  • Registratie: September 2003
  • Laatst online: 20:46
vso schreef op vrijdag 21 mei 2021 @ 16:07:
ik zat zelf aan zoiets te denken als "diy" kleppen regelaar (plaatje dat ik ergens vond)
[Afbeelding]

Je zou een draad-eind kunnen gebruiken voor de 2 van/naar de mat en 1 voor de normale bypass.
[Afbeelding]

maar ach anderzijds als je voor 13 per stuk bij ome ali kan bestellen ..
Waarom wil je ze alle 3 kunnen bedienen? Als er 1 dicht zit is er geen flow meer mogelijk. Je zou ook alleen de bypass open kunnen zetten, dan is er bijna geen flow meer over de matten.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Ep Woody schreef op vrijdag 21 mei 2021 @ 16:36:
[...]


Waarom wil je ze alle 3 kunnen bedienen? Als er 1 dicht zit is er geen flow meer mogelijk. Je zou ook alleen de bypass open kunnen zetten, dan is er bijna geen flow meer over de matten.
Van en Naar je verwarming kan je gelijktijdig bedienen waarom niet ?

je bypass kan ook gelijktijdig (als de verwarming de volledige druk aankan) .. anders trek je hem los ..

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Pixelmagic
  • Registratie: September 2002
  • Laatst online: 13:03

Pixelmagic

Ubergeek

vso schreef op vrijdag 21 mei 2021 @ 16:07:
ik zat zelf aan zoiets te denken als "diy" kleppen regelaar (plaatje dat ik ergens vond)
[Afbeelding]

Je zou een draad-eind kunnen gebruiken voor de 2 van/naar de mat en 1 voor de normale bypass.
[Afbeelding]

maar ach anderzijds als je voor 13 per stuk bij ome ali kan bestellen ..
Plus inklaring en btw over een paar weken.... :/

PVoutput van mijn 4950Wp


Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Pixelmagic schreef op vrijdag 21 mei 2021 @ 17:13:
[...]


Plus inklaring en btw over een paar weken.... :/
ging meer om het idee dan "waar" vandaar de koop link en prijs weggelaten

Tja vanalles


Acties:
  • +3 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
@Tinusvolkel

Zojuist succesvolle test gehad van het warmtepomp flow switch - relais idee :)

Foto's:
Afbeeldingslocatie: https://tweakers.net/i/mt8nQO_njuJo8Tn3_d2x1ZHh4PQ=/232x232/filters:strip_icc():strip_exif()/f/image/9O7Zy4MR1xYakiiTMABD6XEv.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/FM1F_WWFnIZc1hWiwLO5oPVYuro=/232x232/filters:strip_icc():strip_exif()/f/image/UaHiBfcmVMo7bNIWHEkiU1Je.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/rkwxaO9v1Otox81ewWWmxgHSWmw=/232x232/filters:strip_icc():strip_exif()/f/image/deYK6X4sAvkFbyJXGsL5fmTc.jpg?f=fotoalbum_tile
Afbeeldingslocatie: https://tweakers.net/i/fL5r62uACxX7vFhKIdx8R_wndBA=/232x232/filters:strip_icc():strip_exif()/f/image/fmJ09ycrhiyNb1r9Oda6n8L9.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/zbrbDZvMlRD-WVK-m450ETJXORg=/232x232/filters:strip_icc():strip_exif()/f/image/7A0RDxZQKTIC60RaLLQPTfPU.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/PDG2vqUMvyC70CyWwLlQQWuFVpk=/232x232/filters:strip_icc():strip_exif()/f/image/Yur6CIXl4sOszDBsygDf9g70.jpg?f=fotoalbum_tile

(even snel aangesloten met lasklemmen en adereindhulsjes omdat ik nog niet weet hoelang ik de kabels moet hebben)

Een aantal tests gedaan:
- als het relais helemaal uit staat dan zal de warmtepomp niks doen en op de error gaan op een gegeven moment
- relais aan, maar geen signaal: blijft op error, ook als ik flow switch handmatig trigger
- relais aan, wel signaal: error gaat eraf als ik flow switch handmatig trigger

Als je de warmtepomp net stroom geeft staat hij standaard op OFF. Zet je hem dan aan (hij heeft opstart tijd nodig hierna) dan zal hij na een paar seconde de flow switch checken. Zo kon ik dus zien of het idee ook werkt met warmtepomp aan en flow switch triggeren of niet.
Als je hem nu weer uit zet, dan blijft hij ook de flow switch checken.

Kortom: shit works.


Verder vandaag nog veel zitten testen met die ADS en ACS712. De ADS werkt. Heb ik ook los getest op 5V en 3.3V en die waardes kwamen goed door. De ADS icm ACS712 leek in eerste instantie ook wel te werken. Ik kreeg de default waarde (zonder een apparaat eraan dus) heel stabiel door.
Echter als ik er dan een apparaat aan hang (zelfs waterkoker die 2000W trok geprobeerd) gebeurt er weinig... er komt wel iets meer door maar niet wat het moet zijn :(

Dus ofwel ik doe nog iets niet goed in de software, of mijn aansluitcircuit is niet goed, of de ACS712 geeft geen goede output.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op maandag 24 mei 2021 @ 20:45:
Verder vandaag nog veel zitten testen met die ADS en ACS712. De ADS werkt. Heb ik ook los getest op 5V en 3.3V en die waardes kwamen goed door. De ADS icm ACS712 leek in eerste instantie ook wel te werken. Ik kreeg de default waarde (zonder een apparaat eraan dus) heel stabiel door.
Echter als ik er dan een apparaat aan hang (zelfs waterkoker die 2000W trok geprobeerd) gebeurt er weinig... er komt wel iets meer door maar niet wat het moet zijn :(

Dus ofwel ik doe nog iets niet goed in de software, of mijn aansluitcircuit is niet goed, of de ACS712 geeft geen goede output.
ga er wel van uit dat je het volgende gecheckt hebt ..

hoe heb je hem aangesloten dan ? lees welke datapins ?
- ads/acs beide eigen 5v ? met common gnd ?

zal net een los draadje zijn oid (slecht contact) kan je de <piep> naar zoeken .. of een slechte soldeer punt .. of een defecte module oid .. heb je andere modules zodat je kan uitsluiten ?
ff een draadje eraan vast solderen oid ..

Tja vanalles


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op maandag 24 mei 2021 @ 20:45:
@Tinusvolkel

Zojuist succesvolle test gehad van het warmtepomp flow switch - relais idee :)

Foto's:
[Afbeelding][Afbeelding][Afbeelding]
[Afbeelding][Afbeelding][Afbeelding]

(even snel aangesloten met lasklemmen en adereindhulsjes omdat ik nog niet weet hoelang ik de kabels moet hebben)

Een aantal tests gedaan:
- als het relais helemaal uit staat dan zal de warmtepomp niks doen en op de error gaan op een gegeven moment
- relais aan, maar geen signaal: blijft op error, ook als ik flow switch handmatig trigger
- relais aan, wel signaal: error gaat eraf als ik flow switch handmatig trigger

Als je de warmtepomp net stroom geeft staat hij standaard op OFF. Zet je hem dan aan (hij heeft opstart tijd nodig hierna) dan zal hij na een paar seconde de flow switch checken. Zo kon ik dus zien of het idee ook werkt met warmtepomp aan en flow switch triggeren of niet.
Als je hem nu weer uit zet, dan blijft hij ook de flow switch checken.

Kortom: shit works.
Mooi dat het goed werkt :) bedankt alvast voor het testen :)
Verder vandaag nog veel zitten testen met die ADS en ACS712. De ADS werkt. Heb ik ook los getest op 5V en 3.3V en die waardes kwamen goed door. De ADS icm ACS712 leek in eerste instantie ook wel te werken. Ik kreeg de default waarde (zonder een apparaat eraan dus) heel stabiel door.
Echter als ik er dan een apparaat aan hang (zelfs waterkoker die 2000W trok geprobeerd) gebeurt er weinig... er komt wel iets meer door maar niet wat het moet zijn :(

Dus ofwel ik doe nog iets niet goed in de software, of mijn aansluitcircuit is niet goed, of de ACS712 geeft geen goede output.
Ik weet niet wat de software precies doet maar zou het niet kunnen zijn dat hij staat ingesteld / geprogrammeerd voor DC terwijl je AC hebt?

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op maandag 24 mei 2021 @ 20:59:
[...]

ga er wel van uit dat je het volgende gecheckt hebt ..

hoe heb je hem aangesloten dan ? lees welke datapins ?
- ads/acs beide eigen 5v ? met common gnd ?

zal net een los draadje zijn oid (slecht contact) kan je de <piep> naar zoeken .. of een slechte soldeer punt .. of een defecte module oid .. heb je andere modules zodat je kan uitsluiten ?
ff een draadje eraan vast solderen oid ..
Aangesloten als volgt:
Usb laptop naar micro usb ESP
VU (= 5 volt output) en GND naar + en - op breadboard
Zowel ACS712 als ADS1115 zit dan ook op + en - op breadboard.
En dan is de out op acs naar de a0 op ads. En de ads is met scl en sda verbonden met de ESP.

Ik sluit los contact etc uit omdat ik dan wel ander fouten zou krijgen.
Defecte module (acs) kan ik niet uitsluiten want heb er nu 1. Ik ga eens kijken of de 20A variant (heb nu de 30 maar 20 zou ook genoeg zijn) goed verkrijgbaar is.

Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op maandag 24 mei 2021 @ 21:17:
[...]

Mooi dat het goed werkt :) bedankt alvast voor het testen :)

[...]

Ik weet niet wat de software precies doet maar zou het niet kunnen zijn dat hij staat ingesteld / geprogrammeerd voor DC terwijl je AC hebt?
Hmm zal het eens nakijken. Ben het niet tegen gekomen.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

@Plenkske https://create.arduino.cc...urrent-with-acs712-70aa85

[ Voor 6% gewijzigd door vso op 24-05-2021 22:02 ]

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Dankje.
Helaas is dat wel zonder ADS, maar ik zal het eens uitproberen. Lijkt wel wat op eerdere tests die ik heb gedaan maar wie weet ;)

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op dinsdag 25 mei 2021 @ 07:51:
[...]


Dankje.
Helaas is dat wel zonder ADS, maar ik zal het eens uitproberen. Lijkt wel wat op eerdere tests die ik heb gedaan maar wie weet ;)
had je al zonder ADS getest ? teminste dacht het wel te lezen dat je met 10 en 16 bits resolutie zou testen

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op dinsdag 25 mei 2021 @ 09:12:
[...]

had je al zonder ADS getest ? teminste dacht het wel te lezen dat je met 10 en 16 bits resolutie zou testen
Ja een tijdje terug al veel zitten testen zonder ADS.
Toen kwam ik er dus achter dat de foutmarge te groot is (74 mA minimaal).

Zojuist heb ik een ACS712 20A (ik heb nu 30A) en wat verschillende weerstanden besteld, zodat ik een voltage divider kan maken. Ik denk dat dit ook wel helpt, wat denk jij @Tinusvolkel ?

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op dinsdag 25 mei 2021 @ 09:24:
[...]


Ja een tijdje terug al veel zitten testen zonder ADS.
Toen kwam ik er dus achter dat de foutmarge te groot is (74 mA minimaal).

Zojuist heb ik een ACS712 20A (ik heb nu 30A) en wat verschillende weerstanden besteld, zodat ik een voltage divider kan maken. Ik denk dat dit ook wel helpt, wat denk jij @Tinusvolkel ?
Dan had je net zo goed de "sct-013" erbij kunnen bestellen die sluit je ook aan met weerstanden ertussen ..
ik heb ze gezien bij ome ali voor 4,-
zie schema op https://savjee.be/2019/07...-ESP32-CT-Sensor-Emonlib/

Dat gezegd een ACS712 gebruiken snap ik ook wel ..

maar een shelly gebruiken zie ik ook wel het nut van in

Tja vanalles


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op dinsdag 25 mei 2021 @ 10:44:
[...]

Dan had je net zo goed de "sct-013" erbij kunnen bestellen die sluit je ook aan met weerstanden ertussen ..
ik heb ze gezien bij ome ali voor 4,-
zie schema op https://savjee.be/2019/07...-ESP32-CT-Sensor-Emonlib/

Dat gezegd een ACS712 gebruiken snap ik ook wel ..

maar een shelly gebruiken zie ik ook wel het nut van in
Heb ik wel naar gekeken maar die was bij "bits and parts" niet op voorraad. Laatste tijd zijn ali express zendingen wel lekker snel (1 week), maar ik ben nu eigenlijk wel op een punt gekomen dat ik gewoon wil weten hoe ik die ACS712 fatsoenlijk aan de praat krijg. En zoals je al zei: het zou kunnen dat de module die ik nu heb niet lekker werkt en daardoor foute waardes geeft.

Elke oplossing heeft zijn voor en nadelen. Ligt vooral aan de situatie m.i.

Acties:
  • 0 Henk 'm!

  • Ep Woody
  • Registratie: September 2003
  • Laatst online: 20:46
Plenkske schreef op dinsdag 25 mei 2021 @ 10:48:
[...]


Heb ik wel naar gekeken maar die was bij "bits and parts" niet op voorraad. Laatste tijd zijn ali express zendingen wel lekker snel (1 week), maar ik ben nu eigenlijk wel op een punt gekomen dat ik gewoon wil weten hoe ik die ACS712 fatsoenlijk aan de praat krijg. En zoals je al zei: het zou kunnen dat de module die ik nu heb niet lekker werkt en daardoor foute waardes geeft.

Elke oplossing heeft zijn voor en nadelen. Ligt vooral aan de situatie m.i.
Heb je dit al geprobeerd? https://www.letscontrolit.com/wiki/index.php/ADS1115

Gewoon de ADS1115 aansluiten op een ESP en ESPEasy erop zetten. Dan kun je in ieder geval testen of dat goed werkt (beetje spelen met de Analoge ingangen, zelfs je vingers zouden al voldoende voltage kunnen/moeten geven.)

Daarna de ACS712 op de ADS1115 aansluiten en kijken wat er dan gebeurt.

Daarna kijken of je met eigen software de boel ook aan de gang kan krijgen.

Gewoon babysteps, dan kun je makkelijker fout zoeken dan dat je alles in een keer goed moet doen en fout zoeken een stuk lastiger is.

Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Ep Woody schreef op dinsdag 25 mei 2021 @ 14:38:
[...]


Heb je dit al geprobeerd? https://www.letscontrolit.com/wiki/index.php/ADS1115

Gewoon de ADS1115 aansluiten op een ESP en ESPEasy erop zetten. Dan kun je in ieder geval testen of dat goed werkt (beetje spelen met de Analoge ingangen, zelfs je vingers zouden al voldoende voltage kunnen/moeten geven.)

Daarna de ACS712 op de ADS1115 aansluiten en kijken wat er dan gebeurt.

Daarna kijken of je met eigen software de boel ook aan de gang kan krijgen.

Gewoon babysteps, dan kun je makkelijker fout zoeken dan dat je alles in een keer goed moet doen en fout zoeken een stuk lastiger is.
Zo te zien doet ESPEasy niks spannends.
Ik heb inderdaad de ADS ook los aangesloten en dan de A0 verbonden met de 5V en 3.3V die vanuit het ESP bordje komen. Die waardes kwamen gewoon goed en stabiel binnen. Er is dus niks mis met het ADS bordje.

Zodra ik de ACS712 erop aansluit krijg ik in eerste instantie ook wel goede waardes (de default, zonder current, is ongeveer 2.5 volt). Maar als ik er dan wel current op zet dan veranderd er te weinig. En ook niet stabiel genoeg. Getest met iets van ~20W, ~50W, ~60W en de waterkoker die 2000W trok. Dat lees ik dan uit met deze simpele plugin tussenstekker.

Gisteren zoveel zitten testen dat ik nu niet meer inzie welke software stap ik nog kan proberen. Behalve dus een andere ACS en weerstanden erbij.
Een tijdje terug had ik hetzelfde probleem met puur en alleen de ACS. Ook veel software zitten testen maar kreeg toch niet eruit wat ik wilde. Ik verdenk dus dat ding wel als boosdoener ;)

Acties:
  • 0 Henk 'm!

  • Dw1-nl
  • Registratie: Maart 2008
  • Laatst online: 28-05 08:06

Dw1-nl

Webontwikkelaar

Over de klepregelaars/valves. Wat is nu de beste oplossing hiervoor?

Acties:
  • 0 Henk 'm!

  • darklord007
  • Registratie: Augustus 2004
  • Laatst online: 10-06 18:06
Dw1-nl schreef op dinsdag 25 mei 2021 @ 16:44:
Over de klepregelaars/valves. Wat is nu de beste oplossing hiervoor?
kan je jouw vraag iets meer specificeren. Wat wil je aanpassen/maken? foto's?

Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op dinsdag 25 mei 2021 @ 09:24:
[...]


Ja een tijdje terug al veel zitten testen zonder ADS.
Toen kwam ik er dus achter dat de foutmarge te groot is (74 mA minimaal).
Gebruikte je toen toevallig geen andere code/software die het meteen omzette naar wisselstroom?
Zojuist heb ik een ACS712 20A (ik heb nu 30A) en wat verschillende weerstanden besteld, zodat ik een voltage divider kan maken. Ik denk dat dit ook wel helpt, wat denk jij @Tinusvolkel ?
Wat wil je precies met de spanningsdelers bereiken? valt de spanning nu buiten het bereik van de ADC?
Plenkske schreef op dinsdag 25 mei 2021 @ 14:46:
[...]


Zo te zien doet ESPEasy niks spannends.
Ik heb inderdaad de ADS ook los aangesloten en dan de A0 verbonden met de 5V en 3.3V die vanuit het ESP bordje komen. Die waardes kwamen gewoon goed en stabiel binnen. Er is dus niks mis met het ADS bordje.

Zodra ik de ACS712 erop aansluit krijg ik in eerste instantie ook wel goede waardes (de default, zonder current, is ongeveer 2.5 volt). Maar als ik er dan wel current op zet dan veranderd er te weinig. En ook niet stabiel genoeg. Getest met iets van ~20W, ~50W, ~60W en de waterkoker die 2000W trok. Dat lees ik dan uit met deze simpele plugin tussenstekker.

Gisteren zoveel zitten testen dat ik nu niet meer inzie welke software stap ik nog kan proberen. Behalve dus een andere ACS en weerstanden erbij.
Een tijdje terug had ik hetzelfde probleem met puur en alleen de ACS. Ook veel software zitten testen maar kreeg toch niet eruit wat ik wilde. Ik verdenk dus dat ding wel als boosdoener ;)
Gebruik je voor het ADS bordje toevallig geen code/software die het gemiddelde pakt van meerdere metingen om een stabielere waarde te krijgen? Dus dat hij er op deze manier de wisselspanning die op de 2.5v staat eruit middelt?

Verder kan je de sensor alvast een keer testen door de multimeter op wisselspanning te zetten en kijken wat eruit komt.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op woensdag 26 mei 2021 @ 11:27:
Gebruikte je toen toevallig geen andere code/software die het meteen omzette naar wisselstroom?
Ja, ik gebruikte andere code dan ik gebruik met de ADS.
Dat is volgens mij ook wel logisch omdat je zonder ADS het analoge signaal ontvangt en dat moet omzetten naar iets nuttigs.
Tinusvolkel schreef op woensdag 26 mei 2021 @ 11:27:

Wat wil je precies met de spanningsdelers bereiken? valt de spanning nu buiten het bereik van de ADC?
Heel eerlijk: dat weet ik niet zeker. Verschillende voorbeelden gebruiken een voltage divider dus ik dacht ik bestel het maar mee voor de zekerheid. Voorbeeld is bv. deze.

Bereik ADS: input ranges from ±256 mV to ±6.144 V (dit is afhankelijk van welke "gain" je hem geeft)
Bereik ACS712 30A (die heb ik nu gebruikt): 2.5 V +- 30x0,066mV = 0,52 - 4,48 V
Bereik ACS712 20A (die is onderweg): 2.5 V +- 20x0,1mV = 0,5 - 4,5 V

Ik heb meerdere gains geprobeerd, maar als ik het nu zo rustig lees moet ik hem op de 6.144 V zetten, want de stap eronder is ~4.0 V en dat is dus te weinig voor een volledige meting mogelijk te maken. Echter zou ik de lagere currents wel gewoon moeten kunnen zien met die ~4.0 V.
Tinusvolkel schreef op woensdag 26 mei 2021 @ 11:27:
Gebruik je voor het ADS bordje toevallig geen code/software die het gemiddelde pakt van meerdere metingen om een stabielere waarde te krijgen? Dus dat hij er op deze manier de wisselspanning die op de 2.5v staat eruit middelt?
Ik heb meerdere codes geprobeerd.
Als hij zou middelen dan zou je bij een continue load van bv. 50W toch nog steeds een hogere waarde krijgen dan de standaard waarde ? Of zie ik dat verkeerd ?

Ik denk wel dat je op het spoor bent van iets wat ik verkeerd doe in de code en/of de aansluiting.
Wat namelijk in de ADS libraries zit is een "singleEnded" output en een "readADC_Differential_0_1" waarbij in dit geval het tussen analoog input 0 en analoog input 1 gedaan wordt. Ik heb dit wel getest met 0_GND , maar kwam daarmee niet verder.
Als ik nu op analoog 1 de voltage divider doe kom ik wellicht wel verder ?

Deze libraries heb ik getest:
https://github.com/adafruit/Adafruit_ADS1X15
https://github.com/RobTillaart/ADS1X15
https://github.com/wollewald/ADS1115_WE

De library van RobTillaart is erg uitgebreid en een goed leesbare README. Ik zie nu nog iets staan over de "clockspeed" van I2C interface. Daar heb ik nog niks aan gewijzigd. Misschien moet ik die ook verhogen.
Tinusvolkel schreef op woensdag 26 mei 2021 @ 11:27:
Verder kan je de sensor alvast een keer testen door de multimeter op wisselspanning te zetten en kijken wat eruit komt.
Je bedoelt nu de ACS712 denk ik ? Heb er nog niet de multimeter bij gehouden en dat kan ik wel doen, maar daarmee weet ik nog niet zeker wat hij als output geeft toch ? En de input meet ik al met de tussenstekker...


(edit)
De ACS712 20A is nu binnen. Wat me opvalt is dat deze een stuk kleiner is. Dat is opzich wel prettig.

[ Voor 13% gewijzigd door Plenkske op 26-05-2021 13:35 ]


Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Mijn shelly stekker is binnen *O* *O*

dus hup inpluggen, via de app ff de wifi verbinding opzetten en naar het ip van het kreng via de browser.. en MQTT aan .. IPadress van de MQtt server en user/passwd

....maar dat @$##&@%(@#*% :( ding doet het niet op mqtt (in Node red)

oke hints
- aan log http://<shellyip>/debug/log heb je geen moer :( zie je niks voorbij komen (in tegenstelling tot tasmota)
- http://<shelly IP>/settings?mqtt_update_period=<tijd in sec> of 0 voor uit is wel handig als je "stats" wilt hebben

in node red moet je als Topic dit beruiken shellies/shellyplug-s-B512354/#
breakdown
shellies is de "prefix"
shellyplug-s-B512354 is de custom device prefix (vinkje op de website van het ding mij de mqtt settings
# <--- de meest handige het is een wildcard (wist ik nog niet dus ook wel makkelijk om te weten)

anyway dit is wat ik lees :)

shellies/shellyplug-s-B512354/relay/0/power : msg.payload : string[4]
"0.00"
shellies/shellyplug-s-B512354/relay/0/energy : msg.payload : string[1]
"0"
shellies/shellyplug-s-B512354/relay/0 : msg.payload : string[3]
"off"
shellies/shellyplug-s-B512354/temperature : msg.payload : string[5]
"18.85"
shellies/shellyplug-s-B512354/temperature_f : msg.payload : string[5]
"65.92"
shellies/shellyplug-s-B512354/overtemperature : msg.payload : string[1]
"0"

wat ze met power/energy bedoelen dunno .. zal wel volt/ampere oid zijn .. en de Farenheit kan me gestolen worden maar de temperatuur is wel nice to have .. :)

En de overtemperature ? wtf ze daarmee bedoelen .. dat weet ik ook niet ..

@Jazsie ik heb ook https://www.amazon.nl/gp/...o_dt_b_asin_title_o01_s00 binnen gekregen (met tuya esp oid) eens kijken of ik tuya convert op die krengen los kan laten esp' zijn al onderweg als het me niet lukt 8)

ik las wel dat ze met Tuyaconvert wel redelijk "ver" zijn .. ik ben de link kwijt maar als je een wireshark capture hebt, kan je eens proberen een decrypt te doen zo niet wil ik best tzt ook wel een poging maar dat kunnen we wellicht ff via DM oid bespreken ..

Immers je doel is toch via route x.y.z zonder open te schroeven dat ding te besturen ?
darklord007 schreef op zaterdag 24 april 2021 @ 10:22:
[...]


Slimme oplossing,
probleem bij mij is dat het ZWS een ompooltijd heeft van 600sec (na aanschakelen dus niet werkt).
Als ik deze kan te vaak aan/uit zet betekend dat dat deze minder lang werkzaam is.
Ik schakel gewoon de 'verwarmings kraan' aan/uit afhankelijk van een temp sensor op t dak en een in het water.
Als het dak warmer is dan t water --> verwarming aan, anders uit.

Op die manier is de looptijd/productie redelijk constant en heb ik toch maximale warmte oogst.

Wat ik niet mee neem is de lagere flow als hij via de matten loopt, maar dat neem ik nog even voor lief
ompool tijd ? die is nieuw kan je dat uitleggen ?

Tja vanalles


Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op woensdag 26 mei 2021 @ 11:49:
[...]

Ja, ik gebruikte andere code dan ik gebruik met de ADS.
Dat is volgens mij ook wel logisch omdat je zonder ADS het analoge signaal ontvangt en dat moet omzetten naar iets nuttigs.


[...]

Heel eerlijk: dat weet ik niet zeker. Verschillende voorbeelden gebruiken een voltage divider dus ik dacht ik bestel het maar mee voor de zekerheid. Voorbeeld is bv. deze.

Bereik ADS: input ranges from ±256 mV to ±6.144 V (dit is afhankelijk van welke "gain" je hem geeft)
Bereik ACS712 30A (die heb ik nu gebruikt): 2.5 V +- 30x0,066mV = 0,52 - 4,48 V
Bereik ACS712 20A (die is onderweg): 2.5 V +- 20x0,1mV = 0,5 - 4,5 V

Ik heb meerdere gains geprobeerd, maar als ik het nu zo rustig lees moet ik hem op de 6.144 V zetten, want de stap eronder is ~4.0 V en dat is dus te weinig voor een volledige meting mogelijk te maken. Echter zou ik de lagere currents wel gewoon moeten kunnen zien met die ~4.0 V.
wat hierboven staat klopt imho wel ..

maaruh zou je die ADS er niet gewoon tussenuit donderen ? en als het kan gewoon een arduino of Pi (5v) systeem mee starten ?

even met een "debug" gedachte gang .. (of KISS methodiek)

Met een 10 bits resolutie zit je tussen 0 en 1023 / 20 oftwel elke Ampere is een "stap" van ~51 dus een 1800W waterkoker op 240V = 7,5A x ~ 51 = een waarde rond de 380 die je wilt zien ...

Dan kan je de ADS ertussen mikken en kijken of je een vergelijkbaar resultaat ziet ..

en dan pas de voltage devider + ESP

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op woensdag 26 mei 2021 @ 23:59:
[...]

wat hierboven staat klopt imho wel ..

maaruh zou je die ADS er niet gewoon tussenuit donderen ? en als het kan gewoon een arduino of Pi (5v) systeem mee starten ?

even met een "debug" gedachte gang .. (of KISS methodiek)

Met een 10 bits resolutie zit je tussen 0 en 1023 / 20 oftwel elke Ampere is een "stap" van ~51 dus een 1800W waterkoker op 240V = 7,5A x ~ 51 = een waarde rond de 380 die je wilt zien ...

Dan kan je de ADS ertussen mikken en kijken of je een vergelijkbaar resultaat ziet ..

en dan pas de voltage devider + ESP
Nogmaals, zonder ADS heb ik allang mee getest en dan krijg ik het wel werkend maar dan is de foutmarge te groot. Hij kan dan in stapjes van minimaal 74mA meten en dat vind ik een te grote foutmarge voor de filterpomp en warmtepomp.

Gisteren heb ik "even snel" de 20A variant getest met ADS en ongeveer dezelfde code (kleine aanpassingen geprobeert). Zelfde resultaat. Dus aan die ACS ligt het niet.
Binnenkort weer een keer wat meer uitproberen, met ook de voltage divider.

Acties:
  • 0 Henk 'm!

  • darklord007
  • Registratie: Augustus 2004
  • Laatst online: 10-06 18:06
vso schreef op woensdag 26 mei 2021 @ 23:16:


[...]

ompool tijd ? die is nieuw kan je dat uitleggen ?
tja, als ik m aanzet gaat ie van 600-->0 aftellen en staat er ompolen.
Geen idee waarom t zo lang duurt, kan me wel voorstellen dat ie de polariteit wisselt om vervuiling van de electrode te voorkomen

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op donderdag 27 mei 2021 @ 07:33:
[...]


Nogmaals, zonder ADS heb ik allang mee getest en dan krijg ik het wel werkend maar dan is de foutmarge te groot. Hij kan dan in stapjes van minimaal 74mA meten en dat vind ik een te grote foutmarge voor de filterpomp en warmtepomp.

Gisteren heb ik "even snel" de 20A variant getest met ADS en ongeveer dezelfde code (kleine aanpassingen geprobeert). Zelfde resultaat. Dus aan die ACS ligt het niet.
Binnenkort weer een keer wat meer uitproberen, met ook de voltage divider.
zoals je wellicht herrinert heb ik ook een ADS + esp klaarliggen .. alleen wachten op de current clamp .
dus vandaar dat ik dit volg/hulp probeer te bieden .. scheelt mij ook debuggen

:? ik heb het niet over de foutmarge .. de stappen zijn juist om te elimineren waarom je geen data ziet
immers de resulatutie van 10 naar 16bits snap ik echt wel ..

Als dat wel werkt zonder ADS, dan zit je probleem toch in de ADS :? en niet in de ACS712 module ? tenminste zo denk ik dan ..

als ik https://www.best-microcontroller-projects.com/ads1115.html snel lees dan is daar best nog wel nog wat configuratie/soldeer werk mogelijk wat de oorzaak kan zijn ?

Post anders ff de code / en welke draadjes met de ads verbonden is .. dat scheelt ons vragen :)

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op donderdag 27 mei 2021 @ 15:19:
:? ik heb het niet over de foutmarge .. de stappen zijn juist om te elimineren waarom je geen data ziet
immers de resulatutie van 10 naar 16bits snap ik echt wel ..

Als dat wel werkt zonder ADS, dan zit je probleem toch in de ADS :? en niet in de ACS712 module ? tenminste zo denk ik dan ..

als ik https://www.best-microcontroller-projects.com/ads1115.html snel lees dan is daar best nog wel nog wat configuratie/soldeer werk mogelijk wat de oorzaak kan zijn ?

Post anders ff de code / en welke draadjes met de ads verbonden is .. dat scheelt ons vragen :)
Als ik genoegen had genomen met de foutmarge dan had ik de ADS niet nodig en kon ik gewoon de calibratie van de ACS perfectioneren en klaar.
Dus ja, het klopt dat het probleem niet in de ACS zit en ik heb nu ook uitgesloten dat het aan die 30A module ligt die ik heb, want bij de 20A gebeurt hetzelfde. Die eerste stappen die je noemde had ik al genomen, eerder.


Probleem zit hem denk ik toch in de verschillende stukken code die ik getest heb bij de ADS-ACS combinatie. Is namelijk heel anders dan alleen de ACS.
Of dus dat je toch met weerstanden een voltage divider erbij moet doen.

In de code zijn inderdaad veel configuratie mogelijkheden met de ADS. Dus wellicht zie ik iets over het hoofd. Ik ga het binnenkort nog eens stap voor stap rustig uitproberen. Eerst even paar andere dingen afmaken.

Solderen is bij de ADS niet nodig, zodra je de pinnetjes vast hebt gemaakt.


Heb de code nu even niet paraat.

Aansluitschema is simpel. VCC op 5V , GND op GND, SCL - SDA voor I2C interface zitten op D1 - D2 van de ESP. En ik heb de output van de ACS op de A0 zitten.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op donderdag 27 mei 2021 @ 15:28:
[...]

Als ik genoegen had genomen met de foutmarge dan had ik de ADS niet nodig en kon ik gewoon de calibratie van de ACS perfectioneren en klaar.
Dus ja, het klopt dat het probleem niet in de ACS zit en ik heb nu ook uitgesloten dat het aan die 30A module ligt die ik heb, want bij de 20A gebeurt hetzelfde. Die eerste stappen die je noemde had ik al genomen, eerder.


Probleem zit hem denk ik toch in de verschillende stukken code die ik getest heb bij de ADS-ACS combinatie. Is namelijk heel anders dan alleen de ACS.
Of dus dat je toch met weerstanden een voltage divider erbij moet doen.

In de code zijn inderdaad veel configuratie mogelijkheden met de ADS. Dus wellicht zie ik iets over het hoofd. Ik ga het binnenkort nog eens stap voor stap rustig uitproberen. Eerst even paar andere dingen afmaken.

Solderen is bij de ADS niet nodig, zodra je de pinnetjes vast hebt gemaakt.


Heb de code nu even niet paraat.

Aansluitschema is simpel. VCC op 5V , GND op GND, SCL - SDA voor I2C interface zitten op D1 - D2 van de ESP. En ik heb de output van de ACS op de A0 zitten.
hmmm denk dat je simpel weg een pin / over het hoofd gezien hebt :?
ADS1115 --> UNO
VDD 5V
GND GND
SCL D1
SDA d2
ALRT 2 <-- deze pin mis je wellicht

// Wire ADS1115 ALERT/RDY pin to Arduino pin 2
const int alertReadyPin = 2;
bron: https://www.best-microcontroller-projects.com/ads1115.html (onderaan pagina arduino sketch)

[ Voor 3% gewijzigd door vso op 27-05-2021 16:22 ]

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op donderdag 27 mei 2021 @ 16:21:
[...]

hmmm denk dat je simpel weg een pin / over het hoofd gezien hebt :?


[...]

bron: https://www.best-microcontroller-projects.com/ads1115.html (onderaan pagina arduino sketch)
In het voorbeeld dat ze daar geven gebruiken ze inderdaad die ALRT pin.
Maar die heb je alleen nodig als je ook daadwerkelijk de functie wil gebruiken.
Using the ALERT/READY pin
There are two uses for the ALERT/Ready pin. The first is "comparator threshold" alert (the default mode). The second is "ADC reading ready" alert. You have to set up some registers to operate the ADC ready ALERT mode.

Threshold detection
The ADS1115 has an internal comparator which outputs a signal to the ALERT pin (the default mode). You can use this feature to automatically detect out of range conditions (set by threshold registers). The COMP_QUE register allows you to specify how many conversions exceed upper or lower bounds before the alert is asserted.
The ALERT pin requires a pull-up resistor since it is an open-drain pin.
The comparator has two thresholds (high and low). When the input signal is between thresholds the ALERT signal is set high (window comparator mode). You can invert the Alert output signal using COMP_POL.

ADC Ready Interrupt Signal
The alternative use of this pin is as a ADC ready signal. If you set up the pin as an ADC ready signal you can then feed this into an external interrupt pin on a microcontroller so that it can fetch the ADC reading.
The other way to detect if the ADC has completed is to read a register value (Config register bit 15) but of course this takes a lot more time because an I2C transaction must take place.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op donderdag 27 mei 2021 @ 16:26:
[...]


In het voorbeeld dat ze daar geven gebruiken ze inderdaad die ALRT pin.
Maar die heb je alleen nodig als je ook daadwerkelijk de functie wil gebruiken.


[...]
Afbeeldingslocatie: https://microcontrollerslab.com/wp-content/uploads/2019/05/ADS1115-external-ADC-with-ESP32.jpg
voltage source is de acs (duh)
ADDR pin is used for selection of four different devices with one pin. So, we can connect it with any of four pins listed in table. You can explore further about addressing modes by reading datasheet.
https://microcontrollersl...-external-adc-with-esp32/ hiermee selecteer je de juiste pin ? ik snap nog niet hoe die ADDR werkt met deze uitleg

Tja vanalles


Acties:
  • +2 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
vso schreef op donderdag 27 mei 2021 @ 16:35:
[...]


[Afbeelding]
voltage source is de acs (duh)


[...]


https://microcontrollersl...-external-adc-with-esp32/ hiermee selecteer je de juiste pin ? ik snap nog niet hoe die ADDR werkt met deze uitleg
Met de ADDR pin bepaal je naar welk I2C adres je moet schrijven om deze chip aan te roepen, je kan de meerdere dezelfde ADCs op dezelfde I2C bus zetten, als ze maar een ander adres hebben. Dus op deze manier kan je 4 ADCs aan elkaar knopen maar het kost maar 1 pin voor de selectie.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
vso schreef op donderdag 27 mei 2021 @ 15:19:
[...]


Post anders ff de code / en welke draadjes met de ads verbonden is .. dat scheelt ons vragen :)
Idd dit @Plenkske , ik ben namelijk het overzicht een beetje kwijt om goed te kunnen helpen :)

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Tinusvolkel schreef op donderdag 27 mei 2021 @ 16:43:
[...]


Met de ADDR pin bepaal je naar welk I2C adres je moet schrijven om deze chip aan te roepen, je kan de meerdere dezelfde ADCs op dezelfde I2C bus zetten, als ze maar een ander adres hebben. Dus op deze manier kan je 4 ADCs aan elkaar knopen maar het kost maar 1 pin voor de selectie.
jah _/-\o_ duh .. . nu je het zo zegt ik snap hem thx voor de uitleg

maar ja deze pin niet verbinden zal hij niet reageren toch ?

[ Voor 9% gewijzigd door vso op 27-05-2021 16:46 ]

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
vso schreef op donderdag 27 mei 2021 @ 16:44:
[...]

jah _/-\o_ duh .. . nu je het zo zegt ik snap hem thx voor de uitleg

maar ja deze pin niet verbinden zal hij niet reageren toch ?
In het datasheet zie ik niks staan wat er gebeurd als hij floating is dus beter om hem gewoon aan GND te hangen dan weet je iig dat je naar 0x48 moet schrijven.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op donderdag 27 mei 2021 @ 16:44:
[...]

jah _/-\o_ duh .. . nu je het zo zegt ik snap hem thx voor de uitleg

maar ja deze pin niet verbinden zal hij niet reageren toch ?
Bij geen verbonden ADDR pin pakt hij gewoon de default: 0x48
Dit werkt.


@Tinusvolkel als ik dalijk nog tijd over heb zal ik mijn test code(s) eens plaatsen.

Acties:
  • +2 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Heb trouwens die ADC vroeger ook nog is ooit gebruikt.
Dit was toen mijn code die ik bij elkaar gegoogled heb om thermokoppels uit te lezen. :

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <Wire.h>
#include <Adafruit_ADS1015.h>

#define I2C_SCL 14      // Barometric Pressure Sensor (BMP085)
#define I2C_SDA 12      // Barometric Pressure Sensor (BMP085)

// the value of the 'other' resistor
#define SERIESRESISTOR 100000  
 Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */
//Adafruit_ADS1015 ads;     /* Use thi for the 12-bit version */
int samples[100];
void setup(void) 
{
  Wire.pins(I2C_SDA, I2C_SCL);
  Serial.begin(9600);
  Serial.println("Hello!");
  
  Serial.println("Getting single-ended readings from AIN0..3");
  Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");
  
  // The ADC input range (or gain) can be changed via the following
  // functions, but be careful never to exceed VDD +0.3V max, or to
  // exceed the upper and lower limits if you adjust the input range!
  // Setting these values incorrectly may destroy your ADC!
  //                                                                ADS1015  ADS1115
  //                                                                -------  -------
  // ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
   ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  // ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  // ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  // ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
  
  ads.begin();
}

void loop(void) 
{
  int16_t adc0, adc1, adc2, adc3;
  float v0, v1, v2, v3;
   float reading,I0, r0;
  uint8_t i;
  float average;
  
///  Serial.println(reading);

 for (i=0; i< 100; i++) {
   samples[i] = ads.readADC_SingleEnded(0);
   delay(10);
  }

  average = 0;
  for (i=0; i< 100; i++) {
     average += samples[i];
  }
  average /= 100;
  
  v0 = average*0.125;
  I0 = (3253 - v0) / 100300;
  r0 = v0 / I0;
  Serial.print("v0: "); Serial.println(average);

  Serial.print("I0: "); Serial.println(I0);
  Serial.print("r0: "); Serial.println(r0);

  Serial.println(" ");

 
  float steinhart;
  steinhart = r0 / 100000;     // (R/Ro)
  steinhart = log(steinhart);                  // ln(R/Ro)
  steinhart /= 4190;                   // 1/B * ln(R/Ro)
  steinhart += 1.0 / (25 + 273.15); // + (1/To)
  steinhart = 1.0 / steinhart;                 // Invert
  steinhart -= 273.15;                         // convert to C
 
  Serial.print("Temperature "); 
  Serial.print(steinhart);
  Serial.println(" *C");
}


disclaimer is een bij elkaar geraapt zooite van 5 jaar terug dus wat ik allemaal precies gedaan heb weet ik ook niet meer ;)

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op donderdag 27 mei 2021 @ 16:44:
[...]


Idd dit @Plenkske , ik ben namelijk het overzicht een beetje kwijt om goed te kunnen helpen :)
Gisteravond wilde ik mijn soldeerwerkje af maken en dat is gelukt :*)
Dus ik heb geen verdere tests meer gedaan met de ACS - ADS.


Ik zal toch een paar codes plaatsen die ik de afgelopen tijd geprobeert heb.


Alleen ACS

Code van: https://www.romn.io/2020/...oach-to-measure-acdc.html
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#define PIN A0
float resolution  = 3.3 / 1024;                   // Input Voltage Range is 1V to 3.3V
                                                  // ESP8266 ADC resolution is 10-bit. 2^10 = 1024

uint32_t period = 1000000 / 50;                   // One period of a periodic waveform
uint32_t t_start = 0;                                 

// setup
float zero_ADC_Value = 0, zero_voltageValue = 0;   

// loop
float ADC = 0, Vrms = 0, Current = 0, Q = 0.0147;
float sensitivity = 0.066;                        // 185 mV/A, 100 mV/A and 0.66 mV/A for ±5A, ±20A and ±30A current range respectively. 

void setup()
{
  Serial.begin(115200);                           // Initialize Serial communication
  pinMode(PIN, INPUT);                            // Set pin A0 as read.  

  zero_ADC_Value = 835;                               // The avg analog value when no current pass throught the ACS712 sensor.
  zero_voltageValue = zero_ADC_Value * resolution;    // The ACS712 output voltage value when no current pass trough the sensor (i = 0)

}
void loop() {

  
  /*----Vrms & Irms Calculation----*/
  t_start = micros();                             
  uint32_t ADC_Dif = 0, ADC_SUM = 0, m = 0;        
  while(micros() - t_start < period) {            // Defining one period of the waveform. US frequency(f) is 60Hz. Period = 1/f = 0.016 seg = 16,666 microsec
    ADC_Dif = zero_ADC_Value - analogRead(PIN);   // To start from 0V we need to subtracting our initial value when no current passes through the current sensor, (i.e. 750 or 2.5V).
    ADC_SUM += ADC_Dif * ADC_Dif;                 // SUM of the square
    m++;                                          // counter to be used for avg.
  }
  ADC = sqrt(ADC_SUM / m);                        // The root-mean-square ADC value. 
  Vrms = ADC * resolution ;                       // The root-mean-square analog voltage value.   
  Current = (Vrms  / sensitivity) - Q;            // The root-mean-square analog current value. Note: Q
  //------------------------------//
  
  Serial.print("analogRead = ");
  Serial.println(analogRead(PIN));
  
  Serial.print("Vrms = ");                        
  Serial.print(Vrms, 6);
  Serial.println(" V");        

  Serial.print("Irms = ");                       
  Serial.print(Current, 6);
  Serial.println(" A");
  Serial.print("\n");
  Serial.print("Zero_ADC = ");                       
  Serial.print(zero_ADC_Value);
  Serial.print("\n");
  Serial.print("Zero_Voltage = ");                       
  Serial.print(zero_voltageValue);
  Serial.print("\n");

  delay(1000); 
}


Resultaat:
Ik zag zeker verschil tussen wel en geen load.
Maar ik kon niet goed plaatsen hoe ik verder kon met het resultaat. Zo kreeg ik bv. een Irms van 0,6 A bij een load van ~60W
Dat lijkt me wat hoog... Of ik begrijp het niet goed ?


Code van: https://github.com/RobTil...e/master/libraries/ACS712
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "ACS712.h"

// Arduino UNO has 5.0 volt with a max ADC value of 1024 steps
// ACS712 30A uses  66 mV per A

ACS712  ACS(A0, 5.0, 1023, 66); 


const float calibration = 1;


void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  //ACS.setNoisemV(7);
  ACS.setMidPoint(835); 
  //ACS.autoMidPoint();
}

void loop()
{
  
  int mA = ACS.mA_AC();
  Serial.println(mA);

  if (mA > 0)
  {
    char c = mA;
    float amps = (float) mA / 1000;
    float volt = 230;

    if (c == '*') ACS.setmVperAmp(ACS.getmVperAmp() + 1);
    if (c == '/') ACS.setmVperAmp(ACS.getmVperAmp() - 1);
    Serial.print("mVperAmp:\t");
    Serial.println(ACS.getmVperAmp());

    if (c == '+') ACS.setFormFactor(ACS.getFormFactor() * 1.05);
    if (c == '-') ACS.setFormFactor(ACS.getFormFactor() / 1.05);
    float formFactor = ACS.getFormFactor();
    float calcWatt = formFactor * amps * volt * calibration;
    
    Serial.print("formFactor:\t");    
    Serial.println(formFactor);
    Serial.print("Amps:\t");
    Serial.println(amps);
    Serial.print("Watts:\t");
    Serial.println(calcWatt);
    
    
  }
  //nrDelays++;
  delay(1000);
}


Resultaat:
Deze uitgebreide library heeft veel functies en ik heb die ook getest.
Wat erg van belang is, is de midPoint en FormFactor. Beide beïnvloeden het resultaat in A.
Hierbij kreeg ik wisselende resultaten, maar het kwam nooit goed overeen met de daadwerkelijke load.
Als ik "auto mid point" vaker deed aanroepen (bv. eens per 30sec) dan kon de formfactor soms wel 50% verschil maken. Niet echt stabiel dus. Maar als ik de tekst lees van hem op github is die formfactor wel erg belangrijk... Dat zag ik dus ook in de resultaten. Als die 1 bleef was het resultaat te hoog. Meestal zat ik op 0,3 tot 0,5 voor een beetje vergelijkbaar resultaat.


Code van: verschillende google zoekopdrachten om te testen :)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
unsigned int total; // holds <= 64 analogReads
byte numReadings = 64;
float offset = 833; // calibrate zero current
float span = 0.07393; // calibrate max current | ~0.07315 is for 30A sensor
float current; // holds final current
float totalAverage;
float totalAverageMinOffset;
float watts;
float volt = 230;

void setup() {
  Serial.begin(115200);
}

void loop() {
  total = 0; // reset
  for (int i = 0; i < numReadings; i++) total += analogRead(A0);

  totalAverage = (total / numReadings);

  Serial.print("Total average is:  ");
  Serial.print(totalAverage);
  Serial.println("  ");

  totalAverageMinOffset = totalAverage - offset;
  
  Serial.print("Total average min offset:  ");
  Serial.print(totalAverageMinOffset);
  Serial.println("  ");
  
  current = (total / numReadings - offset) * span;
  
  Serial.print("Current is:  ");
  Serial.print(current);
  //Serial.print(current, 1); // one decimal place
  Serial.println("  Amp");

  watts = current * volt;
  
  Serial.print("Watts is:  ");
  Serial.print(watts);
  Serial.println("  W");
  
  delay(1000); // human readable
}


Resultaat:
Deze code is wat simpeler, maar hier kreeg ik eigenlijk vrijwel geen verschil te zien tussen geen load en wel load. De verschillen in "totalAverage" waren te klein en dit komt denk ik door de foutmarge van de ACS.


ACS icm de ADS

Code van: https://wolles-elektronikkiste.de/en/acs712-current-sensor-2
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<ADS1115_WE.h> 
#include<Wire.h>
#define I2C_ADDRESS 0x48
const float zeroCurrentVoltage_mV = 2538;
ADS1115_WE adc(I2C_ADDRESS);
void setup() {
  Wire.begin();
  Serial.begin(115200);
  if(!adc.init()){
    Serial.println("ADS1115 not connected!");
  }
  /* Set the voltage range of the ADC to adjust the gain
   * Please note that you must not apply more than VDD + 0.3V to the input pins!
   * 
   * ADS1115_RANGE_6144  ->  +/- 6144 mV
   * ADS1115_RANGE_4096  ->  +/- 4096 mV
   * ADS1115_RANGE_2048  ->  +/- 2048 mV (default)
   * ADS1115_RANGE_1024  ->  +/- 1024 mV
   * ADS1115_RANGE_0512  ->  +/- 512 mV
   * ADS1115_RANGE_0256  ->  +/- 256 mV
   */
  adc.setVoltageRange_mV(ADS1115_RANGE_6144); 
  /* Set the inputs to be compared
   *  
   *  ADS1115_COMP_0_1    ->  compares 0 with 1 (default)
   *  ADS1115_COMP_0_3    ->  compares 0 with 3
   *  ADS1115_COMP_1_3    ->  compares 1 with 3
   *  ADS1115_COMP_2_3    ->  compares 2 with 3
   *  ADS1115_COMP_0_GND  ->  compares 0 with GND
   *  ADS1115_COMP_1_GND  ->  compares 1 with GND
   *  ADS1115_COMP_2_GND  ->  compares 2 with GND
   *  ADS1115_COMP_3_GND  ->  compares 3 with GND
   */
  adc.setCompareChannels(ADS1115_COMP_0_GND); 
  Serial.println("ACS712 - Nullstrommessung mit ADS1115");
  Serial.println();
}
void loop() {
  float voltage = 0.0;
  
  for(int i=0; i<10; i++){
    adc.startSingleMeasurement();
    while(adc.isBusy()){}
    voltage += adc.getResult_mV();
  }
  
  voltage /= 10;
  voltage -= zeroCurrentVoltage_mV;
  float current = voltage/0.100;
  Serial.print("ADC712-Spannung [mV]: "); // Voltage
  Serial.print(voltage);
  Serial.print("  /  Strom [mA]: ");  // Current
  Serial.println(current);
  delay(2000);
}


Resultaat:
Ik compare hier analoog 0 met ground, omdat ik nog niks had aangesloten op 1. Heb ook geprobeert an1 aan te sluiten op ground, maar maakt geen verschil (de code werkt dus wat dat betreft).
Het resultaat in metingen is hierbij wel stabiel bij geen load. Stabieler dan alleen de ACS.
Echter als ik er een load op zet veranderd er te weinig. Het verspringt wel wat, maar totaal niet naar de goede waarde.
Het verschil tussen mijn opstelling en die op deze site staat is dus de voltage divider. Die heb ik nog niet geprobeerd. Heb wel verschillende weerstanden binnen nu om dat te doen.
Een ander voorbeeld met voltage divider vond ik hier: https://curiousscientist.tech/blog/arduino-acs712-powermeter
Die code is gebaseerd op de adafruit library, het idee is hetzelfde. Die code heb ik ook (met wat aanpassingen) geprobeert maar het resultaat is niet anders.


Code van: https://github.com/RobTillaart/ADS1X15
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "ADS1X15.h"

// choose you sensor
// ADS1013 ADS(0x48);
// ADS1014 ADS(0x48);
// ADS1015 ADS(0x48);
// ADS1113 ADS(0x48);
// ADS1114 ADS(0x48);
ADS1115 ADS(0x48);

float zeroPoint = 2.532;
float totalVolts;
float Voltage;
float Current;
float Power;

void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("ADS1X15_LIB_VERSION: ");
  Serial.println(ADS1X15_LIB_VERSION);

  ADS.begin();
  ADS.setWireClock(400000);
  ADS.setGain(0);      // 6.144 volt
  ADS.setDataRate(7);  // fast = 7
  ADS.setMode(0);      // continuous mode
  ADS.readADC(0);      // first read to trigger

}

void loop()
{

  MeasurePower(); 
  PrintSerial();
 //Serial.println(ADS.getValue());
  delay(1000);
}

void MeasurePower()
{  

 totalVolts = ADS.getValue();
 
 float f = ADS.toVoltage(1);  // voltage factor
 Voltage =  totalVolts * f;
 
 Current = (Voltage - zeroPoint) / 0.066;
 
 //Watt = U * I  as test
 Power = 230 * Current;
  
}

void PrintSerial()
{    
  Serial.print(totalVolts); 
  Serial.print("\t"); //space as delimiter
  Serial.print(Voltage,3);
  Serial.print("\t");
  Serial.print(Current,3); 
  Serial.print("\t");
  Serial.println(Power,3);   
}


Resultaat:
Niet veel anders met de code hiervoor. Dit is een erg uitgebreide library. Heb het op verschillende snelheden (van de ADS) getest en ook zonder die "setWireClock" (I2C interface snelheid).
Maar ook hier dus een goed stabiele meting zonder load, maar weinig tot geen verschil mét load.

Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op vrijdag 28 mei 2021 @ 09:53:
[...]


Gisteravond wilde ik mijn soldeerwerkje af maken en dat is gelukt :*)
Dus ik heb geen verdere tests meer gedaan met de ACS - ADS.


Ik zal toch een paar codes plaatsen die ik de afgelopen tijd geprobeert heb.


Alleen ACS

Code van: https://www.romn.io/2020/...oach-to-measure-acdc.html
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#define PIN A0
float resolution  = 3.3 / 1024;                   // Input Voltage Range is 1V to 3.3V
                                                  // ESP8266 ADC resolution is 10-bit. 2^10 = 1024

uint32_t period = 1000000 / 50;                   // One period of a periodic waveform
uint32_t t_start = 0;                                 

// setup
float zero_ADC_Value = 0, zero_voltageValue = 0;   

// loop
float ADC = 0, Vrms = 0, Current = 0, Q = 0.0147;
float sensitivity = 0.066;                        // 185 mV/A, 100 mV/A and 0.66 mV/A for ±5A, ±20A and ±30A current range respectively. 

void setup()
{
  Serial.begin(115200);                           // Initialize Serial communication
  pinMode(PIN, INPUT);                            // Set pin A0 as read.  

  zero_ADC_Value = 835;                               // The avg analog value when no current pass throught the ACS712 sensor.
  zero_voltageValue = zero_ADC_Value * resolution;    // The ACS712 output voltage value when no current pass trough the sensor (i = 0)

}
void loop() {

  
  /*----Vrms & Irms Calculation----*/
  t_start = micros();                             
  uint32_t ADC_Dif = 0, ADC_SUM = 0, m = 0;        
  while(micros() - t_start < period) {            // Defining one period of the waveform. US frequency(f) is 60Hz. Period = 1/f = 0.016 seg = 16,666 microsec
    ADC_Dif = zero_ADC_Value - analogRead(PIN);   // To start from 0V we need to subtracting our initial value when no current passes through the current sensor, (i.e. 750 or 2.5V).
    ADC_SUM += ADC_Dif * ADC_Dif;                 // SUM of the square
    m++;                                          // counter to be used for avg.
  }
  ADC = sqrt(ADC_SUM / m);                        // The root-mean-square ADC value. 
  Vrms = ADC * resolution ;                       // The root-mean-square analog voltage value.   
  Current = (Vrms  / sensitivity) - Q;            // The root-mean-square analog current value. Note: Q
  //------------------------------//
  
  Serial.print("analogRead = ");
  Serial.println(analogRead(PIN));
  
  Serial.print("Vrms = ");                        
  Serial.print(Vrms, 6);
  Serial.println(" V");        

  Serial.print("Irms = ");                       
  Serial.print(Current, 6);
  Serial.println(" A");
  Serial.print("\n");
  Serial.print("Zero_ADC = ");                       
  Serial.print(zero_ADC_Value);
  Serial.print("\n");
  Serial.print("Zero_Voltage = ");                       
  Serial.print(zero_voltageValue);
  Serial.print("\n");

  delay(1000); 
}


Resultaat:
Ik zag zeker verschil tussen wel en geen load.
Maar ik kon niet goed plaatsen hoe ik verder kon met het resultaat. Zo kreeg ik bv. een Irms van 0,6 A bij een load van ~60W
Dat lijkt me wat hoog... Of ik begrijp het niet goed ?


Code van: https://github.com/RobTil...e/master/libraries/ACS712
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "ACS712.h"

// Arduino UNO has 5.0 volt with a max ADC value of 1024 steps
// ACS712 30A uses  66 mV per A

ACS712  ACS(A0, 5.0, 1023, 66); 


const float calibration = 1;


void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  //ACS.setNoisemV(7);
  ACS.setMidPoint(835); 
  //ACS.autoMidPoint();
}

void loop()
{
  
  int mA = ACS.mA_AC();
  Serial.println(mA);

  if (mA > 0)
  {
    char c = mA;
    float amps = (float) mA / 1000;
    float volt = 230;

    if (c == '*') ACS.setmVperAmp(ACS.getmVperAmp() + 1);
    if (c == '/') ACS.setmVperAmp(ACS.getmVperAmp() - 1);
    Serial.print("mVperAmp:\t");
    Serial.println(ACS.getmVperAmp());

    if (c == '+') ACS.setFormFactor(ACS.getFormFactor() * 1.05);
    if (c == '-') ACS.setFormFactor(ACS.getFormFactor() / 1.05);
    float formFactor = ACS.getFormFactor();
    float calcWatt = formFactor * amps * volt * calibration;
    
    Serial.print("formFactor:\t");    
    Serial.println(formFactor);
    Serial.print("Amps:\t");
    Serial.println(amps);
    Serial.print("Watts:\t");
    Serial.println(calcWatt);
    
    
  }
  //nrDelays++;
  delay(1000);
}


Resultaat:
Deze uitgebreide library heeft veel functies en ik heb die ook getest.
Wat erg van belang is, is de midPoint en FormFactor. Beide beïnvloeden het resultaat in A.
Hierbij kreeg ik wisselende resultaten, maar het kwam nooit goed overeen met de daadwerkelijke load.
Als ik "auto mid point" vaker deed aanroepen (bv. eens per 30sec) dan kon de formfactor soms wel 50% verschil maken. Niet echt stabiel dus. Maar als ik de tekst lees van hem op github is die formfactor wel erg belangrijk... Dat zag ik dus ook in de resultaten. Als die 1 bleef was het resultaat te hoog. Meestal zat ik op 0,3 tot 0,5 voor een beetje vergelijkbaar resultaat.


Code van: verschillende google zoekopdrachten om te testen :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
unsigned int total; // holds <= 64 analogReads
byte numReadings = 64;
float offset = 833; // calibrate zero current
float span = 0.07393; // calibrate max current | ~0.07315 is for 30A sensor
float current; // holds final current
float totalAverage;
float totalAverageMinOffset;
float watts;
float volt = 230;

void setup() {
  Serial.begin(115200);
}

void loop() {
  total = 0; // reset
  for (int i = 0; i < numReadings; i++) total += analogRead(A0);

  totalAverage = (total / numReadings);

  Serial.print("Total average is:  ");
  Serial.print(totalAverage);
  Serial.println("  ");

  totalAverageMinOffset = totalAverage - offset;
  
  Serial.print("Total average min offset:  ");
  Serial.print(totalAverageMinOffset);
  Serial.println("  ");
  
  current = (total / numReadings - offset) * span;
  
  Serial.print("Current is:  ");
  Serial.print(current);
  //Serial.print(current, 1); // one decimal place
  Serial.println("  Amp");

  watts = current * volt;
  
  Serial.print("Watts is:  ");
  Serial.print(watts);
  Serial.println("  W");
  
  delay(1000); // human readable
}


Resultaat:
Deze code is wat simpeler, maar hier kreeg ik eigenlijk vrijwel geen verschil te zien tussen geen load en wel load. De verschillen in "totalAverage" waren te klein en dit komt denk ik door de foutmarge van de ACS.


ACS icm de ADS

Code van: https://wolles-elektronikkiste.de/en/acs712-current-sensor-2
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<ADS1115_WE.h> 
#include<Wire.h>
#define I2C_ADDRESS 0x48
const float zeroCurrentVoltage_mV = 2538;
ADS1115_WE adc(I2C_ADDRESS);
void setup() {
  Wire.begin();
  Serial.begin(115200);
  if(!adc.init()){
    Serial.println("ADS1115 not connected!");
  }
  /* Set the voltage range of the ADC to adjust the gain
   * Please note that you must not apply more than VDD + 0.3V to the input pins!
   * 
   * ADS1115_RANGE_6144  ->  +/- 6144 mV
   * ADS1115_RANGE_4096  ->  +/- 4096 mV
   * ADS1115_RANGE_2048  ->  +/- 2048 mV (default)
   * ADS1115_RANGE_1024  ->  +/- 1024 mV
   * ADS1115_RANGE_0512  ->  +/- 512 mV
   * ADS1115_RANGE_0256  ->  +/- 256 mV
   */
  adc.setVoltageRange_mV(ADS1115_RANGE_6144); 
  /* Set the inputs to be compared
   *  
   *  ADS1115_COMP_0_1    ->  compares 0 with 1 (default)
   *  ADS1115_COMP_0_3    ->  compares 0 with 3
   *  ADS1115_COMP_1_3    ->  compares 1 with 3
   *  ADS1115_COMP_2_3    ->  compares 2 with 3
   *  ADS1115_COMP_0_GND  ->  compares 0 with GND
   *  ADS1115_COMP_1_GND  ->  compares 1 with GND
   *  ADS1115_COMP_2_GND  ->  compares 2 with GND
   *  ADS1115_COMP_3_GND  ->  compares 3 with GND
   */
  adc.setCompareChannels(ADS1115_COMP_0_GND); 
  Serial.println("ACS712 - Nullstrommessung mit ADS1115");
  Serial.println();
}
void loop() {
  float voltage = 0.0;
  
  for(int i=0; i<10; i++){
    adc.startSingleMeasurement();
    while(adc.isBusy()){}
    voltage += adc.getResult_mV();
  }
  
  voltage /= 10;
  voltage -= zeroCurrentVoltage_mV;
  float current = voltage/0.100;
  Serial.print("ADC712-Spannung [mV]: "); // Voltage
  Serial.print(voltage);
  Serial.print("  /  Strom [mA]: ");  // Current
  Serial.println(current);
  delay(2000);
}


Resultaat:
Ik compare hier analoog 0 met ground, omdat ik nog niks had aangesloten op 1. Heb ook geprobeert an1 aan te sluiten op ground, maar maakt geen verschil (de code werkt dus wat dat betreft).
Het resultaat in metingen is hierbij wel stabiel bij geen load. Stabieler dan alleen de ACS.
Echter als ik er een load op zet veranderd er te weinig. Het verspringt wel wat, maar totaal niet naar de goede waarde.
Het verschil tussen mijn opstelling en die op deze site staat is dus de voltage divider. Die heb ik nog niet geprobeerd. Heb wel verschillende weerstanden binnen nu om dat te doen.
Een ander voorbeeld met voltage divider vond ik hier: https://curiousscientist.tech/blog/arduino-acs712-powermeter
Die code is gebaseerd op de adafruit library, het idee is hetzelfde. Die code heb ik ook (met wat aanpassingen) geprobeert maar het resultaat is niet anders.


Code van: https://github.com/RobTillaart/ADS1X15
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "ADS1X15.h"

// choose you sensor
// ADS1013 ADS(0x48);
// ADS1014 ADS(0x48);
// ADS1015 ADS(0x48);
// ADS1113 ADS(0x48);
// ADS1114 ADS(0x48);
ADS1115 ADS(0x48);

float zeroPoint = 2.532;
float totalVolts;
float Voltage;
float Current;
float Power;

void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("ADS1X15_LIB_VERSION: ");
  Serial.println(ADS1X15_LIB_VERSION);

  ADS.begin();
  ADS.setWireClock(400000);
  ADS.setGain(0);      // 6.144 volt
  ADS.setDataRate(7);  // fast = 7
  ADS.setMode(0);      // continuous mode
  ADS.readADC(0);      // first read to trigger

}

void loop()
{

  MeasurePower(); 
  PrintSerial();
 //Serial.println(ADS.getValue());
  delay(1000);
}

void MeasurePower()
{  

 totalVolts = ADS.getValue();
 
 float f = ADS.toVoltage(1);  // voltage factor
 Voltage =  totalVolts * f;
 
 Current = (Voltage - zeroPoint) / 0.066;
 
 //Watt = U * I  as test
 Power = 230 * Current;
  
}

void PrintSerial()
{    
  Serial.print(totalVolts); 
  Serial.print("\t"); //space as delimiter
  Serial.print(Voltage,3);
  Serial.print("\t");
  Serial.print(Current,3); 
  Serial.print("\t");
  Serial.println(Power,3);   
}


Resultaat:
Niet veel anders met de code hiervoor. Dit is een erg uitgebreide library. Heb het op verschillende snelheden (van de ADS) getest en ook zonder die "setWireClock" (I2C interface snelheid).
Maar ook hier dus een goed stabiele meting zonder load, maar weinig tot geen verschil mét load.
Heb je toevallig ook foto's en schema's van hoe je het precies aangesloten hebt? en zou je bij de code stukken kunnen aangeven dat het om "c" gaat, dan is het net wat overzichtelijker :)

Even kijken of ik vanavond tijd hem om er naar te kijken.

1 ding wat ik al snel zie is dat die "totalAverage" code filtert mooi de wisselspanning wat uit de sensor komt weg ;)

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op vrijdag 28 mei 2021 @ 10:20:
[...]


Heb je toevallig ook foto's en schema's van hoe je het precies aangesloten hebt? en zou je bij de code stukken kunnen aangeven dat het om "c" gaat, dan is het net wat overzichtelijker :)

Even kijken of ik vanavond tijd hem om er naar te kijken.
Code=c zit er nu in.

Foto's hoe het is aangesloten ACS-ADS.
De load is bij deze foto's niet aangesloten. Kant van stroom input (-) zit aan VCC kant van de ACS, en dan wat hij moet meten (+) aan de andere kant.
VU op de ESP is dus 5V output.
Afbeeldingslocatie: https://tweakers.net/i/lSbNNuV6UO5vIAucHJEEcQ33IYg=/232x232/filters:strip_icc():strip_exif()/f/image/nTmGDq20FMrGX3Xs8eRq0pos.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/6-lzUM4mDrhyJWSCxVobFxqS72U=/232x232/filters:strip_icc():strip_exif()/f/image/EVJMJ3OrNvj0atFc1rZWFOQh.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/UWMX-WKp-6Vt1PJxxQva9YnnEgQ=/232x232/filters:strip_icc():strip_exif()/f/image/dPRJNtVNFNdqoFdRqH3NAU2e.jpg?f=fotoalbum_tile
Afbeeldingslocatie: https://tweakers.net/i/g-mv0nJ2ndFHNIcnsUKFqN7NykE=/232x232/filters:strip_icc():strip_exif()/f/image/6UV3VEI3a9TItPuyJsrfRN4d.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/5oZ0CPyMrhmNYQXNVNF5mumK4o0=/232x232/filters:strip_icc():strip_exif()/f/image/MZrolHMw5LrGtuimSoHLejsC.jpg?f=fotoalbum_tile

(ik had even geen rood/zwart meer bij de hand dus daarom oranje/geel bij de ACS. witte kabel is de output)

Bij alleen ACS is het simpeler:
VU en GND op de ACS, OUT van ACS op de A0. Load op dezelfde manier uiteraard.
Zonder breadboard, gewoon rechtstreeks.


Alvast heel veel bedankt voor het meedenken !

Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op vrijdag 28 mei 2021 @ 10:20:

1 ding wat ik al snel zie is dat die "totalAverage" code filtert mooi de wisselspanning wat uit de sensor komt weg ;)
Dat was inderdaad ook een slechte test (code) :P

Ik vermoed dat het wel hier ergens mee te maken heeft. Ik doe iets fout ivm wisselspanning. Bij de ADS gebruik ik wellicht de verkeerde funcites om het uit te lezen. Óf ik moet dus een compare doen tussen 0 en 1 waarbij 1 dan de voltage divider is.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op vrijdag 28 mei 2021 @ 10:37:
[...]


Code=c zit er nu in.

Foto's hoe het is aangesloten ACS-ADS.
De load is bij deze foto's niet aangesloten. Kant van stroom input (-) zit aan VCC kant van de ACS, en dan wat hij moet meten (+) aan de andere kant.
VU op de ESP is dus 5V output.
[Afbeelding][Afbeelding][Afbeelding]
[Afbeelding][Afbeelding]

(ik had even geen rood/zwart meer bij de hand dus daarom oranje/geel bij de ACS. witte kabel is de output)

Bij alleen ACS is het simpeler:
VU en GND op de ACS, OUT van ACS op de A0. Load op dezelfde manier uiteraard.
Zonder breadboard, gewoon rechtstreeks.


Alvast heel veel bedankt voor het meedenken !
dus code C geeft nu eindelijk het gewenste resultaat ? en toont een load (eindelijk?) wat was nu het issue ?

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op vrijdag 28 mei 2021 @ 09:53:
[...]


Gisteravond wilde ik mijn soldeerwerkje af maken en dat is gelukt :*)
Dus ik heb geen verdere tests meer gedaan met de ACS - ADS.


Ik zal toch een paar codes plaatsen die ik de afgelopen tijd geprobeert heb.


Alleen ACS

Code van: https://www.romn.io/2020/...oach-to-measure-acdc.html
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#define PIN A0
float resolution  = 3.3 / 1024;                   // Input Voltage Range is 1V to 3.3V
                                                  // ESP8266 ADC resolution is 10-bit. 2^10 = 1024

uint32_t period = 1000000 / 50;                   // One period of a periodic waveform
uint32_t t_start = 0;                                 

// setup
float zero_ADC_Value = 0, zero_voltageValue = 0;   

// loop
float ADC = 0, Vrms = 0, Current = 0, Q = 0.0147;
float sensitivity = 0.066;                        // 185 mV/A, 100 mV/A and 0.66 mV/A for ±5A, ±20A and ±30A current range respectively. 

void setup()
{
  Serial.begin(115200);                           // Initialize Serial communication
  pinMode(PIN, INPUT);                            // Set pin A0 as read.  

  zero_ADC_Value = 835;                               // The avg analog value when no current pass throught the ACS712 sensor.
  zero_voltageValue = zero_ADC_Value * resolution;    // The ACS712 output voltage value when no current pass trough the sensor (i = 0)

}
void loop() {

  
  /*----Vrms & Irms Calculation----*/
  t_start = micros();                             
  uint32_t ADC_Dif = 0, ADC_SUM = 0, m = 0;        
  while(micros() - t_start < period) {            // Defining one period of the waveform. US frequency(f) is 60Hz. Period = 1/f = 0.016 seg = 16,666 microsec
    ADC_Dif = zero_ADC_Value - analogRead(PIN);   // To start from 0V we need to subtracting our initial value when no current passes through the current sensor, (i.e. 750 or 2.5V).
    ADC_SUM += ADC_Dif * ADC_Dif;                 // SUM of the square
    m++;                                          // counter to be used for avg.
  }
  ADC = sqrt(ADC_SUM / m);                        // The root-mean-square ADC value. 
  Vrms = ADC * resolution ;                       // The root-mean-square analog voltage value.   
  Current = (Vrms  / sensitivity) - Q;            // The root-mean-square analog current value. Note: Q
  //------------------------------//
  
  Serial.print("analogRead = ");
  Serial.println(analogRead(PIN));
  
  Serial.print("Vrms = ");                        
  Serial.print(Vrms, 6);
  Serial.println(" V");        

  Serial.print("Irms = ");                       
  Serial.print(Current, 6);
  Serial.println(" A");
  Serial.print("\n");
  Serial.print("Zero_ADC = ");                       
  Serial.print(zero_ADC_Value);
  Serial.print("\n");
  Serial.print("Zero_Voltage = ");                       
  Serial.print(zero_voltageValue);
  Serial.print("\n");

  delay(1000); 
}


Resultaat:
Ik zag zeker verschil tussen wel en geen load.
Maar ik kon niet goed plaatsen hoe ik verder kon met het resultaat. Zo kreeg ik bv. een Irms van 0,6 A bij een load van ~60W
Dat lijkt me wat hoog... Of ik begrijp het niet goed ?
Is dit gemeten of berekend? want is dit nu geen 2.7v ipv 2.5v?
zero_ADC_Value = 835;
Code van: https://github.com/RobTil...e/master/libraries/ACS712
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include "ACS712.h"

// Arduino UNO has 5.0 volt with a max ADC value of 1024 steps
// ACS712 30A uses  66 mV per A

ACS712  ACS(A0, 5.0, 1023, 66); 


const float calibration = 1;


void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  //ACS.setNoisemV(7);
  ACS.setMidPoint(835); 
  //ACS.autoMidPoint();
}

void loop()
{
  
  int mA = ACS.mA_AC();
  Serial.println(mA);

  if (mA > 0)
  {
    char c = mA;
    float amps = (float) mA / 1000;
    float volt = 230;

    if (c == '*') ACS.setmVperAmp(ACS.getmVperAmp() + 1);
    if (c == '/') ACS.setmVperAmp(ACS.getmVperAmp() - 1);
    Serial.print("mVperAmp:\t");
    Serial.println(ACS.getmVperAmp());

    if (c == '+') ACS.setFormFactor(ACS.getFormFactor() * 1.05);
    if (c == '-') ACS.setFormFactor(ACS.getFormFactor() / 1.05);
    float formFactor = ACS.getFormFactor();
    float calcWatt = formFactor * amps * volt * calibration;
    
    Serial.print("formFactor:\t");    
    Serial.println(formFactor);
    Serial.print("Amps:\t");
    Serial.println(amps);
    Serial.print("Watts:\t");
    Serial.println(calcWatt);
    
    
  }
  //nrDelays++;
  delay(1000);
}


Resultaat:
Deze uitgebreide library heeft veel functies en ik heb die ook getest.
Wat erg van belang is, is de midPoint en FormFactor. Beide beïnvloeden het resultaat in A.
Hierbij kreeg ik wisselende resultaten, maar het kwam nooit goed overeen met de daadwerkelijke load.
Als ik "auto mid point" vaker deed aanroepen (bv. eens per 30sec) dan kon de formfactor soms wel 50% verschil maken. Niet echt stabiel dus. Maar als ik de tekst lees van hem op github is die formfactor wel erg belangrijk... Dat zag ik dus ook in de resultaten. Als die 1 bleef was het resultaat te hoog. Meestal zat ik op 0,3 tot 0,5 voor een beetje vergelijkbaar resultaat.
Hier zit ook were dezelfde waarde in maar moet nog iets beter in de code duiken om het te snappen ;)
Code van: verschillende google zoekopdrachten om te testen :)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
unsigned int total; // holds <= 64 analogReads
byte numReadings = 64;
float offset = 833; // calibrate zero current
float span = 0.07393; // calibrate max current | ~0.07315 is for 30A sensor
float current; // holds final current
float totalAverage;
float totalAverageMinOffset;
float watts;
float volt = 230;

void setup() {
  Serial.begin(115200);
}

void loop() {
  total = 0; // reset
  for (int i = 0; i < numReadings; i++) total += analogRead(A0);

  totalAverage = (total / numReadings);

  Serial.print("Total average is:  ");
  Serial.print(totalAverage);
  Serial.println("  ");

  totalAverageMinOffset = totalAverage - offset;
  
  Serial.print("Total average min offset:  ");
  Serial.print(totalAverageMinOffset);
  Serial.println("  ");
  
  current = (total / numReadings - offset) * span;
  
  Serial.print("Current is:  ");
  Serial.print(current);
  //Serial.print(current, 1); // one decimal place
  Serial.println("  Amp");

  watts = current * volt;
  
  Serial.print("Watts is:  ");
  Serial.print(watts);
  Serial.println("  W");
  
  delay(1000); // human readable
}


Resultaat:
Deze code is wat simpeler, maar hier kreeg ik eigenlijk vrijwel geen verschil te zien tussen geen load en wel load. De verschillen in "totalAverage" waren te klein en dit komt denk ik door de foutmarge van de ACS.
Deze code middelt de gemeten wisselspanning er mooi uit de het gemiddelde te pakken van meerder waardes.
ACS icm de ADS

Code van: https://wolles-elektronikkiste.de/en/acs712-current-sensor-2
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include<ADS1115_WE.h> 
#include<Wire.h>
#define I2C_ADDRESS 0x48
const float zeroCurrentVoltage_mV = 2538;
ADS1115_WE adc(I2C_ADDRESS);
void setup() {
  Wire.begin();
  Serial.begin(115200);
  if(!adc.init()){
    Serial.println("ADS1115 not connected!");
  }
  /* Set the voltage range of the ADC to adjust the gain
   * Please note that you must not apply more than VDD + 0.3V to the input pins!
   * 
   * ADS1115_RANGE_6144  ->  +/- 6144 mV
   * ADS1115_RANGE_4096  ->  +/- 4096 mV
   * ADS1115_RANGE_2048  ->  +/- 2048 mV (default)
   * ADS1115_RANGE_1024  ->  +/- 1024 mV
   * ADS1115_RANGE_0512  ->  +/- 512 mV
   * ADS1115_RANGE_0256  ->  +/- 256 mV
   */
  adc.setVoltageRange_mV(ADS1115_RANGE_6144); 
  /* Set the inputs to be compared
   *  
   *  ADS1115_COMP_0_1    ->  compares 0 with 1 (default)
   *  ADS1115_COMP_0_3    ->  compares 0 with 3
   *  ADS1115_COMP_1_3    ->  compares 1 with 3
   *  ADS1115_COMP_2_3    ->  compares 2 with 3
   *  ADS1115_COMP_0_GND  ->  compares 0 with GND
   *  ADS1115_COMP_1_GND  ->  compares 1 with GND
   *  ADS1115_COMP_2_GND  ->  compares 2 with GND
   *  ADS1115_COMP_3_GND  ->  compares 3 with GND
   */
  adc.setCompareChannels(ADS1115_COMP_0_GND); 
  Serial.println("ACS712 - Nullstrommessung mit ADS1115");
  Serial.println();
}
void loop() {
  float voltage = 0.0;
  
  for(int i=0; i<10; i++){
    adc.startSingleMeasurement();
    while(adc.isBusy()){}
    voltage += adc.getResult_mV();
  }
  
  voltage /= 10;
  voltage -= zeroCurrentVoltage_mV;
  float current = voltage/0.100;
  Serial.print("ADC712-Spannung [mV]: "); // Voltage
  Serial.print(voltage);
  Serial.print("  /  Strom [mA]: ");  // Current
  Serial.println(current);
  delay(2000);
}


Resultaat:
Ik compare hier analoog 0 met ground, omdat ik nog niks had aangesloten op 1. Heb ook geprobeert an1 aan te sluiten op ground, maar maakt geen verschil (de code werkt dus wat dat betreft).
Het resultaat in metingen is hierbij wel stabiel bij geen load. Stabieler dan alleen de ACS.
Echter als ik er een load op zet veranderd er te weinig. Het verspringt wel wat, maar totaal niet naar de goede waarde.
Het verschil tussen mijn opstelling en die op deze site staat is dus de voltage divider. Die heb ik nog niet geprobeerd. Heb wel verschillende weerstanden binnen nu om dat te doen.
Een ander voorbeeld met voltage divider vond ik hier: https://curiousscientist.tech/blog/arduino-acs712-powermeter
Die code is gebaseerd op de adafruit library, het idee is hetzelfde. Die code heb ik ook (met wat aanpassingen) geprobeert maar het resultaat is niet anders.


Code van: https://github.com/RobTillaart/ADS1X15
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "ADS1X15.h"

// choose you sensor
// ADS1013 ADS(0x48);
// ADS1014 ADS(0x48);
// ADS1015 ADS(0x48);
// ADS1113 ADS(0x48);
// ADS1114 ADS(0x48);
ADS1115 ADS(0x48);

float zeroPoint = 2.532;
float totalVolts;
float Voltage;
float Current;
float Power;

void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("ADS1X15_LIB_VERSION: ");
  Serial.println(ADS1X15_LIB_VERSION);

  ADS.begin();
  ADS.setWireClock(400000);
  ADS.setGain(0);      // 6.144 volt
  ADS.setDataRate(7);  // fast = 7
  ADS.setMode(0);      // continuous mode
  ADS.readADC(0);      // first read to trigger

}

void loop()
{

  MeasurePower(); 
  PrintSerial();
 //Serial.println(ADS.getValue());
  delay(1000);
}

void MeasurePower()
{  

 totalVolts = ADS.getValue();
 
 float f = ADS.toVoltage(1);  // voltage factor
 Voltage =  totalVolts * f;
 
 Current = (Voltage - zeroPoint) / 0.066;
 
 //Watt = U * I  as test
 Power = 230 * Current;
  
}

void PrintSerial()
{    
  Serial.print(totalVolts); 
  Serial.print("\t"); //space as delimiter
  Serial.print(Voltage,3);
  Serial.print("\t");
  Serial.print(Current,3); 
  Serial.print("\t");
  Serial.println(Power,3);   
}


Resultaat:
Niet veel anders met de code hiervoor. Dit is een erg uitgebreide library. Heb het op verschillende snelheden (van de ADS) getest en ook zonder die "setWireClock" (I2C interface snelheid).
Maar ook hier dus een goed stabiele meting zonder load, maar weinig tot geen verschil mét load.
Deze code middelt het idd er ook uit;

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op vrijdag 28 mei 2021 @ 10:57:
[...]

dus code C geeft nu eindelijk het gewenste resultaat ? en toont een load (eindelijk?) wat was nu het issue ?
Heh ? Hoe kom je daarbij ?

@Tinusvolkel vroeg of ik bij de codes even "c" kon aangeven zodat het beter leesbaar is hier op tweakers.
De tag [ code = c ] dus . Ipv alleen [ code ]

Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op vrijdag 28 mei 2021 @ 10:58:

Is dit gemeten of berekend? want is dit nu geen 2.7v ipv 2.5v?
zero_ADC_Value = 835;
Gemeten.
Zonder load kwam ik met alleen de ACS712 30A op deze waardes:
16:20:43.036 -> analogRead = 833
16:20:43.036 -> Voltage (when zero current) = 2.691 V
16:20:44.047 -> analogRead = 837
16:20:44.047 -> Voltage (when zero current) = 2.697 V
16:20:45.041 -> analogRead = 836
16:20:45.041 -> Voltage (when zero current) = 2.701 V
16:20:46.040 -> analogRead = 833
16:20:46.040 -> Voltage (when zero current) = 2.697 V
16:20:47.030 -> analogRead = 834
16:20:47.030 -> Voltage (when zero current) = 2.697 V
16:20:48.038 -> analogRead = 834
16:20:48.038 -> Voltage (when zero current) = 2.697 V
16:20:49.042 -> analogRead = 833
16:20:49.042 -> Voltage (when zero current) = 2.694 V
16:20:50.052 -> analogRead = 836
16:20:50.052 -> Voltage (when zero current) = 2.691 V
16:20:51.031 -> analogRead = 833
16:20:51.031 -> Voltage (when zero current) = 2.694 V
16:20:52.053 -> analogRead = 834
16:20:52.053 -> Voltage (when zero current) = 2.701 V
De 20A variant heb ik wat dat betreft nog niet getest. Maar icm de ADS kwam ik op ~2.530 V uit
Tinusvolkel schreef op vrijdag 28 mei 2021 @ 10:58:

Deze code middelt de gemeten wisselspanning er mooi uit de het gemiddelde te pakken van meerder waardes.

[...]

Deze code middelt het idd er ook uit;
De vraag is dan hoe het wel moet ;) of wat ik kan proberen. In het geval van mét ADS dan he.

Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Plenkske schreef op vrijdag 28 mei 2021 @ 09:53:
Code van: https://github.com/RobTillaart/ADS1X15
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include "ADS1X15.h"

// choose you sensor
// ADS1013 ADS(0x48);
// ADS1014 ADS(0x48);
// ADS1015 ADS(0x48);
// ADS1113 ADS(0x48);
// ADS1114 ADS(0x48);
ADS1115 ADS(0x48);

float zeroPoint = 2.532;
float totalVolts;
float Voltage;
float Current;
float Power;

void setup()
{
  Serial.begin(115200);
  Serial.println(__FILE__);
  Serial.print("ADS1X15_LIB_VERSION: ");
  Serial.println(ADS1X15_LIB_VERSION);

  ADS.begin();
  ADS.setWireClock(400000);
  ADS.setGain(0);      // 6.144 volt
  ADS.setDataRate(7);  // fast = 7
  ADS.setMode(0);      // continuous mode
  ADS.readADC(0);      // first read to trigger

}

void loop()
{

  MeasurePower(); 
  PrintSerial();
 //Serial.println(ADS.getValue());
  delay(1000);
}

void MeasurePower()
{  

 totalVolts = ADS.getValue();
 
 float f = ADS.toVoltage(1);  // voltage factor
 Voltage =  totalVolts * f;
 
 Current = (Voltage - zeroPoint) / 0.066;
 
 //Watt = U * I  as test
 Power = 230 * Current;
  
}

void PrintSerial()
{    
  Serial.print(totalVolts); 
  Serial.print("\t"); //space as delimiter
  Serial.print(Voltage,3);
  Serial.print("\t");
  Serial.print(Current,3); 
  Serial.print("\t");
  Serial.println(Power,3);   
}


Resultaat:
Niet veel anders met de code hiervoor. Dit is een erg uitgebreide library. Heb het op verschillende snelheden (van de ADS) getest en ook zonder die "setWireClock" (I2C interface snelheid).
Maar ook hier dus een goed stabiele meting zonder load, maar weinig tot geen verschil mét load.
@Tinusvolkel deze laatste middelt het niet uit toch ?

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op vrijdag 28 mei 2021 @ 11:04:
[...]


Gemeten.
Zonder load kwam ik met alleen de ACS712 30A op deze waardes:

[...]


De 20A variant heb ik wat dat betreft nog niet getest. Maar icm de ADS kwam ik op ~2.530 V uit


[...]


De vraag is dan hoe het wel moet ;) of wat ik kan proberen. In het geval van mét ADS dan he.
Die 2.7 is wel hoog voor 5/2, hoe stabiel is je voedingsspanning, maar in de eerste code zonder ADS ;) heb ik het meeste vertrouwen qua berekeningen. Nu helaas niet echt tijd om er goed in te duiken.

@vso in wat voor omgeving gebruik jij de shelly? klinkt als vrij omslachtig... in home assistant is het alleen een IP opgeven.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op vrijdag 28 mei 2021 @ 11:31:
[...]


@Tinusvolkel deze laatste middelt het niet uit toch ?
Bedoelde idd de een-na-laatste.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op vrijdag 28 mei 2021 @ 11:32:

Die 2.7 is wel hoog voor 5/2, hoe stabiel is je voedingsspanning, maar in de eerste code zonder ADS ;) heb ik het meeste vertrouwen qua berekeningen. Nu helaas niet echt tijd om er goed in te duiken.
Het viel mij ook op hoor. De meeste sites spreken idd van 2,5 V en daarbij is de analogRead iets van 753.
Zal dat binnekort eens uitproberen met de 20A variant ook.
Voedingsspanning is tot nu toe bij alle tests gewoon de usb port van laptop. Gemeten met multimeter en ook de ADS en kwam dan op 5,09 V. Lijkt me dus goed.

Ik heb ook het meeste vertrouwen in die berekeningen, omdat ik dus ook zag dat de output stabieler was en ook veranderde bij load. Maar ik weet niet goed wat ik er mee moet verder. En dan is het alsnog zonder ADS... opzich niet erg maar wel jammer natuurlijk omdat je alsnog met de foutmarge zit vanwege de lagere resolutie.

De site waar ik die code/berekening van heb: https://www.romn.io/2020/...oach-to-measure-acdc.html

Je ziet daar ook wat output van metingen.
Wat ik dus ook niet weet is hoe ik die Vrms en Irms moet zien.
Bij mij kreeg ik iets van 0,6 A toen ik een load van 60W erop had zitten.

Uiteindelijk wil ik naar verbruik in Watt.
https://www.rapidtables.c...p_to_Watt_Calculator.html
Die power factor is dan wel van belang.
Als ik het goed begrijp is het afhankelijk van wat je er aan hangt, wat die power factor ongeveer is. Uiteindelijk zal dat bij mij de filterpomp en warmtepomp zijn (alleen warmtepomp zou ik ook goed vinden).

De library van Rob probeert die powerfactor dan weer te berekenen. Ik merkte dat dit soms wel goed ging, maar niet zo stabiel.

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Idd eigenlijk moet je de spanning ook meten om te kijken wat de faseverschuiving is bij loads die naast resistive ook nog inductief en capacitief zijn.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op vrijdag 28 mei 2021 @ 12:06:
Idd eigenlijk moet je de spanning ook meten om te kijken wat de faseverschuiving is bij loads die naast resistive ook nog inductief en capacitief zijn.
Ik zou al tevreden zijn met een gemiddelde. Als het maar ergens op slaat zeg maar. Het hoeft van mij niet exact te kloppen.


Ik was nog even aan het kijken wat er nou gebeurt met ADS en een voltage divider erbij.
Zoals in dit voorbeeld (vanaf stap 2): https://wolles-elektronikkiste.de/en/acs712-current-sensor-2

Als ik het goed begrijp ga je dan kanaal 0 en 1 met elkaar vergelijken. Kanaal 0 komt van de ACS en kanaal 1 is de voltage divider die dan 2.5V moet zijn.
Maar het grootste voordeel hiermee is volgens mij dat je de range van de ADS een stuk lager kan zetten, omdat de 2.5V er al af is. En dus kan je preciezer meten en beter gebruik maken van de ADS.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

ok verkeerd gelezen dus ..
Tinusvolkel schreef op vrijdag 28 mei 2021 @ 11:32:
@vso in wat voor omgeving gebruik jij de shelly? klinkt als vrij omslachtig... in home assistant is het alleen een IP opgeven.
In domoticz heb je een plugin die mqtt "bekijkt" en automagisch de shelly's toevoegt .. (stond alleen niet aan :z

ik gebruik node-red voor "advanced" features .. ook voor de esp32 data die je niet standaard binnenkrijgt.
denk meer aan
- is er een firmware update
- backup
- reset /restart/reboot
- configuratie
Maar komt ook omdat de tasmota / esp niet stabiel is .. :( espeasy moet ik nog ff tijd voor vinden ..


ik moet tzt homeassistant eens erbij zetten hopenlijk kan je de data 1:1 overzetten zodat je geen historie kwijt raakt ..

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Plenkske schreef op vrijdag 28 mei 2021 @ 12:31:
[...]


Ik zou al tevreden zijn met een gemiddelde. Als het maar ergens op slaat zeg maar. Het hoeft van mij niet exact te kloppen.


Ik was nog even aan het kijken wat er nou gebeurt met ADS en een voltage divider erbij.
Zoals in dit voorbeeld (vanaf stap 2): https://wolles-elektronikkiste.de/en/acs712-current-sensor-2

Als ik het goed begrijp ga je dan kanaal 0 en 1 met elkaar vergelijken. Kanaal 0 komt van de ACS en kanaal 1 is de voltage divider die dan 2.5V moet zijn.
Maar het grootste voordeel hiermee is volgens mij dat je de range van de ADS een stuk lager kan zetten, omdat de 2.5V er al af is. En dus kan je preciezer meten en beter gebruik maken van de ADS.
@Tinusvolkel
Morgenavond heb ik weer wat tijd voor tests.
Ik ben van plan:
- even de acs 20A simpel testen, kijken wat of die wel op 2.5v zonder load komt. En kijken wat er gebeurt met load.
- met voltage divider proberen zoals in mijn bovenstaande quote staat en kijken wat er gebeurt. Zonder te middelen met de metingen.
- nog eens kijken of de libraries van Rob wat kunnen betekenen

Jij nog ideeën ?

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op zondag 30 mei 2021 @ 15:11:
[...]


@Tinusvolkel
Morgenavond heb ik weer wat tijd voor tests.
Ik ben van plan:
- even de acs 20A simpel testen, kijken wat of die wel op 2.5v zonder load komt. En kijken wat er gebeurt met load.
- met voltage divider proberen zoals in mijn bovenstaande quote staat en kijken wat er gebeurt. Zonder te middelen met de metingen.
- nog eens kijken of de libraries van Rob wat kunnen betekenen

Jij nog ideeën ?
Met die divider kan je idd de gane wat groter zetten voor een groter signaal.
Had je verder al een keer de wisselspanning gemeten die uit de sensor komt?

Verder misschien de plotter gebruiken in de arduiono IDE
https://arduinogetstarted...the%20code%20to%20Arduino.
Dan kan je op het oog kijken hoe het gemeten signaal eruit ziet.
Zonder er nog iets van berekeningen mee te doen.

PS hier start m'n 4kw weau niet inverterpomp gewoon op na een powercycle, dus heb niks hoeven hobbyen. ik zet nu wel eerst de filterpomp uit en dan pas de warmtepomp zodat hij zelf in standby springt nadat hij nog even na gekoeld heeft.

[ Voor 10% gewijzigd door Tinusvolkel op 31-05-2021 07:14 ]

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op maandag 31 mei 2021 @ 07:12:
Met die divider kan je idd de gane wat groter zetten voor een groter signaal.
Had je verder al een keer de wisselspanning gemeten die uit de sensor komt?
Ik begreep de vorige keer niet precies wat je bedoelde met deze vraag. De ACS of de ADS ? En hoe wil ik dit meten ?
Wat ik dus bij testen mét load doe is een simpele tussenstekker erbij die ook alles uit kan lezen.
Tinusvolkel schreef op maandag 31 mei 2021 @ 07:12:
Verder misschien de plotter gebruiken in de arduiono IDE
https://arduinogetstarted...the%20code%20to%20Arduino.
Dan kan je op het oog kijken hoe het gemeten signaal eruit ziet.
Zonder er nog iets van berekeningen mee te doen.
Goeie tip.
Tinusvolkel schreef op maandag 31 mei 2021 @ 07:12:
PS hier start m'n 4kw weau niet inverterpomp gewoon op na een powercycle, dus heb niks hoeven hobbyen. ik zet nu wel eerst de filterpomp uit en dan pas de warmtepomp zodat hij zelf in standby springt nadat hij nog even na gekoeld heeft.
Staat het ook zo in de handleiding ?
Ik heb het bij de inverter nog niet getest. Volgens de handleiding zou je de warmtepomp zelf op "aan" moeten zetten als hij van stroom af is geweest. Als dat niet zou hoeven dan kan het relais ook op het stopcontact ipv de flow switch.
Als hij eenmaal op "aan" staat dan blijft hij dat ook volgens mij, zoals bij elke warmtepomp. Dus dan gaat hij automatisch op standby, en ook automatisch terug naar verwarmen.

Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op maandag 31 mei 2021 @ 09:11:
[...]


Ik begreep de vorige keer niet precies wat je bedoelde met deze vraag. De ACS of de ADS ? En hoe wil ik dit meten ?
Wat ik dus bij testen mét load doe is een simpele tussenstekker erbij die ook alles uit kan lezen.


[...]
Uitgang van de ACS met de wisselspanningsstand van de multimeter, eventueel de 2.5v van de spanningsdeler gebruiken voor de zwarte meetprobe en dan de uitgang van de ACS voor de rode.
Goeie tip.


[...]


Staat het ook zo in de handleiding ?
Ik heb het bij de inverter nog niet getest. Volgens de handleiding zou je de warmtepomp zelf op "aan" moeten zetten als hij van stroom af is geweest. Als dat niet zou hoeven dan kan het relais ook op het stopcontact ipv de flow switch.
Als hij eenmaal op "aan" staat dan blijft hij dat ook volgens mij, zoals bij elke warmtepomp. Dus dan gaat hij automatisch op standby, en ook automatisch terug naar verwarmen.
Bij de normale staat hetzelfde als bij de inverter:
If first power on or additional power interruptions, the heat pump starts 10s later after pressing ‘ON/OFF’ button.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Afbeeldingslocatie: https://i.imgur.com/HdzTewr.png eens kijken of ik dit aan de praat ga kunnen krijgen

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op maandag 31 mei 2021 @ 09:17:
[...]


Bij de normale staat hetzelfde als bij de inverter:

[...]
Net even snel getest bij de inverter.
Lijkt erop dat die ook gewoon opstart in "laatst gebruikte stand" nadat stroom eraf is geweest. Paar keer getest en hij doet dit steeds. Na een paar seconde controleerd hij dan de flow switch en komt de E03 in het schermpje bij mij. Dit doet hij niet als hij begint op "OFF".

Maar jij had het ook gezien nadat hij uren van stroom af was geweest ?

Dan is het denk ik beter en makkelijker om gewoon het stopcontact te gaan schakelen met het relais, in plaats van de flow switch. Scheelt 2 kabels van WP naar relais ;)
En mocht het dan niet werken is het ook snel omgezet naar de flow switch.

Je tip betreft "even wachten" is wel een goede. Dus niet direct zowel filterpomp als warmtepomp uitschakelen, maar een minuut of 15 ertussen laten. Het aan zetten maakt niets uit. Warmtepomp controleerd toch de flow switch dus als de filterpomp nog niet draait blijft hij in standby.


Goed, nu tijd voor weer wat nieuwe ACS (en ADS) testjes ;)

Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op maandag 31 mei 2021 @ 09:17:
Uitgang van de ACS met de wisselspanningsstand van de multimeter, eventueel de 2.5v van de spanningsdeler gebruiken voor de zwarte meetprobe en dan de uitgang van de ACS voor de rode.
De 20A ACS712 laat eigenlijk hetzelfde zien (zoals ik eerder al zag) , zonder load.
Krijg in de test codes een analoge lezing van rond de 840 , dat vertaald naar ~2.7V

Als ik met de multimeter meet (rood op uitgang, zwart op ground) dan krijg ik in de wisselspanningsstand 4.7V op mijn multimeter (stabiel). En in gelijkspanning krijg ik 2.5V (stabiel).

(edit)

De voltage output van de ESP die ik gebruik is 5.08 V trouwens.

[ Voor 5% gewijzigd door Plenkske op 31-05-2021 20:38 ]


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op maandag 31 mei 2021 @ 19:00:
[...]


Net even snel getest bij de inverter.
Lijkt erop dat die ook gewoon opstart in "laatst gebruikte stand" nadat stroom eraf is geweest. Paar keer getest en hij doet dit steeds. Na een paar seconde controleerd hij dan de flow switch en komt de E03 in het schermpje bij mij. Dit doet hij niet als hij begint op "OFF".

Maar jij had het ook gezien nadat hij uren van stroom af was geweest ?
Na een nacht zonder stroom gaat hij smorgens gewoon weer aan.
Dan is het denk ik beter en makkelijker om gewoon het stopcontact te gaan schakelen met het relais, in plaats van de flow switch. Scheelt 2 kabels van WP naar relais ;)
En mocht het dan niet werken is het ook snel omgezet naar de flow switch.

Je tip betreft "even wachten" is wel een goede. Dus niet direct zowel filterpomp als warmtepomp uitschakelen, maar een minuut of 15 ertussen laten. Het aan zetten maakt niets uit. Warmtepomp controleerd toch de flow switch dus als de filterpomp nog niet draait blijft hij in standby.
Minuutje is al prima, maar kwartier kan natuurlijk ook.
Goed, nu tijd voor weer wat nieuwe ACS (en ADS) testjes ;)
Plenkske schreef op maandag 31 mei 2021 @ 20:14:
[...]


De 20A ACS712 laat eigenlijk hetzelfde zien (zoals ik eerder al zag) , zonder load.
Krijg in de test codes een analoge lezing van rond de 840 , dat vertaald naar ~2.7V

Als ik met de multimeter meet (rood op uitgang, zwart op ground) dan krijg ik in de wisselspanningsstand 4.7V op mijn multimeter (stabiel). En in gelijkspanning krijg ik 2.5V (stabiel).

(edit)

De voltage output van de ESP die ik gebruik is 5.08 V trouwens.
En toevallig de voltage divider al gemaakt? en de uitgangswisselspanning t.o.v. dat punt meet? dan heb je als het goed is al geen DC meer op het signaal zitten.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op maandag 31 mei 2021 @ 21:09:

En toevallig de voltage divider al gemaakt? en de uitgangswisselspanning t.o.v. dat punt meet? dan heb je als het goed is al geen DC meer op het signaal zitten.
Was een beetje aan het klooien met de weerstanden :+
Heb nu een 20K en 2K erop zitten en kreeg op de wisselspanning nu 1.7 V, stabiel.

Ben nu aan het testen met de ADS er weer tussen.
En maar weer terug zonder... ACS met voltage divider dus.
(edited)

[ Voor 7% gewijzigd door Plenkske op 31-05-2021 21:57 ]


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
@Tinusvolkel zonder ADS kwam ik nu op een analoge waarde van ~370 zonder load.
Maar, je raad het al, er gebeurde wederom niks mét load.
Nog wat andere bekabeling geprobeert maar hielp niet.

Mét ADS en code van hier:
https://wolles-elektronikkiste.de/en/acs712-current-sensor-2
(gemiddelde dingen eruit gehaalt)

Moest ik de range op 4096 mV zetten en kreeg ik terug 2080 mV
Maar, met load wederom geen verschillen.
Maakt niet uit wat ik er aan hang (van laag wattage telefoonladers tot een föhn of waterkoker).

Ben er eigenlijk wel een beetje klaar mee 8)7 8)7

Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
@Tinusvolkel enig idee of ik wellicht iets over het hoofd zie aan de load kant ?
Of toch iets verkeerds doe met de voltage divider ?
Ik heb gisteravond meerdere dingen geprobeerd met de weerstanden en aansluitpunten. Maar vooral het schema aangehouden zoals in die link.

Dus van de + kant op breadboard een weerstand (20k) , van de - kant een weerstand (2k) en die 2 verbonden op breadboard. Daarna een draad naar de A1 van ADS.

Resultaten dus zoals gezegt wel oké, maar met load veranderde er niets.

Deze codes geprobeert:

(zonder ADS)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int ACS712_Pin = A0;
const float zeroCurrentValue = 371;  
void setup() {
  Serial.begin(115200);
  Serial.println("ACS712");
}
void loop() {
  long rawValue = 0;
  //for(int i=0; i<50; i++){
    rawValue += analogRead(ACS712_Pin);
  //}
  //float rawVoltage = rawValue/50.0;
  float current = (rawValue - zeroCurrentValue) * 0.0488758553;
  Serial.print("Volt: "); // volt
  Serial.println(rawValue);
  Serial.print("Stroom [mA]: "); // Current
  Serial.println(current);
  delay(500);        
}


(met ADS)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<ADS1115_WE.h> 
#include<Wire.h>
#define I2C_ADDRESS 0x48
const float zeroCurrentVoltage_mV = 0;

ADS1115_WE adc(I2C_ADDRESS);

void setup() {
  Wire.begin();
  Serial.begin(115200);
  if(!adc.init()){
    Serial.println("ADS1115 not connected!");
  }

  /* Set the voltage range of the ADC to adjust the gain
   * Please note that you must not apply more than VDD + 0.3V to the input pins!
   * 
   * ADS1115_RANGE_6144  ->  +/- 6144 mV
   * ADS1115_RANGE_4096  ->  +/- 4096 mV
   * ADS1115_RANGE_2048  ->  +/- 2048 mV (default)
   * ADS1115_RANGE_1024  ->  +/- 1024 mV
   * ADS1115_RANGE_0512  ->  +/- 512 mV
   * ADS1115_RANGE_0256  ->  +/- 256 mV
   */
  adc.setVoltageRange_mV(ADS1115_RANGE_4096); 

  /* Set the inputs to be compared
   *  
   *  ADS1115_COMP_0_1    ->  compares 0 with 1 (default)
   *  ADS1115_COMP_0_3    ->  compares 0 with 3
   *  ADS1115_COMP_1_3    ->  compares 1 with 3
   *  ADS1115_COMP_2_3    ->  compares 2 with 3
   *  ADS1115_COMP_0_GND  ->  compares 0 with GND
   *  ADS1115_COMP_1_GND  ->  compares 1 with GND
   *  ADS1115_COMP_2_GND  ->  compares 2 with GND
   *  ADS1115_COMP_3_GND  ->  compares 3 with GND
   */
  adc.setCompareChannels(ADS1115_COMP_0_1); 

  Serial.println("ACS712 - ADS1115");
  Serial.println();
}

void loop() {
  float voltage = 0.0;
  
//  for(int i=0; i<10; i++){
//    adc.startSingleMeasurement();
//    while(adc.isBusy()){}
//    voltage += adc.getResult_mV();
//  }
  adc.startSingleMeasurement();
  voltage += adc.getResult_mV();
  //voltage /= 10;
  voltage -= zeroCurrentVoltage_mV;
  float current = voltage/0.1;
  Serial.print("ADC712-Volt [mV]: "); // Voltage
  Serial.print(voltage);
  Serial.print("  /  Stroom [mA]: ");  // Current
  Serial.println(current);
  delay(500);
}



Ik heb laatst ook alvast een backup besteld voor als ik dit niet aan de praat krijg, namelijk een zigbee tussenstekker die power, current en voltage als output geeft.

En ik ben ook heel benieuwd hoe de ervaringen van @vso zullen zijn met de SCT, dat zie ik namelijk ook nog als optie. Maar dat ga ik dan wel als los projectje doen, want ik wil nu in ieder geval zo ver klaar zijn zodat ik alles in kan bouwen en het zwembad een keer op kan gaan zetten.

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op dinsdag 1 juni 2021 @ 11:03:
@Tinusvolkel enig idee of ik wellicht iets over het hoofd zie aan de load kant ?
Of toch iets verkeerds doe met de voltage divider ?
Ik heb gisteravond meerdere dingen geprobeerd met de weerstanden en aansluitpunten. Maar vooral het schema aangehouden zoals in die link.

Dus van de + kant op breadboard een weerstand (20k) , van de - kant een weerstand (2k) en die 2 verbonden op breadboard. Daarna een draad naar de A1 van ADS.
Moet je niet 2 dezelfde weerstanden hebben? nu deel je door 10 ipv door 2.
Resultaten dus zoals gezegt wel oké, maar met load veranderde er niets.

Deze codes geprobeert:

(zonder ADS)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const int ACS712_Pin = A0;
const float zeroCurrentValue = 371;  
void setup() {
  Serial.begin(115200);
  Serial.println("ACS712");
}
void loop() {
  long rawValue = 0;
  //for(int i=0; i<50; i++){
    rawValue += analogRead(ACS712_Pin);
  //}
  //float rawVoltage = rawValue/50.0;
  float current = (rawValue - zeroCurrentValue) * 0.0488758553;
  Serial.print("Volt: "); // volt
  Serial.println(rawValue);
  Serial.print("Stroom [mA]: "); // Current
  Serial.println(current);
  delay(500);        
}


(met ADS)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<ADS1115_WE.h> 
#include<Wire.h>
#define I2C_ADDRESS 0x48
const float zeroCurrentVoltage_mV = 0;

ADS1115_WE adc(I2C_ADDRESS);

void setup() {
  Wire.begin();
  Serial.begin(115200);
  if(!adc.init()){
    Serial.println("ADS1115 not connected!");
  }

  /* Set the voltage range of the ADC to adjust the gain
   * Please note that you must not apply more than VDD + 0.3V to the input pins!
   * 
   * ADS1115_RANGE_6144  ->  +/- 6144 mV
   * ADS1115_RANGE_4096  ->  +/- 4096 mV
   * ADS1115_RANGE_2048  ->  +/- 2048 mV (default)
   * ADS1115_RANGE_1024  ->  +/- 1024 mV
   * ADS1115_RANGE_0512  ->  +/- 512 mV
   * ADS1115_RANGE_0256  ->  +/- 256 mV
   */
  adc.setVoltageRange_mV(ADS1115_RANGE_4096); 

  /* Set the inputs to be compared
   *  
   *  ADS1115_COMP_0_1    ->  compares 0 with 1 (default)
   *  ADS1115_COMP_0_3    ->  compares 0 with 3
   *  ADS1115_COMP_1_3    ->  compares 1 with 3
   *  ADS1115_COMP_2_3    ->  compares 2 with 3
   *  ADS1115_COMP_0_GND  ->  compares 0 with GND
   *  ADS1115_COMP_1_GND  ->  compares 1 with GND
   *  ADS1115_COMP_2_GND  ->  compares 2 with GND
   *  ADS1115_COMP_3_GND  ->  compares 3 with GND
   */
  adc.setCompareChannels(ADS1115_COMP_0_1); 

  Serial.println("ACS712 - ADS1115");
  Serial.println();
}

void loop() {
  float voltage = 0.0;
  
//  for(int i=0; i<10; i++){
//    adc.startSingleMeasurement();
//    while(adc.isBusy()){}
//    voltage += adc.getResult_mV();
//  }
  adc.startSingleMeasurement();
  voltage += adc.getResult_mV();
  //voltage /= 10;
  voltage -= zeroCurrentVoltage_mV;
  float current = voltage/0.1;
  Serial.print("ADC712-Volt [mV]: "); // Voltage
  Serial.print(voltage);
  Serial.print("  /  Stroom [mA]: ");  // Current
  Serial.println(current);
  delay(500);
}



Ik heb laatst ook alvast een backup besteld voor als ik dit niet aan de praat krijg, namelijk een zigbee tussenstekker die power, current en voltage als output geeft.

En ik ben ook heel benieuwd hoe de ervaringen van @vso zullen zijn met de SCT, dat zie ik namelijk ook nog als optie. Maar dat ga ik dan wel als los projectje doen, want ik wil nu in ieder geval zo ver klaar zijn zodat ik alles in kan bouwen en het zwembad een keer op kan gaan zetten.
In de code zie ik niet echt iets heel geks...

Ps die serial plotter al een keer getest?

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 11:17:
[...]


Moet je niet 2 dezelfde weerstanden hebben? nu deel je door 10 ipv door 2.
Heb ik geprobeerd, maar dan zag ik alsnog 4.7V op wisselspanning in mijn multimeter.
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 11:17:
In de code zie ik niet echt iets heel geks...

Ps die serial plotter al een keer getest?
Ja, maar daar krijg ik gewoon een nagenoeg rechte lijn aangezien die hetzelfde weergeeft maar dan in grafiekje.

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Wat voor gelijkspanning staat er nu op de spanningsdeler? want die moet gelijk zijn aan het uitgangssignaal bij geen load.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +2 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Lekker makkelijk als ik in het bad zit :)
Heb alleen m’n Apple Watch nodig, linksboven zijn de actuele min en max van de afgelopen 24 uur. Verder via Siri de pompen bedienen.

Afbeeldingslocatie: https://tweakers.net/i/6LVeJ2BaaPr0brfleRKo_Jh2LZw=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/uw81odFlgsJA6kKbyHXzJNPV.png?f=user_large

Afbeeldingslocatie: https://tweakers.net/i/9QX0nhKmjTlWKOeO1ZNYUokQe0g=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/RflhVpO3oRzjs49916oOcE4U.png?f=user_large

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op dinsdag 1 juni 2021 @ 11:03:
En ik ben ook heel benieuwd hoe de ervaringen van @vso zullen zijn met de SCT, dat zie ik namelijk ook nog als optie. Maar dat ga ik dan wel als los projectje doen, want ik wil nu in ieder geval zo ver klaar zijn zodat ik alles in kan bouwen en het zwembad een keer op kan gaan zetten.
nog niet opgezet ?

anyway .. ik heb nu een NPN sensor vandaag binnen gehad (watermeter uitlezen ander project meer p1 topic waardig) Flowmeter en de SCT (5x) ga ff kijken of ik van de week zin heb en ruimte om te solderen ..

moet alleen verzinnen hoe ik de connectie met de watermeter en esp ga aanleggen .. kop telefoon aansluiting?

btw ik heb momenteel niks aan de SCT .. gezien de shelly toch al de stroom meet .. lol maar wel leuk om te kijken of het werkt .. 1ste keer dat ik dan met I2C aan de slag ga ..
- direct op esp (10bit resolutie)
- via acs1115 (16bit resolutie)

Tja vanalles


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Nee, andere werkzaamheden in de tuin moesten eerst. As. zondag laatste dingen daarvoor afronden.
Verder ook geen haast eigenlijk. Maar gelukkig wel alle spullen binnen dus kwestie van wat dingen afronden en dan opzetten.
vso schreef op dinsdag 1 juni 2021 @ 11:44:
moet alleen verzinnen hoe ik de connectie met de watermeter en esp ga aanleggen .. kop telefoon aansluiting?

btw ik heb momenteel niks aan de SCT .. gezien de shelly toch al de stroom meet .. lol maar wel leuk om te kijken of het werkt .. 1ste keer dat ik dan met I2C aan de slag ga ..
- direct op esp (10bit resolutie)
- via acs1115 (16bit resolutie)
Als het jack 3.5mm is dan kan je gewoon een female connector gebruiken en die solderen.

Acties:
  • 0 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op dinsdag 1 juni 2021 @ 11:47:
[...]


Nee, andere werkzaamheden in de tuin moesten eerst. As. zondag laatste dingen daarvoor afronden.
Verder ook geen haast eigenlijk. Maar gelukkig wel alle spullen binnen dus kwestie van wat dingen afronden en dan opzetten.


[...]


Als het jack 3.5mm is dan kan je gewoon een female connector gebruiken en die solderen.
bedoelde de flow meter die komt met een 3 pin connector . die ik niet in huis heb ..

De female connector voor de sct heb ik al op voorraad .. ;)
voor de bbq vlees thermometers initieel ..

Tja vanalles


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
vso schreef op dinsdag 1 juni 2021 @ 11:57:
[...]

bedoelde de flow meter die komt met een 3 pin connector . die ik niet in huis heb ..
Ah, daar kan je ook gewoon dupont jumper wires in stoppen. Zo sluit ik het iig aan. 5V, Ground en data. Data zit in het midden (bij de flow sensor van mij althans) en die kan je gewoon op een ESP pin zetten zoals D5 of D6 (bij NodeMCU).

Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 11:32:
Wat voor gelijkspanning staat er nu op de spanningsdeler? want die moet gelijk zijn aan het uitgangssignaal bij geen load.
Heb het weer even aangesloten, met alleen ACS (groene draad is OUT daarvan):

Afbeeldingslocatie: https://tweakers.net/i/id5Uhs7oHUhs73HKRQClYyCMi34=/800x/filters:strip_icc():strip_exif()/f/image/Nk1g3u4Mxzox1qiHQg9jiqTy.jpg?f=fotoalbum_large

Als ik nu vanaf + meet tot voor de volgende weerstand krijg ik 3.9 V
En na de eerste weerstand tot na de volgende weerstand 1.1 V
Samen doet dus 5 V , logisch.
Alles op gelijkspanning.

Als ik de OUT van ACS meet op gelijkspanning krijg ik 2.5V voor de weerstanden en 2.0 V erna.


Hetzelfde gemeten voor 2x dezelfde weerstanden(20k). Lijkt er al meer op.
2.5V tussen de + en volgende weerstand.
Ook 2.5V na eerste en na volgende.
En als ik de OUT van de ACS meet op gelijkspanning krijg ik 0.0 V na de weerstanden. Dat is de bedoeling volgens mij :)

Ik weet nu ook waarom ik gisteravond hiermee in de war ben geraakt. Ik heb gekeken naar wisselspanning. Die is nu nog steeds 4.7V

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Als je de out meet op dc met bijvoorbeeld de rode en dan de zwarte probe op 2.5v zet (dus tussen de weerstanden) dan moet je idd 0v meten.

Als je dus nu zonder iets te veranderen de multimeter op wisselspanning zet en er een load aan hangt dan zou je iets moeten meten.

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +2 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 12:11:
Als je de out meet op dc met bijvoorbeeld de rode en dan de zwarte probe op 2.5v zet (dus tussen de weerstanden) dan moet je idd 0v meten.

Als je dus nu zonder iets te veranderen de multimeter op wisselspanning zet en er een load aan hangt dan zou je iets moeten meten.
Ja, dat doet hij nu.

Ga er zo eens wat load aan hangen.

Acties:
  • +1 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op dinsdag 1 juni 2021 @ 12:14:
[...]


Ja, dat doet hij nu.

Ga er zo eens wat load aan hangen.
ben benieuwd

Tja vanalles


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op dinsdag 1 juni 2021 @ 12:14:
[...]


Ja, dat doet hij nu.

Ga er zo eens wat load aan hangen.
En als je dan iets meet, dan dus de out op A0 en de 2v5 op A1 van de ADS aansluiten om het differentiaal te meten. Precies dus wat je nu met de multimeter doet,

[ Voor 7% gewijzigd door Tinusvolkel op 01-06-2021 12:17 ]

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Tinusvolkel schreef op dinsdag 1 juni 2021 @ 11:35:
Lekker makkelijk als ik in het bad zit :)
Heb alleen m’n Apple Watch nodig, linksboven zijn de actuele min en max van de afgelopen 24 uur. Verder via Siri de pompen bedienen.

[Afbeelding]

[Afbeelding]
ik haat appeltjes producten maar dit is wel gaaf om te zien ! kuddo's

Tja vanalles


Acties:
  • +1 Henk 'm!

  • vso
  • Registratie: Augustus 2001
  • Niet online

vso

tja...

Plenkske schreef op dinsdag 1 juni 2021 @ 12:14:
[...]


Ja, dat doet hij nu.

Ga er zo eens wat load aan hangen.
en en en ??? kom op werkt het :P

Tja vanalles


Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
vso schreef op dinsdag 1 juni 2021 @ 12:52:
[...]

en en en ??? kom op werkt het :P
Idd :) werkt het @Plenkske? want zo te zien heb je wel tijd om in het zwembadforum te reageren :P

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 13:31:
[...]


Idd :) werkt het @Plenkske? want zo te zien heb je wel tijd om in het zwembadforum te reageren :P
Lol jullie zijn ongeduldig. Ik moet ook nog een beetje werken tussendoor :+
Had even wat testjes gedaan. Voor de zekerheid ook de load andersom aangesloten op de ACS (als dat uberhaupt iets uitmaakt).

Helaas... ik meet 0,0
En het simpele programmatje (zonder ADS dus) komt weer met de default 830-840 analoge lezing.

Afbeeldingslocatie: https://tweakers.net/i/zBEgGD1XSfkK1bC0DRMXtH4n09U=/x800/filters:strip_icc():strip_exif()/f/image/Zi5O4K1Nn8SdhJu9kqpM6MDP.jpg?f=fotoalbum_large

Ik meet dus met rood op de output van ACS en met zwart tussen de weerstanden.

Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Plenkske schreef op dinsdag 1 juni 2021 @ 13:47:
Helaas... ik meet 0,0
En het simpele programmatje (zonder ADS dus) komt weer met de default 830-840 analoge lezing.

[Afbeelding]

Ik meet dus met rood op de output van ACS en met zwart tussen de weerstanden.
@Tinusvolkel
Hmm, meet ik het wel goed vraag ik me nu af. Met de juiste aansluiting bedoel ik dan.
Als het simpele stukje code nog steeds die 830-840 leest, dan lijkt het wel alsof die de voltage divider nog niet oppikt ? Eigenlijk moet die nu nog toch 0 meten ?
Dan denk ik dat ik nog iets niet goed aansluit met de OUT van de ACS. Zal eens kijken wat er gebeurt als ik hem ergens tussen prik.

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Kan de esp zelf differentieel meten?
Anders sluit je de ADS aan met de 2v5 spanningsdeler op A1 en een 20k/2k spaningdeler op A1 dan kan je iig met de multimeter verifiëren wat de adc meer en of ie dus vanaf het 2,5v punt meet

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • +1 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Plenkske schreef op dinsdag 1 juni 2021 @ 13:47:
[...]


Lol jullie zijn ongeduldig. Ik moet ook nog een beetje werken tussendoor :+
Hier gestopt met werken en zit lekker in en bij het zwembad de kinders in de gaten aan het houden 8)

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 14:57:
Kan de esp zelf differentieel meten?
Anders sluit je de ADS aan met de 2v5 spanningsdeler op A1 en een 20k/2k spaningdeler op A1 dan kan je iig met de multimeter verifiëren wat de adc meer en of ie dus vanaf het 2,5v punt meet
Geen idee.
Wat ik nu wel zie is dat als ik de A0 van ESP tussen de weerstanden aansluit krijg ik een lezing rond de 820. Prik ik de OUT van ACS erbij krijg ik dus rond de 840. Zonder iets aangesloten krijg je ongeveer 8.
Maar als ik de OUT van ACS direct op A0 koppel is het ook ~840.

Je bedoelt nu de ADS proberen met twee verschillende spanningsdelers en zonder ACS ?

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Yep dat bedoel ik, gewoon even 2 verschillende gelijk spanningen meten en kijken wat eruit komt

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 15:09:
Yep dat bedoel ik, gewoon even 2 verschillende gelijk spanningen meten en kijken wat eruit komt
Hmm. Ik weet niet zeker of ik dit nu goed doe.

Heb dus de ene spanningsdeler laten zitten, en die zit op de A0 van ADS.
Nieuwe spanningsdeler erbij gezet met 20k/2k en die zit op de A1 van ADS.

Als ik het programma draai die compared tussen deze twee krijg ik:
2103 tot 2104 mV

Als ik er jumper wires bij prik en zelf meet op wisselspanning:
- bij eerste weer 4.7V of 0
- van eerste naar tweede (tussen weerstanden) 3.7V
- bij tweede 0.3 V of 0
- van tweede naar eerste 0V of 0.3 V (na weerstand)

Gelijkspanning meting:
- bij eerste 2.5V (na weerstand) of 0 (tussen weerstanden)
- van eerste naar tweede (tussen weerstanden) 2.0 V en na weerstanden 2.5V
- bij tweede na weerstanden 0.4V
- van tweede naar eerste -2.0 V (tussen weerstanden) en -4.7 na de weerstanden

Acties:
  • 0 Henk 'm!

  • Tinusvolkel
  • Registratie: Augustus 2014
  • Nu online
Werkt zo te zien je hebt z’n referentie dus kanaal 2 (adc1?) op 0,4 gezet dus je meet vanaf dat punt 2.1v tov kanaal 1 (adc0) en dit is dus samen de 2.5v.

De 2.5 spanningsdeler moet dus op kanaal 2 (adc1) en de sensor moet dus op kanaal 1 (adc0)

Strava | 8600 Wp zzo | 1600 Wp nnw


Acties:
  • 0 Henk 'm!

  • Plenkske
  • Registratie: Mei 2011
  • Laatst online: 20:09
Tinusvolkel schreef op dinsdag 1 juni 2021 @ 15:36:
Werkt zo te zien je hebt z’n referentie dus kanaal 2 (adc1?) op 0,4 gezet dus je meet vanaf dat punt 2.1v tov kanaal 1 (adc0) en dit is dus samen de 2.5v.

De 2.5 spanningsdeler moet dus op kanaal 2 (adc1) en de sensor moet dus op kanaal 1 (adc0)
Goed.
Dus ik heb de andere spanningsdeler er weer uit gehaalt. De 2.5 zit op A1 van de ADS en op A0 zit de ACS sensor.

Draai ik de volgende code:

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include<ADS1115_WE.h> 
#include<Wire.h>
#define I2C_ADDRESS 0x48
const float zeroCurrentVoltage_mV = 0;

ADS1115_WE adc(I2C_ADDRESS);

void setup() {
  Wire.begin();
  Serial.begin(115200);
  if(!adc.init()){
    Serial.println("ADS1115 not connected!");
  }

  /* Set the voltage range of the ADC to adjust the gain
   * Please note that you must not apply more than VDD + 0.3V to the input pins!
   * 
   * ADS1115_RANGE_6144  ->  +/- 6144 mV
   * ADS1115_RANGE_4096  ->  +/- 4096 mV
   * ADS1115_RANGE_2048  ->  +/- 2048 mV (default)
   * ADS1115_RANGE_1024  ->  +/- 1024 mV
   * ADS1115_RANGE_0512  ->  +/- 512 mV
   * ADS1115_RANGE_0256  ->  +/- 256 mV
   */
  adc.setVoltageRange_mV(ADS1115_RANGE_0256); 

  /* Set the inputs to be compared
   *  
   *  ADS1115_COMP_0_1    ->  compares 0 with 1 (default)
   *  ADS1115_COMP_0_3    ->  compares 0 with 3
   *  ADS1115_COMP_1_3    ->  compares 1 with 3
   *  ADS1115_COMP_2_3    ->  compares 2 with 3
   *  ADS1115_COMP_0_GND  ->  compares 0 with GND
   *  ADS1115_COMP_1_GND  ->  compares 1 with GND
   *  ADS1115_COMP_2_GND  ->  compares 2 with GND
   *  ADS1115_COMP_3_GND  ->  compares 3 with GND
   */
  adc.setCompareChannels(ADS1115_COMP_0_1); 

  Serial.println("ACS712 - Nullstrommessung mit ADS1115");
  Serial.println();
}

void loop() {
  float voltage = 0.0;
  
//  for(int i=0; i<10; i++){
//    adc.startSingleMeasurement();
//    while(adc.isBusy()){}
//    voltage += adc.getResult_mV();
//  }
  adc.startSingleMeasurement();
  voltage += adc.getResult_mV();
  //voltage /= 10;
  voltage -= zeroCurrentVoltage_mV;
  float current = voltage/0.1;
  Serial.print("ADC712-Spannung [mV]: "); // Voltage
  Serial.print(voltage);
  Serial.print("  /  Strom [mA]: ");  // Current
  Serial.println(current);
  delay(500);
}


Krijg ik dit als output:
15:46:51.126 -> ADC712-Spannung [mV]: -18.23 / Strom [mA]: -182.27
15:46:51.643 -> ADC712-Spannung [mV]: -17.99 / Strom [mA]: -179.92
15:46:52.159 -> ADC712-Spannung [mV]: -17.71 / Strom [mA]: -177.11
15:46:52.626 -> ADC712-Spannung [mV]: -17.56 / Strom [mA]: -175.63
15:46:53.159 -> ADC712-Spannung [mV]: -18.10 / Strom [mA]: -181.02
15:46:53.643 -> ADC712-Spannung [mV]: -18.34 / Strom [mA]: -183.44
15:46:54.157 -> ADC712-Spannung [mV]: -18.78 / Strom [mA]: -187.81
15:46:54.642 -> ADC712-Spannung [mV]: -18.76 / Strom [mA]: -187.58
15:46:55.160 -> ADC712-Spannung [mV]: -18.84 / Strom [mA]: -188.36
15:46:55.643 -> ADC712-Spannung [mV]: -18.38 / Strom [mA]: -183.83
15:46:56.143 -> ADC712-Spannung [mV]: -18.14 / Strom [mA]: -181.41
15:46:56.660 -> ADC712-Spannung [mV]: -17.83 / Strom [mA]: -178.28
15:46:57.159 -> ADC712-Spannung [mV]: -17.97 / Strom [mA]: -179.69
Je raad het al. Er veranderd niets als ik er load op zet (een telefoonlader van 60W in dit geval).
Pagina: 1 ... 5 ... 18 Laatste