Totem Mini Lab: il laboratorio elettronico portatile perfetto per studenti e maker

Conosciamo un’interessante piattaforma didattica che permette di realizzare e studiare una vera moltitudine di circuiti elettronici e relative applicazioni

Tra le tecniche per avvicinare studenti e giovanissimi, quella di utilizzare ecosistemi legati alle schede di prototipazione come Arduino si è rivelata molto efficace; accanto ad essa e, possiamo affermare, in sinergia con essa, si è sviluppata una serie di mini-laboratori e kit da esperimenti.

Tra questi ci sembra interessante segnalare Totem Mini Lab, che è un piccolo ma potente laboratorio di elettronica portatile e da banco per sperimentare e apprendere le basi dell’elettronica.

Pienamente compatibile con l’ambiente di programmazione Arduino, giacché basato su una scheda Arduino-like, Totem Mini Lab comprende una varietà di strumenti di misura e blocchi elettronici pronti all’uso per esperimenti.

Pensato per essere utilizzato insieme al sistema di costruzione Totem, consente di costruire compatti banchi da lavoro con breadboard integrate, risparmiandoci collegamenti volanti. Inoltre è compatibile con le schede di espansione I/O, sensori e audio, che possono espandere ulteriormente le capacità.

L’uso di Totem Mini Lab è semplice e accattivante, anche perché non sarà più necessario preoccuparsi di realizzare cablaggi, spesso disordinati, connessioni precarie, ecc. come ad esempio quando con i jumper si cablano le varie breakout board con Arduino: qui siamo di fronte a un telaio che ospita, già interconnesse, le board necessarie e che raggruppa tutta l’elettronica basilare del laboratorio.

Da cosa è composto il Totem Mini Lab

Il cuore dell’elettronica è una speciale versione di Arduino UNO chiamata TotemDuino e sviluppata appositamente.

Vediamo dunque quali elementi compongono il kit da esperimenti Totem, partendo da quel che c’è nella confezione:
• TotemDuino;
• LabBoard, che è una piattaforma di sperimentazione e misurazione;
• flat-cable a 34 pin per interconnettere TotemDuino e LabBoard;
• telaio da assemblare per la costruzione di banchi da lavoro Totem;
• alimentatore da rete (220 Vca/12 Vcc 1,5 A) per alimentare il vostro laboratorio;
• 2 breadboard da 700 contatti per collegare componenti e circuiti esterni allo scopo di ampliare l’area di sperimentazione quando non bastano gli elementi sul telaio;
• 40 Jumper maschio-maschio lunghi circa 20 cm + Set di 140 cavetti jumper per effettuare collegamenti sulle basette sperimentali;
• cavo USB-mini USB 2.0 lungo 1 metro per collegare TotemDuino al Personal Computer.

Completa il tutto un manuale tecnico in inglese riccamente illustrato, che spiega come iniziare a lavorare e l’utilizzo delle parti Totem per la costruzione di un banco da lavoro.

Board principale

Spendiamo ora qualche riga per approfondire il discorso sulla scheda principale di Totem MiniLab, mostrata nella Fig. 1.

Fig. 1 La board base del sistema

 

Questa scheda incorpora un certo numero di periferiche e interfacce e può avere un duplice utilizzo.

Può essere utilizzata sia come scheda di espansione per il sistema TotemDuino (giacché rende disponibili connessioni di ingresso e uscita facilmente accessibili) sia come unità di misura e test.

La scheda contiene i seguenti moduli:
• sezione compatibile con gli Shield di Arduino;
• tensioni di uscita disponibili:
– 12 V/1 A – tensione di alimentazione diretta
– 5 V/0,5 A – tensione di alimentazione regolata, condivisa con TotemDuino.
– 3,3V/0,25 A – tensione di alimentazione regolata, condivisa con TotemDuino e LabBoard processore;
-5V/0,5A – tensione regolata separata, per la sperimentazione con amplificatori;
– uscita di tensione programmabile da 0 a 3,3 V, fino a 0,35A;
• convertitore digitale/analogico;
• misura della tensione:
– ±0,5 V da utilizzare quando si misurano segnali di piccola ampiezza;
– ±5V per misurare segnali con livello logico TTL;
– ±50 V per la misurazione di segnali esterni;
• misura della corrente fino a 800 mA;
• frequenzimetro con capacità di misura di segnali fino a 1 MHz;
• contatore di impulsi fino a 999.999.999;
• generatore di impulsi arbitrari, in grado di generare una serie di impulsi con larghezza e periodo programmabili.

TotemDuino

