Automatizzare pistoni sponda camion

Buongiorno ho un progetto in mente scaturito da un necessità....il mio problema è che mio padre continua a dimenticarsi i pistoni stabilizzatori della sponda del camion a terra e già due volte li ha dovuti far saldare quindi ho pensato ad arduino!

A cosa servono i piedi:
i piedi stabilizzatori servono prevalentemente in quelle 4 o 5 occasioni di dislivello in cui il paraurti del camion ruotando in fase di apertura della sponda va a raschiare a terra rovinandosi.

Cosa succede:
nella maggior parte dei casi succede che tiro giù i pistoni scarico la consegna anche 30 o 40 minuti e chiudo la sponda spesso dimenticando i piedi giù...non è presente nessuna luce o buzzer che te li ricordi devi solo essere bravo tu....

soluzione elettronica.... per esempio ho pensato ad un fine corsa impostato come input ovviamente che se aperto (situazione piedi giù) mi accende una spia rossa.

Codice che ho trovato e adattato

#define LED 13                // LED collegato al pin digitale 13
#define BUTTON 7              // pin di input dove è collegato il pulsante
int  val = 0;                 // si userà val per conservare lo stato del pin di input

void setup() {
  pinMode(LED, OUTPUT);       // imposta il pin digitale come output
  pinMode(BUTTON, INPUT);     // imposta il pin digitale come input
}

void loop() {
  val = digitalRead(BUTTON);  // legge il valore dell'input e lo conserva

  // controlla che l'input sia HIGH (pulsante premuto)
  if (val == LOW) {
    digitalWrite(LED, HIGH);  //accende il led
  }
  else {
    digitalWrite(LED, LOW);   //spegne il led
  }
}

Ma questo non risolve completamente il mio problema può comunque succedere che avvenga la dimenticanza, quindi ho pensato di rilevare oltre al fine corsa un convertitore di tensione DC buck.

Dato che per attivare la sponda ci vuole una di quelle chiavi di sicurezza a incastro rosse avevo pensato di mettere lo step down subito dopo la chiave in modo da discrimare se la chiave è presente oppure no,se non è presente e i piedi sono giù ma non passa corrente nel buck quindi non ho 5 v di ritorno potrei dire ad arduino tramite comando di moduli relè di attivare la pompa e alzare i pistoni finchè il finecorsa va a zero cosa ne pensate? posso essere più elegante avete idee più innovative?

ciao, arduino lo vedo un pò sprecato, comunque quoto la soluzione del fine corsa, con led a cui puoi aggiungere un cicalino che si attiva dopo alcuni secondi dopo la chiusura della sponda e che si spegne solo a pistoni su, pensavo a questa sequenza:

*sponda su pistoni su cicalino spento
*sponda su pistoni giù cicalino acceso
*sponda giù pistoni giù cicalino spento
scarico
fine scarico
*sponda su pistoni giù cicalino acceso
*sponda su pistoni su cicalino spento
su questa sequenza fai lo sketch

ottimo grazie!
Arduino sprecato perchè effettivamente questa cosa la si può fare con hardware di più basso livello è però è anche vero che ho più controllo in caso di fallimento di qualche sensore....

invece cosa ne pensi su automatizzare il ritiro dei pistoni?
è sbagliato utilizzare il modulo buck step down come un input?

Ho visto moduli controllo relè optoisolati decisamente abordabili come prezzi per vostra esperienza sono affidabili?

comunque parto dal cicalino vista la mia poca esperienza andiamo per gradi :slight_smile:
Per ora grazie vi aggiorno sui miei sviluppi

Secondo me non é un aplicazione per Arduino perche troppo poco affidabile.
Ciao Uwe

gigaz:
ottimo grazie!
Arduino sprecato perchè effettivamente questa cosa la si può fare con hardware di più basso livello è però è anche vero che ho più controllo in caso di fallimento di qualche sensore....

invece cosa ne pensi su automatizzare il ritiro dei pistoni?
è sbagliato utilizzare il modulo buck step down come un input?

Ho visto moduli controllo relè optoisolati decisamente abordabili come prezzi per vostra esperienza sono affidabili?

comunque parto dal cicalino vista la mia poca esperienza andiamo per gradi :slight_smile:
Per ora grazie vi aggiorno sui miei sviluppi

se devi interfacciare arduino (+5vdc) con tensioni superiori devi usare dei fotoaccopiattori, per quanto riguarda la affidabilità di arduino non saprei dirti ma uwefed è molto competente

Secondo me non é un aplicazione per Arduino perche troppo poco affidabile.
Ciao Uwe

