Aiutatemi col microfono!

Ciao ragazzi, mi sono iscritto pochi giorni fa, ma solo oggi ho trovato un po' di tempo per smanettare con arduino. Come ho scritto nel post di presentazione, sto costruendo (diciamo che ci sto provando) un trigger per la mia macchina fotografica. Per ora sto lavorando sull'attivazione sonora, ma ho già trovato un problema: ho voluto cominciare con le cose semplici, quindi ho collegato una capsula microfonica al pin A0 e attivato la comunicazione seriale. il problema è che il valore che mi restituisce è sempre 0, non cambia mai! La capsula mi è stata venduta come amplificata, quindi non dovrebbe essere l'amplificazione il problema, giusto? qualcuno potrebbe illuminarmi? sono proprio alle prime armi! Grazie a tutti!

P.s. la capsula in questione è questa: http://www.ebay.it/itm/380469255597?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649#ht_3370wt_906

Anto

e l'amplificazione come avverrebbe, ad aria? io le ho sempre viste a tre pin le capsule amplificate, uno dei tre serve per dare alimentazione, penso che quella sia una normale capsula electret, quindi richiede uno stadio amplificatore tra i suoi pin e Arduino.
Cerca interruttore battimani e dovresti trovare una discussione con tanto di schema elettrico per risolvere il problema.

Ciao,
Il terzo pin semplicemente lo devi creare con un condensatore di disaccoppiamento.
Nella pagina del prodotto trovi lo schema, ti serve una resistenza da 2.2K e un condensatore (es. da 10uF). Devi alimentarle il tutto a 3V (sul terminale 1) tramite la resistenza, coi 3.3V di Arduino non dovresti avere grandi problemi, casomai usa una resistenza leggermente più grande

Ciao

La capsula microfonica in tuo possesso deve essere alimentata a 3V (vedi schema sul disegno).

I 3V possono essere prelevati dai 3.3V di Arduino attraverso un resistore da 4,7k ohm.

Il condensatore può essere da 220nF ed in uscita otterrai una tensione massima di 3,3V.

Devi settare l'ingresso analogico per 3,3V di fondo scala con il pin AREF collegato ai +3,3V

analogReference(EXTERNAL);
pinMode(A0, INPUT_PULLUP); // inserisce il resistore di pull up interno da 20k)

Sul condensatore andavo a memoria... segui i consigli di cyberhs

Ciao

Innanzi tutto grazie a tutti delle risposte!! Appena riuscirò a rimediare un condensatore riproverò sicuramente. Quindi il fatto che il microfono restituisca sempre 0 è dovuto al suo non essere amplificato? Cioè è come se non riuscisse a "sentire" nulla?
Ho provato a farmi un'idea di come dovrei impostare il circuitino, potreste dare un'occhiata all'immagine qui sotto e dirmi se ho sbagliato qualcosa?
Inoltre non mi è ben chiara una cosa: cyberhs, quella parte di codice che mi hai scritto deve essere inclusa nello sketch che caricherò sulla scheda? se sì dove? e cosa fa esattamente?
Grazie a tutti per la pazienza e per i preziosi chiarimenti!!

Anto

Il circuito è sbagliato, prova a ricontrollare lo schema

Suggerimento: un pin deve essere a GND senza altri collegamenti

C'è un errore sul tuo schema e ti allego quello corretto.

Le due istruzioni che ti ho precedentemente fornito devono essere inseriti in Setup e servono a predisporre il convertitore AD sulla porta A0 in modo da attivare il resistore di pull'up interno e indicano che il riferimento di tensione è esterno.

Grazie a tutti e due ragazzi! Prima di guardare la soluzione di cyberhs ho provato a risolvere il problema da solo seguendo il suggerimento di flz47655. Ero arrivato alla conclusione di dover togliere la resistenza e il condensatore dal polo negativo del microfono però alla fine non capivo cosa farmene del piedino rimanente del condensatore :roll_eyes:!! Sono una frana! :smiley:
A questo punto però ho un (altro) dubbio sull'utilizzo del pin AREF: volendo collegare a questo circuitino "qualcos'altro", come un altro circuito da attivare quando si registra un suono oltre una certa soglia, potrei collegare questo circuito al rail + della breadboard? Mi sembra di capire di no... cioè, il fatto che lì vadano a convergere i 3.3V e il pin AREF non mi permette di collegare altra roba che alimenterei a 5V, giusto? Quella nell'immagine sarebbe un'alimentazione dedicata al solo microfono e per l'altra roba dovrei usare un'altra zona della breadboard... o sbaglio? Non so se mi sono spiegato...
Scusate la valanga di domande, ma sono davvero un novellino e le prime conoscenze di elettronica le sto assimilando da circa un mesetto!
Grazie e buona notte!