Pienamente compatibile con Arduino UNO, la scheda che costituisce il cervello della piattaforma TotemDuino dispone delle seguenti funzionalità:
• protezione I/O; tutti i pin di uscita che entrano nella LabBoard sono protetti da sovratensioni o cortocircuiti;
• connettore di espansione per flat cable a 34 pin che permette di collegare TotemDuino alla LabBoard, facilitando l’accesso ai pin;
• regolatore di tensione a 5V per alimentare carichi di potenza relativamente elevata;
• tensione della logica del microcontrollore selezionabile tra 5 V e 3,3 V.

La scheda è dunque una board con core Arduino UNO, ma dotata di connessioni e configurazione hardware ottimizzata per l’ambiente Totem. Il layout dei componenti della scheda è mostrato nella Fig. 2.

Fig. 2 Layout della board TotemDuino

Telaio MiniLab

Una caratteristica della piattaforma Totem è che si basa su un telaio che raggruppa l’elettronica, quindi la sperimentazione diventa facile e non comporta l’avere il banco disseminato di schede elettroniche in disordine; tutto è organizzato su un telaio tridimensionale che permette di vedere e collegare facilmente tutti gli elementi a bordo. Questa struttura rende semplice da aggiornare ed espandere: basta aggiungere le parti meccaniche o elettroniche richieste dall’applicazione.

Inoltre comprende tutti gli elementi meccanici necessari per l’assemblaggio del telaio.

La struttura basata sul telaio è compatta a tal punto che, se serve, è possibile spostare il circuito realizzato dal banco del laboratorio direttamente sul campo, ad esempio per testare in pratica un’applicazione simulata; il tutto in un sol corpo, senza doversi far aiutare per lo spostamento e per sostenere schede, fili ed eventuali altri elementi “volanti”.

Questa caratteristica del sistema Totem, lo scoprirete utilizzandolo, è particolarmente apprezzabile e fa la differenza con le soluzioni concorrenti.

Pannelli laterali di espansione

Il sistema Totem MiniLab prevede una serie di pannelli laterali opzionali che contengono moduli elettronici separati e pronti all’uso, come ad esempio display, sensori, interruttori e quant’altro può essere necessario aggiungere per realizzare particolari esperimenti.

Nella Fig. 4 è proposto il Totem MiniLab dotato di quelli che chiamano “Side Panels” e di una breakout board applicata al telaio e pronta per l’interconnessione. I pannelli laterali contengono componenti e moduli che vengono spesso utilizzati durante il test di un progetto embedded.

Fig. 4 Totem MiniLab completo di Side Panels e modulo AD9833

 

Questo consente di risolvere molti problemi tipici dei circuiti sperimentali che richiedono molti elementi.

Un altro problema quando si costruiscono prototipi, o si desidera semplicemente testare un codice per un progetto, è connettere determinati componenti elettronici ad Arduino, perché a volte è difficile da fare e può causare errori di connessione e talvolta danni derivanti da essi, giacché molti componenti non si adattano bene a una breadboard e vanno connessi volanti.

Il bello di Totem è che ha già molti componenti a bordo (Fig. 5) da interconnettere per la realizzazione degli esperimenti e che la sua struttura semplifica l’aggiunta di elementi esterni.

 

Fig. 6 Generatore di funzioni: è posto sul Side Panel 3 ed è basato sull’integrato AD9833. La frequenza è sintetizzata a partire da quella dell’oscillatore di clock quarzato a 25MHz

 

I pannelli laterali (Side Panel) presentano blocchi che realizzano diverse funzioni frequentemente utilizzate: ci sono circuiti audio, generatore di funzioni e amplificatore BF con altoparlante.

Gli altri pannelli laterali sono dotati di dispositivi di input come potenziometri e interruttori, driver per relé e driver per motori in c.c. Sono presenti anche driver per LED e un display OLED da impiegare nei rogetti più complessi quando serva visualizzare valori e indicazioni.

Utilizzo del generatore di funzioni

Dopo avervi introdotto la piattaforma Totem MiniLab, per darvi un’idea di quello che ci si può fare vi proponiamo la realizzazione di un’esercitazione che meglio d’ogni parola espone ed esplica le potenzialità del sistema: andremo a utilizzare il generatore di funzioni on-board basato sull’integrato AD9833, che permette di generare forme d’onda sinusoidali, triangolari e quadre/rettangolari.

Il generatore di frequenza è controllato dalla scheda Arduino mediante tre pin di I/O, che è l’interfaccia SPI nel codice ARDUINO (Serial Programming Interface). Useremo l’amplificatore audio incluso per ottenere un’ampiezza maggiore dal generatore di frequenza e posizioneremo il potenziometro del volume al massimo, sempre allo scopo di massimizzare l’ampiezza disponibile.

Notate che è possibile ascoltare il segnale inserendo un jumper sui contatti (header) denominati “SP ON” che si trovano appena sopra l’altoparlante a destra.

