Problema risolvibile con l'SW o con l'HW? Oppure pluviometro difettoso?

Salve gente!
Siccome da quasi un anno che testo il pluvio con Arduino della LaCrosse WS2300-16, da poco ha cominciato a fare un problemino. Mi spiego: praticamente a volte non rileva l’interrupt che è nel codice. Ovvero quindi non mi segna qualche volta la pioggia, faccio scattare la bascula ed è come se non è successo niente. Siccome io ho cercato allora di ottimizzare l’interrupt al meglio e renderlo pulito, allora mi sono detto che non può essere qualcosa di SW, poi ditemi che ne pensate, intanto pubblico la parte relativa a esso nello sketch:

Queste le dichiarazioni di guerra :slight_smile:

const int pinLed_blink = 6; // led verde che lampeggia
const int pinLed_inter = 7;
const float mmGoccia = 0.518;
const int pinInterrupt = 3;
unsigned int gocce = 0; // variabile conteggio numero basculate
float mmPioggia = 0.0; // conteggio millimetri di pioggia
boolean statoLed = false;
unsigned long time;
volatile unsigned long time1;
unsigned long PluvioStep = 0;
unsigned long PluvioOldStep = 0;
const long OF = 4294940295;
volatile int PluvioFlag = 0;
//int PluvioScanTime = 500;
float mmPioggiamese = 0.0;
float mmPioggiaanno = 0.0;
float rainrate = 0;

Questo nel setup:

attachInterrupt(1, ContaGocce, FALLING);

Questa la funzione ISR

void ContaGocce()
{
  // noInterrupts();
  // if ((time - PluvioStep) >= PluvioScanTime) { //con questo PluvioContatore evitiamo che uno scatto venga Conteggiato per due volte
  //if (PluvioVal==LOW) {
  PluvioFlag = 1;
  //}
  //}

  time1 = millis();

  //}
  //interrupts();
}

Questa la funzione del rain rate (ma in realtà non ce ne frega niente, però la metto lo stesso :slight_smile: )

void PluvioDataEngine() {
  if (((PluvioStep - PluvioOldStep) != 0) && (gocce >= 2)) {
    if ((time - PluvioStep) > (PluvioStep - PluvioOldStep)) {
      rainrate = 3600 / (((time - PluvioStep) / 1000)) * mmGoccia;
      if (rainrate < 1) {
        gocce = 0;
        rainrate = 0;
      }
    } else {
      rainrate = 3600 / (((PluvioStep - PluvioOldStep) / 1000)) * mmGoccia;
    }
  } else {
    rainrate = 0.0;
  }
}

Infine il famoso loop

  time = millis();
  if (millis() >= OF) //per evitare problemi di rain rate quando millis andrà in overflow, gli facciamo prendere una pausa alla funzione PluvioDataEngine()
  {
    gocce = 0;
  }
  if (PluvioFlag == 1) {
    PluvioFlag = 0;
    PluvioOldStep = PluvioStep;
    PluvioStep = time1;
    gocce++; // incrementa numero basculate
    mmPioggia = mmPioggia + mmGoccia; // sommatoria millimetri pioggia
    mmPioggiamese = mmPioggiamese + mmGoccia;
    mmPioggiaanno = mmPioggiaanno + mmGoccia;
    EEPROM.put (eeAddress29, mmPioggia);
    EEPROM.put (eeAddress30, mmPioggiamese);
    EEPROM.put (eeAddress31, mmPioggiaanno);
    statoLed = !statoLed;
    digitalWrite(pinLed_inter, statoLed ? HIGH : LOW);
  }
  PluvioDataEngine();

Sinceramente a me mi sa perfetto…

Così invece la parte HW

Io pensavo al massimo di abbassare la Rpullup, ma bho.
Secondo me infine penso sia un problema proprio di pluviometro, informandomi in giro ho visto che può avere problemi, al di fuori proprio di Arduino, l’ampolla reed: dicono sia scadente. Voi che dite?

Prova ad inserire la R6 direttamente sul pin 2 del WS2300-16.

cyberhs:
Prova ad inserire la R6 direttamente sul pin 2 del WS2300-16.

Così dici ?

Sì.

Forse ci sarà da aumentare ad un 1k la R5, ma puoi farlo dopo.

Mah ... quei pluviometri non hanno altro che un reed ed un magnetino all'interno ... a meno che non sia rotto il reed, ossidato/corroso il filo o scollato il magnete, non saprei cosa altro possa non funzionare ... hai provato con un tester se facendo oscillare il cassettino si apre e si chiude il contatto ?

