Sterk flucturerende waarden analoge inputs

Hardware geleverd door Arduino
Berichten: 15
Geregistreerd: 29 Mrt 2018, 22:48

Sterk flucturerende waarden analoge inputs

Berichtdoor Mai Pensato » 29 Mrt 2018, 23:05

Hallo ik ben een beginner met Arduino. Ondanks dat ik me goed ingelezen heb loop ik nu toch tegen een probleem aan. Mijn hobbies zijn domotica en tuinieren.
Ik wil meetapparatuur die in de professionele tuinbouw gebruikt wordt via een Arduino gaan integreren op mijn domotica systeem zodat ik mijn tomaten en paprikaplanten automatisch kan gaan water geven. De meetapparatuur meet middels een sensor continu de vochtigheid, EC waarde (=maat voor de voedingstoestand) en temperatuur in potten of substraat waarin planten groeien. Dit apparaat heeft drie analoge uitgangen voor de genoemde meetwaarden: WC%, EC en Temp. De sensor meet continu (elke paar seconden) en geeft dan elkel 3 minuten een nieuwe waarde (zijnde het gemiddelde van alle metingen in de voorgaande drie minuten) op de analgoge uitgangen. Dit signaal is van 0 tot 5 Volt (instelbaar), waarbij bijvoorbeeld voor WC 0 Volt = 0% watergehalte en 5 Volt =100%. De apparatuur heeft zijn eigen voeding (adapter van 48 Volt). De analoge uitgangen hebben elk een + en een -(ground) aansluting. De ground van de analoge uitgangen is galvanisch gescheiden van de voeding.
Ik heb onlangs een Arduino mega gekocht. Het is me gelukt om de drie meetsignalen binnen te krijgen. En ik heb ook een sketch gemaakt waarbij de waarden (0-1023) omgerekend worden naar het juiste WC, EC en Temp en weergegeven op de seriele monitor met een delay van 10 seconden. So far so good...
Echter... de meetwaarden fluctureren enorm± voor temperatuut bijvooorbeeld zijn de variaties binnen 2 minuten (dus 12 metingen ) meer dan 2 graden Celsius. Dit kan gewoon niet kloppen. Ik weet dat de meter goed funcioneert en zet dus elke 3 minuten een nieuwe meting op de analoge uitgagen en die kan voor temperaruur hooguit een tiende varieren.
Hoe heb ik het aangesloten: arduino middels USB kabel op de PC. Korte kabeltjes van WG+ naar A0, EC+ naar A1, T+ naar A2. En de WG- EC- en T- zijn ook middels korte kabeltjes aangesloten op een GND van de arduino.
Ik heb vervolgens zitten zoeken wat het probleem is. Heb iets gelezen over da de voeding via USB mogelijk niet voldoende is. Dus een 12Volt adapter aangesloten maar dit lost het probleem niet op. Iets gelezen over mogelijke interferentie (weet niet of dit het juiste woord is) van de andere analoge ingangen. Dus die heb ik in de sketch allemaal gezet op: pinMode(A4, INPUT_PULLUP); en zo t/m A15. Helpt ook niet...

Dus ik kom er niet verder mee. Wie kan me hiermee verder helpen ?? Alvast bedankt !!

Advertisement

Gebruikers-avatar
Berichten: 1688
Geregistreerd: 06 Aug 2016, 01:03

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor Koepel » 30 Mrt 2018, 00:01

Hallo, en welkom op dit forum.
Dat is lastig om van een afstand te kijken wat het probleem is.

De impedantie van het circuit dat aan een analoge ingang verbonden is, kan het beste 10k of minder zijn.
Misschien pas bij een impedantie van 10M of 100M spelen de andere ingangen een rol.

Een analog ingang heeft standaard de 5V als referentie. Dus de Arduino meet de analoge ingang ten opzichte van de 5V. De interne analog referentie is beter: https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/.

Heb je een adapter van 7.5V ? Bij 12V wordt de voltage regulator warm.