Testare la frequenza di taglio di un filtro passa-alto

L’esperimento che mostreremo qui utilizzerà il generatore di funzioni per produrre un segnale sinusoidale che verrà inviato a un semplice filtro LC passa-alto.

Poiché misureremo solo onde stazionarie, non è necessario far corrispondere le impedenze di uscita del generatore e di ingresso del filtro; non sarà, invece, possibile utilizzare tale filtro per i segnali transitori, ma qui non è un problema perché ci interessa semplicemente trovare la frequenza di taglio.

La Fig. 9 propone lo schema del filtro e la collocazione dei relativi componenti sul Side Panel corrispondente.

 

Fig. 9 Schema elettrico del filtro passa-alto LC e sua implementazione sul Side Panel di TotemMiniLab

 

Quando si misurano le forme d’onda sinusoidali, la cosa migliore è rettificare la forma d’onda e creare una tensione unidirezionale e quasi continua, che l’ADC di Arduino può misurare con precisione.

Allo scopo, all’uscita del filtro andiamo a collegare un piccolo circuito chiamato rilevatore di picco, insieme a un diodo di bloccaggio. Il diodo di bloccaggio (è uno Schottky collegato in modo da tagliare le semionde negative) assicura che il segnale a valle del circuito, ossia ai suoi capi, sia tutto positivo (sopra lo zero volt).

Il circuito rilevatore di picco restituisce sul catodo del secondo Schottky (quello in serie al condensatore) una tensione a vuoto che idealmente è pari a quella di picco dell’onda sinusoidale (in realtà è pari al picco diminuito della minima caduta diretta sul diodo Schottky), il che permette di ottenere una componente continua proporzionale all’ampiezza del segnale sinusoidale uscente dal filtro passa-alto (Fig. 10).

Fig. 10 Funzionamento del rilevatore di picco impiegato per preparare il segnale da inviare all’ADC di Arduino: il diodo di sinistra taglia le semionde negative del segnale disaccoppiato dall’elettrolitico, mentre D2 lascia che le semionde positive passino a caricare C1, impedendo la scarica di quest’ultimo in quelle negative

 

Conoscendo l’ampiezza del segnale di ingresso possiamo desumere la frequenza di taglio perché è quella in corrispondenza della quale il rapporto tra tensione d’uscita e tensione d’ingresso vale 0,5 ossia -6dB (ricordiamo che si tratta di un filtro del second’ordine). La frequenza di taglio del nostro filtro è data dalla for­mula:

fc= 1 / (2*π*√LC )

e con i valori previsti dall’esperimento, riportati nello schema elettrico del filtro in Fig. 9, è teoricamente 340 Hz. Va comunque notato che può discostarsi in base alla tolleranza dei componenti, come vedremo analizzando i risultati dell’esperimento condotto.

Listato 1

// Basic MD_AD9833 test file
//
// Initialises the device to default conditions
//
#include <SPI.h>

#include <Wire.h>

#include <MD_AD9833.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

//Define screen size in pixel
#define SCREEN_WIDTH 128 // OLED display width
#define SCREEN_HEIGHT 64 // OLED display height

// Declaration for an SSD1306 display
#define OLED_RESET - 1
// Reset pin # (or -1 if sharing Arduino reset pin)

//Initialize display
Adafruit_SSD1306 display(SCREEN_WIDTH,
  SCREEN_HEIGHT, & amp; Wire, OLED_RESET);

// Pins for SPI comm with the AD9833 IC
#define DATA 11 ///< SPI Data pin number
#define CLK 13 ///< SPI Clock pin number
#define FSYNC 10 ///< SPI Load pin number
#define SAMPLES 64

MD_AD9833 AD(FSYNC); // Hardware SPI

int freq;
int buffer[SAMPLES];

void setup(void) {
  Serial.begin(57600);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.display();
  display.clearDisplay();
  AD.begin();
  freq = 100;
  AD.setMode(MD_AD9833::MODE_SINE);
}

void graphSpectrum(void) {
  int i;
  display.clearDisplay();
  for (i = 0; i & lt; SAMPLES; i++) {
    int value = buffer[i] / 4;
    display.drawLine(i * 2, 63 - value, (i * 2) + 1,
      63 - value, SSD1306_WHITE);
  }
}

int minfreq;
int maxfreq;
int stepF;

void frequencySweep(int minf, int maxf, int steps) {
  minfreq = minf;
  maxfreq = maxf;
  stepF = (maxf - minf) / steps;
  AD.setMode(MD_AD9833::MODE_OFF);
  delay(150);
  AD.setMode(MD_AD9833::MODE_SINE);
  int f = minf;
  for (int i = 0; i & lt; steps; i++) {
    AD.setFrequency(MD_AD9833::CHAN_0, f);
    f += stepF;
    delay(50);
    buffer[i] = analogRead(A0) / 4;
  }
}

