Letture oscillazioni - banalmente un frequenzimetro!

Progetti Arduino
Avatar utente
fermat62
Messaggi: 12
Iscritto il: lun 25 gen 2021, 9:40

Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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
apollokid
Messaggi: 74
Iscritto il: lun 27 lug 2020, 14:36

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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
Avatar utente
fermat62
Messaggi: 12
Iscritto il: lun 25 gen 2021, 9:40

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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?
apollokid
Messaggi: 74
Iscritto il: lun 27 lug 2020, 14:36

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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
Avatar utente
pgv
Messaggi: 484
Iscritto il: gio 17 set 2020, 13:16
Località: Ginevra

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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.
TheOrdinarySuperhero
Messaggi: 1032
Iscritto il: mar 2 ott 2018, 15:16

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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.
apollokid
Messaggi: 74
Iscritto il: lun 27 lug 2020, 14:36

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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
Avatar utente
fermat62
Messaggi: 12
Iscritto il: lun 25 gen 2021, 9:40

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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à.
TheOrdinarySuperhero
Messaggi: 1032
Iscritto il: mar 2 ott 2018, 15:16

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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)
Avatar utente
blue3121
Messaggi: 879
Iscritto il: dom 24 gen 2021, 7:22

Re: Letture oscillazioni - banalmente un frequenzimetro!

Messaggio 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.
“...dentro i confini del computer, sei tu il creatore. Controlli - almeno potenzialmente - tutto ciò che vi succede. Se sei abbastanza bravo, puoi essere un dio. Su piccola scala.”
L. Torvalds
_________________
Guido C.
Rispondi