Purtroppo non ho un tester adesso per provare… a me le saldature e il filo paiono apposto sinceramente… l’ampolla non so che dirti. Posso riprovare a rifare la saldatura, magari spellando meglio il filo e facendoci prendere più rame. Riguardo alla posizione delle resistenze si può fare, però il problema che siccome è una shield autocostruita, fare le modifiche non è così semplice. Purtroppo non ho la giusta attrezzatura nemmeno qui, se no si fa subito, è un po’ brutto da vedere dopo, però si fa.
Questo è il pcb comunque

P.S. Comunque voglio specificare che ci fa ogni tanto, non è una cosa che fa spesso.

Posso dire che quando avvicino il magnete si sente un click, quindi l’ampolla funziona. Secondo me oltre quelle modifiche HW consigliare da Cyber, si potrebbe riprovare a fare le saldature del filo che dite?

Pubblico anche una foto all’interno del pluvio

A me è venuta anche un'altra idea. Siccome adesso mi sa complicato come ho detto effettuare la modifica detta da Cyber che ringrazio, ho fatto caso che nel mio pcb io collego solo un filo del pluviometro, ovvero le due estremità, però sulla basetta del pluviometro, dove c'è pure il reed, vengono collegati il 3 e 4 insieme e l 1 e il 2 pure. A questo punto nel pcb posso collegare anche così, ovvero mettendo questi insieme così. Così facendo non miglioro il segnale?

Le saldature sulla schedina del pluviometro fanno schifo. Quella in basso del Reed sembra una saldatura fredda.
Ciao Uwe

uwefed:
Le saldature sulla schedina del pluviometro fanno schifo. Quella in basso del Reed sembra una saldatura fredda.
Ciao Uwe

E pensa che sono pure di frabbica! Le ripasso con un po' di stagno... e faccio anche quella modifica sulla mia scheda.

Siccome non ho la giusta attrezzatura qui a casa, mi è venuta così la saldatura:

Ovvero ho saldato anche quel pin che non ci è collegato niente, quindi va bene lo stesso.
Ho rifatto anche le saldature sul pluvio e niente il problema resta, delle volte si inceppa e non fa. Mi rimane solo la soluzione di Cyber, però adesso domani trovo un tester e vedo come si comporta l'ampolla, secondo me, è probabile che è quella il problema, se no io non credo che uno schema elettrico come quello che ho adottato possa causare simili problemi, bho.... anche perché per un anno non mi ha mai dato problemi.

Ho avuto un problema simile con un trasformatore che ho tenuto sotto alimentazione 10 mesi 24/24h che si è mezzo bruciato e faceva lavorare arduino con una tensione che variava da 3,7v a 4,2.
Ho sostituito il trasformatore ed ho risolto.
Controlla con il tester per escludere che sia il trasformatore.
Ciao
Enzo

Enzo--:
Ho avuto un problema simile con un trasformatore che ho tenuto sotto alimentazione 10 mesi 24/24h che si è mezzo bruciato e faceva lavorare arduino con una tensione che variava da 3,7v a 4,2.
Ho sostituito il trasformatore ed ho risolto.
Controlla con il tester per escludere che sia il trasformatore.
Ciao
Enzo

Beh io alimento arduino con un alimentatore da 7.5V, ma nel mio circuito non ci sono trasformatori se non quello che c'è nell'alimentatore a presa.

Ho appena avuto modo di controllare con il tester, risultato? Reed rotto, o comunque ci manca poco visto che Arduino qualche volta li prende gli impulsi. Chissà come ha fatto a rompersi dopo un anno... potrebbe essere qualcosa di sbagliato nel mio circuito? ma non credo sia così sbagliata da rompere un reed...

I Reed sono costituiti da due lamine metalliche che per effetto del campo magnetico si attraggono e chiudono il contatto elettrico. Dopo un anno di commutazioni è plausibile che il metallo delle lamine si deteriori. Ovviamente se ha piovuto molto durante questo anno tempo devi considerare quante commutazioni ha effettuato quel povero Reed.

Cosmosoft:
I Reed sono costituiti da due lamine metalliche che per effetto del campo magnetico si attraggono e chiudono il contatto elettrico. Dopo un anno di commutazioni è plausibile che il metallo delle lamine si deteriori. Ovviamente se ha piovuto molto durante questo anno tempo devi considerare quante commutazioni ha effettuato quel povero Reed.

Ancora non è installata fuori, comunque di commutazioni ne ha fatte in fase di test, ma non pensavo un reed durasse così poco... comunque non credo sia un problema del mio circuito, le modifiche di cyber sono cose accessorie. Potrei cambiare il reed, ma quanto ci spendo per un reed con le spese di spedizione? E' un reed di 14mm normalmente aperto.