Perché no? Io penso che userà Arduino per sviluppare l'applicazione, dopo provvederà a realizzare una board standalone con tutto il necessario.

Se invece vuole usare Arduino direttamente sul camion va incontro a problemi di affidabilità principalmente legati ai contatti pin header.

Seconda cosa molto importante a cui prestare attenzione massima è la seguente:
Tentare di mettere in marcia il veicolo con i piedi a terra procura danni meccanici e raramente danni più gravi. Mentre i danni possono essere davvero gravi se con il veicolo in marcia si abbassano i piedi. Quindi l'applicazione è di tipo mission critical, il che equivale a dire che il circuito in nessun modo dovrà essere in grado di abbassare i piedi con il veicolo in marcia.

La frase "in nessun modo" si traduce in 99.9999% di certezza che ciò non possa avvenire qualunque cosa accada alla scheda di controllo.

Io da quello che mi ricordo nel vecchio cestello usato per la manutenzione luci stradale, con il veicolo in marcia i piedi idraulici non funzionano. Ora non so come hanno realizzato questa funzione ma posso immaginare che il microswitch del freno a mano disabiliti l'alimentazione delle elettrovalvole.

Ciao.

Io lascerei stare l'interazione diretta tra arduino e il sistema idraulico degli stabilizzatori, sia per problemi di sicurezza che per problemi di perdita di omologazione dell'impianto.

Piuttosto mi limiterei ad attivare una segnalazione ottica/acustica che ricordi di sollevare gli stabilizzatori terminata l'operazione di scarico. Soluzione semplice e per nulla invasiva che in caso di malfunzionamento non avrebbe conseguenze se non quella di sentire un cicalino che suona o vedere una spia accesa.

Attilio

quoto ultimo_53
come gli avevo consigliato

uwefed:
Secondo me non é un aplicazione per Arduino perche troppo poco affidabile.
Ciao Uwe

Ciao Uwe io non credo che Arduino sia poco affidabile un mio conoscente ha costruito i comandi per i motori della barca! :astonished: :astonished:

Io credo stia tutto nei test e da quanta testa si usa per fare le cose,ovvio non metterei su un sistema che funziona forse si forse no senza averlo stratestato e strastressato!

Seconda cosa molto importante a cui prestare attenzione massima è la seguente:
Tentare di mettere in marcia il veicolo con i piedi a terra procura danni meccanici e raramente danni più gravi. Mentre i danni possono essere davvero gravi se con il veicolo in marcia si abbassano i piedi. Quindi l'applicazione è di tipo mission critical, il che equivale a dire che il circuito in nessun modo dovrà essere in grado di abbassare i piedi con il veicolo in marcia.

La frase "in nessun modo" si traduce in 99.9999% di certezza che ciò non possa avvenire qualunque cosa accada alla scheda di controllo.

Qui ti do piena ragione ma a me non interessa comandare i pistoni in discesa mi interessa solo in salita, per come è fatto il circuito (purtroppo non ho uno schema con me) ho due attuatori separati uno per far salire uno per far scendere quindi è impossibile qualunque cosa capiti alla scheda fa scendere i pistoni, vi dirò di più c'è una chiave di sicurezza che viene manualmente innestata che toglie corrente all'impianto.
Per lo sviluppo successivo ho pensato di fargli tirare su i piedi non appena la sponda viene chiusa eliminando il sensore che rileva se c'è o meno corrente nell'impianto ma utilizzado i fine corsa a parte ciò vi faccio vedere cosa ho fatto fin'ora:

#define LED 13                // LED collegato al pin digitale 13
#define FCP 8                 // PIN di input dove collegato fine corsa piedi
#define FCS 7                 // PIN di input dove è collegato fine corsa sponda sponda
int  valfcp = 0;              // si userà valfcp per conservare lo stato del pin di input
int  valfcs = 0;              // si userà val per conservare lo stato del pin di input
int cicala = 9;             // CICALINO collegato al pin 12

void setup() {
  pinMode(LED, OUTPUT);       // imposta il pin digitale come output
  pinMode(cicala, OUTPUT);
  pinMode(FCP, INPUT);        // imposta il pin digitale come input 
  pinMode(FCS, INPUT);        // imposta il pin digitale come input
}

