Open ariutti opened 7 years ago
Ho notato inoltre che le letture del microfono sono di gran lunga peggiori quando sulla stessa linea di alimentazione si trova anche il BlueSmirf. Per questo il modulo BlueTooth è stato spostato altrove.
A nulla sembra servire posizionare un condensatore da 10microFarad tra alimnetazione e massa in prossimità del microfono.
Ho notato inoltre un altra cosa: i valori sample misurati dal microfono, quando in serie all'alimentazione attacco un amperometro (allo scopo di monitorare i consumi) sono valori nettamente più bassi rispetto a quelli che si avrebbero connettendo il microfono direttamente alla scheda Arduino. Questo non so a che cosa possa essere dovuto...
E' chiaro che, con un componente come l'amperometro in serie, i valori misurati all'ingresso del convertitore ADC saranno diversi rispetto a quelli misurati in condizioni normali.
Il circuito non cambia in teoria, questo sarebbe vero nella realtà se l'amperometro fosse un componente ideale. Invece introduce una caduta di tensione che si ripercuote sul microfono. Il segnale in output dal microfono infatti varai tra 0 e Vcc, ma se Vcc si abbassa perchè pari a Vcc = 5V - Vamperometro
allora anche i valori misurati all'ingresso ADC si riducono proporzionalmente.
Altre possibili soluzioni:
Incredibile ma il problema sembra essersi risolto (almeno in parte*) collegando la centralina alla alimentazione attraverso apposito alimentatore.
Evidentemente, pur la corrente richiesta minore del massimo fornibile dalla porta USB, essa non è abbastanza stabile e provoca fluttuazioni e false letture sul microfono.
[*] in parte nel senso che la soglia può essere impostata ad un livello inferiore. Evidentemente con l'alimentatore collegato non ci sono più così tante fluttuazioni legate al rumore.
E' probabile che si debba alimentare il BlueSmirf con un alimentatore esterno così che non dia problemi alle componenti circuitali che sono alimentate dai 5V di Arduino. O in questo modo: O in quest'altro:
Dopo diversi esperimenti sono emersi alcuni problemi derivanti dall'uso del microfono.
Premessa: il microfono e connesso alla centralina attraverso una cavo bipolare schermato lungo 5mt;
Dato il seguente codice:
Da una stampa a monitor seriale del valore grezzo del sample registrato dal microfono, sembra che ci siano momenti in cui tale valore è molto grande (1023) il che fa sì che il valore massimo si attesti molto distante dal valore minimo.
Di conseguenza la differenza
signalMax -signalMin
, al termine della finestra temporale di interesse, risulta essere maggiore della threshold impostata, anche se il valore spurio si è manifestato solo una volta assieme magari ad un altra decina di letture valide.Una possibile soluzione potrebbe essere quella di creare un filtro passa basso software? così i valori numerici in ingresso dal sensore potrebbero essere filtrati ed evitare letture troppo ballerine.