Visto che devi comunque aprire il pluviometro per sostituire il reed, valuta la possibilità di sostituirlo con un sensore di Hall. Tali sensori sono sensibili ai campi magnetici della calamita , ma essendo un componente a stato solido, sono meno soggetti ad usura meccanica. Di sicuro dovrai trovare il modo di adattarlo ed alimentarlo correttamente, ma per un po ti dimenticherai del pluviometro e dei suoi problemi. Puoi provare a sostituirlo con un sensore di fine corsa per cilindri pneumatici, infatti all'interno dei cilindri di solito c'è un magnete che si muove solidale all'asse del cilindro e all'esterno un sensore magnetico rileva la posizione dell'asse. C'è ne sono di alcuni che sono già piatti e presentano dei fori per il fissaggio, quindi sono facili da adattare al tuo scopo. :slight_smile:

I reed, di per se, sono piuttosto robusti dal punto di vista degli azionamenti, se scelti di buona qualita' (alcune applicazioni che li usano, come ad esempio anemometri o rilevatori di velocita' di flusso, funzionano per parecchi anni senza alcun problema nonostante commutino 20 o 30 volte di piu che in un pluviometro) ... certo che se si usano reed "cinesata", senza contatti placcati bene o fatti con materiali scadenti, c'e' sempre il rischio che dopo qualche tempo, specie se alle intemperie, si scassino (gia il fatto che la schedina fosse senza alcuna lacca protettiva o resina in quelle foto mi aveva lasciato perplesso, se poi anche il lato del reed non e' protetto ... inoltre, quei fili "nudi" sui punti di saldatura, invitano l'acqua a penetrare per capillarita' in mezzo ai filettini del cavo, con conseguenti possibili corrosioni, non e' una cosa comunissima, ma succede)

Piuttosto direi, controlla quanta corrente scorre nel contatto (basta un tester in serie su milliampere) ... perche' una delle cose che puo rovinarli e' proprio l'eccessiva corrente commutata (non sopportano alte correnti, tranne quelli fatti apposta per quello scopo)

Comunque se e' il reed fai presto a ripararlo, ti basta prendere un'ampollina funzionante (non importa se nuova o di recupero), la saldi al posto di quella vecchia (controllando poi che scatti bene, per la posizione), e poi rivesti il tutto di plastivel, vernice, smalto per unghie o lacca protettiva, anche due o tre mani, inclusi i punti di saldatura del cavo (dopo averle rifatte) ...

Cosmosoft:
Visto che devi comunque aprire il pluviometro per sostituire il reed, valuta la possibilità di sostituirlo con un sensore di Hall. Tali sensori sono sensibili ai campi magnetici della calamita , ma essendo un componente a stato solido, sono meno soggetti ad usura meccanica. Di sicuro dovrai trovare il modo di adattarlo ed alimentarlo correttamente, ma per un po ti dimenticherai del pluviometro e dei suoi problemi. Puoi provare a sostituirlo con un sensore di fine corsa per cilindri pneumatici, infatti all'interno dei cilindri di solito c'è un magnete che si muove solidale all'asse del cilindro e all'esterno un sensore magnetico rileva la posizione dell'asse. C'è ne sono di alcuni che sono già piatti e presentano dei fori per il fissaggio, quindi sono facili da adattare al tuo scopo. :slight_smile:

Beh il difficile e proprio adattarlo! Oppure mi prendo una scatola di reed :smiley: Tu considera che normalmente, il problema io ho fatto test e non so quante volte l'ho fatto scattare, scatta tra le 2000/3000 volte all'anno il reed. Ci sono pluviometri che durano anni e anni, possibile il mio si sia già rotto?

@ Ete Credo che senza tester già si sappia che la corrente è poca... anche perché un ampolla di solito arriva a sopportare fino a 500mA o sbaglio? Se pensiamo che solo Arduino in totale può reggere 500mA...

Comunque me ne sapresti consigliare una di ampolla decente? A me sembrano tutte uguali.
Per lo smalto delle unghie, devo metterlo su tutta la scheda ? Adesso ordino un ampolla, avevo visto questa

reed

Se si rompe questa che sopporta 500mA devo farci apposta :slight_smile:

A proposito di reed ...

Processo di fabbricazione ... tanto per capire tutto il casino che sta dietro la produzione di quei "semplici" tubetti di vetro :stuck_out_tongue: :smiley:

As_Needed:
...

reed

Se si rompe questa che sopporta 500mA devo farci apposta :slight_smile:

dovrebbe andare bene, ma non credere che sopporti 500mA, quella e' probabilmente la massima corrente utilizzabile prima che si incollino i contatti ... comunque con resistenza di pull-up da 4K7 e simili, condensatore sul pin da 33 o 47 nF, e resistenza in serie verso il contatto (non collegare mai un condensatore al contatto in modo diretto) da 220 o 330 ohm, problemi non ne dovresti avere ...

Per lo smalto, abbonda dappertutto, dopo aver controllato che funzioni ... reed, terminali, saldature, estremita' dei fili, piu e' coperto meglio sara' protetto :wink: