Pagina 1 di 2

Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mar 21 set 2021, 13:46
da fermat62
Un saluto a tutti,
ho necessità di dover misurare il numero di oscillazioni di un piano vibrante utilizzato in ambito fotografico per simulare il micromosso causato dai movimenti della mano quando si impugna una fotocamera..
Il sistema è composto da un piano oscillante mosso da un motore che accoppia un eccentrico, sul quale è fissato un piano di appoggio per la macchina fotografica. Quando si mette in funzione, la rotazione fuori asse del motore produce un'oscillazione del piano. se si varia la tensione al motore, si varia la frequenza delle oscillazioni. Le frequenze necessarie per la verifica vanno da 1 Hz a 5 Hz.
Il piano è già predisposto con un sensore fotocellula a U per la rilevazione dei movimenti del piano.
Con questi elementi, e con le mie scarse conoscenze di Arduino, immagino che dovrei ovviamente leggere i segnali dal sensore ad U e contarli su una base di tempo fissa, precisamente 1 sec. per avere il valore di espresso in frequenza.
Sebbene sembra abbastanza semplice, credo che i valori di frequenza così bassi possano essere difficili da essere rappresentati con una certa stabilità sulla base di 1 sec. sarebbe giusto contare gli impulsi su una base tempi maggiore e poi eseguire semplicemente delle divisioni?
Cosa ne pensate?
Grazie per l'aiuto.
Beppe

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mar 21 set 2021, 13:53
da apollokid
Io squadrerei il segnale analogico che produce il tuo sensore a seguito delle vibrazioni con un comparatore o un trigger di schmitt e poi conterei i tempi tra un impulso ed successivo con una semplice interrupt su un pin digitale

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mar 21 set 2021, 14:38
da fermat62
quello è il meno, ovviamente non pensavo di far arrivare il segnale dal fotoaccoppiatore direttamente su Arduino, ma lo avrei certamente fatto precedere da un trigger di Schmitt o un equivalente squadratore per non generare falsi segnali...quindi all'uscita dovrei trovarmi un'onda quadra, mettiamo di 1 Hz, come la misuro con Arduino?

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mar 21 set 2021, 14:52
da apollokid
Con una interrupt, guarda la documentazione per esempio della funzione attachInterrupt()

Nella ISR usi la funzione micros() per salvarti l'istante in cui il fronte del segnale è in salita, poi calcoli quando tempo è passato dal fronte precedente ed hai il periodo, la frequenza è l'inverso.

Probabilmente per frequenze così basse anche la millis() al posto della micros() basta ed avanza

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mer 22 set 2021, 9:34
da pgv
Potrebbe essere utile calibrare l'orologio interno dell'Arduino misurando un segnale di durata nota e simile a quella del segnale sconosciuto, soprattutto se occorre una buona precisione sulla misura del periodo. Oppure, disponendo di un oscillatore preciso, contare quanti impulsi prodotti da questo oscillatore "di riferimento" capitano durante un periodo del segnale sconosciuto (usando una semplice porta AND). Anche questo nell'ipotesi di volere una precisione elevata nella misura del periodo.

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mer 22 set 2021, 10:25
da TheOrdinarySuperhero
apollokid ha scritto: mar 21 set 2021, 13:53 Io squadrerei il segnale analogico che produce il tuo sensore a seguito delle vibrazioni con un comparatore o un trigger di schmitt e poi conterei i tempi tra un impulso ed successivo con una semplice interrupt su un pin digitale
Concordo con apollokid
Verifica se il circuito di tregger esiste gia o no sul sensore
Per il conteggio della frequenza una media su 3 secondi dovrebbe essere sufficente ma tutto dipende se a te interessa sapere la frequenza esatta decimo di secondo per decimo di secondo o sapere l'andamento medio.

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mer 22 set 2021, 10:58
da apollokid
Se può servire per un termine di paragone, io usando le interrupt sono arrivato a misurare la lunghezza di impulsi di durata fino a 10 microsecondi e con frequenza di ripetizione nell'ordine dei kHz

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mer 22 set 2021, 11:45
da fermat62
TheOrdinarySuperhero ha scritto: mer 22 set 2021, 10:25
apollokid ha scritto: mar 21 set 2021, 13:53 Io squadrerei il segnale analogico che produce il tuo sensore a seguito delle vibrazioni con un comparatore o un trigger di schmitt e poi conterei i tempi tra un impulso ed successivo con una semplice interrupt su un pin digitale
Concordo con apollokid
Verifica se il circuito di tregger esiste gia o no sul sensore
Per il conteggio della frequenza una media su 3 secondi dovrebbe essere sufficente ma tutto dipende se a te interessa sapere la frequenza esatta decimo di secondo per decimo di secondo o sapere l'andamento medio.
grazie per la risposta, verificherò il tipo di sensore ottico per capire se il segnale è già triggerato, si per il conteggio in effetti basterebbe una media su un tempo di 3-4 secondi, il test nella pratica dura 3-4 minuti, e quello che si desidera visualizzare è appunto il valore dell'oscillazione per poi intervenire sulla tensione del motore per aumentarla o diminuirla a piacere secondo necessità.

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: mer 22 set 2021, 12:57
da TheOrdinarySuperhero
fermat62 ha scritto: mer 22 set 2021, 11:45 [grazie per la risposta, verificherò il tipo di sensore ottico per capire se il segnale è già triggerato, si per il conteggio in effetti basterebbe una media su un tempo di 3-4 secondi, il test nella pratica dura 3-4 minuti, e quello che si desidera visualizzare è appunto il valore dell'oscillazione per poi intervenire sulla tensione del motore per aumentarla o diminuirla a piacere secondo necessità.
Mmmm potresti implementare una logica pid per controllare la tensione del motore in funzione delle oscillazioni
Comunque se prendi uno di quei sensori fatti per arduino lo colleghi alla 5v a GND e a un pin digitale (che di suo e gia filtrato) e poiti basta leggere i valori di input e leggerli sul monitor seriale (oppure su uno schermo esterno)

Re: Letture oscillazioni - banalmente un frequenzimetro!

Inviato: ven 24 set 2021, 1:45
da blue3121
Perché non usi un motore passo-passo ?
In tal caso non avresti bisogno della retroazione di un sensore e sarebbe gestibile da sw molto più facilmente e in modo più preciso.