Generare un impulso da tensione costante

Stai facendo confusione tra hardware e software, il primo non soffre se togli l'alimentazione in un qualunque momento, o meglio anche in questo caso ci sono procedure su come l'alimentazione deve essere avviata e interrotta, però sono gestite in modo trasparente dall'alimentatore della board.
Il software ha ben altre esigenze, p.e. tutte le operazioni di scrittura su disco devono essere terminate prima di spegnere il sistema, e questa è solo la punta del iceberg, se non esegui correttamente la procedura di spegnimento stai pur certo che la possibilità di fare danni è una certezza e non evento improbabile.

Dato che l'interruttore generale stacca l'alimentazione all'improvviso, non credo ci siano soluzioni per chiudere il sistema operativo nella maniera corretta e quindi sarò costretto, aihmè, a usare un pulsante, a meno di non trovare un espediente per avere una disalimentazione ritardata.

Usa Arduino per premere il pulsante di accensione, o un GPIO, per avviare la procedura di spegnimento del pc e solo dopo che questa è terminata togli l'alimentazione principale.
Esempio pratico, il pulsante principale di alimentazione comanda un relè, di idonea potenza, che fornisce tensione a tutta l'elettronica, il relè rimane in tenuta ed è controllato da Arduino, o una piccola MCU dedicata, quando decidi di spegnere premi il pulsante principale che stacca nulla, viene solo impartito l'ordine di spegnimento, Arduino fornisce questo comando al sistema Linux, puoi farlo anche da software tramite un apposito comando su seriale, e solo quando il pc è spento, puoi verificarlo tramite un GPIO o il led di power on, Arduino stacca il relè della alimentazione spegnendo realmente il tutto.
In pratica è la stessa cosa che succede quando premi il pulsante on/off del pc quando è acceso, prima viene stoppato il sistema operativo e solo dopo viene spento l'alimentatore.
Comunque nel discorso generale che fai c'è qualcosa che non quadra, tu parli di un pulsante a fungo per spegnere/accendere il robot, e fin qui tutto ok, poi te ne esci che ti serve un contatto temporizzato per accendere il pc, però questa cosa non ti serve perché lo fai direttamente dal pulsante a fungo, ne prendi uno a due vie, quando lo premi la prima volta chiudi il contatto di accensione del pc e lui si accende, quando lo premi la seconda volta richiudi il contatto e il pc si spegne da solo.

Non posso fare come dite perchè l'interruttore di emergenza è l'unico ad essere presente nel sistema.

Quando lo si aziona, fornisce alimentazione a tutto il sistema: arduino e scheda madre. Ovviamente, la MoBo non avvia il sistema operativo perchè ha bisogno del cortocircuito tra pwr e gnd.
Quando si disattiva il fungo, l'alimentazione viene tolta istantaneamente dal sistema e quindi non vi è tempo nè per far avviare procedura ad Arduino nè per cortocircuitare più a lungo i due pin della MoBo (gli stessi usati per avviare il SO) in modo da far spegnere il sistema operativo.

Il sistema dovrà gestire dei file?
Se la risposta è no, la possibile soluzione è far montare la o le partizioni di sistema in sola lettura. In questo modo i file non dovrebbero danneggiarsi da dati rimasti nel buffer in memoria. Non garantisco però per altre componenti.
Se invece deve gestire dei file tipo su SD, chiudi sempre i file dopo ogni lettura e... spera che il distacco dell'alimentazione non danneggi il sistema.

Non hai capito un piffero di quello che ti ho spiegato, di sicuro devi rivedere il tuo hardware perché come è congegnato non va bene.

leo72:
Se invece deve gestire dei file tipo su SD, chiudi sempre i file dopo ogni lettura e... spera che il distacco dell'alimentazione non danneggi il sistema.

Su SD il disastro non è una possibilità ad elevato rischio, è una certezza :slight_smile:

astrobeed:

[quote author=marcus barnet link=topic=147532.msg1109636#msg1109636 date=1360320842]
Non posso fare come dite perchè l'interruttore di emergenza è l'unico ad essere presente nel sistema.

Non hai capito un piffero di quello che ti ho spiegato, di sicuro devi rivedere il tuo hardware perché come è congegnato non va bene.
[/quote]
Ho capito bene quello che vuoi dire, ma non si può applicare perchè se Arduino crasha per un qualche motivo, non ho la possibilità di disattivare il relè e togliere di colpo la tensione come invece è richiesto dalle norme di sicurezza: verrebbe a mancare l'azione del pulsante a fungo.

Non sò di che macchina stai parlando, ma non credo che risponda alla direttiva macchine l'utilizzo del solo interruttore d'emergenza per la sua gestione.
Anche se a volte è consuetudine, l'utilizzo dell'interruttore d'emergenza dovrebbe avvenire solo in caso estremo(cioè l'emergenza).
Come ti ha scritto astrobeed dovresti rivedere l'hardware.

Mandi

Barbezuan

La disattivazione di sicurezza si fa tramite un comando dedicato e separato da quello principale.
Stai facendo un sacco di confusione e poi cosa c'entra il fatto che se un Arduino va in blocco non puoi spegnere la MB con l'arresto di sicurezza che deve essere operato in modo distinto, indipendente, da tutto il resto ?
In ambito industriale, dove la sicurezza è una cosa serie, gli arresti di emergenza sono quasi sempre banali sistemi elettromeccanici, se serve pure rindondanti, totalmente separati dal sistema principale, p.e. un relè ad autoritenuta che pilota il teleruttore principale, in caso di emergenza premi il relativo tastone che semplicemente interrompe per un attimo l'alimentazione della bobina sul relè che di conseguenza rilascia il contatto e disattiva il teleruttore togliendo alimentazione a tutto l'impianto.

Scusate, ma in un sistema alimentato a 24V 200Ah in continua non mi sembra che ci siano normative che obbligano tassativamente l'uso di un pulsante a fungo e di un interruttore generale separato.
Io ho cercato documentazione in merito, ma non ho trovato nulla a riguardo e quindi mi sembra plausibile utilizzare un pulsate a fungo (con chiave) per gestirne l'intera alimentazione.

O mi sto sbagliando?

Le norme di sicurezza non riguardano solo le caratteristiche elettriche, comunque prova a mettere in corto 24V con 200 Ah e vedrai che bel falò ottieni :smiley:
Dato che parli di un robot mobile l'arresto di emergenza dovrebbe riguardare almeno la parte motori, ovvero poter bloccare istantaneamente il moto del mezzo e in questo caso non è detto che sia "intelligente" spegnere il tutto, anzi conviene farlo tramite frenatura elettrica o meccanica a seconda di cosa è disponibile, solo come ultima alternativa si ricorre al distacco della alimentazione, e comunque non otterresti l'arresto immediato del robot visto che a seconda di velocità e massa può continuare a muoversi, e fare danni, per tot metri.

Arresto forzato:

Danni al filesystem si possono verificare solo con filesystem non journaled, es FAT, ext2, ecc. I file system jornaled sono ext3, ext4 e non me ne ricordo più, cerca su wikipedia.

L'arresto forzato di emergenza non prevede il mantenimento delle funzionalità, la macchina può anche subire danni ma l'importante che la macchina si arresti all'istante. Un pulsante a fungo preposto come arresto di emergenza deve svolgere solo le funzionalità di emergenza e deve isolare il carico dalla rete a qualunque tensione sia, nel tuo caso deve scollegare di netto la 24volts.

Un pulsante o interruttore di servizio deve essere previsto per le normali operazioni (non emergenza), in pratica il pulsante di emergenza scollega un polo del relè di auto ritenuta, ABB ecc vendono il tutto, rele, pulsante, magneto termico a sgancio rapido ecc.

Comunque se ti basta un solo impulso di circa 1ms puoi usare condensatori diodi ecc come da schema allegato.

V1 nello schema simula la connessione della 24V ritardata di 100ms per apprezzare meglio i segnali, poi la 24V perdura fino ad 1 secondo, ma nel tuo caso rimarrà fintanto che non premi il pulsante di arresto.

Non avevo letto l'intervento di astrobeed:
Rilegilo

La disattivazione di sicurezza si fa tramite un comando dedicato e separato da quello principale.
Stai facendo un sacco di confusione e poi cosa c'entra il fatto che se un Arduino va in blocco non puoi spegnere la MB con l'arresto di sicurezza che deve essere operato in modo distinto, indipendente, da tutto il resto ?
In ambito industriale, dove la sicurezza è una cosa serie, gli arresti di emergenza sono quasi sempre banali sistemi elettromeccanici, se serve pure rindondanti, totalmente separati dal sistema principale, p.e. un relè ad autoritenuta che pilota il teleruttore principale, in caso di emergenza premi il relativo tastone che semplicemente interrompe per un attimo l'alimentazione della bobina sul relè che di conseguenza rilascia il contatto e disattiva il teleruttore togliendo alimentazione a tutto l'impianto.