Sommige meetapparaten geven veel ruis, maar laten zelf een gemiddelde waarde zien.
Voor een analoge ingang van een batterijspanning of een analog temperatuur gebruik ik altijd het gemiddelde van 5 tot 1000 metingen.
Daarnaast kun je nog software een filter toevoegen zodat de waarde wat langzamer op en neer gaat.
En wat dacht je van een RC filter, bijvoorbeeld met 4k7 en 100nF, dat is dan meteen een bescherming van de analog ingang.

Mijn grootste twijfels heb ik bij de ground draden.
Het beste is om afgeschermde kabels te gebruiken, en de GND bij de Arduino aan elkaar te knopen op één punt zo dicht mogelijk bij het Arduino board.
Wanneer de Arduino wat stroom levert, en je hebt een lage spanning met een lage interne analog referentie, dan kan het al uitmaken aan welke GND pin het ding hangt dat wat stroom vraagt.
Ik heb bij een Arduino Mega 2560 in een sketch een correctie van een paar milliVolt geprogrammeerd, omdat ik het net niet helemaal perfect heb gedaan.

Kun je een foto maken waarop de draden zijn te zien ?

Heb je een nauwkeurige en goede multimeter ? Dan kun je kijken of de juiste spanning uit de sensor komt, en of de juiste spanning op de analog ingang van de Arduino staat.
Begin eens met één sensor. Om een probleem op te lossen is het beter een test te doen met één ding en om al het andere even los te koppelen. Om een project te doen is een aantal kleine test-sketches heel normaal.

Berichten: 15
Geregistreerd: 29 Mrt 2018, 22:48

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor Mai Pensato » 30 Mrt 2018, 07:58

Bedankt voor je reactie!
Ik was begonnen met 1 analoge input, toen zag ik de fluctuaties ook al.
Maar ik zal het vsnavond terugzetten naar 1 input en ook een foto maken.
Zal ook een multimeter lenen, maar weet eigenlijk zeker dat het volt signaal op de output van de sensor correct en stabiel is.

Verder weet ik niet precies wat je bedoelt met de internal rrference dat die beter is?

Gebruikers-avatar
Berichten: 4816
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor nicoverduin » 30 Mrt 2018, 08:44

Nu maak je gebruik van de VCC referentie spanning van de chip. Dit is gewoon de voedingsspanning. Helaas die is nooit stabiel. Er is ook een Vref pin op de Arduino die een lagere spanning mag hebben (1.1v dacht ik). Die spanning kan je maken met een referentie chip en is een stuk nauwkeuriger. (zeg maar gewoon precies) ondanks de voedingspanning van de USB of regulator.
Een multimeter meet helaas gemiddeld slechts een stuk of 3-5 metingen per sec. en middelt deze. Fluctuaties ga je niet zien. Daar heb je een scope voor nodig.
Een RC filter kan, maar bedenk dat het 5 * R * C seconden duurt voordat de spanning op het juiste niveau is aan de ingang.
Dus in voorbeeld van Koepel : 5 * 4700 * 100 * 10^-9 = 0,00235 seconden = is 2.35 milliseconden. En ook nog eens een even zo grote ontlaad tijd. Dit komt boven op de sample tijd van de ADC (te verwaarlozen)
in de praktijk betekent dat, dat al gauw 5mSec duurt.
Als je bijv. 10 metingen per seconden neemt dan zou je een stabiele meting moeten krijgen.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 15
Geregistreerd: 29 Mrt 2018, 22:48

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor Mai Pensato » 30 Mrt 2018, 18:31

Arduino 02 30mrt18.jpg
Arduino 02 30mrt18.jpg (68.44 KiB) 445 keer bekeken
Arduino 01 30mrt18.jpg
Arduino 01 30mrt18.jpg (56.12 KiB) 445 keer bekeken


Beste Koepel en Nico Verduin: erg bedankt voor jullie input en tips.

