Generatore onde quadre

Questo è un semplice assemblaggio di qualche componente che ho nei cassetti.

Ho preso un Arduino UNO r3 ed un display LCD con qualche componente elettronico, perché mi serve per simulare un encoder. In aggiunta ho scritto nel programma anche una seconda frequenza che oscilla anche a basse frequenze (nell’ ordine di un qualche centesimo).

Le frequenze sono state simulate, con attendibilità di una buona precisione. Dato che non ho il frequenzimetro per poter misurare, il risultato si può solo vedere al display.

La prima frequenza varia da 2 Hz fino a poco meno di 8 MHz. Il compito è assolto dal timer1, del microcontrollore, con le sue funzioni hardware. Nel programma, comunque è stato prefissato ad un limite di 50 Khz.


Questo non disturba il resto dell’Arduino, tanto meno rallenta il programma. Per poter simulare un encoder, c’è anche una seconda fase, che è in quadratura dalla prima.

Purtroppo per la fretta non ho trovato il modo di invertire la sequenza delle fasi. Nel mio scopo serve a provare la massima velocità accettabile da un altro progetto (in seguito lo pubblicherò).

Una seconda frequenza è possibile da 0,01 Hz a 5 Khz.

In questa configurazione abbiamo la frequenza delle 2 fasi sui piedini D9 e D10, mentre per la frequenza lenta l’ uscità è prevista al piedino D11.

Le prime due uscite sono fisse assegnate dall’ hardware, mentre la frequenza lenta è possibile variare la configurazione del piedino di uscita, modificando leggermente il programma alla linea 13. Descriverò più in basso le altre varianti dello sketch, per una diversa compilazione.

Schema elettrico

Descrizione di funzionamento

Come si nota dallo schema, è previsto un controllo con un pulsante e con un potenziometro.

Dopo l’ avvio si presenta la seguente schermata.

Spostando il potenziometro nella posizione oltre alla metà del suo valore, si stabilisce quale frequenza si vorrà modificare, quindi si preme una volta per entrare.

Quindi appare il segno < sulla rispettiva frequenza da cambiare.

Per variare il valore si usa il potenziometro come moltiplicatore di grandezza. La metà alta aumenta il valore, mentre la metà bassa sottrarrà il valore. Sono per tanto previsto 5 moltiplicatori. Da 0 a 5, dipendenti dalla posizione del potenziometro rispetto al centro.

Inoltre è possibile tre tipi d’ incremento, operando con il pulsante.

  1. A colpi brevi si avanza di quel valore delineato dal potenziometro.

  2. Tenuto premuto l’ incremento avanza di continuo.

  3. Dopo un certo periodo che si continua a tenere premuto l’ incremento aumenta più rapidamente. C’è una opzione di compilazione per variarne il
    ritardo.

Per uscire dalla funzione di impostazione della frequenza, si dovrà farlo con un doppio colpetto sul pulsante.

A quel punto la frequenza è già operante sulle uscite. Ritornati al menu principale si potrà arrestare le uscite contemporaneamente premendo a lungo il pulsante.

Se fosse invece necessario disabilitare una sola delle frequenze, si dovrebbe portare il suo valore a zero.

Descrizione opzioni compilazione

Nello sketch ci sono alcune #define che si possono cambiare, a secondo delle proprie necessità.

Una riguarda alla uscita della seconda frequenza, alla linea 13 si potrà mettere un numero di quei piedini che non sono impegnati.

Dalla linea 5 alla 10, compresa, sono gli assegnamenti per le connessioni al display a cristalli liquidi.

La linea 14 stabilisce dove si vorrà collegare il potenziometro.

La linea 15 è quella per il pulsante.

La linea 16 si define il periodo in millisecondi per convalidare la pressione del pulsante. In caso fosse troppo sensibile o meno, si potrà aggiustare il suo valore.

La linea 17 è invece usata per la durata di attesa di una pressione lunga sul pulsante.

La linea 18 è quella che definisce il periodo di pausa prima che l’ incremento accelleri. All’ attuale si aspetta 3 secondi.

Infine la linea 19 serve per la fase di debug. I messaggi saranno presentati alla seriale. Ovviamente una volta che si è completato le prove, non sarà necessario avere la seriale collegata e tanto meno la comunicazione.

Questo sketch è già commentata la detta linea.

La dimostrazione video si nota il posizionamento per frequenze basse allo scopo di far lampeggiare i tre LEDs, che si nota di conseguenza.

Ovviamente le frequenze alte non sono dimostrabili a video e quindi non ho fatto oltre.

Le librerie usate nella compilazione con Arduino IDE v 1.8.1, sono incluse nel pacchetto che si può scaricare al link.

Ultima revisione

Ho riprovato a compilare lo sketch con l’ultima versione di Arduino IDE e posso dire di non aver incontrato problemi.
In aggiunta nel pacchetto esiste un altro sketch che non fa uso del potenziometro per l’impostazione del valore alle frequenze. Piuttosto vengono usati due pulsanti.

Un pulsante è denominato SET e l’altro come ENTER.

All’avvio si presenta la schermata in attesa che il pulsante SET venga premuto per accedere alla frequenza bassa. Oppure se si preme ENTER per accedere alla programmazione della frequenza alta.

Se invece si preme un doppio click sul SET, le frequenze verranno disabilitate.

Durante la fase di programmazione si usa le seguenti modalità:

1) Se SET fa un doppio click, si abbandona senza modificare la procedura.

2) Se si preme SET si incrementa la cifra corrente, fino a che non ritorna in cliclo a zero.

3) Se si preme ENTER si passa alla cifra di valore più alto e si potrà modificarla con il pulsante SET.

4) se ENTER è tenuto premuto a lungo, si completa la programmazione e si ritorna con il valore impostato.

Per quanto riguarda l’attendibilità della frequenza generata, direi che è ottima dopo esser riuscito a misurarla.

VOTO
2 commenti
  1. gvsoft
    gvsoft dice:

    Mi sarebbe piaciuto vedere una descrizione di come si raggiunge quella determinata frequenza e dei parametri che la distinguono.
    A mio parere più che una descrizione delle righe dello sketch è meglio una descrizione dei metodi con cui si realizza in progetto in tuue le sue forme e caratteristiche. Non dimentichiamo che in questo sito come in altri simili, gli articoli non vengono letti solo da esperti o tali ma sono molti i principianti che accedono questi siti proprio per cominciare a studiare e capire.
    saluti

    Approvazioni

Lascia un Commento

Vuoi partecipare alla discussione?
Fornisci il tuo contributo!

Lascia un commento

Specify Instagram App ID and Instagram App Secret in Super Socializer > Social Login section in admin panel for Instagram Login to work