Archivio

Archivio dell'autore

STM32 Nucleo

29 dicembre 2017 Lascia un commento

Da ottobre 2017 sto provando la scheda Nucleo 64 la quale offre agli utenti, in modo semplice flessibile ed economico, la possibilità di costruire progetti con i Microcontrollori ARM – Cortex a 32bit. La scheda STM32 Nucleo 64 prodotta da ST Microelectronics monta diversi tipi di microcontrollori in base alle esigenze dell’utilizzatore o del progettista, quella di cui io tratterò monta un STM32F401RE MCU, per maggiori  informazioni sulle caratteristiche della scheda e dell’MCU li trovate al seguente link: https://www.st.com/en/evaluation-tools/nucleo-f401re.html

en.nucleo-F4

Vorrei aggiungere alcune informazioni importanti su questa scheda, essa è nata per essere compatibile con Arduino Uno, ma con prestazioni notevolmente elevate tale da renderla una scheda di livello professionale. 

Ulteriori specifiche tecniche sul prodotto sono reperibili sempre sul sito della ST: https://www.st.com/en/evaluation-tools/nucleo-f401re.html#documentation 

Qui trovate lo schema elettrico della scheda: MB1136

La programmazione dell’STM32 si basa essenzialmente con IDE commerciali, la ST suggerisce di utilizzare i seguenti software: 

  • STSW-LINK009 ST-LINK, ST-LINK/V2, ST-LINK/V2-1 USB driver per Windows7, Windows8, Windows10, programma per il riconoscimento della scheda e per l’upgrade del firmware della scheda.
  • STM32CubeMX   STM32Cube programma per la generazione del codice di configurazione hardware della scheda, (vista le potenzialità della scheda questo Tool ne rende facile la configurazione).
  • Atollic TrueSTUDIO_Win Ide di programmazione basata su Eclipse® CDT.

Leggi tutto…

Categorie:STM32 Nucleo-64

Decennale “Lab. Ferraris”

8 novembre 2017 Lascia un commento

Nei dieci anni della mostra interattiva temporanea “Fisica al Ferraris” poi chiamata “Lab. Ferraris” che si tiene ogni anno dal 1° dicembre al 10 dicembre, ho fatto fare e presentare agli allievi diversi progetti, alcuni di questi li ritengo più validi e ne pubblico gli articoli dove potete visionarli ai seguenti link:

In questa 10° edizione dal 1 dicembre al 12 dicembre 2017 ho fatto sviluppare ai ragazzi dei progetti, uno riguarda la prototipazione e stampa di oggetti 3D, utilizzando come software Blender e Tinkercad per la creazione degli oggeti 3D e Cura per la stampa, l’altro progetto riguarda un parcheggio automatico gestito da PLC.

Il PLC utilizzato è lo Zelio ed è stato programmato in ladder con il software in dotazione ZelioSoft2. Oltre al PLC si sono serviti di Arduino 1 per la gestione dei sensori e dei motori stepper.

Quest’ultimo progetto piuttosto articolato ha visto impegnati gli allievi anche nella preparazione di un video che ne spiega il funzionamento ed è pubblicato su YouTube.

Leggi tutto…

Categorie:Senza categoria

Preamplificatore a FET per RTX

30 agosto 2017 Lascia un commento

Da tempo mi dedico alla trasmissione in bande radioamatoriali ed avendo la necessità di adattare una tradizionale cuffia con microfono al mio ricetrasmettitore ho cercato su alcune riviste di trovare la soluzione più idonea, il suggerimento però, mi viene dato da un collega radioamatore che aveva già provato alcuni circuiti tra cui anche quello che illustrerò in questo articolo.  Il circuito preamplificatore è composto da un FET e un BJT, come primo componente viene inserito il FET che ha la caratteristica di avere una impedenza di IN elevata ed un guadagno in corrente elevata, mentre il guadagno in tensione è modesto, infatti verrà incrementato dal BJT in configurazione emettitore comune, ecco lo schema:

Snap1

