Il progetto che vi presento è uno strumento da laboratorio indispensabile, un generatore di funzioni arbitrario. Piccolo di dimensioni ma con un grande potenziale grazie alla capacità di generare qualsiasi tipo di forma d'onda e con una precisione tale da poter regolare la frequenza a passi di 1 Hz o il Duty-Cycle a passi di 1%. Utile per calibrare strumenti di lettura o per gestire servomotori in robotica. Le regolazioni e le impostazioni sono gestite da un solo encoder rotativo e visualizzate tramite un display TFT a colori da 1,77 pollici.
Caratteristiche
Lo scopo principale che mi sono imposto durante la progettazione era di rendere questo strumento un dispositivo di facile utilizzo, eliminare tutti quei pulsanti per settare la forma d'onda o per impostare il range della frequenza e renderlo leggero per poterlo spostare comodamente tra casa e lavoro; obiettivo centrato in pieno utilizzando un Arduino UNO e un encoder rotativo. Tutti i comandi sono gestiti dalla rotazione e dal pulsante dell'encoder e per rendere l'utilizzo ancora più pratico, le regolazioni e le impostazioni sono visualizzate su un display TFT a colori di Arduino.
Funzioni
Questo generatore è in grado di creare qualsiasi forma d'onda anche quelle con passaggio dallo zero, ossia in tensione duale. I segnali possono essere regolati in ampiezza fino a 15V picco/picco anche se tutto il circuito è alimentato con una tensione singola a 5V. Tra le onde memorizzate nello sketch troviamo: TTL; Sinusoidale; Triangolare; Rampa; Quadra. Il range della frequenza adoperabile parte da 1 Hz e si possono effettuare variazioni con passi a 1 Hz ma per velocizzare le regolazioni è possibile incrementare il fattore di moltiplicazione a 10X o a 100X. Per il segnale TTL, oltre alla frequenza, è possibile regolare in contemporanea anche il duty-cycle con passi da 1% per frequenza minore a 1500HZ o a passi del 10% con frequenza maggiori a 1500HZ.
Il circuito elettronico
Per la creazione della forma d’onda ho utilizzato un DAC tipo R2R ossia il TLC7524CN. Per non dilungarmi troppo rimando, per chi non conosce la tecnica della conversione digitale/analogico con scala R2R, a quest’articolo di EOS. L’integrato TLC7524CN sostituisce la scala di resistenze ed è possibile scegliere riferimenti di tensioni sia per lo zero sia per il Vcc Max.
I comandi d’input sono collegati direttamente alla PORTA D dell’Atmega.
L’onda è generata con una risoluzione di 100 parti, ciò significa che il microcontrollore deve generare almeno un ciclo di 100 impulsi per creare un’onda a 1 Hz, pertanto dato che il limite di ON/OFF delle porte di Arduino è 100 KHz la frequenza massima dell’onda sarà di 1 Khz. Per aumentare il limite della frequenza ho optato nella riduzione della risoluzione dell’onda, realizzando un’equazione capace di ridurre la risoluzione in modo automatico man mano che incrementa la frequenza. Ho impostato come limite di Fmax a 5600 Hz perché ritenevo che a tale frequenza l’onda fosse abbastanza accettabile ma è possibile, cambiando un’impostazione nello sketch, aumentare ancora la frequenza sempre però a discapito della risoluzione.
L’onda in uscita generata dal DAC sarà amplificata dall'operazionale (LM358) in configurazione non invertente con un rapporto fisso, il trimmer R9 collegato al pin 2 è utilizzato per regolare la soglia massima di amplificazione.
Si noti, dallo schema, che tutta l’elettronica è alimentata da Arduino (5V) mentre tale l’operazionale è alimentato con una tensione maggiore (24V), per ottenere un’ampiezza del segnale fino a 15V picco/picco. Per erogare una tensione di 24V e rendere il circuito portatile ho deciso di utilizzare un DC-DC StepUp, anche questo dispositivo è alimentato da Arduino (5V) e genera una tensione in uscita regolabile fino a 30 V con corrente max di 500 mA (soglia massima di erogazione da Arduino). Un DC-DC StepUp può essere facilmente costruito con l'integrato LM2755 come da schema seguente:
Tuttavia ho scelto una versione già montata reperibile sulla rete a un prezzo modico.
Questa versione presenta un trimmer da 10 K per regolare la tensione in uscita, una volta impostata la tensione a 24 V il trimmer non verrà più utilizzato. Per variare l'ampiezza del segnale, invece, useremo il potenziometro da 10 K collegato al pin 1 del TLC7524CN, che regola il livello MSB dei dati sulla scala R2R. Invece per il segnale TTL ho utilizzato un transistor BC547 pilotato dal DAC, una soluzione per ottenere un segnale ben squadrato e con ampiezza di 5 V.
Regolazioni
Le regolazioni da compiere sono solo per l'amplificazione del segnale, eseguire i seguenti passi:
- regolare il trimmer del DC-DC StepUp per ottenere una tensione a carico di 24V;
- posizionare il trimmer dell'operazionale a metà corsa;
- avviare il generatore in modalità sinusoidale;
- con un oscilloscopio controllare la distorsione del segnale e correggerla col trimmer dell'operazionale;
- se l'onda presenta dei picchi superflui diminuire leggermente la tensione in uscita del StepUp, invece se l'onda risulta tagliata nell'estremità aumentare leggermente la tensione in uscita del StepUp.
Regolazione ultimata.
Elenco materiale utilizzato
1 - Arduino UNO
1 - Arduino LCD TFT 1,77"
1 - Encoder rotativo con pulsante
1 - DAC TLC7524
2 - Amp OP LM358
1 - Relè due vie 5V
N - materiale vario come resistenze, condensatori e transistor acquistabile presso conrad.it
Il programma
Il cuore del programma sta nell'utilizzo della funzione interrupt del Timer per pilotare i dati sulle porte D dell'Atmega collegato al TLC7524, per questo progetto ho scelto il Timer1 per i suoi 16 bit. L’interrupt è una routine di servizio (ISR - Interrupt Service Routine) al di fuori del programma originale che si avvia ad un specifico evento, in questo caso si avvia ogni volta che il contatore del Timer raggiunge una frequenza stabilita. A ogni evento d’interrupt, l’Atmega, invia sulla PORTD 1 delle 100 parti per la creazione dell’onda. Il registro per assegnare il valore da comparare al contatore del Timer è l’OCR1A (relativo al Timer1).
La formula di default è:
OCR1A = (16000000 / (prescaler * frequenza desiderata di interrupt)) -1
dove 16000000 è la frequenza di clock di Arduino.
In questo progetto invece la formula è stata impostata nel seguente modo:
OCR1A = (16000000 / (1 * (frequenza desiderata* 100))-1
Si noti che il prescaler è impostato a 1 e la frequenza è moltiplicata per 100 che sono le parti che compongono l'onda. Nello sketch risulta nel seguente modo:
OCR = (16000000/(Hz*K_Hz))-1; // riga n°164
Il valore di Hz è letto dall'encoder, la lettura avviene grazie ad una libreria creata da "Paul Stoffregen". Questa libreria conteggia il valore di rotazione dell'encoder in un contatore reso disponibile sia per la lettura tramite il comando:
Encoder.read();
sia per la scrittura, per impostare dei limiti, col comando:
Encoder.write(valore);
Per approfondire, ecco alcuni dettagli.
Dallo sketch si può notare che il ciclo fondamentale sono proprio queste due funzioni, la lettura dell'encoder e il settaggio del registro OCR1A.
void loop() { encoder(); setting(Hz, K); ...}
Forma d'onda
Per la generazione delle forme d'onda ho realizzato quattro liste, una per ogni tipo di forma d'onda escluso il TTL.
byte sine[]= {127, 134, 142, 150, 158, ....}; byte triangle[] = {127, 132, 138, 143, .....}; byte saw[] = {255, 252, 250, 247, 245,....}; byte squar[] = {255, 255, 255, 255, ........};
Ogni lista è composta di 100 valori compresi tra 0 e 255. Dove 0 corrisponde a 0 V in uscita del DAC mentre 255 corrisponde a 5 V. È possibile creare una curva nuova rispettando però la condizione che lo zero del segnale corrisponda a 127, ossia a circa 2.5 V; questo permetterà di ottenere un segnale, grazie al condensatore di disaccoppiamento "C2", in tensione duale. È consigliato sostituire la curva nuova con una di quelle già presenti.
Impostazione utente
Nello sketch ci sono alcune impostazioni che possono essere gestite dall'utente per personalizzare il progetto, come:
#define user_Hz_min 5 // Frequenza minima selezionabile #define user_Hz_max 5600 // Frequenza massima selezionabile #define user_Hz_start 100 // Frequenza iniziale dopo l'avvio del programma #define Vmax_out 9.7 // Tensione max in uscita dall'ampl. operazionale
- user_Hz_min: si può impostare il valore minimo della frequenza da selezionare con l'encoder;
- user_Hz_max: si può impostare la frequenza massima regolabile con l'encoder. Di default è impostata a 5600, può essere aumentata ma a discapito della risoluzione dell'onda;
- user_Hz_start: l'utente può impostare la frequenza d'inizio all'avvio del programma.
Regolazioni
Anche nel programma c'è una piccola impostazione da ultimare e riguarda la parte del Voltmetro. La lettura dell'ampiezza del segnale non avviene direttamente all'uscita dell'amplificatore operazionale LM358, una scelta fatta per evitare distorsioni del segnale e componenti aggiuntivi come inseguitori di tensioni. Ho preferito leggere la tensione al pin 1 del DAC che regola la soglia MSB dei dati, ovvio che la lettura non è reale ma conoscendo la tensione massima in uscita dell'amplificatore operazionale è possibile regolare lo script per ottenere un risultato preciso da visualizzare sul display. L'impostazione va settata inserendo il valore della tensione massima, letta con un multimetro, in uscita dall'amplificatore LM358 selezionando l'onda "Quadra". Tale valore deve essere inserito alla voce "Vmax_out" dell'impostazione utente.
I comandi
Tutte le impostazioni sono state divise in tre menù visibili sul display in tre sezioni, nel seguente modo:
1° sezione: Gestione frequenza (impostazione di default );
In questo menù, oltre alla regolazione della frequenza, si può impostare il fattore di moltiplicazione (1X, 10X o 100X).
2° sezione : Scelta forma d’onda;
In questa sezione si imposta la forma d'onda da generare.
3° sezione: Gestione Duty-Cycle (solo per TTL);
In quest'ultimo menù si regola il duty-cycle e la frequanza in contemporanea, valido solo per il segnale TTL.
Per passare da una sezione all’altra bisogna premere il pulsante dell’encoder e tenerlo premuto per almeno un secondo mentre per modificare la sezione scelta, bisogna premere una sola volta il pulsante dell’encoder. Tutte le scelte sono selezionabili in ordine come descritto sopra e a ripetizioni in loop. Quando si passa da una sezione all'altra il testo, della sezione scelta, cambia colore in giallo per indicare la possibilità di regolazione.
Realizzazione
Purtroppo per motivi di tempo non sono riuscito a realizzare uno stampato ma lo schema è stato disegnato con Eagle per tanto chiunque può crearne uno con pochi e semplici passaggi. Tra gli allegati sono presenti due librerie di Eagle, uno per il modulo Arduino e l'altro per l'encoder rotativo. Per chi volesse realizzare un PCB consiglio questa guida pubblicata su EOS.
Prossimamente
Il progetto può crescere e megliore, le idee per evolverlo sono tante come realizzare un applicazione con Processing per disegnare nuove curve e caricarle sul SD, presente sulla board del display, tramite la porta seriale di Arduino.
progetto in fase di lavorazione, disponibile al più presto nel prossimo articolo.
era da tempo che aspettavo un articolo così!
Un bellissimo progetto, completo e documentato in maniera esemplare. Bravo!
Grazie mille.
Un progetto davvero interessante, che volevo realizzare anche io da tempo 😉 bello
Il progetto è in crescita, sto lavorando a un tool per creare curve al PC tramite Processing, se ti va, possiamo farlo insieme, ti passo qualche bozza.
se volete vi posso dare una mano …forse ho qualcosa di pronto…
Ciao Adriano, il tool è pronto e dovrei pubblicarlo a breve, salvo imprevisti.
Dopo, se ti va, potremo lavorare insieme per miglioralo ulteriormente.
certo!!!
per avere il sorgente su arduino e lo schema in modo comprensibile come posso fare?
Con piacere 🙂 puoi condividermi via mail a [email protected] oppure postare su elettronica open source se i file sono piccoli!
Ottimo progetto, credo proprio che lo realizzerò.
Ho guardato il programma, è tutto commentato, lo consiglio vivamente a chi vuole programmare con Arduino.
Tra l’altro è un’ottimo esempio di gestione del display TFT.
Bravo.
dove posso trovare lo sketch e il circuito?
Grazie mille.
Ho cercato di commentare lo sketch il più possibile per aiutare chi è alle prime armi con Arduino.
Complimenti! Un bellissimo progetto!!! Spero di riuscire a realizzarlo anch’io 🙂
Salve
mi potresti mandare lo sketch di questo fantastico tuo progetto?
in modo che possa realizzarlo?
grazie
La documentazione è in allegato, alla fine dell’articolo.
Ottimo!
C’è da imparare moltissimo leggendo lo sketch, mi piace come è scritto e commentato.
Tutto da studiare.
Da consigliare a chi vuole lavorare con Arduino ed imparare a scrivere sketch.
Ottima la documentazione e tutta la spiegazione nell’articolo.
Nello schema si legge Arduino Leonardo ma è certamente Arduino UNO.
Grazie.
Sergio
Ciao Ernesto,
sto rifacendo il bel progettino che hai proposto e ho cominciato con l’acquisto del materiale dai link da te proposti. devo solo segnalarti che il link al relè di 5v non è corretto perché ti porta ad uno di 12v …e purtroppo l’ho comprato. Me ne sono accorto durante il montaggio poiché durante i test parziali del circuito mi sono accorto che il relè non “switchava” :(((((
Il link corretto e http://www.conrad.it/ce/it/product/507583/SMD-Signalrelais-HFD3-Hongfa-HFD3005S-5-VDC-2-Wechsler-Max-2-A-Max-220-VDC-250-VAC-Min-10-mV10-A-Max-625-VA/?ref=detview1&rt=detview1&rb=1
Ciao Adriano,
Grazie mille per la segnalazione ma non posso più modificare l’articolo, dovrò chiedere ad Emanuele di farlo per me.
Link aggiornato. Grazie della segnalazione.
P.S. Con una piccola modifica al circuito puoi utilizzare anche il relè a 12V 😉
Un progetto magnifico e con un pochino di modifiche è possibile pure usare un TFT Touch 😉
Bella idea 😉
Ciao Ernesto,
io nel progetto ho sostituito il tuo step up con un alimentatore a 24V.
Immagino che il gnd del 24 devo unirlo col il gnd di arduino,ti sembra corretto???
Ciao Adriano,
si è corretto.
…. e l’uscita del segnale sia tra l’out del relè e il gnd comune tra arduino e il 24v, è giusto??
Il codice TP1 nel circuito è il DC-DC step up?
a cosa seve la R8 da 1M che va dal piedino 3 del LM358 allo stesso piedino?
ops ho detto una cav…ta non è così, va all’ alimentazione dell’operazionale.
l’alimentazione esterna (24V) deve essere collegata solo al pin 8 dell’operazionale.
Si certo, mi sono espresso impropriamente. Mi confermi cmq che il segnale generato lo prendo tra l’out che prelevo dal relè e il gnd?
Grazie
Sì confermo.
Ciao Ernesto,
la libreria dell’encoder l’ho presa dal link del sito di arduino
che è http://www.pjrc.com/teensy/td_libs_Encoder.html spero sia giusta,
Grazie
Ciao Adriano, si è quella giusta.
Ciao Ernesto voglio costruire questo circuito ,però vorrei regolare la frequenza fino ad 1 Mhz magari con lo sweep e con un’onda accettabile.
Cosa bisogna modificare o aggiungere per poter avere un generatore del genere.
Grazie
Ciao mazinga,
è impossibile ottenere una frequenza ad 1 Mhz utilizzando il solo Arduino, per tali valori necessità l’utilizzo di un DSP e ridisegnare completamente il progetto. Sto lavorando ad una nuova versione del GFArduino con possibilità di generare segnali fino a 20 Mhz ma mi vorrà un po di tempo… 🙂
Ciao Ernesto,
ho completato il circuito da te proposto e ho provato a collaudarlo con un oscilloscopio . Purtroppo indipendentemente dal tipo di segnale selezionato con l’encoder, all’uscita vedo sempre sull’oscilloscopio una marea di sinusoidi che si intersecano tra loro. Sono partito quindi a ritroso per capire dove stesse il problema .
A questo proposito vorrei chiederti se prendessi il segnale direttamente dal pinout REF del TLC752 e dal GND con out1 scollegato non dovrei vedere il segnale lo stesso (ridimensionato in ampiezza)??? Perché così facendo continuo ad avere lo stesso risultato sull’oscilloscopio.
Grazie
Ciao Adriano,
si dal pin VREF dovresti vedere la forma d’onda. Che ampiezza ha il segnale che vedi all’oscilloscopio? Controlla bene l’ordine dei collegamenti all’integrato TLC752 e i collegamenti delle masse.
Ciao Ernesto,
FINALMENTE sono riuscito a visualizzare le forme d’onda (bravo very nice project) ma dopo diversi tribulamenti. Nel post precedente ti avevo accennato che avrei lasciato il pinout out1 scollegato mentre invece deve essere collegato a qualcosa che gli determini l’ampiezza, dopo averlo messo a +5 ha funzionato tutto!!! Adesso procedo a collegare il resto.
Ciao Ernesto,
mi chiedevo come mai hai messo un transistor a far da interruttore per l’attivazione del relè quando forse sarebbe bastata la sola uscita A03?
Grazie
PS: Io ho scritto una versione grafica dell’editor di funzione, so che tu ne hai già sviluppata una ,,,,,magari questa può esserti utile, dove posso inviartela?
Ciao Adriano,
le porte I/O dei uControllori, solitamente, gestiscono pochi mA.
Mi farebbe piacere dare un’occhiata.
[email protected]
Ciao Ernesto,
ho completato il progetto e mi succede una cosa strana e cioè tutte le funzioni a parte la TTL si vedono perfettamente a meno di lievissimi disturbi. Quando seleziono la TTL sull’oscilloscopio si vede una linea continua +5v.Se provo a prelevare il segnale direttamente sulla vref la vedo perfettamente…….
Hai qualche suggerimento da darmi?
Grazie
PS: Ma è possibile che solo io scrivo?
Ciao Adriano,
quando commuti in TTL il relè scatta? Se il relè commuta allora controlla la corretta configurazione dei contatti. Per sicurezza verifica anche il segnale alla base del transistor (dopo la resistenza).
Fammi sapere, resto in attesa.
Ciao Ernesto,
come ti dicevo tutti i segnali si vedono perfettamente tranne il TTL (il relè scatta e i contatti sembrano a posto).Se prelevo il segnale su R3 è TTL se lo prelevo dopo R4 è continuo. Ma questo don dovrebbe stupirci perché sulla base del transistor arriva il segnale TTL che chiude il circuito e fa passare tutta la vcc (+5v) ma il circuito è corretto?
Si il circuito è corretto 😉
Il transistor è configurato come porta NOT (funge da buffer), pertanto se sull’ingresso della R3 è presente un livello alto allora sull’uscita della R4 ci sarà un livello basso e viceversa. Controlla il transistor.
Ciao Ernesto,
avevi ragione era sbagliato il collegamento sul transistor avevo collegato la r4 tra la r2 e la VCC.Adesso funziona tutto.
grazie
Ciao Ernesto.
aspettando una tua risposta al post precedente devo confessarti che mi sto divertendo come un matto a fare questo progettino era dall’epoca dell’università che non toccavo più l’elettronica(+ di due decenni).
Prima di fare il tuo generatore di segnali ho costruito un alimentatore stabilizzato usando un alimentatore di recupero da un PC d’epoca e riesco ad avere 3.3,+5,+12,-12,+24 e con due DC/DC triggero su 24v e 12 v visualizzando i valori su due voltmetri digitali made in china. All’imterno del case dell’alimentatore c’è spazio per mettere il tuo progettino che non vedo l’ora che funzioni bene per montarcelo. Ho già saldato tutti i componenti su una pcb, ho cmq notato due problemi.
Il primo e che se giro velocemente l’encoder rotativo perde lo spin e aumenta i valori sul display indipendente che ruoti a dx o sx. Questo problema non si verifica o si verifica raramente se io ruoto l’encoder lentamente. Il secondo problemino e che nella casella di Amp sul display per i segnali diversi da TTL continua fortemente a sfarfallare con valori che vanno da 1.0 a 1.3. Si può fare qualcosa secondo te per questi problemi?
Grazie
Quello dell’encoder l’ho notato anch’io e ci sto lavorando, per il voltmetro prova ad aumentare la capacità di C1 o prova ad intervenire sullo sketch.
Mi raccomando, quando avrai finito, facci vedere il tuo progetto 🙂
Qualche giorno e monto tutto, come posso inviarvi immagini o video?
Ciao Ernesto,
ho rifatto tutto il progetto su una nuova PCB riorganizzando lo spazio che avevo scelto precedentemente nel test parziale che ho fatto sul piedino di out 1 i segnali mi vengono “scalinati” strano non mi era mai capitato fino ad ora, hai idea di cosa potrebbe essere?
Scusa e Grazie
Ciao,
controlla il condensatore C2.
Risolto, c’era dell’impurità nella saldatura dei pidini DB1 e DB2 erano in corto .
grazie cmq
Ciao Ernesto,
da tempo ho completato il tuo progetto e a fronte di questo volevo solo aggiungere qualche considerazione:
– Come ho detto in un precedente post l’encoder così configurato dava dei problemi poiché se ruotavo la manopola un po velocemente perdeva lo spin con la conseguenza che si poteva solo aumentare le grandezze e non diminuirle. Ho risolto sostituendo l’encoder con tre tasti uno di fire e due di incremento e decremento che a dire il vero mi hanno dato più soddisfazione (gusti personali).
– Ho notato che aumentando la frequenza del segnale il PIC di Arduino è troppo impegnato a chiudere e aprire le porte e il Refresh del display ne risente e talvolta fino a bloccarsi.
– Ho ritenuto opportuno modificare ulteriormente lo sketch eliminando i diversi array dei segnali e unificandoli in una sola matrice S[n,m] che mi ha consentito maggiore flessibilità e scalabilità nel codice.Il passo successivo e quello di leggere i dati della curva dalla scheda SD del TFT di Arduino.
Ho assemblato il tutto in un case e ho cablato/installato una porta USB collegata ad Arduino in modo da programmare le curve senza aprire il case.
Ho sviluppato in c# un editor di onda che mi consente anche di vedere una simulazione del segnale e di programmare il PIC dell’Arduino.
Con le opportune regolazioni sull’oscilloscopio si vede un segnale discretamente buono.
Che dire, per i miei esperimenti e per le attuazioni delle reminiscenze universitarie va più che bene anzi benissimo…..
PS:Se volete vi posso postare foto e/o video del risultato. Saluti
Ciao sarei interessato a vedere le foto del tuo progetto e anche questa modifica con i tasti
dammi la tua email
Ciao Adriano, sono curioso anch’io di vedere il tuo progetto. Posta un video su YouTube 🙂
Ciao Ernesto, complimenti per il progetto, è davvero interessante.
Vorrei realizzarlo anche io, ma premetto che non sono molto esperto.
Dalla lista materiali non trovo il DC-DC step e onestamente non mi è chiaro come e dove vada collegato, potresti darmi una dritta?
Grazie mille
Ciao Davide, il DC-DC StepUp è un elevatore di tensione; eleva i 5V prelevati dalla board di Arduino a 24V per alimentare l’operazionale (pin 8 del LM358).
Ciao Ernesto,
Ho realizzato il DC DC step-up con lo schema che hai riportato sopra ma la tensione in uscita oscilla tra i 24 – 26 V. È normale o c’è qualche problema?
Ciao Riccardo,
oscilla inteso per tensione non stabile? A vuoto o col carico?
Si esatto, non è stabile. Invece di essere 24V a vuoto, varia tra i 23 – 26 V circa.
Hai inserito tutti i condensatori, specie quello da 100nF sull’ingresso?
Controlla anche i collegamenti delle masse e sul pin 2.
Ho controllato più e più volte il circuito ma è identico a quello in figura. Non hai idea di cosa possa essere la causa di questo?
Ciao, scusa se ti rispondo in ritardo.
Sembra che l’integrato vada in autooscillazione; prova a cambiare il primo condensatore da 100nF a 150nF. Prova anche ad inserire un condensatore da 100nF in parallelo a quello da 680uF. Fammi sapere.
Ciao! Intanto ottimo progetto, complimenti davvero mi piace perché utilizza il nuovo approccio all’elettronica. Ho necessità di realizzare questo però purtroppo sono alle prime armi con eagle e farei probabilmente qualche errore nel realizzare il disegno per il PCB. Qualcuno ha un disegno pronto per questo circuito?
Ciao, purtroppo non riesco a scaricare la documentazione allegata. Il link non si apre (Firefox su iPad), o meglio rimanda a un contenuto che il browser non riesce ad aprire.
Forse non avevi ancora fatto il login. Ho appena provato e il download è funzionante.
Sì, ok, grazie.
Una volta testato il progetto con Arduino e una breadboard, per implementarlo in maniera definitiva è sufficiente procurarsi un ATMega e programmarlo?
Ciao Rodolfok,
esatto; l’ho fatto anch’io per il mio laboratorio 😉
Ciao Ernesto,
bene!
Mi domando come si potrebbe intervenire per aumentare la frequenza del segnale generato, ad es. anche eventualmente cambiando tipo di microcontrollore per superare i 100kHz. Hai per caso approfondito l’argomento con la realizzazione dell’estensione di cui parlavi?
Il limite di questo progetto sta proprio nella velocità di commutazione delle GPIO del microcontrollore. Per aumentare la velocità di lavoro non basta sostituire il tipo di micro, provato anche col SAMD21, bisognerebbe cambiare l’intero progetto utilizzando un FPGA. Si, l’estensione c’è stata. Ho realizzato una shield, per board UNO e M0, che permette l’utilizzo del generatore tramite una interfaccia grafica al PC (con Processing e PGUI). Grazie a questa ho eliminato il display, l’encoder e il potenziometro. Il progetto è stato presentato con EOS al Maker Faire 2015. Ora sto lavorando a un generatore di frequenza portatile con batteria a LiPo, senza parte meccaniche e gestito tramite rete wifi e/o AP. Frequenza max di 12 Mhz per le tre forme d’onda tramite un DDS; 1Mhz per il TTL con regolazione del Duty Cycle utilizzando un ATtiny85. Non ho ancora approfondito la parte arbitraria ma il progetto è a buon punto. Coming soon….
Molto interessante, io cerco appunto un generatore di ridotte dimensioni da aggiungere al laboratorio casalingo.
Puoi darmi qualche riferimento per l’estensione che hai fatto, un link o altro?
Complimenti, bellissimo lavoro. Mi chiedevo se era possibile ridurre le funzioni alla sola onda sinusoidale con incremento automatico della frequenza di lavoro in modo da creare un sistema automatico di spazzolamento delle varie frequenze a tensione costante. Grazie
Ciao a tutti!
Sono rimasto affascinato dalla lettura dell’articolo e vorrei farvi le seguenti domande: 1) che strumenti e componenti di arduino servono per realizzare quanto descritto ? 2) dove li posso trovare? 3) con arduino posso realizzare anche onde elettromagnetiche e guide d’onda?
Vi ringrazio infinitamente per la disponibilità.!