Nel caso tu abbia bisogno di avere altri ingressi analogici ma funzionanti a 5V, devi modificare il circuito proposto in modo che anche la sua alimentazione sia a 5V.

Puoi sostituire il resistore da 4,7k con un partitore di tensione (due resistori in serie da 2k e 3k): il resistore da 2k lo colleghi ai +5V mentre l'altro lo colleghi a Ground,

Il terminale centrale (il collegamento dei due resistori) lo applichi al positivo del microfono.

Con questo collegamento, però, non devi collegare AREF ai +3V, ma ai +5V (non sbagliare altrimenti puoi bruciare gli ingressi di Arduino)

Ok, quindi mi sembra di capire che questo coinvolga solo i pin analogici, e dovrei usare il partitore che mi hai descritto solo se mi servissero altri sensori analogici, o sbaglio? In questo caso sarebbe possibile una conigurazione come quella in foto? Cioè mantenendo un rail per i 5 volt e alimentando solo il microfono con i 3.3 e AREF?

Inoltre, tutto ciò significa che se il resto dei componenti che mi servono per l'altro circuito devono essere alimentati dai pin digitali di uscita posso comunque usare la configurazione senza partitore di tensione che mi hai detto all'inizio?
Saluti

Tutta la famiglia Arduino (ad eccezione della nuova DUE e quelle a 3,3V) nasce per accogliere ingressi digitali a 5V.

Gli ingressi analogici, invece, possono funzionare anche a 1.1V, 2.56V e 3.3V inserendo nel setup quel paio di istruzioni che ti ho detto all'inizio e facendo attenzione al modello posseduto:

analogReference(type)
DEFAULT: the default analog reference of 5 volts (on 5V Arduino boards) or 3.3 volts (on 3.3V Arduino boards)
INTERNAL: an built-in reference, equal to 1.1 volts on the ATmega168 or ATmega328 and 2.56 volts on the ATmega8 (not available on the Arduino Mega)
INTERNAL1V1: a built-in 1.1V reference (Arduino Mega only)
INTERNAL2V56: a built-in 2.56V reference (Arduino Mega only)
EXTERNAL: the voltage applied to the AREF pin (0 to 5V only) is used as the reference.

Quindi quello che hai affermato è corretto.

Cyber, sei stato gentilissimo e soprattutto chiarissimo! Temo che questo ti costerà altre scocciature da parte mia in futuro! :smiley: Appena avrò un attimo vedrò di mettere in pratica quello che mi hai spiegato. Per ora ti ringrazio (di nuovo) e ti mando un saluto!

Anto

Ciaoa tutti,
dopo un po' di tempo ritiro fuori questo post! Purtroppo non ho molto tempo per dedicarmi a questo progetto, quindi devo organizzarmi! Non ho ancora avuto modo di procurarmi il condensatore, ma ho continuato a studiacchiare a livello teorico quello che potrebbe servirmi per il mio trigger e ho anche elaborato un circuito e uno sketch che sono ansioso di provare...
Quello che mi chiedevo rileggendo le vostre risposte, in particolare quelle di cyberhs, è: come hai fatto a determinare quale capacità il condensatore deve avere? in base a cosa va determinata? E cosa succede se dovessi mettere un condensatore con una capacità maggiore o inferiore? E infine: quale tipo di condensatore dovrei usare? nello schema ho usato un elettrolitico, ma questo è adatto ai miei scopi o posso usare altri tipi? Grazie di nuovo a tutti!!

Anto

Il condensatore è utilizzato come filtro passa alto, su internet trovi molto materiale a riguardo anche se devi avere alcune conoscenze matematiche

Ciao

Ciao ragazzi, sto utilizzando ora lo schema per il mic, e sto tentando di fargli leggere le informazioni e riportarle sul monitor seriale. Ho usato le istruzioni che mi ha dato cyber, ma il numero che mi restituisce è sempre 1023, non si schioda da lì... cosa succede? ho usato questo codice:

int mic = A0;

void setup() {

analogReference(EXTERNAL);
pinMode(mic, INPUT_PULLUP); // inserisce il resistore di pull up interno da 20k)
Serial.begin(9600);
}

void loop() {

int sensorValue = analogRead(mic);
Serial.println(sensorValue);
delay(500);
}

Grazie dell'aiuto!

Non mi sa aiutare proprio nessuno??? =(

Scusate, ma quella del pull up proprio non la sapevo... Esiste anche per il pull down?

per SUBSEA:

no, il pull down devi farlo esterno poiché non esistono resistori interni verso massa.

per allo90:
da quanto leggo hai optato per un riferimento esterno quindi Aref lo hai collegato a +3.3V. Hai usato la stessa alimentazione anche per il MIC, seguendo lo schema che hai postato.

Forse 220nF sono pochi: prova ad usare un elettrolitico da 10?F

Grazue mille... se c'era mi avrebbe evitato un bel po' di res! :sweat_smile: