EnergiAlternativa

Page Index Toggle Pages: 1 ... 4 5 [6] 7 8 ... 19 Send TopicPrint
Hot Topic (More than 100 Replies) Voltmetro, Amperometro, Wattmetro, Contatori Assor (Read 173514 times)
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #75 - 25.09.13 at 12:06:00
Print Post  
Sisi lo schema con il piccolo trasformatore viene usato usato per rilevare la tensione di rete.

Per il resto credo che sia tutto ok .....

Buon lavoro
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
dinoch
Ex Member
*


--------

Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #76 - 02.10.13 at 09:18:00
Print Post  
Sto facendo anche io delle prove.. ma dopo aver fatto una taratura intorno ai 60W di assorbimento quando assorbo circa 1200W (misurati con amperometro) l'uscita di arduino mi dice che sono altre 5000.. Devo rivedere lo Sketck
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #77 - 05.10.13 at 11:15:00
Print Post  
------Qualche giorno fà ...... boom -------

In un momento di rinc....mento totale ho erroneamente causato un corto netto sull'impianto di casa ......
Nulla di preoccupante se non fosse che il solare non produceva più ...

Il motivo era semplice :
Durante il corto ,la corrente circolante nel sensore ACS712 ha superato il valore massimo sopportabile (100A *100mS) causando la rottura dello stesso e del microcontrollore ad esso collegato ....

Quindi ho introdotto una semplice modifica che allontana la ricomparsa del problema.
Consiste nel sostituire i sensori ACS712 con dei sensori non invasivi SCT-013-030 (o simili) secondo lo schema di seguito

Con una resistenza di schunt di 100Ohm ho riscontrato una sensibilità simile all'ACS712 30A ,attestandosi a 50mV/A invece dei 66mV/A ,quindi bisognerà solo ritarare i fattori di conversione e il gioco è fatto

Ecco l'interno del nuovo powerMeter


Ciao
ElettroshockNow
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
eliafino
Ex Member
***


--------

Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #78 - 06.10.13 at 08:52:00
Print Post  
Bella idea Elettro,
mi dispiace che è venuta dopo un botto... ma succede... sapessi quante volte

Mi sa che al posto dei sensori hall seguirò il tuo consiglio! Il rischio come hai visto tu è alto...
... grazie per la condivisione!
  
Impianto Fotovoltaico A Isola "eliafino" in Tempo Reale.
http://pv.eliafino.it
Back to top
 
IP Logged
 
PinoTux
Ex Member
**


--------

Gender: Male
Zodiac sign: Aries
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #79 - 06.10.13 at 10:48:00
Print Post  
Ottima soluzione, ma mi è venuto un pensierino... avendo a disposizione un ASC712 da 5A e volendolo utilizzare come ha fatto Elettro, si potrebbe utilizzare uno SHUNT in modo da bypassare la corrente maggiore, leggi quella di Corto Circuito, in modo che la quota parte non ecceda quella supportata dal dispositivo.
Complicazioni varie a parte, sarebbe fattibile?
  
"Ogni tecnologia sufficientemente avanzata è indistinguibile dalla magia" (Artur C. Clarke)

http://www.pptea.altervista.org

http://www.iv3gfn.altervista.org







Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #80 - 06.10.13 at 11:18:00
Print Post  
CITAZIONE (PinoTux @ 6/10/2013, 11:48) Quote:
Ottima soluzione, ma mi è venuto un pensierino... avendo a disposizione un ASC712 da 5A e volendolo utilizzare come ha fatto Elettro, si potrebbe utilizzare uno SHUNT in modo da bypassare la corrente maggiore, leggi quella di Corto Circuito, in modo che la quota parte non ecceda quella supportata dal dispositivo.
Complicazioni varie a parte, sarebbe fattibile?

Sisi ,è fattibilissimo e forse perderesti solo la risoluzione a vantaggio della corrente massima misurabile /sopportabile.

Ricordo di avere qualche documento a riquardo ,proprio della "Allegro" ... se trovo, posto
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
dinoch
Ex Member
*


--------

Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #81 - 08.10.13 at 13:21:00
Print Post  
Sto facendo le varie prove con il sensore non invasivo, ma ho da porti una domanda (ammetto che non sono un programmatore esperto e quindi ho un pò di difficolta). E' normale che quando Arduino lavora ripresenta sempre ciclica la videata che segue?