Hierbij enkele foto's hoe ik het heb aangesloten.
De bovenste foto laat zien hoe het is aangesloten op het meetapparaat. uitgang 15 (grijze kabeltje) = WG+ Uitgang 14 (blauwe kabeltje) is WG-. Uitgangen 16 en 17 zijn de voeding van het meetapparaat (48 Volt adapter). Middels de 6 blauwe jumpers kan het uitgangssignaal op de analoge uitgangen (10 t/m 15) ingesteld worden. Dit staat op 0-5 Volt. Heb ik nogmaals gecheckt
De onderste foto laat aansluting op arduino zien. grijze kabeltje op A0 en blauwe kabeltje op GND.
De kabeltjes zijn ongeveer 18 cm lang.

Ik heb al ervaring met dit WG-meetapparaat. Eerder aangesloten gehad op een Fibaro z-wave RGBW controller. Hierop kun je ook analoge sensoren koppelen en integreren met mijn domotica systeem. Dat werkte perfect en stabiel. Alleen het nadeel hiervan is dat ik bijvoorbeeld het watergehalte alleen in hele procenten (integers) binnen kreeg. Voor mijn beoogde toepassing wil ik eigenlijk op tienden van procent afgerond.
Vandaar dat ik ook vrij zeker weet dat het niet verkeerd gaat"aan de sensor kant" dus op uitgang 15 staat een zeer stabiel volt-signaal dat elke drie minuten ververst wordt.

De vraag blijft dus waarom de arduino zulke grote schommelingen laat zien. De fluctuaties wijken meer dan 14% af (hoogste versus laagste waarde binnen enkele minuten).
Ik ben een redellijke leek op gebied van electronica (weerstanden, resistors, capacitors etc) en dus ook nieuw met Arduino dus de meeste van jullie tips begrijp ik nog niet zo goed....

Gebruikers-avatar
Berichten: 4816
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor nicoverduin » 30 Mrt 2018, 18:53

Dan moet je ofwel een echte logger eraan hangen of een oscilloscope. Zonder te meten van de analoge spanningen op realtime niveau is het een zinloze actie. Een DVM is een average sampler dus die middelt continue. En weet je nog niks.
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 15
Geregistreerd: 29 Mrt 2018, 22:48

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor Mai Pensato » 30 Mrt 2018, 19:36

Zoals ik al aangaf ik ben een leek op gebied van electronica. Ik heb geen logger en ook geen oscilloscope. Daarnaast zou ik ook echt niet weten wat een oscilloscoop doet. En de term DVM zegt me ook helemaal niets. Ik hoop dan maar dat iemand me in begrijpelijke taal kan helpen dit op te lossen. :) Alvast bedankt.

Gebruikers-avatar
Berichten: 1688
Geregistreerd: 06 Aug 2016, 01:03

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor Koepel » 30 Mrt 2018, 19:49

Wij hebben te weinig gegevens.
Misschien staat er hoogfrequent storing op het signaal, misschien laagfrequent, misschien een ground probleem, misschien is de 5V als referentie niet stabiel. Misschien zit het probleem in de sketch zelf.

Een DVM is een Engelstalige afkorting voor een Digital Volt Meter. Dus een multimeter zeg maar, om de spanningen te meten.

Stap 1:
Heb je een adapter die je op 7.5V kunt zetten voor het Arduino Mega 2560 board ? Of eventueel 9V ?
Stap 2:
Laat ons de sketch zien.
Stap 3:
We hebben veel meer gegevens nodig. Hoeveel is de afwijking in ruwe ADC waarde of in milliVolt op de ingang ?
Stap 4:
Probeer eens een RC filter op de ingang.
Stap 5:
Het gemiddelde nemen van een flink aantal metingen in de sketch.

Het gemiddelde nemen werkt heel goed als er een kleine en mooie evenwichtige ruis op het signaal staat. Maar dat is maar de vraag of dat zo is.

Gebruikers-avatar
Berichten: 4816
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor nicoverduin » 30 Mrt 2018, 19:52