void loop() {
  valfcp = digitalRead(FCP);  // legge il valore dell'input e lo conserva
  valfcs = digitalRead(FCS); 
 
  // controlla se fine corsa sponda è aperto 
  if (valfcs == HIGH) {
  // controlla se fine corsa piedi è aperto 
        if(valfcp== LOW){
                           delay(500);
                           digitalWrite(13, HIGH);   // set the LED on
                           tone(cicala,2000);        // Suono "alto"
                           delay(1000);              // attendi un secondo
                           digitalWrite(13, LOW);    // set the LED off
                           tone(cicala,1300);
                           delay(1000);              // // attendi un secondo
                           noTone(cicala);           // Fermo il piezo, altrimenti il suono non si interrompe mai!
                        } 
  }
  else {
    digitalWrite(LED, LOW);   //spegne il led
  }
}

In pratica lavoro con due fine corsa fine corsa piedi e fine corsa sponda.

Se fine corsa sponda è chiuso quindi HIGH controlla il finecorsa piedi,
se fine corsa piedi LOW accendi luce e suona.

Che ne pensate?
a breve lo schema elettrico

Per lo sviluppo successivo ho pensato di fargli tirare su i piedi non appena la sponda viene chiusa

questo punto non lo consiglio potrebbe presentarsi la situazione (1/1000) di comandare la salita dei pistoni in modo manuale

Se fine corsa sponda è chiuso quindi HIGH controlla il finecorsa piedi,
se fine corsa piedi LOW accendi luce e suona.

più la soluzione è semplice più è affidabile

potrebbe essere utile avere un fine corsa per i pistoni su qualora un problema elettrico facesse scendere i pistoni

Per lo sviluppo successivo ho pensato di fargli tirare su i piedi non appena la sponda viene chiusa eliminando il sensore che rileva se c'è o meno corrente nell'impianto ma utilizzado i fine corsa a parte ciò vi faccio vedere cosa ho fatto fin'ora:

Cosa succede se il freno di stazionamento è rilasciato e si chiude la sponda?

Non conosco il mezzo di trasporto, quindi non so se la chiusura sponda è manuale o avviene tramite attuatori idraulici.

In sostanza se la sponda la posso pure chiudere io che passo di là pensando di fare una cosa buona, allora non va bene.

questo punto non lo consiglio potrebbe presentarsi la situazione (1/1000) di comandare la salita dei pistoni in modo manuale

Certo l'uno non deve escludere l'altro. Inoltre se proprio vuoi collegarlo alla sponda devi rilevare la transizione da sponda aperta verso sponda chiusa, cioè non basta che rilevare che il fine corsa sia chiuso.

Ciao.

Allora i piedi posteriori non centrano con la stabilità del mezzo ne con il freno di stazionamento servono solo nel momento in cui ci sono dislivelli tali da far toccare il paraurti per terra, ciò non deve avvenire perchè altrimenti si rovinerebbe o peggio ancora si piegherebbe quindi tramite una plancia pulsanti si fanno scendere questi piedi azionati idraulicamente, con un pulsante scendono con un altro salgono.

questo punto non lo consiglio potrebbe presentarsi la situazione (1/1000) di comandare la salita dei pistoni in modo manuale

ovvio il dispositivo sarà dotato di fungo disicurezza per essere escluso in qualunque caso

più la soluzione è semplice più è affidabile

potrebbe essere utile avere un fine corsa per i pistoni su qualora un problema elettrico facesse scendere i pistoni

non ho capito cosa intendi...io ho un fine corsa su sponda e un fine corsa sui pistoni!
Il problema elettrico non sussiste perchè non vado a toccare il circuito di discesa ma solo di risalita, in oltre se non inserisco la chiave di sicurezza tutto il sistema rimane scollegato dalla corrente elettrica non è quindi possibile che i pistoni scendano nemmeno se ci fosse un gremlins che mentre viaggi gioca con i bottoni della sponda.

Tornando a Maurotec cosa intendi per controllare lo "stato"?
intendi dire che dovrei usare un while anziche una condizione?

Tornando a Maurotec cosa intendi per controllare lo "stato"?
intendi dire che dovrei usare un while anziche una condizione?

Ho letto e riletto i mie interventi e non ho trovato dove ho scritto quella cosa, comunque non indica l'uso di un costrutto in favore di un altro.

Forse facevo riferimento implicito ad una macchina sequenziale a stati finiti.

Non ti lasciare impressionare dalle formule, puoi mettere in piedi una semplice SFM (State Finite Machine) con lo switch case, basato sul valore che assume la variabile currentState:

switch (currentState) {
    case 0: // Stato 0
    break;

    case 1:  // Stato 1 
    break;
}

Stato 1 e 0 dicono poco al programmatore, sarebbe meglio usare delle variabili costanti con un nome che identifica lo stato.

Per adesso scrivi il codice come meglio ti viene anche senza l'apparente complicazione degli stati ma sappi che l'applicazione richiede una SFM, quindi prima o poi.

Ciao.