ERROR
Numero Campionamenti = 1
Tempo conversione = 0 ms
ADCSRA = 148
Tensione RMS = 0 Volt
Valore Sensore Tensione Max = 0
Valore Sensore Tensione Min = 445
Offset Sensore Tensione = 222
Offset Sensore Produzione = 507
Offset Sensore Assorbimento = 507
Potenza Prodotta = 0 Watt
Potenza Prodotta Calcolata= 0 Watt
Potenza Assorbita = 0 Watt
Potenza Assorbita Calcolata = 0 Watt
Corrente Prodotta = 0.00 Amper
Corrente Assorbita = 0.00 Amper

Grazie
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #82 - 08.10.13 at 14:19:00
Print Post  
CITAZIONE (dinoch @ 8/10/2013, 14:21) Quote:
Sto facendo le varie prove con il sensore non invasivo, ma ho da porti una domanda (ammetto che non sono un programmatore esperto e quindi ho un pò di difficolta). E' normale che quando Arduino lavora ripresenta sempre ciclica la videata che segue?

Nono non è normale !!!
Sono giorni che provo a simulare la tua avaria .... ma niente funziona sempre tutto ...
Quindi ....

Ho paura che sia un problema hardware o un errore ciclico .....

Inizia con questa prova ...

-Carica il codice (senza nessuna modifica)
-Disconnetti il carico
-Premi il pulsante Reset o disconnetti/connetti l'usb
-Vedi cosa ti dice sulla seriale

<div class=spoiler align=center><div class=code_top align=left>SPOILER (<a href=javascript:spoiler()>clicca per visualizzare)</div><div class=code align=left>const int ProdottaPin = A1;
const int AssorbitaPin = A2;
const int TempoCampionatura = 20; //Scegli i ms da Campionare
const float Fattore_Conversione_Corrente = .055;
long start ;
int i ;
float AmperPro;
float AmperAss;
long OffsetPro;
long OffsetAss;
void setup() {

//CALCOLO AUTOMATICO OFFSET SENSORI
for (i = 0 ; i <= 1000 ; i++){
OffsetPro+=analogRead(ProdottaPin);
OffsetAss+=analogRead(AssorbitaPin);
}
OffsetPro/=1000;
OffsetAss/=1000;
//--------------------------------


ADCSRA&=0X90+ 0b100; //Setta ADC prescaler a 16 quindi la velocita delle conversioni
Serial.begin(9600) ;

}

void loop() {
AmperPro=0;
AmperAss=0;
int NumCampionamenti=0;
start = millis() ;
do
{
NumCampionamenti++;
AmperPro+= abs(analogRead(ProdottaPin)-OffsetPro);
AmperAss+= abs(analogRead(AssorbitaPin)-OffsetAss);
}while((millis()-start)<TempoCampionatura);
int Tempomisura=millis() - start;

AmperPro=(AmperPro/NumCampionamenti)*Fattore_Conversione_Corrente;
AmperAss=(AmperAss/NumCampionamenti)*Fattore_Conversione_Corrente;

Serial.print ("Numero Campionamenti = ");
Serial.println(NumCampionamenti);
Serial.print ("Tempo conversione = ");
Serial.print(Tempomisura) ;
Serial.println(" ms") ;
Serial.print ("ADCSRA = ");
Serial.println(ADCSRA) ;
Serial.print ("Offset Sensore Produzione = ");
Serial.println(OffsetPro) ;
Serial.print ("Offset Sensore Assorbimento = ");
Serial.println(OffsetAss) ;
Serial.print ("Corrente Prodotta = ");
Serial.print(AmperPro) ;
Serial.println(" Amper") ;
Serial.print ("Corrente Assorbita = ");
Serial.print(AmperAss) ;
Serial.println(" Amper") ;
Serial.println("") ;
Serial.println("") ;
delay(1000);
} [/quote]

Posta i risultati come hai fatto precedentemente
Ciao
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
dinoch
Ex Member
*


--------

Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #83 - 09.10.13 at 08:17:00
Print Post  
ieri sera mi sono messo a costruire il circuito su un mille fori, non vorrei che la mia Breadboard essendo vecchia ha qualche falso contatto. Appena ho novità ti faccio saxre.
  
Back to top
 
IP Logged
 
5a2v0
New Member
*
Offline


--------

