Salve a tutti, sono al mio primo progetto con arduino, vorrei avere un onda quadra con frequenza variabile da 0 a 200Hz regolabile con potenziometro, l onda quadra dovrebbe essere amplificata perche mi serve a far vibrare un woofer, AIUTATEMI!
Gli AVR come praticamente tutti i microcontrollori implementa dei timer che possono essere usati per generare un segnale PWM.
Leggi il valore analogico proveniente dal potenziometro con analogRead e crei un onda corrispondente con digitalWrite. Con un piccolo circuito buffer alimenti poi il tuo woofer. Sei sicuro che vada bene un onda quadra solo positiva per un applicazione del genere?
@Marcocoopers: essendo il tuo primo post, ti chiederei di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ... Grazie.
Guglielmo
P.S.: Dai un'occhiata alla funzione tone() ... potrebbe fare al caso tuo ...
Onda quadra con un altoparlante? non fa un suono tremendo?
Ciao Uwe
Onda quadra con un altoparlante? non fa un suono tremendo?
Ciao Uwe
Forse vuole provare a misurare la risposta ad impulso o qualche altra misura simile.
Comunque o usi la funzione "tone" oppure puoi configurare uno dei timer presente all'interno al microcontroller.
0 Hertz vuole dire CC (corrente continua) e cioè avrai una uscita alta o bassa all'infinito.
Usando il timer 1 con OC1A in modo "toggle" puoi ottenere sul pin OC1A una onda quadra con duty cycle del 50%,
però il range di frequenza richiesto necessita di due prescaler diversi, perché con il clock a 8MHz e prescaler 8 non si riesce ad andare sotto 15Hz (non ricordo con precisione). Oppure si può provare se con un clock inferiore a 8MHz si riesce a coprire l'intero range con un solo prescaler (dovrebbe essere possibile, ma non ho fatto il calcolo).
A cosa serve nello specifico alimentare un altoparlante con una onda quadra amplificata?
Ciao.
uwefed:
Onda quadra con un altoparlante? non fa un suono tremendo?
In effetti le quadre suonano in modo "orribile", è l'equivalente di una distorsione al 100%.
uwefed:
Onda quadra con un altoparlante? non fa un suono tremendo?
Ciao Uwe
Magari e' proprio quello che vuole ... un "disturbavicini" o roba simile ad infrasuoni ...
MauroTec:
Forse vuole provare a misurare la risposta ad impulso o qualche altra misura simile.
Comunque o usi la funzione "tone" oppure puoi configurare uno dei timer presente all'interno al microcontroller.
0 Hertz vuole dire CC (corrente continua) e cioè avrai una uscita alta o bassa all'infinito.
Usando il timer 1 con OC1A in modo "toggle" puoi ottenere sul pin OC1A una onda quadra con duty cycle del 50%,
però il range di frequenza richiesto necessita di due prescaler diversi, perché con il clock a 8MHz e prescaler 8 non si riesce ad andare sotto 15Hz (non ricordo con precisione). Oppure si può provare se con un clock inferiore a 8MHz si riesce a coprire l'intero range con un solo prescaler (dovrebbe essere possibile, ma non ho fatto il calcolo).A cosa serve nello specifico alimentare un altoparlante con una onda quadra amplificata?
Ciao.
Ciao, guarda realmente a me realmente serve il range da 30Hz a 145Hz, come ho gia spiegato mi serve far vibrare il woofer e usando il simulatore di onde quadre Un generatore di segnali audio che funziona on line. riesco ad ottenere ciò di cui ho bisogno in quel range di frequenza
gpb01:
@Marcocoopers: essendo il tuo primo post, ti chiederei di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ... Grazie.Guglielmo
P.S.: Dai un'occhiata alla funzione tone() ... potrebbe fare al caso tuo ...
grazie, a quanto pare con arduino é possibile generare un onda quadra con un minimo di 31hz ad un massimo di oltre 60000hz, sapresti spiegarmi meglio come fare per avere una frequenza variabile con il potenziometro ed amplificare il tutto prima di collegarlo al woofer?
Mah ... per la prima parte non vedo difficoltà ... colleghi un potenziometro tra Vcc e GND, il cursore su un analog input e con la analogRead() ricavi la posizione del potenziometro (da 0 a 1023) dopo di che ... trasli tale valore in una frequenza (tramite una mappatura ... puoi usare ance la funzione map()) che dai in pasto alla tone().
Per la seconda parte, mmm ... visto che hai un onda quadra, quindi un segnale digitale ... direi che più che di amplificatore si tratta di un driver, magari MOSFET con cui piloti il woofer (occhio agli assorbimenti).
Guglielmo
gpb01:
Mah ... per la prima parte non vedo difficoltà ... colleghi un potenziometro tra Vcc e GND, il cursore su un analog input e con la analogRead() ricavi la posizione del potenziometro (da 0 a 1023) dopo di che ... trasli tale valore in una frequenza (tramite una mappatura ... puoi usare ance la funzione map()) che dai in pasto alla tone().Per la seconda parte, mmm ... visto che hai un onda quadra, quindi un segnale digitale ... direi che più che di amplificatore si tratta di un driver, magari MOSFET con cui piloti il woofer (occhio agli assorbimenti).
Guglielmo
bhe magari è semplice per te, ma per me che sono a zero è tutto difficile.. cerco di studiare il tutto, grazie intanto
Credo che intenda una cosa del genere di quella allegata ... i due condensatori in antiparallelo (che possono essere sostituiti da un solo condensatore da 100u 50V "nonpolar" per casse acustiche, se lo trovi), servono per evitare di friggere il woofer se il mosfet rimane in conduzione ... arrotonderanno un po i fronti dell'onda quadra, ma proteggono il sistema ... se invece ti serve proprio una commutazione "secca", si puo fare aggiungendo un'altro transistor e disaccoppiando in AC il pin rispetto al driver ... il mosfet puo essere un modello qualsiasi, dato che prende la tensione di gate dai 12V, basta che lo scegli in grado di reggere qualche decina di Ampere, ce ne sono un'infinita' di modelli in case TO220 ...
EDIT: dimenticavo, ci andrebbe anche una resistenza di potenza, da almeno una decina di W, o piu se necessario, calcolata in base alla massima potenza che puo reggere il woofer che devi usare, in serie al woofer stesso, per evitare di cuocerlo in breve tempo ...