void calculateFreq() {
  //search for min and max
  int minv = 255, maxv = 0;
  int mini = 0, maxi = 0;
  for (int i = 0; i & lt; SAMPLES; i++) {
    if (minv & gt; buffer[i]) {
      minv = buffer[i];
      mini = i;
    }
    if (maxv & lt; buffer[i]) {
      maxv = buffer[i];
      maxi = i;
    }
  }

  int f = 0;
  for (int i = 0; i & lt; SAMPLES; i++) {
    //find the value that goes -3dB from max:
    if (buffer[i] & gt;
      (maxv / 2)) {
      f = i;
      break;
    }
  }

  //Print on serial
  Serial.print(“max: ”);
  Serial.print(maxv);
  Serial.print(““);
  Serial.print(buffer[f]);
  Serial.print(““);
  Serial.println(f);

  //Print on display
  display.drawLine(f * 2, 0, (f * 2),
    display.height(), SSD1306_WHITE);
  char message[16];
  sprintf(message, ”fc: % d Hz”, minfreq + (stepF * f));

  display.setTextSize(2);
  display.setTextColor(SSD1306_BLACK,
    SSD1306_WHITE);
  display.setCursor(0, 0);
  display.print(message);
}

//loop routine
void loop(void) {
  //collect samples
  frequencySweep(20, 1000, SAMPLES);
  //update screen
  graphSpectrum();

  //calculate limit freq
  calculateFreq();
  display.display();
}

Lo sketch ARDUINO

Andiamo dunque a vedere il firmware da caricare in Arduino, che esegue automaticamente il test di misura della frequenza di taglio nel circuito completo implementato sulla piattaforma e mostrato in Fig. 11.

Per svolgere il compito, lo sketch utilizza alcune librerie per le funzioni dell’elettronica disponibile sul pannello laterale, come SPI.h per la comunicazione seriale a 3 fili con il generatore di frequenza AD9833 e Wire.h per la comunicazione seriale I²C.

Il firmware include anche la libreria MD_AD9833.h per la gestione del chip generatore di funzioni AD9833 e provvede alla gestione del display OLED da 128×64 pixel utilizzando le librerie specifiche di Adafruit Adafruit_SSD1306.h e Adafruit_GFX.h per disegnare e scrivere sul display.

Fig. 11 Il circuito realizzato per misurare la frequenza di taglio di un filtro passa-alto LC. Il Side Panel (a sinistra) contiene generatore di segnale, filtro e amplificatore, mentre il display OLED si trova sul Side Panel 2, dopo il Side Panel 3. Sulla breadboard trova posto il rilevatore di picco

 

Nel nostro progetto, i risultati della scansione di frequenza e quindi dello sweep vengono visualizzati su un display OLED sul Side Panel 2 sotto forma di curva di risposta in frequenza (Fig. 12). Ciascuna misura viene memorizzata in un array di dati e tracciata come pixel sul display.

Quindi la frequenza di taglio viene calcolata e scritta. Il display è controllato dall’Arduino tramite il bus I²C. La TotemDuino utilizza la libreria Wire.h per la comunicazione su bus I²C attraverso i pin di I/O A4 (SDA) e A5 (SCL).

Fig. 12 Utilizzando il display OLED sul Side Panel 2 vsualizziamo la curva di risposta in frequenza e la frequenza di taglio calcolata

 

Il codice, mostrato per intero nelle schermate di Fig. 13, mostra quanto sia facile utilizzare i diversi moduli nei pannelli laterali (Side Panel) e la maggior parte del codice riguarda lo sweep di frequenza, le misurazioni e la visualizzazione del risultato.

Lo sweep serve per inviare all’ingresso del filtro uno spettro di frequenze abbastanza ampio da poter poi verificare l’andamento dell’ampiezza all’uscita, vale a dire sul condensatore del filtro sotto esame.

Conclusioni

L’esperimento appena condotto mostra che con metodi semplici, Arduino o comunque una scheda Arduino-like come la TotemDuino può essere utilizzata per misurazioni automatizzate in circuiti elettrici ed elettronici essenziali.

Il filtro LC che abbiamo usato in questa configurazione è stato la dimostrazione di come si possano compiere misure, ottenendo risultati numerici ed anche grafici, grazie alla possibilità di utilizzare il piccolo display OLED come output dei dati.

L’esercitazione può essere una base da espandere, ad esempio inviando i risultati ad un PC per avere uno schermo migliore per mostrare i grafici.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Menu