Close

Pagina 4 di 4 PrimaPrima ... 234
Risultati da 31 a 36 di 36
  1. #31
    Nutria L'avatar di dr.jekyll
    Data Registrazione
    Sep 2014
    Località
    Napoli
    Acquariofilo
    Marino
    Età
    30
    Messaggi
    435
    Nominato in
    6 Post(s)
    Citazione Originariamente Scritto da Niko Visualizza Messaggio
    Il collegamento dei galleggianti puó essere semplificato utilizzando la modalità pullup:

    https://www.arduino.cc/en/Tutorial/InputPullupSerial
    Appena ho tempo leggo con calma. Grazie per la dritta.
    Citazione Originariamente Scritto da billykid591 Visualizza Messaggio
    Scusa ma perche' usi gli ingressi analogici? Non hai dei normali galleggianti on/off?
    Con il segnale letto in digitale, ogni tanto, raggiunto il livello il galleggiante dava on/off in continuo. Ho deciso di provare con la lettura analogica ed ho risolto il problema.

    Inviato dal mio SM-G930F utilizzando Tapatalk

  2. #32
    Nutria mannara L'avatar di billykid591
    Data Registrazione
    Apr 2014
    Località
    Pozzuolo del Friuli (UD)
    Acquariofilo
    Marino/Dolce
    Età
    64
    Messaggi
    6,071
    Nominato in
    98 Post(s)
    Citazione Originariamente Scritto da dr.jekyll Visualizza Messaggio
    Appena ho tempo leggo con calma. Grazie per la dritta.Con il segnale letto in digitale, ogni tanto, raggiunto il livello il galleggiante dava on/off in continuo. Ho deciso di provare con la lettura analogica ed ho risolto il problema.

    Inviato dal mio SM-G930F utilizzando Tapatalk
    E' uno spreco di risorse usare ingressi analogici per testare un interuttore on/off oltre a darti possibili errori (che mi sembra ti sia accaduto) bastava inserire nel codice un ritardo nello spegnimento della pompa in modo che il livello dell'acqua si alzi un po di piu e porti il galleggiante in zona "sicurezza" e non in "bilancia" tra on e off.....comunque se ti funziona lo stesso meglio cosi'..... Un altra cosa la funzione delay() e' comoda ma attenti che di fatto blocca il programma fino a che non passa il tempo impostato (che deve essere il piu basso possibile) in programmi semplici tipo questo di un osmoregolatore puo' andare bene, in programmi che devono monitorare piu ingressi e pilotare piu uscite meglio usare altri metodi tipo millis() o se serve un Rtc esterno.

  3. #33
    Baby nutria
    Data Registrazione
    May 2014
    Località
    Augusta
    Acquariofilo
    Aspirante marino
    Messaggi
    92
    Nominato in
    2 Post(s)
    Potresti attivare la pompa solo se lo stato di basso livello permane ad esempio per piú di un minuto.
    Il codice potrebbe essere semplicemente:
    Codice:
    If (isLevelNormal()) lastLevelNormalTime=mills();
    pompaOn = mills() - lastLevelNormal>60000;
    Che tradotto, fin quando il livello è normale il temporizzatore viene sempre resettato. Quando il livello scende tale per cui il temporizzatore non viene resettato per piú di un minuto viene attivata la pompa.
    Al successivo reset la pompa si stacca e ricomincia il giro.
    Ultima modifica di Niko; 04-12-2017 alle 23:07

  4. #34
    Nutria L'avatar di dr.jekyll
    Data Registrazione
    Sep 2014
    Località
    Napoli
    Acquariofilo
    Marino
    Età
    30
    Messaggi
    435
    Nominato in
    6 Post(s)
    Citazione Originariamente Scritto da Niko Visualizza Messaggio
    Potresti attivare la pompa solo se lo stato di basso livello permane ad esempio per piú di un minuto.
    Il codice potrebbe essere semplicemente:
    Codice:
    If (isLevelNormal()) lastLevelNormalTime=mills();
    pompaOn = mills() - lastLevelNormal>60000;
    Che tradotto, fin quando il livello è normale il temporizzatore viene sempre resettato. Quando il livello scende tale per cui il temporizzatore non viene resettato per piú di un minuto viene attivata la pompa.
    Al successivo reset la pompa si stacca e ricomincia il giro.
    Grazie del consiglio, penso che aggiungerò un while dentro quello di accensione in maniera da verificare se l'interruttore da segnale positivo per più di un tempo x e comportarsi di conseguenza :)

    E magari porto tutto in digitale come diceva billy

    Codice:
    int led = 13;   //PIN
    int gnd = 8;
    int vvc = 9;
    int sw1 = 2;
    
    
    int sicura =0;   // Variabili programma
    int indice1 =0;
    long tempo_sicura = 15000;
    long conta = 0;
    long times = 0;
    
    
    
    
    void setup() {
    
      pinMode(gnd, OUTPUT);
      pinMode(vvc, OUTPUT);
      pinMode(sw1, INPUT);
      pinMode(led, OUTPUT);
    
      
      
    
    }
    
    void loop() {
    
      
    
        delay(100);
    
        while(analogRead(sw1) > 400 == HIGH && sicura ==0){
        digitalWrite(gnd, LOW);
        digitalWrite(vvc, LOW);
        delay(100);
       
        
        times = millis();
    
        if(indice1 == 0){
          conta = millis();
          indice1 = 1;
    
          
        } //If indice
    
        
        
        if((conta + tempo_sicura ) < (times)){
          sicura = 1;
        
        } //If sicura
    
      
        }//while acceso
    
    
        while(analogRead(sw1) < 400){
          digitalWrite(gnd, HIGH);
          digitalWrite(vvc, HIGH);
          delay(100);
          indice1 = 0;
          }
    
        while(sicura == 1){
          digitalWrite(gnd, HIGH);
          digitalWrite(vvc, HIGH);
          digitalWrite(led, HIGH);
          delay(1000);
          digitalWrite(led, LOW);
          delay(1000);
          
          }
    
    }
    Ultima modifica di dr.jekyll; 04-12-2017 alle 23:40

  5. #35
    Baby nutria
    Data Registrazione
    Sep 2016
    Località
    Busto Arsizio
    Acquariofilo
    Aspirante marino
    Messaggi
    73
    Nominato in
    1 Post(s)
    Io nel mio progetto ho utilizzato sensori ad ultrasuoni e per evitare l'on-off continuo, invece della variabile di tempo, ho aggiunto una sorta di tolleranza sulla misura, in pratica assunto X come il livello da mantenere e ∆ la tolleranza, il funzionamento sarà che quando il livello scende sotto a X-∆ si attiva il rabbocco il quale si ferma a X+∆...ovviamente ∆ va scelto piccolo ma non troppo

    Inviato dal mio VIE-L09 utilizzando Tapatalk

  6. #36
    Nutria L'avatar di dr.jekyll
    Data Registrazione
    Sep 2014
    Località
    Napoli
    Acquariofilo
    Marino
    Età
    30
    Messaggi
    435
    Nominato in
    6 Post(s)
    Citazione Originariamente Scritto da elchar82 Visualizza Messaggio
    Io nel mio progetto ho utilizzato sensori ad ultrasuoni e per evitare l'on-off continuo, invece della variabile di tempo, ho aggiunto una sorta di tolleranza sulla misura, in pratica assunto X come il livello da mantenere e ∆ la tolleranza, il funzionamento sarà che quando il livello scende sotto a X-∆ si attiva il rabbocco il quale si ferma a X+∆...ovviamente ∆ va scelto piccolo ma non troppo

    Inviato dal mio VIE-L09 utilizzando Tapatalk
    Interessante, misurando il delta potresti anche ricavarti il volume d'acqua evaporato giornalmente e con una media fare una stima della durata della tanica di rabocco. Io per ora mi sono fermato un po', posso dire di non aver cambiato nulla e per ora tutto funziona egregiamente tenendo il livello d'acqua perfettamente a livello durate tutto l'arco della giornata. Avendo un nano reef di meglio non potrei desiderare :)

    unica modifica sostanziale che farei è la sostituzione della pompa, ne metterei una dosometrica. Essendo molto sensibile anche al minimo sbalzo la vedo più adattata e resistente ai continui on/off

    Ora sto cominciando a giocare con le dosometriche, per somministrazioni varie ed eventuali, pensavo di pilotarle con una L293D Drive Motor Shield. Come la vedete?

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •