Generare un impulso da tensione costante

Il 555 è un vecchio IC, duro a morire, che può fare tantissime cose, non ha nulla a che vedere con Arduino, fa tutto da solo, cerca con google NE555 monostabile.
In alternativa potresti usare un ATtiny, che costano pochissimo, per realizzare il relè temporizzato.

Ho trovato un pò di materiale su google, mi sa che l'NE555 fa al caso mio.. in effetti ne ho già qualcuno in casa quindi potrei provarlo da subito.

Devo solo capire come fare i collegamenti e che condensatore utilizzare per avere un corto di uno o due secondi. Mi pare di aver capito che devo basarmi sui valori di R e C, giusto?

Si, ci sono diversi calcolatori online che fanno vedere sia la configurazione circuitale che i valori da usare per ottenere la desiderata temporizzazione.

Hai per caso qualche link sotto mano?
Sto cercando su google, ma non riesco a trovare l'applicazione web che dici, ho trovato solo qualche forum e qualche documento.

Continuo a cercare comunque..

Non riesco a capire il circuito; si parla di trigger, ma io non ho alcun segnale per fare il trigger.

Quando aziono il pulsante a fungo, il circuito viene alimentato interamente (sia scheda madre che arduino) e poi non ho altri pulsanti da usare per attivare l'NE555.
Se il timer resta sempre alimentato tramite il pulsante a fungo, non mi genererà sempre un segnale di durata T per tutto il tempo che resta alimentato?

Io non capisco una cosa: tu devi cortocircuitare per un istante due fili dell'alimentatore ATX, poi parte tutto e non si ferma più nulla finche non li cortocircuiti nuovamente, lì comincia il processo di spegnimento della MB, se ha un S.O.; oppure il corto di spegnimento deve durare alcuni secondi.
Bene, usa il pulsante per dare un impulso al relé e risolvi no?

Si può usare anche un fotoaccoppiatore al posto del relè.
L'impulso non deve essere necessariamente di un secondo, basta anche un decimo quindi non occorre essere meticolosi nel calcolo dei componenti per il NE555

Io continuo a non capire che differenza ci sia tra il pilotare relé o opto o quello che volete con un 555 o direttamente col pulsante; addirittura non capisco perché questo benedetto pulsante (se è un pulsante e NON un interruttore!!) non possa essere applicato direttamente ai due pin predisposti sulla MB per accenderla con un semplice colpetto. C'è qualcosa che Marcus non ha detto a mio avviso, altrimenti a me qui sembra una discussione troppo scema.

Non funziona nache con un condensatore collegato ai 2 Piedini del Pulsante di avvvio?
Prova con 100µF.
Ciao Uwe

Cerco di spiegare meglio la situazione perchè secondo me si è fatta un pò di confusione a causa della mia scarsa chiarezza nell'esposizione del problema :slight_smile:

Dunque, io ho un sistema formato da una scheda madre, da due moduli Arduino e da varie altre periferiche che, insieme, formano il sistema di un robot mobile che ho realizzato.
Il tutto è alimentato da una batteria da 24V e, quindi, non dall'alimentatore del pc tramite l'alimentazione di rete.
Per alimentare la scheda madre uso un alimentatore apposito che prende la tensione direttamente dalla batteria.

L'intero sistema viene alimentato tramite l'azionamento di un interruttore che porta la tensione sia alla scheda madre che ai due Arduino che alle altre periferiche.
Mentre, però, Arduino si avvia con la sola tensione, la scheda madre ha bisogno di un corto circuito tra i pin pwr e gnd, anche della durata di qualche ms, per far partire il sistema operativo.

Dato che non voglio usare pulsanti o altre soluzioni che richiedono l'azione di un utente oltre a quella dell'azionamento dell'interruttore generale, vorrei trovare un espediente che mi permetta di avere un cortocircuito anche di pochi ms sui due pin ogni volta che io aziono l'interruttore per alimentare l'intero sistema: in questo modo, si avvierebbero sia i due Arduino che il sistema operativo.