Come è possibile vedere dallo schema, l’uscita del FET  il “Drain” è collegato alla base del BJT che ne amplifica il segnale portandolo ad un valore in dB di circa 4 e corrispondente ad un valore in tensione di 1,6 V, questo valore basso è indicato per l’ingresso microfonico del ricetrasmettitore, infatti un valore più alto porterebbe il ricetrasmettitore alla saturazione e ad innesco. Riassumendo il FET amplifica il segnale in corrente mantenendolo costante, mentre il BJT amplifica il segnale in tensione. Dopo averlo montato ho notato subito le ottime prestazioni, non contento ho eseguito una simulazione con Pspice per determinare le caratteristiche di questo circuito, ricavandone la banda passate e l’amplificazione. La banda passante risulta essere di 49,9 MHz, e le due frequenze di taglio sono la fb a 1,4Hz la fh a 47Mhz ed il guadagno è di 4,349 dB. Dalla seguente figura è possibile valutare i risultati:

Snap1

Ovviamente per ottenere questi risultati ho modificato i valori dei condensatori di IN/OUT allargando la banda passante soprattutto a frequenze basse.

Chi desidera ottenere lo schema elettrico con i valori ottimizzati per queste prestazioni, può richiederlo al seguente link:

PayPal

Categorie:Sperimentazione Tag:

Impianto di apri-cancello elettrico automatico con PLC Lovato

13 agosto 2016 3 commenti

Impianti industriali

Scopo del progetto:

Lo scopo del progetto è la realizzazione di un impianto di apri-cancello elettrico automatizzato in apertura e chiusura con il riconoscimento del passaggio di ostacoli nella zona di azione del cancello e nel caso, correggere il funzionamento in base all’esigenza verificatasi, con relativa segnalazione del funzionamento dello stesso e dell’intervento di eventuali guasti.

Composizione dell’impianto:

L’impianto è costituito da una serie di dispositivi elettromeccanici ed elettronici riportati nel disegno allegato e qui di seguito elencati:

  • Dispositivo di comando con pulsante a radiocomando
  • Motore asincrono trifase/monofase per l’azionamento in avanti e indietro
  • Dispositivo a fotocellule
  • Dispositivo di posizione
  • Condizioni di partenza:
  • Il motore fermo
  • Il pulsante a radiocomando (In posizione di zero NA)
  • Il sensore a fotocellula non attivato(contatti NA;NC)
  • Lampeggiante spento

Ciclo di lavoro:

L’operatore aziona con con il radiocomando il cancello

  • esso viene mosso dal motore che si aprirà fino alla massima apertura consentita, tarato a tempo in fase di prova, azionando anche il lampeggiante
  • avverrà l’arresto tramite fine della temporizzazione del tempo di apertura
  • per diversi secondi rimarrà fermo per consentire il passaggio dei mezzi attraverso il cancello
  • ripartirà nel verso opposto chiudendo il cancello utilizzando gli stessi tempi della fase di apertura
  • se si trova, in fase di chiusura ed un ostacolo interrompe il raggio di azione del cancello esso si arresta
  • resta pochi secondi fermo
  • riparte nel senso di apertura riprendendo dal ciclo 1
  • se nessun ostacolo è presente, il cancello arriverà alla massima chiusura consentita
  • avverrà l’arresto con lo spegnimento del lampeggiante.

Nota:

Al candidato si richiede la progettazione dell’impianto assegnato, ed in particolare.

Dimostrare la corretta e completa comprensione del progetto assegnato realizzando:

  • Il flow chart dell’impianto
  • Programmazione in linguaggio ladder per PLC Lovato
  • Verifica del funzionamento, mediante simulazione

Il candidato può utilizzare il linguaggio più congeniale per la programmazione,(LADDER o FBD) riportando il relativo listato, inoltre dovrà riportare la tabella degli indirizzi I/O utilizzati del PLC, attenendosi sempre al nome simbolico assegnato nella tabella allegata. Bisogna riportare inoltre uno schema di un prototipo di impianto di apri-cancello e lo schema elettrico del circuito del PLC.

 