Posts: 38
Location: Cefalu'
Gender: Male
Zodiac sign: Virgo
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #84 - 10.10.13 at 13:28:00
Print Post  
posto qui il mio sketch attuale: <div class=spoiler align=center><div class=code_top align=left>SPOILER (<a href=javascript:spoiler()>clicca per visualizzare)</div><div class=code align=left><div align=center><div class=code_top align=left>CODICE</div><div class=code align=left>//Includo la libreria per il corretto funzionamento del display
#include &#60;LiquidCrystal&#46;h&#62;
// Dichiaro i pin del display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)&#59;
// Dichiaro il pin a cui sono collegati i bottoni e la variabile in cui viene memorizzato il valore letto dal pin
int buttonPin &#61; A0;
int buttonValue &#61; 0;
//Dichiaro il pin del sensore di corrente e la variabile in cui sarà memorizzato il valore letto dal sensore
int sensorPin &#61; A5;
float sensorValue &#61; 0&#46;00;
//Dichiaro la variabile in cui sarà memorizzato il valore di Ampere totali assorbiti
float ampere &#61; 0&#46;00;
//Variabile per il consumo in watt (ottenuto moltiplicando il valore in Ampere ottenuto dal sensore di corrente per la tensione stabilita di 230v)
float tensione &#61; 230&#46;00;
int consumo &#61; 0;
//Dichiaro i pin del buzzer, dei led e dei relè
int buzzer &#61; 6;
int verde1 &#61; 7;
int verde2 &#61; 8;
int rosso1 &#61; 1;
int rosso2 &#61; 13;
int bagni &#61; 9;
int stanze &#61; 10;
//Dichiaro variabili per memorizzare lo stato (0 o 1) dei relè e dei bottoni
int rele1 &#61; 0;
int rele2 &#61; 0;
int buttonState &#61; 0;
//Variabili per prevenire ritardi ai pulsanti e regolare il refresh del display
#define intervallcd 3000 
long previousMillslcd &#61; 0;
#define interval1 2000 
long previousMills1 &#61; 0;
#define interval2 2000 
long previousMills2 &#61; 0;
//Note di check funzionamento buzzer
int melody&#91;] &#61; {
  4699, 4699}&#59;
//Durata delle note&#58; 4 &#61; quarter note, 8 &#61; eighth note, etc&#46;&#58;
int noteDurations&#91;] &#61; {
  8, 8}&#59;


void setup() {
  //Imposto il voltaggio di riferimento per le letture analogiche a 1&#46;10v o lascio 5v se commentato
  //analogReference(INTERNAL)&#59;
  //Definisco l'eventuale porta seriale per leggere dati dal monitor seriale N&#46;B&#46; si accenderà fisso il led sul PIN 1 !!!
  //Serial&#46;begin(9600)&#59;
  //Inizializzo il display
  lcd&#46;begin(16, 2)&#59;
  //Imposto i pin dei led e dei relè come uscite digitali
  pinMode(verde1, OUTPUT)&#59;
  pinMode(verde2, OUTPUT)&#59;
  pinMode(rosso1, OUTPUT)&#59;
  pinMode(rosso2, OUTPUT)&#59;
  pinMode(bagni, OUTPUT)&#59;
  pinMode(stanze, OUTPUT)&#59;
  //Accendo i due led verdi e spengo i due rossi (i relè sono normalmente chiusi e la variabile dei relè è gia impostata a 0 di default all'avvio del programma)
  digitalWrite(verde1, HIGH)&#59;
  digitalWrite(verde2, HIGH)&#59;
  digitalWrite(rosso1, LOW)&#59;
  digitalWrite(rosso2, LOW)&#59;
  digitalWrite(bagni, HIGH)&#59;
  digitalWrite(stanze, HIGH)&#59;
  //Codice di esecuzione delle note di check funzionamento buzzer
  for (int thisNote &#61; 0; thisNote &#60; 2; thisNote++) {
    int noteDuration &#61; 1000/noteDurations&#91;thisNote]&#59;
    tone(buzzer, melody&#91;thisNote],noteDuration)&#59;
    int pauseBetweenNotes &#61; noteDuration * 1&#46;30;
    delay(pauseBetweenNotes)&#59;
    noTone(buzzer)&#59;
  }
}


void loop() {
  //Lettura sensore e calcolo Ampere assorbiti e Watt consumati con eventuale distacco automatico in caso di esubero
  sensorValue &#61; analogRead(sensorPin)&#59;
  //Il sensore restituisce da 0 a 1v se legge da 0 a 30 Ampere (valore max di lettura) e lo somma al voltaggio reference 5v diviso in 2&#46;
  //Utilizzeremo però 2&#46;49v anzichè 2&#46;50v poichè in lettura senza carico il valore letto oscillava tra 2&#46;48 e 2&#46;50&#46;
  //Per cui abbiamo &#91; 1&#46;00v &#58; 30 A &#61; (sensorValue - 2&#46;49v) &#58; ampere ] quindi &#91; ampere &#61; (sensorValue - 2&#46;49) * 30&#46;00 / 1&#46;00 ]
  //Trasformo il valore letto sulla A5 in volt sapendo che 5 è il voltaggio reference e 1024 sono le parti in cui viene suddiviso per la lettura&#46;
  sensorValue &#61; (((5&#46;00 * sensorValue) / 1024&#46;00) - 2&#46;49)&#59;
  if (sensorValue &#60; 0) sensorValue &#61; 0;
  ampere &#61; sensorValue * 30&#46;00;
  consumo &#61; ampere * tensione;


  //Lettura pin dei bottoni e azioni di distacco manuale o ripristino della corrente nelle sezioni collegate ai contattori
  buttonValue &#61; analogRead(buttonPin)&#59;
  if (millis() -  previousMills1 &#62; interval1 ) {
    previousMills1 &#61; millis()&#59;
    if ((buttonValue &#62;&#61; 150) &#38;&#38; (buttonValue &#60;&#61; 200)) {
     switch (rele1) {
     case 0&#58;
       if (buttonState &#61;&#61; 0) {
         digitalWrite(verde1, LOW)&#59;
         digitalWrite(rosso1, HIGH)&#59;
         digitalWrite(bagni, LOW)&#59;
         rele1 &#61; 1;
         buttonState &#61; 1;
         lcd&#46;clear()&#59;
         lcd&#46;setCursor(0,0)&#59;
         lcd&#46;print("Distacco manuale")&#59;
         lcd&#46;setCursor(0,1)&#59;
         lcd&#46;print("Linea 1 OFF")&#59;
       }       
       break;
     case 1&#58;
       if (buttonState &#61;&#61; 0) {
         digitalWrite(verde1, HIGH)&#59;
         digitalWrite(rosso1, LOW)&#59;
         digitalWrite(bagni, HIGH)&#59;
         rele1 &#61; 0;
         buttonState &#61; 1;
         lcd&#46;clear()&#59;
         lcd&#46;setCursor(0,0)&#59;
         lcd&#46;print("Intervento&#58;")&#59;
         lcd&#46;setCursor(0,1)&#59;
         lcd&#46;print("Linea 1 ON")&#59;
       }
       break;
     }
    }
  }
  if (millis() -  previousMills2 &#62; interval2 ) {
    previousMills2 &#61; millis()&#59;
    if ((buttonValue &#62;&#61; 800) &#38;&#38; (buttonValue &#60;&#61; 900)) {
     switch (rele2) {
     case 0&#58;
       if (buttonState &#61;&#61; 0) {
         digitalWrite(verde2, LOW)&#59;
         digitalWrite(rosso2, HIGH)&#59;
         digitalWrite(stanze, LOW)&#59;
         lcd&#46;clear()&#59;
         lcd&#46;setCursor(0,0)&#59;
         lcd&#46;print("Distacco manuale")&#59;
         lcd&#46;setCursor(0,1)&#59;
         lcd&#46;print("Linea 2 OFF")&#59;
         rele2 &#61; 1;
         buttonState &#61; 1;
       }
       break;
     case 1&#58;
       if (buttonState &#61;&#61; 0) {
         digitalWrite(verde2, HIGH)&#59;
         digitalWrite(rosso2, LOW)&#59;
         digitalWrite(stanze, HIGH)&#59;
         lcd&#46;clear()&#59;
         lcd&#46;setCursor(0,0)&#59;
         lcd&#46;print("Intervento&#58;")&#59;
         lcd&#46;setCursor(0,1)&#59;
         lcd&#46;print("Linea 2 ON")&#59;
         rele2 &#61; 0;
         buttonState &#61; 1;
       }
       break;
     }
    }
  }
  if ((buttonValue &#62;&#61; 0) &#38;&#38; (buttonValue &#60;&#61; 100)) {
    if (millis() -  previousMillslcd &#62; intervallcd ) {
     previousMillslcd &#61; millis()&#59;
     lcd&#46;clear()&#59;
    }
    lcd&#46;setCursor(0,0)&#59;
    if ((rele1 &#61;&#61; 0) &#38;&#38; (rele2 &#61;&#61; 0)) {
     lcd&#46;print("Linee ON")&#59;
    }
    if ((rele1 &#61;&#61; 0)  &#38;&#38; (rele2 &#61;&#61; 1)) {
     lcd&#46;print("L1 ON   L2 OFF")&#59;
    }
    if ((rele1 &#61;&#61; 1)  &#38;&#38; (rele2 &#61;&#61; 0)) {
     lcd&#46;print("L1 OFF  L2 ON")&#59;
    }
    if ((rele1 &#61;&#61; 1)  &#38;&#38; (rele2 &#61;&#61; 1)) {
     lcd&#46;print("Linee OFF")&#59;
    }
    lcd&#46;setCursor(0,1)&#59;
    lcd&#46;print("Watt&#58; ")&#59;
    lcd&#46;setCursor(7,1)&#59;
    lcd&#46;print(consumo)&#59;
    buttonState &#61; 0;
  }
  //riga utilizzata per calibrare il sensore e i bottoni
  //Serial&#46;println(sensorValue)&#59;
} [/quote] [/quote]

arduino collegato ai led, ai pulsanti, alla scheda relè e al sensore.

Senza carico leggo 0 Watt... in attesa ancora di testare con un carico conosciuto come una lampadina ad incandescenza per verificare l'attendibilità del codice e del sensore.

Poi se il valore è giusto (lo confronterò anche con misurazioni ottenute con qualche altro strumento), rimane di creare un sistema che legga bene i valori e non mi stacchi la corrente già per un picco ma solo per un consumo costante O.o

Intanto testerò se il valore viene letto bene...

P.s. ho provato anche un altra strada, ovvero quella di settare l'analogReference a (INTERNAL) in modo che arduino scomponesse in 1024 parti il voltaggio di 1.10v al posto dei 5v come DEFAULT ed avere una lettura così più precisa del sensore collegandolo DIRETTAMENTE alla porta analogica senza passare per lo schema attuale che è questo:
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #85 - 10.10.13 at 13:55:00
Print Post  
Il tuo codice è adatto per correnti continue .
Il sensore ti restituirà una tensione variabile nella stessa forma della corrente che misura quindi variabile ed alternata.
È per questo che viene aggiunto l'offset ....

Ciao
ElettroshockNow

Ps: se ti interessa solo la corrente puoi usare le linee di codice postate nel mio ultimo intervento, magari togliento la regolazione dell'offset in quanto già lo hai misurato.

Ulteriori info sulla misurazione di potenze alternate le puoi trovare qui
Nella quale discussione vengono presi in esame (con codici Arduino) due metodi di misurazione.
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #86 - 10.10.13 at 15:06:00
Print Post  
Segue il codice per la lettura di correnti alternate
CITAZIONE Quote:
ampere=0;
int NumCampionamenti=0;
long start = millis() ;
do
{
NumCampionamenti++;
ampere+= abs(analogRead(sensorPin)-510); //510 è la lettura senza carico quindi l'offset
}while((millis()-start)<20); // 20 sono i millisecondi che verranno campionati
ampere=(ampere/NumCampionamenti)* .55; // .55 è il fattore di conversione
consumo = ampere * tensione;

Per far funzionare bene il codice appena postato bisogna aggiungere nel setup

CITAZIONE Quote:
ADCSRA&=0X90+ 0b100; //Setta ADC prescaler a 16 quindi la velocita delle conversioni

Ciao
ElettroshockNow
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
mi156
Ex Member
*


--------

Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #87 - 11.10.13 at 04:34:00
Print Post  
CITAZIONE (ElettroshockNow @ 12/9/2013, 19:30) Quote:
Allego inoltre la liquidcristal che uso

SALVE IL CODICE MI DA DEI PROBLEMI
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #88 - 11.10.13 at 05:47:00
Print Post  
CITAZIONE (mi156 @ 11/10/2013, 05:34) Quote:
SALVE IL CODICE MI DA DEI PROBLEMI

Ciao mii157,
volevo informarti che hai il tasto Maiuscolo inserito , sembra quasi che urli ..

Cmq anche se il progetto in questione illude di essere di facile realizzazione ,in realtà non lo è ,almeno che non usi gli stessi identici hardware.
Quindi ti consiglio di iniziare con progetti più semplici e fare esperienza sull'uso dei display LCD ,in quanto credo che sia li' il problema da te riscontrato .

Giusto a titolo informativo nel codice trovi una sezione chiamata "setup" nella quale vengono impostati i parametri hardware ....
Esempio :
Il mio display deve essere settato :LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
invece quello di 5a2v0 :LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


Ciao
ElettroshockNow

PS: il progetto powermeter funziona ininterrottamente da 8 mesi ... tranne quel breve periodo del Boom ( A proposito devo un Grazie ad Elia per la pacca sulla spalla , GRAZIE ELIA )
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
5a2v0
New Member
*
Offline


--------

Posts: 38
Location: Cefalu'
Gender: Male
Zodiac sign: Virgo
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #89 - 11.10.13 at 07:53:00
Print Post  
CITAZIONE (ElettroshockNow @ 10/10/2013, 16:06) Quote:
Segue il codice per la lettura di correnti alternate
CITAZIONE Quote:
ampere=0;
int NumCampionamenti=0;
long start = millis() ;
do
{
NumCampionamenti++;
ampere+= abs(analogRead(sensorPin)-510); //510 è la lettura senza carico quindi l'offset
}while((millis()-start)<20); // 20 sono i millisecondi che verranno campionati
ampere=(ampere/NumCampionamenti)* .55; // .55 è il fattore di conversione
consumo = ampere * tensione;

Per far funzionare bene il codice appena postato bisogna aggiungere nel setup

CITAZIONE Quote:
ADCSRA&=0X90+ 0b100; //Setta ADC prescaler a 16 quindi la velocita delle conversioni

Ciao
ElettroshockNow

Buondi.. intanto grazie come semprre

stamattina ho provato prima il codice mio collegando una lampadina da 20watt ma arduino sembrava non leggere proprio il valore... poi un PHON e il valore saliva ma ogni tanto il sensore leggeva addirittura un voltaggio INFERIORE all'offset O.o...

dando quindi per scontato che il problema potesse essere come mi avevi detto tu che il mio codice è adatto per le CC e non per le AC, ho seguito il tuo suggerimento e inserito il tuo codice al posto del mio:

<div align=center><div class=code_top align=left>CODICE</div><div class=code align=left>//Lettura sensore e calcolo Ampere assorbiti e Watt consumati con eventuale distacco automatico in caso di esubero
  sensorValue &#61; analogRead(sensorPin)&#59;
  //Il sensore restituisce da 0 a 1v se legge da 0 a 30 Ampere (valore max di lettura) e lo somma al voltaggio reference 5v diviso in 2&#46;
  //Utilizzeremo però 2&#46;49v anzichè 2&#46;50v poichè in lettura senza carico il valore letto oscillava tra 2&#46;48 e 2&#46;50&#46;
  //Per cui abbiamo &#91; 1&#46;00v &#58; 30 A &#61; (sensorValue - 2&#46;49v) &#58; ampere ] quindi &#91; ampere &#61; (sensorValue - 2&#46;49) * 30&#46;00 / 1&#46;00 ]
  //Trasformo il valore letto sulla A5 in volt sapendo che 5 è il voltaggio reference e 1024 sono le parti in cui viene suddiviso per la lettura&#46;
  sensorValue &#61; (((5&#46;00 * sensorValue) / 1024&#46;00) - 2&#46;49)&#59;
  if (sensorValue &#60; 0) sensorValue &#61; 0;
  ampere &#61; sensorValue * 30&#46;00;
  consumo &#61; ampere * tensione; [/quote]

ovviamente ho aggiunto anche la riga che mi dicevi di mettere nel void setup () !

Situazione attuale:
Arduino senza carico mi dice che consumo 250watt.
Quando collego e accendo un phon da 1800watt totali messo a metà potenza mi dice 1800(circa eh, l'lcd refresha senza che leggo il valore bene)
Quando alzo la potenza del phon al suo max legge 3500
Quando spengo, ritorna a 250.

Che può essere ?
  
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1 ... 4 5 [6] 7 8 ... 19
Send TopicPrint
 

TOP100-SOLAR Galleria Immagini EnergiAlternativa