Non capisco se l'NE555 può fare a caso mio dato che nella configurazione da monostabile vedo che ci vuole comunque un trigger per mezzo di un pulsante (e io non voglio usarlo!).

Avevo pensato ad un relè che apra e chiuda i contatti in uscita una volta alimentato, ma non ne ho trovati: quelli che ho io sono normalmente aperti o normalmente chiusi e all'applicazione di una tensione in ingresso commutano di stato e ci restano. Io non posso avere il cortocircuito per più di qualche secondo altrimenti la scheda madre si spegne.

uwefed:
Non funziona nache con un condensatore collegato ai 2 Piedini del Pulsante di avvvio?
Prova con 100µF.
Ciao Uwe

cosa intendi dire? :relaxed:

comunque con un 555 non serve un impulso di trigger
in questa configurazione, quando lo alimenti mette l'uscita sul pin 3 ( a cui collegare un rele' ) alta per circa 1 secondo.

ma visto che usi due arduini, perche' non piloti con uno di questi l'accensione della MB ?

555.png

Rimane da capire come fare per spegnerlo, visto che non puoi togliere l'alimentazione di netto, ma dovresti inviare un'altro impulso alla main board per dare la possibilità al OS di fare la chiusura.

Secondo me ti serve un unico pulsante per accendere e spegnere arduino e mainboard, ma questo prevede l'uso di un microcontroller che potrebbe essere un attiny come ti hanno suggerito.

Ciao.

@brunello: con l'NE555 in quella configurazione, mi basterebbe utilizzare un relay normalmente aperto e collegarlo all'uscita numero 3 per riuscire ad alimentarlo per 1,65 secondi?
Non mi resterà sempre alimentato, poi?

@Mauro: spegnerlo non è un grosso problema perchè utilizza una distro di linux minimale che ben tollera le chiusure improvvise.

E chi lo dice che chiudere Linux di brutto non danneggia questo sistema?
Casomai, può programmarlo in modo che se intercetta il segnale di pressione del pulsante di accensione (quello posto sul pannello frontale), possa lanciare un comando di arresto via software. Per far ciò basterebbe inserire un relé al posto di quel pulsante e comandarlo sempre da Arduino.

Qui parlo per esperienza diretta, anche con le distro minimali se non fai il regolare shutdown stai pur certo che la possibilità di trovarsi con grossi problemi, spesso irrecuperabili, al file system è molto alta.
Normalmente nei sistemi embedded Linux viene usato un GPIO per comandare lo spegnimento, lo gestisci tramite un demone e quando il pin cambia stato esegue lo shutdown.
Spegnere brutalmente il pc, indipendentemente dal sistema operativo, non è mai una buona idea se non vi si è costretti da cause di forza maggiore come un blocco totale del sistema.

PIù che altro, ragiono sul fatto che una normale procedura per lo spegnimento del sistema, prevede la chiamata ad una routine SW e, al termine di questa, tutti i componenti vengono comunque disalimentati all'improvviso (CPU, RAM, motherboard..) e quindi non dovrebbero subire danneggiamenti a seguito di una chiusura brusca.

Sinceramente, non ho mai avuto problemi di danneggiamento del file system su sistemi unix come, invece, mi è successo spesso su sistemi windows.
In effetti, comunque, è sempre un rischio e non è una situazione in cui vorrei incappare.

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.

@brunello: con l'NE555 in quella configurazione, mi basterebbe utilizzare un relay normalmente aperto e collegarlo all'uscita numero 3 per riuscire ad alimentarlo per 1,65 secondi?
Non mi resterà sempre alimentato, poi?

No, non rimane alimentato.
Il rele' rimane acceso per il solo tempo prefissato.

Ma perche', come ho detto prima, non piloti l'accensione e lo spegnimento della MB da arduino ?
E' la cosa piu' semplice

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.