Schema dei collegamenti al PLC, ingressi utilizzati 3 (radiocomando e due coppie di fotocellule)

Immagineplcsim

le uscite sono tutte rappresentate come lampade e sono indicative (es.. Q1 elettroserratura, Q2 lampeggiante, Q3 Motore avanti, Q4 Motore indietro)

Foto della realizzazione:

PLC Lovato

 

Categorie:PLC

Transistor utilizzato come interruttore per invertire il senso di marcia di un motore in CC

21 luglio 2016 Lascia un commento

Quando si vuole comandare un motore in CC molto spesso si utilizzano dei relè per effettuare lo scambio della rotazione, in effetti questo si traduce nello scambio del positivo con il negativo. Utilizzando i relè si ha la sicurezza che lo scambio avvenga in modo certo ed evita i cortocircuiti durante l’inversione del senso di rotazione, inoltre si ha la certezza che si possono comandare carichi, cioè motori in CC, di diversa potenza infatti, la potenza dipende appunto dalla capacità dei contatti del relè  a far passare la corrente. Ma se conosciamo la potenza del nostro motore in CC possiamo dimensionare dei circuiti elettronici utilizzando dei comunissimi transistor interruttori.

A tal proposito vi propongo tre possibili configurazioni, una con alimentazione duale, cioè con tensioni di alimentazioni +6V e -6V (ovviamente la tensione riportata dipende sostanzialmente dall’alimentazione del motorino)  l’altra con alimentazione singola +6V, e la terza comandato con arduino 1

Gli schemi e la loro relativa simulazione  sono reperibili al seguente indirizzo web dell’Autodesk:

Flow chart del listato su arduino:Flowchart arduinoMCC

 

Categorie:Sperimentazione

Analisi del 2015

30 dicembre 2015 Lascia un commento

I folletti delle statistiche di WordPress.com hanno preparato un rapporto annuale 2015 per questo blog.

Ecco un estratto:

La sala concerti del teatro dell’opera di Sydney contiene 2.700 spettatori. Questo blog è stato visitato circa 13.000 volte in 2015. Se fosse un concerto al teatro dell’opera di Sydney, servirebbero circa 5 spettacoli con tutto esaurito per permettere a così tante persone di vederlo.

Clicca qui per vedere il rapporto completo.

Categorie:Senza categoria

Scrutinio automatico in Excel

20 giugno 2015 1 commento

Spulciando tra i miei file, mi ritrovo un file in Excel, creato da me, che esegue in modo automatico lo scrutinio delle terze classi di qualifica di un Istituto Professionale.

Premesso che nel passato ho insegnato per diversi anni in un Istituto Professionale, maturando una certa esperienza nello svolgimento degli esami di qualifica. Infatti, rivedendo il file mi ricorda la fatica che si faceva nello svolgere lo scrutinio di ammissione ed i meccanismi piuttosto articolati e complessi per il calcolo della media dei voti per giungere alla qualifica professionale.

Affinché queste operazioni avvenissero in modo semplice veloce e preciso, avevo predisposto un foglio di lavoro Excel, composto da una prima pagina come in figura;home

dove venivano indicati con dei pulsanti i vari percorsi da seguire, ad esempio iniziare con il caricamento dei dati della classe. Si prosegue con una seconda scheda come da figura;

pag1

che mostra tutte le materie suddivise per voto curriculare e strutturato, mentre a sinistra si inseriscono i nominativi degli allievi, infine, in base alla deliberazione del C.d.c. si stabiliva il peso da attribuire al voto curriculare (es. 70%) rispetto a quello della prova strutturata (es. 30%), come ultimo parametro si impostava il voto medio minimo di ammissione (vedi normativa), fatto ciò si caricavano i voti e contestualmente venivano evidenziati i voti al di sotto della sufficienza e l’esito dello scrutinio di ammissione (ammesso/non ammesso). Terminato di caricare i dati, visti i risultati e deliberato uno per uno, si procedeva alla stampa del tabellone dove venivano apposte le firme per disciplina. Il tabellone è collocato in un’altro foglio di lavoro come mostrato in figura.

