Vai al contenuto
PLC Forum


microfono arduino


Arnautovich

Messaggi consigliati

Ciao a tutti, premetto che al mondo dell'elettronica mi sono avvicinato da poco.

Ho collegato un microfono e un led al mio arduino in modo che, quando il microfono sente un suono, il led si accende. Il problema è che quando carico il programma, il led si accende e non si spegne più, nonostante non ci siano rumori (a parte il rumore della ventola del pc), e non capisco come mai.

 

Il microfono l'ho comprato su amazon (i pin li ho saldati io) ed è questo: https://www.amazon.it/perfk-Amplificatore-Microfono-Electret-Regolabile/dp/B079GW8GY4/ref=sr_1_15?ie=UTF8&qid=1541350176&sr=8-15&keywords=microfono+arduino

 

Mentre il programma che carico è il seguente:

int ledPin=13;
int sensorPin=7;
boolean val =0;

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(sensorPin, INPUT);

  Serial.begin (9600);
}
  void loop (){
  val =digitalRead(sensorPin);
  Serial.println (val);
  if (val==HIGH) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }
}

 

Link al commento
Condividi su altri siti


Se stacchi il sensore dal pin 7 cosa accade? Hai provato a misurare con un multimetro che tensione è presente all'uscita del sensore?

 

Ciao, Ale.

Link al commento
Condividi su altri siti

ho provato a staccare il sensore dal pin 7 e, una volta ricaricato il programma, il led resta spento. Mi procuro comunque un multimetro per misurare la tensione all'uscita del sensore? Perchè non avendolo in casa dovrei ordinarlo.

 

Grazie in anticipo, Lorenzo.

Link al commento
Condividi su altri siti

7 ore fa, Arnautovich scrisse:

ho provato a staccare il sensore dal pin 7 e, una volta ricaricato il programma, il led resta spento.

Non c'è bisogno di ricaricare il programma, a meno che tu non lo voglia sostituire con un altro. Qual'è lo scopo di questo dispositivo? Temo che la schedina con il microfono non sia adatta per quello che vuoi, perlomeno cosi com'è.

 

Ciao, Ale.

Link al commento
Condividi su altri siti

è un progetto scolastico che sto cercando di eseguire gradualmente, l'obiettivo finale sarebbe quello di dargli dei comandi vocali, solo che non riesco nemmeno a far funzionare il microfono e non capisco come mai.

 

Grazie, Lorenzo.

Link al commento
Condividi su altri siti

Tu stai usando il microfono con un ingresso digitale, quindi per avere variazioni di stato dell'ingresso la tensione dovrà essere o > 2.5V o < 2.0V; se è <2V sarà letta come 0  (LOW), altrimenti come 1(HIGH).

Quindi per prima cosa verifica, con trasduttore collegato, che tensione è presente sul pin 7.

 

Io ti suggerirei di fare 2 cose:

  1. Amplifica il tuo microfono
  2. Collega il microfono ad un ingresso analogico, acquisisci il segnale e poi lo compari con una soglia che imposterai tu per avere lo scatto da acceso/spento del LED.

PS Hai le caratteristiche del microfono? data sheet? Sigla?

Link al commento
Condividi su altri siti

1 ora fa, Arnautovich scrisse:

l'obiettivo finale sarebbe quello di dargli dei comandi vocal

La vedo dura con quel modulo e l'Arduino, al massimo puoi discriminare tra presenza di suono o meno.

 

Comunque, prova con questo schema :

Cattura_6.JPG.d3c223214e2f37d1bb0b5f10468ca472.JPG

 

L'ingresso dell'Arduino diventa l'A0 anziche il 7, e cambia il programma così :

byte sensorPin = A0;
byte ledPin = 13;
int sensValue = 0;
int soglia = 20;

void setup(){
  pinMode(ledPin, OUTPUT);
  //pinMode(sensorPin, INPUT);

  Serial.begin (9600);
}
  void loop (){
  sensValue = analogRead(sensorPin) - 512;
  Serial.println (sensValue);
  if (abs(sensValue) > soglia) {
    digitalWrite(ledPin, HIGH);
    delay(200);
  }
  else {
    digitalWrite(ledPin, LOW);
    delay(200);
  }
} 

Regola la sensibilità della scheda microfono quasi al massimo, con dei suoni presenti il LED dovrebbe perlomeno emettere qualche lampeggio. Cambiando il valore della variuabile 'soglia' o il trimmer sulla scheda dovresti essere in grado di cambiare la sensibilità.

 

Ciao, Ale.

3 minuti fa, Livio Orsini scrisse:

Collega il microfono ad un ingresso analogico, acquisisci il segnale e poi lo compari

Oops, ci siamo intrecciati con Livio, comunque vedo che eravamo giunti + o - alle stesse conclusioni...:smile:

 

Ciao, Ale.

Link al commento
Condividi su altri siti

La sigla del microfono dovrebbe essere "MAX4466", mi procuro il prima possibile un multimetro per misurare la tensione al pin, dopo di che proverò ad applicare le modifiche che mi avete consigliato. Vi tengo aggiornati e nel caso riscontrassi ulteriori problemi, ridomando vista la disponibilità.

 

Vi ringrazio molto, Lorenzo.

Link al commento
Condividi su altri siti

Il MAX4466  è un modulo per arduino costituito da un microfono alettrete e relativo amplificatore con guadagno tarabile, c'è un piccolo potenziometro nel lato posteriore.

Ma tu il datasheet del modulo lo hai letto?

Dovrebbe fornire circa 200 mVpp in uscita per un livello di normale conversazione, ma puoi arrivare sino al clipping di 5 Vpp, secondo il guadagno tarato.

In rete dovresti anche trovare librerie adatte ad ottenere FFT con arduino.

Con un tester forse non riuscirai a fare misure corrette, ci vorrebbe un oscilloscopio; oppure se sei in un ambiente con poco o nulla rumore e se riesci ad emettere un leggero fischio con ampiezza e freqaunza abbastanza costante, puoi anche tarare con un multimetro.

 

Link al commento
Condividi su altri siti

Grazie mille a tutti, sono riuscito a risolvere il mio problema e passo allo step successivo.

Vi ringrazio ancora per la disponibilità, mi rifarò sentire in caso di ulteriori dubbi.

 

Saluti, Lorenzo.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...