ho da pco iniziato a usare arduino,ed ho messo su un piccolo programma
- Codice: Seleziona tutto
#include <Wire.h> //includo le librerie
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// definizione dei pin
int ACS714 = A6;
int partitore = A0;
int lm35 = A7;
int relay = 7;
int reading = 0;
//definizione valori integer e float per calcolo valori corrente e tensione
int sensorValue = 0;
int outputValue = 0;
float vout = 0.0;
float amps = 0.0;
float vref = 5.0;
int valV = 0;
float volt = 0.0;
float R1 = 68220.0; // !! Valore della resistenza R1 !!
float R2 = 9781.0; // !! Valore della resistenza R2 !!
float corr = 1.02; // Valore di correzione lettura tensione
float temp; //Variabile in cui verrà memorizzata la temperatura rilevata
void setup() {
lcd.init(); // initialize the lcd
lcd.clear();
lcd.backlight();
pinMode(relay, OUTPUT);
analogRead(lm35);
analogRead(ACS714); // prima lettura analogica della corrente
analogRead(partitore); // prima lettura analogica della tensione
lcd.begin(16, 2); //inizializzazione lcd 16x2
delay (100);
// Test LCD
lcd.print("Test LCD OK") ; // messaggio di test
delay(1000); // pausa di 2 secondi
lcd.clear(); // cancellazione display
delay(10); // pausa per effettuazione operazione
}
void loop() {
temp = analogRead(lm35);
temp = (5.0 * temp * 100.0)/1024.0;//calcoli per trovare temperatura in gradi celsius
amps = 0.0742 * analogRead(ACS714) - 37.87;
if (amps < 0.15) amps = 0.0;
valV = analogRead(partitore); //Lettura del valore fornito dal partitore
vout = (valV * vref) / 1024.0; //Conversione del valore in di
volt = (vout / (R2 / (R1 + R2))) * corr; //Calcolo valore letto
if (temp > 28) {
digitalWrite(7, HIGH);
lcd.clear();
lcd.setCursor(13, 1);
lcd.print("on");
} else if (temp < 28) {
digitalWrite(7, LOW);
lcd.clear();
lcd.setCursor(13, 1);
lcd.print("off");
}
lcd.setCursor(0, 0); //setta il cursore sulla prima linea display
lcd.print("A "); //scrivi la parola A:
lcd.print(amps, 1); // riporta il valore calcolato degli ampere
lcd.setCursor(11, 0);
lcd.print (temp); //Stampo sul LCD la temperatura con ",1" imposto il numero di decimali dopo la virgola
lcd.setCursor(0, 1); // setta il cursore sulla prima linea display
lcd.print("V "); // scrive la parola volt:
lcd.print(volt, 1); // riporta il valore calcolato dei volt
delay (500); //pausa lettura
}
so che non e' dei migliori ma funziona...e' il primo che faccio , prendendo pezzi qui e li...
allora e' un volt\ampermetro temperatura e rele che si accende ad una tot temperatura.
funziona tutto, ma quando metto un ingresso(dopo il partitore 68k\10k e zener da 5,1volt )
si sballa la lettura della temperatura.la tensione ci da di 1.4 volt ma ci puo stare,e' da regolare qualche valore.
gli amp non so ancora ma credo che ....
ho messo in parallelo a vcc gnd del lm35 un condensatore da 100nF ma non serve a niente...
dove commetto l errore?
grazie mille in anticipo

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)