tabellone

Chi desidera utilizzarlo può richiederlo al seguente link:
PayPal

Categorie:EXCEL

Analisi del 2014

30 dicembre 2014 Lascia un commento

I folletti delle statistiche di WordPress.com hanno preparato un rapporto annuale 2014 per questo blog.

Ecco un estratto:

La sala concerti del teatro dell’opera di Sydney contiene 2.700 spettatori. Questo blog è stato visitato circa 12.000 volte in 2014. Se fosse un concerto al teatro dell’opera di Sydney, servirebbero circa 4 spettacoli con tutto esaurito per permettere a così tante persone di vederlo.

Clicca qui per vedere il rapporto completo.

Categorie:Senza categoria

Arduino “gestione di una serra automatica”

11 giugno 2014 12 commenti

Progetto per la gestione di una serra automatizzata

519-y7vsUrL._AC_Il progetto mira a gestire il clima all’interno di una serra con l’ausilio di arduino 1. Il controllo effettuato riguarda la temperatura e l’umidità, infatti, superato un certo valore di temperatura vengono comandate delle ventole di areazione e l’apertura di una tenda, questi controlli vengono gestiti da due arduino 1, di cui uno utilizzato per il controllo della temperatura ed umidità e l’altro per il controllo del motore passo passo utilizzato per aprire e chiudere la tenda. La serra include anche il controllo delle luci in funzione delle variazioni di luminosità tra il giorno e la notte, detto controllo è gestito con un semplice crepuscolare.

Caratteristiche della serra:

  • Struttura metallica
  • Rivestimento in plexiglass
  • Due aperture una in alto una laterale
  • Tappetino color verde (simula prato)
  • Motore passo passo per apertura laterale
  • Driver motore passo passo
  • Fotoresistore con circuito crepuscolare
  • Serie di leds ad alta luminosità
  • Sensore DHT11 (temperatura – umidità)
  • Display LCD 2X16
  • Due arduino 1
  • BC337
  • Due ventole a 5Vccipotesi di serra

Schema elettrico di collegamento dello “Stepper” (motore passo passo)

Stepper

Lo schema rappresenta  il controllo della tendina comandata da SW2 che simula il comando (0/1) inviato dall’altro “Arduino uno” che effettua il controllo di temperatura e umidità.

listato in C:

//Autor Francesco Spina

const unsigned char STEP_UP = 1;
const unsigned char STEP_DOWN = 0;
const unsigned char READY = 2;

// da cambinare in base al tipo di stepper
const unsigned int delayTime = 5;
const unsigned int numCycles = 35;

const unsigned int motorPin1 = 8;
const unsigned int motorPin2 = 9;
const unsigned int motorPin3 = 10;
const unsigned int motorPin4 = 11;

unsigned char last_status = 0;
const int buttonState = 2; // impulso che proviene dall’altro arduino controllo temp. e umidità

void setup()
{
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(buttonState, INPUT);
last_status = LOW;
}

char reset_stepper(unsigned char stepper_state, unsigned char type)
{
if (type == STEP_UP && stepper_state == 3)
return -1;
else if (type == STEP_DOWN && stepper_state == 0)
return -1;
else if (type == STEP_UP)
stepper_state++;
else stepper_state–;

return stepper_state;
}

void stepper()
{
char i = 0, j, type;

type = (digitalRead(buttonState)) ? STEP_UP : STEP_DOWN;

if (type == STEP_UP) i = 0;
else i = 3;

for (; i >= 0 && i < 4;)
{
digitalWrite(8+i, HIGH);

for (j = 0; j < 4; j++)
{
if (i == j) continue;

digitalWrite(8+j, LOW);
}

i = reset_stepper(i, (digitalRead(buttonState)) ? STEP_UP : STEP_DOWN);

delay(delayTime);
}
}

void wait_for_status_change()
{
while (last_status == digitalRead(buttonState));
last_status = digitalRead(buttonState);
}

void loop()
{
wait_for_status_change();

for (unsigned i = 0; i < numCycles; i++)
stepper();
}

