GiRock Inserito: martedì alle 18:40 Segnala Inserito: martedì alle 18:40 Da una richiesta letta sul Forum relativo alla Citofonia dove un Utente chiedeva se poteva collegare un Attuatore come Ripetitore di Chiamata al suo Videocitofono, mi è balenata questa idea dall'aria un po malsana ma pur sempre funzionante... Premetto che il Videocitofono non ha Attuatori di serie preposti allo scopo specifico, almeno così gli è stato risposto, alché non potendo rilevare eventuali Segnali dal BUS per la decodifica che sarebbe stato magari più semplice, mi sono chiesto se si poteva intercettare il Suono emesso dell'apparecchio ed in qualche modo dare il consenso al Relay ripetitore... Pensando ad un sistema di rilevazione abbastanza immune alle interferenze dei rumori di ambiente e non troppo sensibile al parlato, sono arrivato a realizzare un preamplificatore microfonico che praticamente resta sordo se il suono non proviene da una distanza di 5/10cm al massimo, difatti andrà montato molto vicino all'apparecchio da monitorare... Per giungere a questo, ho testato una serie di suonerie citofoniche registrate, arrivando alla conclusione che un filtro passa-banda abbastanza stretto del II° Ordine potesse adattarsi al caso in questione, diciamo che amplifica frequenze comprese tra 500Hz e 2500Hz che è il massimo valore riconosiuto dal programma, inoltre la frequenza di risonanza si attesta sui 1200Hz circa, frequenza che ho notato nei vari toni visualizzati con un analizzatore di spettro, un ulteriore filtro passa-basso è stato inserito nel circuito dell'operazionale amplificatore per ridurre maggiormente le inutili frequenze alte... Ho parlato di programma perché per semplificare sia la cattura del suono che l'analisi successiva, ho optato per Arduino Mini viste le dimensioni contenute, ma anche Arduino Uno va benissimo dato che il Mini necessita di un programmatore USB esterno da pochi €uri, oltretutto scrivere un programma in Arduino rende tutto il lavoro molto veloce visto che possiede tantissime librerie largamente testate... Ok, fino a qui ci siamo, ma come campionare e memorizzare dei suoni che assumeranno caratteristiche differenti a seconda della Suoneria impiegata??? Dopo aver rimurginato per qualche minuto, ho fin da subito pensato al Grande Fourier e la sua Trasformata, spulciando tra le librerie ho trovato che era presente la funzione FFT ed ho scelto di partire con quella... Fin dai primi test, il segnale acquisito dall'ADC veniva rapidamente elaborato mostrando correttamente la frequenza in cui la magnitudo era più elevata anzi, volendo la funzione restituisce 7 valori con magnitudo decrescente, Io ho preferito campionare 1s di suono con 128 punti ed estrapolare solamente due valori significativi, dopo che una volta aggiunto tutte le routine necessarie al programma, lo spazio a disposizione è sceso a valori bassi costringendomi a fare delle ottimizzazioni... Altra cosa che ho forzato nel preamplificatore per evitare di avere valori negativi sull'ADC che avrebbero complicato le letture delle frequenze, è stato quella di raddrizzare il segnale captato dal microfono a singola semionda tramite un diodo in uscita dall'operazionale, in fondo la frequenza corretta viene ugualmente rilevata così come la magnitudo risparmiando cicli macchina non strettamente necessari allo scopo e niente OFFSET da calcolare... Bene, dopo tutta questa premessa, è giunto il momento di mostrare lo schema: Funzionamento del circuito e programmazione/utilizzo dell'attuatore Come captatore di segnali ho utilizzato una semplice Capsula Microfonica ad Electrete, internamente questa contiene un FET che converte le variazioni del campo magnetico in segnali elettrici di entità maggiore, infatti per funzionare deve essere alimentato esternamente, per il calcolo della resistenza di caduta si deve procedere in questo modo: ID = 0.0005 (500uA) - Corrente necessaria al FET interno VDS >= 2V - 2V = Tensione minima di funzionamento del FET interno quindi partendo da un'alimentazione di 5V ho calcolato RA = (5V - 2V) / 0.0005 = 6000Ω valore commerciale 5k6, così ottengo 2.2V sul FET che è più di un buon valore per non aumentare troppo la sensibilità agli stimoli esterni... Subito sul I° stadio d'ingresso ad operazionale troviamo un filtro passa-banda del II° Ordine che attenua le frequenze non necessarie di 35dB, II° stadio amplificatore 40X con ulteriore passa-basso per aumentarne la pendenza, raddrizzatore a singola semionda, usctita disaccoppiata con condensatore e resistenza da 47k in parallelo all'ADC, questa serve per dimezzare l'impedenza vista in ingresso abbattendo notevolmente i disturbi ed il rumore sul convertitore... Lo stesso segnale ulteriormente disaccoppiato viene inviato tramite opportune resistenze ad un transistor NPN che ha il Collettore alimentato dalla resistenza di PULLUP interna di Arduino, questo si rende necessario per generare l'Interrupt che sveglia il micro quando messo in modalità a basso consumo, cosa che avviene quando il segnale sull'ADC supera una certa soglia... Fase di acquisizione e memorizzazione della Suoneria: all'accensione di Arduino il LED ROSSO lampeggia, ciò vuol dire che non sono stati trovati valori memorizzati nella EEPROM, per passare alla fase di programmazione bisogna premere il pulsante tra i 2s ed i 3s per poi rilasciarlo dopo aver Resettato la scheda, a questo punto il LED ROSSO rimarrà fisso in attesa di un Suono da elaborare, acquisito il suono il LED ROSSO si spegne e si accenderà quell GIALLO ad indicare che i dati sono stati memorizzati correttamente... Per cancellare i dati acquisiti precedentemente e ripartire da capo, basta tenere premuto il pulsante per più di 4s per poi rilasciarlo, Arduino cancellerà la EEPROM e si riavvierà mostrando ancora una volta il LED ROSSO lampeggiante... Non è necessario cancellare i dati tutte le volte, infatti se questi sono presenti la funzione di acquisizione del suono farà solo un UPDATE di questi evitando di scrivere dove i bit sono uguali ed evitando di usurare la memoria anche se sono garantiti 100.000 cicli... Per ogni fase descritta in precedenza è sempre meglio riavviare Arduino, se tutto è stato fatto nel giusto ordine, dopo il riavvio nessun LED sarà acceso ed il programma manda Arduino in attesa di Interrupt spegnendo anche il LED BLUE che indica quando sta lavorando, suonando ora il campanello, parte una nuova acquisizione che viene poi comparata con quella in memoria, se questi sono uguali o hanno un piccolo OFFSET che ho impostato 15Hz, solo allora parte il comando di attuazione e si accende il LED VERDE (Impulso da 500ms), poi tutto torna in stato di attesa come prima... Il circuito è alimentato esternamente a circa 9V tramite il connettore di Arduino che ha un A1117 che porta la tensione a 5V, anche il preamplificatore la riceve tramite i pin della scheda senza usare fonti esterne supplementari... Sto testando il circuito su BB e devo dire che nonostante l'oscilloscopio visualizzi le forme d'onda, se non ci si avvicina a breve distanza, il trigger non parte e Arduino non si risveglia. Oggi c'era un rumore assordante di una macchina taglierba, la TV accesa, Io che parlavo al telefono più il vicino col flessibile e vari suoni di motori transistanti che non ha fatto una piega, nonostante la mia percezione uditiva era sulla soglia del fastidio, la scheda non ha mai battuto ciglio, eppure in casa c'era un frastuono infernale ed era posizionata a 2m dalla finestra aperta... Questa è la versione 1.0 e avrà certamente bisogno di aggiustamenti futuri, la terrò ancora in bruciatura per monitorare il comportamento nelle varie situazioni domestiche, però mi sono divertito a sperimentare con questo circuito ibrido e sono abbastanza soddisfatto del risultato ottenuto, ho anche visto in rete che ci sono decine di richieste per un sistema così semplice, pensate che alcuni hanno messo un microfono wireless con un ricevitore/amplificatore per ripetere il segnale, in pratica ogni suono nei dintorni viene trasmesso e non solo quando serve tipo baby-monitor... Tutte le fasi sono dettagliate ed inviate tramite Seriale con i rispettivi messaggi, quindi tramite un Monitor seriale sarà possibile interagire con il programma evitando di mettere tutti i LEDs, a Voi la scelta... DISCLAIMER Non essendo un prodotto commerciale, i punti campionati sono solo due, non c'è il Watchdog e non si possono aggiustare altri parametri, perciò ogni tanto andrà resettato Arduino, l'unica cosa con cui interagire è il preamplificatore dove è possibile modificare sia il guadagno che la pendenza del filtro, ricordatevi di usare un buon alimentatore filtrato e stabile... P.S. Il codice per ora non lo pubblico, sarà disponibile solo il file HEX per chi è veramente interessato, quindi non fate richieste di upgrade, al limite posso aggiungere la regolazione per il tempo di intervento del relay se strettamente necessario...
Gennar0 Inserita: ieri dalle 14:24 Segnala Inserita: ieri dalle 14:24 19 ore fa, GiRock ha scritto: diciamo che amplifica frequenze comprese tra 500Hz e 2500Hz I rumori che possono disturbare di più, sono quelli a bassa frequenza, perché vengono amplificati e riflessi da oggetti, muri e mobili. Per il resto, se lo hai provato solo con un simulatore, aspettati problemi vari durante la realizzazione pratica.
GiRock Inserita: ieri dalle 15:49 Autore Segnala Inserita: ieri dalle 15:49 (modificato) @Gennar0 non hai letto tutto il post!!! Il circuito è stato testato su Bread Board (BB) con un sacco di rumori d'ambiente, per ora sembra immune se il suono non viene captato da molto vicino... 500Hz è la frequenza minima che il programma elabora, comunque è più indicato per suonerie DUTON come era stato richiesto da un Utente... Anche se il microfono capta tutto, il trigger è veramente duro a scattare, l'intensità del suono rilevato deve essere di una certa intensità e deve corrispondere alle 2 frequenze memorizzate in precedenza nello stesso intervallo di tempo... Modificato: ieri dalle 15:52 da GiRock
Gennar0 Inserita: ieri dalle 20:07 Segnala Inserita: ieri dalle 20:07 (modificato) 4 ore fa, GiRock ha scritto: non hai letto tutto il post!!! Ho cercato di guardare i punti più interessanti, più che un post, è un progetto. Se funziona anche in pratica, bene, perché gli operazionali sono rognosi, se l'alimentazione non fa il giusto percorso, si arrabbiano facilmente. A volte sembra che funzioni tutto, e pescano il mondo. Lo dico per esperienza in una ditta che costruiva metal detector per banche. Cercavano operazionali a basso rumore e frequenze immuni ai cellulari ecc. Quando realizzavi il circuito, sembrava tutto ok, invece, i ritocchi erano obbligatori. Ecco, i cellulari e il wifi sono dei rompiscatole, anche se i telefonini etacs di una volta, avevano emissioni molto importanti. Con la scoperta delle microcelle, le potenze sono calate di conseguenza. Adesso hanno anche algoritmi per calcolare potenza ottimale. Modificato: ieri dalle 20:35 da Gennar0
Gennar0 Inserita: ieri dalle 21:08 Segnala Inserita: ieri dalle 21:08 (modificato) 5 ore fa, GiRock ha scritto: Il circuito è stato testato su Bread Board (BB) Metti anche una foto della realizzazione, magari te lo spostano nella sezione progetti. Mi pare si chiami schemi e circuiti. Modificato: ieri dalle 21:11 da Gennar0
Livio Orsini Inserita: 15 ore fa Segnala Inserita: 15 ore fa 8 ore fa, Gennar0 ha scritto: Metti anche una foto della realizzazione, magari te lo spostano nella sezione progetti. Mi pare si chiami schemi e circuiti. . No va bene qui, o al più, nella sezione "fai da te" La sezione schemi è la sezione dove si ricercano e si pubblicano schemi di apparati commerciali.
Gennar0 Inserita: 5 ore fa Segnala Inserita: 5 ore fa (modificato) Il 20/08/2025 alle 15:49 , GiRock ha scritto: Il circuito è stato testato su Bread Board (BB) C'è qualcosa che non quadra sull'uscita del secondo Op, o sbaglio? Stamane non ho preso il caffè, sicuramente mi sbaglio. Modificato: 5 ore fa da Gennar0
GiRock Inserita: 1 ora fa Autore Segnala Inserita: 1 ora fa Scusami @Gennar0 ma non ti capisco... Se ti dico che funziona vuol dire che il segnale esce correttamente dall'Operazionale, quindi solo tu vedi qualcosa di strano??? Ho anche scritto per chi è veramente interessato, perciò lascia perdere se la cosa ti infastidisce... Saluti
Gennar0 Inserita: 1 ora fa Segnala Inserita: 1 ora fa 35 minuti fa, GiRock ha scritto: funziona vuol dire che il segnale esce correttamente Se non vuoi che commenti, ci sta, il mio parere non è, ne indispensabile, ne infallibile. Tranquillo, fai finta che non ho detto niente.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora