Fattibilità controllo pompe 24v

Salve a tutti ho la necessità di controllare due pompe a 24v dc nel seguente modo ho 4 galleggianti e 2 pompe che non devono mai andare insieme la pompa 1 deve andare se l'ingresso 1 on ingresso 2 off mentre la seconda deve andare se ingresso 3 ingresso 4 off ma questa seconda non deve andare finche la pompa 2 non si ferma. Secondo voi è fattibile farlo con arduino? Grazie

Non sono molto chiare le condizioni di attivazione delle pompe comunque la risposta è si con Arduino puoi comandare le due pompe inserendo la logica che non preveda l'attivazione delle due pompe in contemporanea

Se non sbaglio hai descritto (con un paio di imprecisioni) questo:

87656534653

Non serve logica programmabile. Però se invece vuoi usare un Arduino, allora si, bastano le due espressioni logiche che calcolano p1 e p2.

Esattamente questo c'è qualche esempio di programmazione che posso prendere come esempio per poi adattarmelo?

p1 = i1 && !i2;

ecc.

i1=digitalRead(pingalleg1) ;
i2=digitalRead(pingalleg2) ;
i3=digitalRead(pingalleg3) ;
i4=digitalRead(pinGalleg4) ;
//ogni ix sarà 0 o 1
p1 = i1 && !i2;
p2 = (i3 && !i4) && !p1;
digitalWrite(pinPompa1, p1) ;
digitalWrite(pinPompa2, p2) ;

In elettronica e informatica la precisione è importante, altrimenti non si ottiene il risultato voluto! Bisogna fare attenzione a scrivere chiaramente, rileggendo criticamente quanto si è scritto.

"Ho 4 galleggianti e 2 pompe che non devono mai andare insieme.

  • La pompa 1 deve andare se l'ingresso 1 è on e l'ingresso 2 off.
  • La pompa 2 deve andare se sia ingresso 3 che ingresso 4 sono off.
  • La pompa 2 non deve andare finche la pompa 2 non si ferma."

Forse la pompa 2 non deve andare finché gira la pompa 1?...

if (in1 && !in2) {pompa1 ON} // ! significa negazione.
if (!in3 && !in4 && pompa1_OFF)  {pompa2 ON}
i1=digitalRead(PINGALL1);
i2=digitalRead(PINGALL2);
i3=digitalRead(PINGALL3);
i4=digitalRead(PINGALL4);

p1= i1 && !i2;  // ! significa negazione.
p2=!i3 && !i4 && !p1;
digitalWrite(PINPOMPA1, p1);
digitalWrite(PINPOMPA2, p2);

Be pure questo non mi pare chiaro né corretta come analisi. Se stiamo calcolando quando azionare pompa due non può dire finché la pompa 2 non si ferma. Forse voleva dire finché pompa 1 non si ferma.
Inoltre "non si ferma" intende semplicemente che non è attiva o deve aver fatto un passaggio off-on-off?
Poco chiara analisi richieste

Naturalmente, conoscere l'applicazione esatta sarebbe di grande aiuto.

Non sappiamo quali siano i suoi collegamenti, se galleggiante on significa 1 o 0, e se pompa accesa sia 1 o 0.

Modificherei con le solite costanti da valorizzare una sola volta all'inizio del programma in base ai collegamenti:

i1 = digitalRead(pingalleg1)==IN_LEVEL_ON ;
...
digitalWrite(pinPompa2, p2 ? OUT_LEVEL_ON : OUT_LEVEL_OFF) ;

Esatto

Adesso faccio delle prove ma praticamente la pompa 2 non dave mai accendersi finché la pompa 1 è in funzione.

mi è venuto un dubbio i galleganti lavorano a 24V DC metre arduino legge i segnali in input solo a 5V come posso fare per trasformare il segnale (high e low) da 24V a 5V in modo che sia letto da arduino? i gallegganti sono seplici interruttori aperti o chiusi.

Se "sono seplici interruttori aperti o chiusi" perché non li fai lavorare a 5V? ... comunque, se lavori a 24V, basta un semplice partitore resistivo sull'ingresso di Arduino.

Guglielmo

1 Like

Perché il resto dell'impianto è a 24v e vorrei tenere i 5 v solo per i comandi di arduno. Potrebbe andare bene come quello dell'immagine allegata? E il pin signal lo collego in un pin digitale non i quelli analogici corretto?

Rammenta sempre che, per gli AVR (es. ATmega328P), come da datasheet:

VIL : Input Low Voltage, except XTAL1 and RESET pin : Min. -0.5V, Max. 0.2xVCC (alimentato fino a 2.4V) ; Min. -0.5V, Max. 0.3xVCC (alimentato fino a 5V).

VIH : Input High Voltage, except XTAL1 and RESET pins : (alimentato fino a 2.4V) Min. 0.7 x VCC, Max. VCC + 0.5; (alimentato fino a 5V) Min. 0.6 x VCC, Max. VCC + 0.5

Dato che Arduino è alimentato a 5V, se applichi le formule hai:

VIL (ovvero LOW) : Min. -0.5 V, Max. 0.3 x 5 = 1.5V
VIH (ovvero HIGH) : Min. 0.6 x 5 = 3V, Max 5 + 0.5 = 5.5V

... quindi, il partitore deve dare in uscita meno di 1.5V per poter leggere LOW e deve dare più di 3V (con il limite di 5V) per poter leggere HIGH, quindi, date le resistenze, fai tu i calcoli se quello va bene.

Guglielmo

Se no, ci metti un paio di PC817 con 4k7 in serie al LED, emettitore a massa e collettore all'ingresso con pull-up.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.