Schema elettrico del controllo di temperatura e umiditàcontrollo temp-umid

controllo temp-umid2

il pin 13 passa a 1 se la temperatura supera i 21 gradi, questo comando viene inviato al pin 2 del primo arduino.

Ecco il listato del programma in C per il controllo di temp. e umidità:

//Autor Francesco Spina

// carico le librerie
#include <LiquidCrystal.h>
#include “DHT.h”
// definisco il pin del sensore
#define DHTPIN 8
// definisco il tipo di sensore
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// definisco a quali pin è connesso il display
LiquidCrystal lcd(12, 11, 4, 3, 2, 1);
// definisco che il pin 13 è quello a cui è connesso il led
const int ledPin = 13;
void setup() {
// setto il tipo di display (colonne, righe)
lcd.begin(16, 2);
// scrivo sul display le parole fisse
lcd.print(“Temp.”);
lcd.setCursor(0,1);
lcd.print(“Umidita’”);
pinMode(ledPin, OUTPUT);
}
void loop() {
int t = dht.readTemperature();
int u = dht.readHumidity();
// posiziono il cursore alla colonna 9 e riga 0
lcd.setCursor(9, 0);
lcd.print(t);
lcd.print(“*C”);
lcd.setCursor(9, 1);
lcd.print(u);
lcd.print(” %”);
delay(4000);
// setto il limite di temperatura minore a 21 gradi
if (t >= 20)
{
//accendo il LED
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
// scroll one position left:
lcd.scrollDisplayLeft();
// wait a bit:
delay(150);
}
digitalWrite(ledPin, HIGH);
lcd.setCursor(24,0);
lcd.print(“Heat”);
lcd.setCursor(24, 1);
lcd.print(“Acceso”);
}
else
{
for (int positionCounter = 0; positionCounter < 16; positionCounter++) {
// scroll one position right:
lcd.scrollDisplayRight();
// wait a bit:
delay(150);
}
// spengo il LED
digitalWrite(ledPin, LOW);
lcd.setCursor(24,0);
lcd.print(“Cool”);
lcd.setCursor(24, 1);
lcd.print(“Spento”);
}
}

Come si può notare dal listato, per visualizzare contemporaneamente la temperatura, l’umidità e lo stato del pin 13 e quindi le due condizioni caldo-freddo è stata utilizzata la libreria lcd.scrollDisplayLeft(), così calcolando con un ciclo for la corretta posizione in funzione delle dimensioni del testo è possibile visualizzare tutte le informazioni.

Schema elettrico completo della serra controllata con Arduino

controllo temp-umid_stepper

Ecco le foto della serra durante la messa a punto e del collaudofoto-3foto-1

Categorie:Arduino

Robot EV3 Midstorms


In quest’anno scolastico 2013/2014 ho fatto montare ad alcune classi dell’IIS G. Ferraris di San Giovanni la Punta, il nuovo robot EV3 della Midstorms. Dal sito ufficiale Midstorms http://www.lego.com/it-it/mindstorms/, ho scaricato le istruzioni di montaggio di alcuni modelli ed il software, che viene fornito in forma freeware. Navigando inoltre su Internet ho trovato un interessante supporto sul nuovo EV3, fornito da un robotics engineer “Daniele Benedettelli”, dal quale ho comprato una sua pubblicazione, più precisamente il testo dal titolo The LEGO MINDSTORMS EV3 Laboratory, nel quale sono presenti alcuni interessanti modelli.

Il testo è reperibile al seguente link: http://robotics.benedettelli.com/publications/lego-mindstorms-ev3-lab-book/

Vi elenco i modelli montati dai ragazzi con relative foto:

Laboratorio

foto 5

 

 EV3R

foto 1

foto 2

foto 3

 

EV3-31313_TRACK3R

31313_TRACK3R

31313_TRACK3R

31313_TRACK3R
foto 5 (2)


31313 SPIK3R

 31313 SPIK3R

 31313 SPIK3R

 

Video:

 

Categorie:Midstorms EV3