Certo l'uno non deve escludere l'altro. Inoltre se proprio vuoi collegarlo alla sponda devi rilevare la transizione da sponda aperta verso sponda chiusa, cioè non basta che rilevare che il fine corsa sia chiuso

scusa ho letto transizione e o scritto stato comunque mi documento un po e pi vi aggiorno grazie dei consigli!

scusa ho letto transizione e o scritto stato comunque mi documento un po e pi vi aggiorno grazie dei consigli!

Ok, si comunque fa sempre parte della macchina a stati.

Si implementa tramite due variabili, currentValue e oldValue.
Tramite una if agisci solo quando le due variabili sono differenti.
Es.

boolean currentValue = false;
boolean oldValue = false;


void loop() {
    
    
    if (currentValue != oldValue) {
    
        // c'è stata una transizione di stato di verso ancora sconosciuto
        if (currentValue == HIGH) {
        
            // la transizione ha verso LOW -> HIGH
        
        } else {
        
            // la transizione ha verso HIGH -> LOW
        
        }
        oldValue = currentValue; 
    } else {
             
          currentValue = digitalRead(switchPin);
          
    }
    // nota che al prossimo loop non si entra più qui e se ci entra è perché nel frattempo
    // c'è stata una transizione
       
    }

}

Ovviamente dai un nome meno generico a oldValue e currentValue, puoi anche usare sinonimi
last, previous es, lastStateSwitchFoot, oldStateSwitchSponda etc.

Ciao.

[edit code]

Prima di tutto, considerate che l'impianto dei pistoni di stabilizzazione in genere deve essere omologato sul mezzo, e che modificarne il funzionamento annullerebbe l'omologazione (con il rischio di sequestro del veicolo e ritiro patente in caso di controlli)

Quello che invece NON annullerebbe l'omologazione, e' l'aggiunta di un sistema di sicurezza EXTRA, che NON modificasse il funzionamento dell'impianto.

A questo punto, la soluzione piu semplice e' due finecorsa (stagni, ovviamente) ed un rele automobilistico a doppio scambio.

Considerando che i pistoni siano solo due (se sono quattro, ovviamente servono quattro finecorsa), si installano in modo che scattino solo quando i pistoni sono completamente ritirati, collegati in parallelo, e ci si comanda il rele', che a sua volta commuta il contatto del positivo di avviamento proveniente dalla chiave fra il rele' di start (nc) ed un robusto cicalino a 12V (NA) ... e' un'impianto che ad un qualsiasi elettrauto potrebbe richiedere forse 10 minuti (a parte il disporre i cavi dai finecorsa al cofano, che essendo esterni vanno per forza fati passare in tubi appositi, ma quello puoi farlo tu prima) ... il funzionamento e' elementare, se anche uno solo dei pistoni non e' completamente ritirato, quando si cerca di mettere in moto, invece di partire suona il cicalino.

Se invece il motore deve rimanere in moto quando si usano i pistoni, il tutto sara' alimentato dalla chiave (non avrebbe senso in questo caso continuare a farlo suonare se il veicolo devi parcheggiarlo con i pistoni giu), ed il rele' semplicemente comandera' un cicalino ad intermittenza ed una luce rossa, entrambe in cabina, sul cruscotto, in modo che se uno sale per partire, non possa fare a meno di vedere e sentire gli avvisi, che ovviamente smettono solo quando tutti i pistoni sono completamente ritratti (questo potrebbe anche servire come segnale di malfunzionamento del sistema idraulico, se ti si accende il cicalino quando metti in moto oppure mentre sei in marcia, vuol dire che uno dei pistoni si e' mosso dalla posizione ritratta, e potrebbe essere a causa di una perdita o di un difetto)

Mi sembra che questa cosa sia già stata detta comunque ribadisco non mi interessa l'omologazione di due piedi che manco si vedono mi interessa che si comporti come voglio io.

E poi te lo vedi un poliziotto (con tutte le grane che hanno già), mettersi sdraiato sotto un camion a chiederti come mai c'è quel fine corsa e se gli fai vedere lo schema elettrico perchè secondo lui c'è qualcosa di strano???? :roll_eyes:

Se il problema fosse l'omologazione bisognerebbe arrestare tutti quelli che collegano arduino ad una lampadina perchè non dichiarato nello schema elettrico dell'impianto di casa che tra l'altro è diventato obbligatorio.

Ripeto se avessi voluto farlo con hardware di basso livello non avrei chiesto sul forum di arduino!
la mia esigenza non è solo risolvere un problema è anche imparare qual cosa di nuovo :wink:

Grazie comnuque dell'interesse.