Buongiorno a tutti, volevo chiedervi gentilmente come Arduino possa rilevare un segnale analogico.
Nello specifico ho bisogno che quando un segnale ad onda quadra è presente in uno degli ingressi analogici di Ardino, mi attivi un led in uscita. Più che altro, non riesco ad entrare nella logica di come Arduino ragiona quando rileva un segnale alternato. Sapreste aiutarmi?
Puoi usare pulseIn() pulseIn() - Arduino Reference
oppure un interrupt attachInterrupt() - Arduino Reference
Con pulseIn() puoi sapere la durata dell'impulso
Con interrupt puoi "sentire" il fronte di discesa, salita o il semplice cambio
Se ci dici cosa intendi per "segnale a onda quadra" potremmo essere più precisi.
Le soluzioni suggerite da nid69ita presuppongono un'onda quadra che varia da 0 a NON PIÙ di 5V (per un Arduino a 5V) o a NON PIÙ di 3,3V (per un Arduino a 3,3V) e con una frequenza nel campo dell'audio, o appena superiore.
Se i valori non sono questi, dicci quali sono e vedremo altre soluzioni.
Ciao,
P.
grazie intanto per i consigli
ho bisogno di generare un segnale ad onda quadra di circa 5 V ( forse anche meno). Per quanto riguarda la frequenza, a dire il vero devo fare delle prove, per l'applicazione che vorrei fare, si tratta di far "viaggiare" questo segnale in liquidi conduttivi. Sinceramente non so se questo tipo di frequenza soddisferebbe la mia esigenza. Ma comunque, se riesco a far leggere questo segnale ad Arduino, magari usando un integrato 741 con duty cycle regolabile, è già un gran passo avanti!
Vediamo se ho capito:
- Il segnale è un'onda quadra
- Deve essere generato da un 741 con duty cycle regolabile
- Deve poter essere letto da un Arduino
E fin qui ci siamo.
Quasi, perché dovresti specificare cosa intendi per 'letto': ampiezza? frequenza? fase? duty cycle? O semplicemente c'è, non c'è?
Poi dovresti specificare cosa intendi per 'far "viaggiare"'
- Il liquido è conduttivo, quindi il segnale viene trasmesso come se ci fosse un filo
- Il liquido è conduttivo, ma proprio per questo il segnale deve essere trasmesso sotto altra forma (vibrazione?). In questo caso occorrono trasduttori. Di che tipo?
Che fatica!
Ciao,
P.
Quasi, perché dovresti specificare cosa intendi per 'letto': ampiezza? frequenza? fase? duty cycle? O semplicemente c'è, non c'è?
Sono molto più "grezzo" in questi termini , semplicemente c'è , non c'è
Poi dovresti specificare cosa intendi per 'far "viaggiare"'
- Il liquido è conduttivo, quindi il segnale viene trasmesso come se ci fosse un filo
- Il liquido è conduttivo, ma proprio per questo il segnale deve essere trasmesso sotto altra forma (vibrazione?). In questo caso occorrono trasduttori. Di che tipo?
io vorrei innanzitutto "provare" a trasmettere il segnale come se ci fosse un filo, se poi questo non funzionasse dovrei pensare a utilizzarlo sotto un altra forma e quindi di avvalermi di trasduttore.
Hai ragione non pensavo si dovesse pensare a tutte queste cose
christian3280:
semplicemente c'è , non c'è
Sicuramente non è qualcosa che puoi attaccare direttamente al pin di ingresso di Arduino. Il segnale viaggerà in modo bipolare (spero!!!) per evitare elettrolisi, avrà una certa ampiezza e una certa frequenza. L'ampiezza e polarità andranno amplificate e traslate nel range leggibile, ma a quel punto tanto vale raddrizzare l'alternata ottenendo una più semplice tensione... che c'è o non c'è
Se invece consideriamo già risolti i punti precedenti ed entriamo in Arduino con un bel segnale digitale 0..5V a frequenza F (ancora a noi sconosciuta : ), conoscendo la frequenza si può pensare ad una strategia software di riconoscimento, e il suggerimento degli interrupt potrebbe (forse) essere utile, dipende dalla frequenza... a noi sempre sconosciuta.
perdonami Claudio, ma è giusto un "esperimento" che voglio fare dal momento che sono ignorante in Arduino, fino ad ora ho fatto progetti semplici visti su internet, adesso volevo fare qualcosa di più "utile" diciamo.
Quindi, collegandomi a quello che mi hai appena detto, cosa mi consiglieresti di fare? Dei diodi all'ingresso dell input di Arduino? ( Questa volta usando un DI?)
Se non sappiamo cosa e come viene iniettato.
Se non sappiamo cosa arriva (come valori elettrici) dall'altro lato.
Per andare alla cieca io tratterei il tutto come un segnale audio, da amplificare, squadrare, e limitare ai valori accettabili dagli ingressi di Arduino.
E visto che la frequenza sembra essere un segreto per la sicurezza nazionale, allora tra lo squadratore e il limitatore aggiungerei anche un raddrizzatore.
Poi il tutto potrebbero essere in pratica un paio di porte logiche CMOS triggerate o un paio di transistor.
Qui c'è qualcosa del genere (https://www.electroyou.it/forum/viewtopic.php?f=51&t=81634&start=20) che riguarda appunto la ricezione senza contatti di un'onda quadra trasmessa dall'acqua.
Claudio_FF:
E visto che la frequenza sembra essere un segreto per la sicurezza nazionale, allora tra lo squadratore e il limitatore aggiungerei anche un raddrizzatore.
Il punto è proprio questo: non ho idea di quale tipo di frequenza è la più adatta per questo tipo di applicazioni.
Ho dato un occhiata veloce a quel link che hai messo prima: è un bel lavoro, ma lui ha usato porte logiche e galleggianti con contatti puliti (spero di aver capito bene,sennò scusami ancora).
Ho fatto in passato circuiti con integrati simili, usando il 4001 ad esempio. Dal momento voglio capire di più su Arduino, volevo provare se è possibile fare lo stesso circuito, con più sensori in acqua e con un solo emettitore. Proverò a realizzare il circuito (quantomeno la parte hardware :D) e vi aggiornerò.
Grazie per i suggerimenti.
Io invece inizierei con lo SCOPO del tutto, tanto per vedere se possiamo suggerirti anche cose diverse o migliori ... per la serie, devi semplicemente rilevare la presenza di liquido (acqua ? ) fra i contatti, oppure misurare la conduttivita' del liquido, o cosa altro ? ...
Ti conviene farlo con un transistor o un operazionale o, come dicevi, con un 4001. Poi mandi ad Arduino dei segnali logici che esprimono solo sì o no e li trasmetti come vuoi.
Etemenanki:
Io invece inizierei con lo SCOPO del tutto, tanto per vedere se possiamo suggerirti anche cose diverse o migliori ... per la serie, devi semplicemente rilevare la presenza di liquido (acqua ? ) fra i contatti, oppure misurare la conduttivita' del liquido, o cosa altro ? ...
Buongiorno, esattamente come hai detto tu, devo rilevare le presenza di liquido, so che ci sono tanti modi per rilevarlo, però io vorrei rilevare il liquido con il sistema che poco prima abbiamo citato poichè vorrei sostituirlo in alcuni circuiti fatti in precedenza ... se poi ciò risultasse troppo complicato o poco adatto, sono più che felice di leggere i vostri suggerimenti.
Datman:
Ti conviene farlo con un transistor o un operazionale o, come dicevi, con un 4001. Poi mandi ad Arduino dei segnali logici che esprimono solo sì o no e li trasmetti come vuoi.
Ciao Gianluca, non risulterebbe troppo "sprecato" Arduino per questo utilizzo? Come sai, ci sono una miriade di controlli di livello con porte logiche e operazionali che fanno questo lavoro. Vorrei capire come posso far "sentire" ad Arduino la presenza di un segnale ad onda quadra (5v) realizzato un duty cycle per esempio.
Mah, se lo scpo e' solo quello, credo che il sistema piu semplice sia usare un pin PWM come uscita collegato ad un'elettrodo, e leggere l'altro con un pin analogico in ingresso (meglio se attraverso un diodo tipo 1N4148 e con un piccolo condensatorino, tipo 1uF verso massa, con in parallelo anche una R da 100K o simile) ... cosi se c'e' tensione e' presente liquido, se non c'e' (o e' sotto un minimo) non e' presente ...
Etemenanki:
Mah, se lo scpo e' solo quello, credo che il sistema piu semplice sia usare un pin PWM come uscita collegato ad un'elettrodo, e leggere l'altro con un pin analogico in ingresso (meglio se attraverso un diodo tipo 1N4148 e con un piccolo condensatorino, tipo 1uF verso massa, con in parallelo anche una R da 100K o simile) ... cosi se c'e' tensione e' presente liquido, se non c'e' (o e' sotto un minimo) non e' presente ...
Buongiorno Etemenanki, Arduino è in grado di fare entrambe contemporaneamente?
Chiedo scusa, ma la tensione continua non viaggia nell'acqua?
Non capisco l'insistenza ad usare un segnale a onda quadra con frequenza ancora sconosciuta, solo per rilevare se c'e' o non c'e', e quindi senza una successiva analisi per identificare che il segnale sia proprio quello che si e' trasmesso e non altri segnali provenienti da altre fonti, magari dallo spazio....
Fa elettrolisi. Anche il segnale a onda quadra, per evitarla, deve essere privo di componente continua, quindi se è 0-5V deve passare attraverso un condensatore.
E come evitano l'elettrolisi tutti i vari circuiti che esistono da sempre?
Cosa comporta l'elettrolisi?
pascal69:
E come evitano l'elettrolisi tutti i vari circuiti che esistono da sempre?
Cosa comporta l'elettrolisi?
Di solito usando una sinusoide "pura", senza componente DC, e rilevando la trasmissione fra i due elettrodi (che e' il sistema piu semplice), oppure meglio ancora non mettendo gli elettrodi in contatto con il liquido (rilevazione capacitiva), che puo essere di due diversi tipi, trasmissione della frequenza fra elettrodi isolati a livello capacitivo (usata di solito per rilevare presenza/assenza), oppure elettrodi che formano un "condensatore variabile" posto in un'oscillatore (sistema piu adatto a leggere il livello che la semplice presenza), e poi conversione della frequenza in tensione (o lettura diretta della frequenza) per rilevare il livello ...
L'elettrolisi, a parte la corrosione degli elettrodi, comporta la formazione di strati di ossidi (o solfati o carbonati o altro, dipende dalle sostanze contenute nel liquido) intorno agli elettrodi stessi, il che ne cambia le caratteristiche e oltre a "mangiarseli" puo alterare e/o falsare il funzionamento del tutto ...
Etemenanki:
(...) elettrodi che formano un "condensatore variabile" posto in un oscillatore (sistema più adatto a leggere il livello che la semplice presenza) e poi conversione della frequenza in tensione (o lettura diretta della frequenza) per rilevare il livello...
Mi ricorda il serbatoio del Boeing 747...