Als je niet weet wat een apparaat doet is er altijd wel ergens een wiki. Maar nu komt het bij mij over als een meneer heeft een onverklaarbare bult op zijn been. Weet niets van anatomie af maar zoekt in jip en janneke taal een oplossing voor iets waarvoor hij niet eens de oorzaak weet. Dat gaat niet werken in mijn ogen. Maar goed succes zou ik zeggen
Docent HBO Software Engineering, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 15
Geregistreerd: 29 Mrt 2018, 22:48

Re: Sterk flucturerende waarden analoge inputs

Berichtdoor Mai Pensato » 30 Mrt 2018, 21:32

@Koepel

Stap 1: Ik heb een 9V adapter aangesloten op de Arduino

Stap 2: De sketch:

Code: Alles selecteren
 int wg = 0;
int ec = 0;
int temp = 0;
float wgpercent = 0.00;
// float ecms = 0.00;
// float tempgrc = 0.00;


void setup() {
  Serial.begin(9600);   
  pinMode(A1, INPUT_PULLUP);
  pinMode(A2, INPUT_PULLUP);
  pinMode(A3, INPUT_PULLUP);
  pinMode(A4, INPUT_PULLUP);
  pinMode(A5, INPUT_PULLUP);
  pinMode(A6, INPUT_PULLUP);
  pinMode(A7, INPUT_PULLUP);
  pinMode(A8, INPUT_PULLUP);
  pinMode(A9, INPUT_PULLUP);
  pinMode(A10, INPUT_PULLUP);
  pinMode(A11, INPUT_PULLUP);
  pinMode(A12, INPUT_PULLUP);
  pinMode(A13, INPUT_PULLUP);
  pinMode(A14, INPUT_PULLUP);
  pinMode(A15, INPUT_PULLUP);
}

void loop() {
  wg = analogRead(A0);
  wgpercent = (wg/1023.0)*100.0;
  // ec = analogRead(A1);
  // ecms = (ec/1023.0)*10.0;
  // temp = analogRead(A2);
  // tempgrc = (temp/1023.0)*50.0;
  Serial.print("WG =  ");
  Serial.print(wgpercent);
  Serial.print("    ruwe ADC =      ");
  Serial.println(wg);
  // Serial.print("   EC =  ");
  // Serial.print(ecms);
  // Serial.print("   Temp =  ");
  // Serial.println(tempgrc);
  delay(10000);
}


Stap 3: Ik neem aan dat je met ruwe ADC-waarde bedoelt de output van 0-1023 op de A0 ingang. Ik heb die gedurende 5 minuten gevolgd eerst met USB voeding aangesloten: min waarde 586 max waarde 684 Vervolgens 5 min met 9V adapter aangesloten min waarde 583 max waarde 678
Dus mijn conclusie is dat dit geen effect heeft op de mate van fluctuaties

Stap 4: RC filter op ingang.... dat moet ik dus eerst even op gaan zoeken hoe dat moet
Stap 5: Gemiddelde waarde berekenen.... dat moet ik ook eerst even gaan opzoeken hoe dat te programmeren in C+ taal

In ieder geval erg bedankt voor je tips zover !

@Nico Verduin : ik ben echt niet te beroerd om zaken op te zoeken. Zo heb ik bijvoorbeeld vele vele uren doorgebracht met uitzoeken hoe mijn domotica systeem op te zetten, zwave en 433mHz producten aan te sluiten en alles te integreren en scenes schrijven in LUA programmeertaal om leuke automatiseringen te maken in mijn huis en tuin. En ik help ook graag beginners op dat gebied op fora op weg. Mijn echte hobby is tuinieren en planten kweken. Daar mag ik mezelf wel specialist in noemen. Net zoals u ongetwijfeld specialist bent in electronica. En als ik een onverklaarbare bult op mijn been heb dan ga ik naar de dokter (specialist). Ik snap dat die mij dan eerst vragen gaat stellen om achter de oorzaak te komen maar ben blij als dan met een behandeling of medicatie mijn bult kan laten verdwijnen. En dan hoef ik echt niet alles van anatomie te weten. Ik heb respect voor specialisten, ieder zijn vak. Niemand kan een specialist zijn in alles.

Volgende

Terug naar Arduino hardware

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten