Bene, dopo un po di teoria, vediamo qualche applicazione pratica. Prenderò come esempio il lavoro fatto sul mio Titanic.
Nel 3D dedicato ho citato Arduino nella gestione del fumo dei camini, vediamo come Arduino gestisce questa parte. In allegato lo sketch completo, da cui estrarrò solo le parti che vado a spiegare.
Prima di illustrare il codice, vi riassumo come è composto il sistema. Nei camini ci sono tre bruciatori per sigarette elettroniche. questi bruciatori lavorano a c.c.a 3,5 Volt ed assorbono al massimo c.ca 1 Ampere. I tre bruciatori sono collegati in serie, in modo da poterli agevolmente pilotare con una tensione di 12V, modulata in PWM. Visto che Arduino NON è in grado di gestire ne questa tensione ne questa corrente, utilizzo un canale di un ponte ad H come modulo di potenza. Avrei potuto usare anche un singolo Mosfet, ma al momento non ne avevo.
In serie ai tre bruciatori, verso massa, ho messo una resistenza da qualche decimo di Ohm. Ai suoi capi si genererà quindi una tensione proporzionale alla corrente che circola nei bruciatori. Questo valore lo userò per verificare se non esagero con l'alimentazione per questo componente.
L'aria inviata ai bruciatori viene prodotta da una ventolina.
Ma ora passiamo al codice
innanzitutto dichiaro, nella parte iniziale del codice, la variabile che indica l'ingresso da cui misuro la corrente assorbita dai bruciatori. Questo pin è collegato direttamente al lato "positivo" della resistenza di cui sopra.
byte sensorPin2 = A2; // Input per la misura della tensione della corrente camini
Il valore "A2" è una costante di sistema, le ho presentate nel post del 7/5, ed indica l'ingresso analogico 2.
Poi dichiaro quale pin è collegato all'uscita del canale radio che pilota il motore
byte pinCH1 = 2; // motore
In mancanza della A davanti al numero, quest'ultimo fa riferimento all'ingresso digitale 2.
Definisco poi una variabile di appoggio ove memorizzare la durata dell'impulso letto dalla radio
unsigned int durationCH1;
Infine definisco su quale pin è collegato, attraverso il driver del ponte ad H, il gruppo dei tre bruciatori.
byte pinFumo = 11; // Generatore fumo
Definisco poi altre quattro dati (una variabile e tre costanti). Nei commenti leggete il loro scopo
int sensorValue2 = 0; // corrente camini
const float Trim2 = 4.7; //parametro di conversione corrente camini.
const unsigned long massimo0 = 1000; // soglia massima della corrente assorbita dal generatore di fumo.
const unsigned long minimo0 = 600;// soglia minima della corrente assorbita dal generatore di fumo.
Infine definisco delle variabili di appoggio.
int valFumo = 0;
int valFumoAtteso = 0;
int valVentola = 0;
int valMotore = 0;
int valMassimo = 220;
Il seguito nel prossimo post.