venerdì 8 marzo 2019

AStable NE555

Stavo giocando con la generazione di suoni con una Arduino ed un altoparlante (metto sotto il semplice progettino) quando mi e' venuto in mente....perche' non farlo senza microcontrollore ma con la sola elettronica analogica e quindi con un NE555

Circuito NE555 Astable

Fonte Wikipedia





Accrescere il valore del condensatore C  al di sotto del potenziometro riduce la frequenza aumentando il periodo.

Accrescere il valore della parte superiore R1 della resistenza variabile (parte superiore guardando il grafico sopra) aumenta il periodo di segnale alto (ma non modifica il periodo di segnale basso

Accrescere il valore della parte inferiore R2 della resistenza variabile aumenta il periodo di segnale basso e decrementa il duty cycle (ovvero il rapporto tra stato alto e stato basso fino ad un minimo del 50%)

il tempo di stato 1 sara' pari a T_alto = 0.693(R1+R2)*C
il tempo di stato 0 sara' pari a T_alto = 0.693*R2*C
per avere un periodo alto uguale al periodo basso R1 deve essere posto a zero

La frequenza e' calcolata come f=1.4/((R1+2R2)*C)

https://dlb.sa.edu.au/rehsmoodle/file.php/466/kpsec.freeuk.com/555timer.htm


per avere una frequenza di 440 Hz si deve porre di circa 164 nF (questo il calcolatore)



Ovviamente al posto del voltmetro va messo un altoparlante

Il consumo di NE555 e' di circa 15 mA

E se si volesse scendere con duty cyle inferiori al 50%??? (ovvero se invece di generare un suono volessi un interruttore che si apre ad determinati intervalli per un breve periodo di tempo)

Si devono inserire due diodi attorno al potenziometro

Circuito NE555 Astable con duty cycle inferiore al 50%



Un sostituto a basso consumo di NE555 e' ICM7555 che funziona anche a 1.5 V con un consumo di 60 microA

Configurazione Astable di ICM7555


Se si vuole generare un suono con Arduino basta lo script sottostante e collegare il jack audio al GND ed al PIN 11 per avere una nota di 250 Hz

---------------------------------------------------
void setup() {
  pinMode(11, OUTPUT);
}
void loop() {
  digitalWrite(11, HIGH);  
  delay(2);                       
  digitalWrite(11, LOW);     
 delay(2);                  
}
---------------------------------------------------



Ma come fare ad avefe note piu' acute con periodo inferiore al microsecondo. Si possono usare le librerie Mozzi e Tone che, giocando sui timer TCRR0A eTCRR0B permettono di ottenere variazioni piu' brevi dello stato delle porte digitali (a 16 MHz il limite teorico di un clock del processore e' di 62.5 nanosecondi)

Nessun commento:

Posta un commento

Arduino logger low power

Alla fine ci sono riuscito La arduino MKR zero e' ormai da un mese che e' rimasta accesa sul tavolo...o meglio si attiva ogni minuto...