EnergiAlternativa

Page Index Toggle Pages: [1] 2 3 ... 19 Send TopicPrint
Hot Topic (More than 100 Replies) Voltmetro, Amperometro, Wattmetro, Contatori Assor (Read 77302 times)
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3916
Location: Roma
Gender: Male
Zodiac sign: Gemini
Voltmetro, Amperometro, Wattmetro, Contatori Assor
08.02.13 at 19:33:00
Print Post  
Oggi si conta 1 2 3 4 5 6 7 8 9 bo!!

Stavo realizzando un semplice Wattmetro ,ma come al solito si è cappottato l'orizzonte e in crisi di pazzia pura ho partorito questo......il Powermeter Rev3.3

Si tratta semplicemente di :
-un Voltmetro AC.....
-un doppio Amperometro AC.....
-un doppio Wattmetro ........
-un doppio contatore con memoria di Backup (metti che vada via la luce )

Le sue applicazioni sono molteplici:
-Vuoi misurare la potenza che produci..ora puoi
-e che consumi ...ora puoi
-Volevi sapere la tensione per un rapido Trouble Shooting..ora puoi
-Hai il contatore in comune e vuoi sapere i due consumi ...ora puoi
-Vuoi stare comodamente al computer e leggere i consumi...ora puoi (magari se si implementasse un programmino in VB)...
-Vabbè puoi farci quello che ti pare,,,,io lo metto a disposizione del Forum nella speranza che sia utile a qualcuno oltre a me

Dettaglio "LE PAGINE DEL DISPLAY"

Prima pagina (nel programma la numero 0)

Seconda pagina (nel programma la numero 1)

Terza pagina (nel programma la numero 2)

Quarta pagina (nel programma indovinate )


Avete notato niente !!????
Nella seconda pagina sono presenti dei tratti in quanto dipende in quale configurazione vi trovate.
Mi spiego meglio.......

-Io vado di On grid Tie e ho alcune esigenze.


-Pippo và di Isola ed usa un inverter


-Pluto và di Isola ed usa un UPS.....


-Puffo scrocca


Quindi in che configurazione vi trovate ????

Semplicemente o A o B......


Come realizzarlo???
Bo!!provate a chiedere al vicino

oppure W il Fai da Te .......

Iniziamo :
Sezione Alimentatore e adattatore di livello!!!!


Lo so ..lo so ..il condensatore dovè.........bo !!!Cmq l'ho dimenticato volontariamente .

Il display ed i sensori ....(i miei piccolini ACS712 da 30A)ecco come vanno collegati


Un saluto a tutti e grazie della pazienza nell'aver letto tutte ste fregnacce.....



A dimenticavo.....


Ciao...

Dimenticavo una cosina ...il codice Rev3.3


Code (C++)
Select All
/*Progetto Powermeter Rev3.3
 Un sentito ringraziamento al Forum
 "" Energia Alternativa & Energia Fai Da Te ""
 http://energiaalternativa.forumcommunity.net/

 Saluti
 ElettroshockNow
----------------------------------------------------------------------------
INFO:il Powermeter dispone di memoria eeprom interna nella quale salva a cadenza di
4 ore il valore contenuto nei contatori.Se si desidera resettare i contatori :
-disalimentare il circuito
-premere e mantenere premuto il pulsante
-alimentare il circuito
-attendere la scritta "ATTENZIONE RESET CONTATORI TRA 4H"
-rilasciare il pulsante
A questo punto il reset è armato e sarà attivato allo scadere delle 4H.
Quindi se erroneamente si resettano i contatori ,basterà disalimentare e rialimentare il
circuito per recuperare l'ultimo Backup.
-----------------------------------------------------------------
*/
//IMPOSTAZIONI UTENTE (Scegliere le preferenze)

const boolean ConfigB = false; //Configurazione B ? true or false
 //Scegli lo schema di installazione piu' adatto
 //false = doppio contatore simultaneo
 //true = doppio contatore funzionamento selettivo

const byte PagDefault = 0; // Scegli la schermata di default..:-)
 //0 = Wattmetro
 //1 = Voltmetro + stato UPS
 //2 = Amperometro
 //3 = Contatori

const int TempoLed = 200; //Scegli il Tempo della retroilluminazione
 //allo spengimento si imposterà la pagina di Default
 //Ogni unita vale circa 2 secondi :-)


//------------------------------------------------------------
// LIBRERIE
#include <virtualwire.h>
#include <liquidcrystal.h>
#include <eeprom.h>

//-----------------------------------------------------------
// VARIABILI E COSTANTI
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);//ASSEGNAZIONE PIN LCD
const int BACKLIGH_PIN = 10;//Assegnazione Retroilluminazione
const int ProdottaPin = A1;
const int AssorbitaPin = A2;
const int TensionePin = A3;
const int transmit_pin = 12;
const int receive_pin = 11;
const int transmit_en_pin = 3;
const int ledPin = 13;
const int ADR=100;//Indirizzo PowerMeter
const int ResetPin = 2;//se posto a 1 resetta i contatori
const int PagPin = 2;//se premuto scorre le pagine
byte pagina = PagDefault; //PAGINA DA VISUALIZZARE SULL'LCD
int Timeout = TempoLed;//Timeout
byte Tensione = 0;
byte Frequenza = 50;
unsigned long ProdottaMedia = 0;//Somma delle campionature
unsigned long AssorbitaMedia = 0;//Somma delle campionature
float ProdottaMediaP = 0;//Amper Prodotti
float AssorbitaMediaP = 0;//Amper Assorbiti
int PotenzaPro;//Potenza Prodotta (Amper Prodotti*Tensione)
int PotenzaAss;//Potenza Assorbita (Amper Assorbiti*Tensione)
unsigned long time = 0;//Tempo dall'ultimo invio via radio
unsigned long Tmemoria = 0;//Tempo dall'ultimo BackUp
unsigned long TCampionature = 0;//Tempo dall'ultima Campionatura
float TotProdotta = 0;//Contatore Totale Prodotta
float TotAssorbita = 0;//Contatore Totale Assorbita




void setup() {
 Serial.begin(9600);
 vw_set_tx_pin(transmit_pin);
 vw_set_rx_pin(receive_pin);
 vw_set_ptt_pin(transmit_en_pin);
 vw_set_ptt_inverted(true);
 vw_setup(2000);
 pinMode(ledPin, OUTPUT);
 pinMode(ResetPin, INPUT);
 lcd.begin(16, 2);
 pinMode(BACKLIGH_PIN, OUTPUT);
 digitalWrite(BACKLIGH_PIN, HIGH);
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("PowerMeter V3 By");
 lcd.setCursor(0,1);
 lcd.print("ElettroshockNow");
 delay(2000);

 //recupero dati contatori dal BackUp
 unsigned char k,mem;
 for (k=0;k<4;k++){
 mem = EEPROM.read(0x00+k);
 ((unsigned char*) &TotProdotta)[k]=mem;
 }
 for (k=0;k<4;k++){
 mem = EEPROM.read(0x05+k);
 ((unsigned char*) &TotAssorbita)[k]=mem;
 }
 if (digitalRead(ResetPin) == HIGH) {//se premuto Resetta i contatori
 TotProdotta = 0;
 TotAssorbita = 0;
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("ATTENZIONE RESET");
 lcd.setCursor(0,1);
 lcd.print("CONTATORI TRA 4H");
 delay(5000);
 }
}


void loop() {


//-----------------------------------------------------------------
//MISURA I SENSORI E CALCOLA LE CORRENTI E LE POTENZE E LA TENSIONE
 int Tensionepicco = 0;
 ProdottaMedia = 0 ;
 AssorbitaMedia = 0 ;
 for (int i=0;i<1000;i++){
 ProdottaMedia += abs(analogRead(ProdottaPin)-510);
 AssorbitaMedia += abs(analogRead(AssorbitaPin)-510);
 int Tensioneinst = analogRead(TensionePin);
 if (Tensionepicco<tensioneinst)Tensionepicco=Tensioneinst;
 }
 Tensione=Tensionepicco*.45;//Taratura sensore Tensione

 ProdottaMediaP= (ProdottaMedia*.000079)-0.032;//calcola gli Amper istantanei Prodotti
 AssorbitaMediaP= (AssorbitaMedia*.000079)-0.032;//calcola gli Amper istantanei Assorbiti
 if (ConfigB & AssorbitaMediaP > 0.2)ProdottaMediaP=0;
 PotenzaPro=int(ProdottaMediaP*Tensione/10)*10;//Calcola Potenza istantanea Prodotta (Step da 10W)
 PotenzaAss=int(AssorbitaMediaP*Tensione/10)*10;//Calcola Potenza istantanea Assorbita (Step da 10W)

//Calcola e memorizza in EEPROM i Contatori Potenze
if (micros()>TCampionature){// if è per prevenire il reset del contatore ogni 70ore!!
 TotProdotta+=ProdottaMediaP*Tensione*(micros()-TCampionature)/1000000/3600/1000;//Calcola i Kwh Prodotti
 TotAssorbita+=AssorbitaMediaP*Tensione*(micros()-TCampionature)/1000000/3600/1000;//Calcola i Kwh Consumati
 }
 TCampionature=micros();
 if (millis()>(Tmemoria + 14400000)){//BackUp ogni 4 ore= 14400000mS
 unsigned char k,mem;
 for (k=0;k<4;k++){
 mem = ((unsigned char*) &TotProdotta)[k];
 EEPROM.write(0x00+k,mem);
 }
 for (k=0;k<4;k++){
 mem = ((unsigned char*) &TotAssorbita)[k];
 EEPROM.write(0x05+k,mem);
 }
 Tmemoria=millis();
 }
//---------------------------------------------------------------


//VISUALIZZA E SPENGE IL DISPLAY SE NON USATO
if (digitalRead(PagPin) == HIGH & Timeout<=0){
 digitalWrite(BACKLIGH_PIN, HIGH);//accendi LCD
 Timeout=TempoLed;
 delay(1000);
 }
if (Timeout>0) {
 digitalWrite(BACKLIGH_PIN, HIGH);//accendi LCD
 Timeout--;
 if (digitalRead(PagPin) == HIGH){
 pagina++;
 if (pagina>3)pagina=0;
 }

switch (pagina){
 case 0 :
 lcd.setCursor(0, 0);
 lcd.print ("Assorbita= ");
 lcd.print (PotenzaAss);
 lcd.print ("W ");
 lcd.setCursor(0,1);
 lcd.print ("Prodotta = ");
 lcd.print (PotenzaPro);
 lcd.print ("W ");
 break;
 case 1 :
 lcd.setCursor(0, 0);
 lcd.print ("Tensione= ");
 lcd.print (Tensione);
 lcd.print ("V ");
 lcd.setCursor(0,1);
 if(ConfigB){
 lcd.print ("Stato UPS=");
 if (AssorbitaMediaP > 0.2) lcd.print ("STBY ");
 else lcd.print ("ACTIVE ");
 }
 else lcd.print ("----------------");

 break;
 case 2 :
 lcd.setCursor(0, 0);
 lcd.print ("CorrenteA= ");
 lcd.print (AssorbitaMediaP,2);
 lcd.print ("A ");
 lcd.setCursor(0,1);
 lcd.print ("CorrenteP= ");
 lcd.print (ProdottaMediaP,2);
 lcd.print ("A ");
 break;
 case 3 :
 lcd.setCursor(0, 0);
 lcd.print ("TotA= ");
 lcd.print (TotAssorbita,1);
 lcd.print ("Kwh ");
 lcd.setCursor(0,1);
 lcd.print ("TotP= ");
 lcd.print (TotProdotta,1);
 lcd.print ("Kwh ");
 break;

 }
 }
 else {
 digitalWrite(BACKLIGH_PIN, LOW);//Spenge LCD
 pagina=PagDefault;//imposta la pagina default
 }

 Serial.write ("Tensione= ");
 Serial.println(Tensione);
 Serial.write ("Frequenza= ");
 Serial.println(Frequenza);
 Serial.write ("Amper RMS assorbiti= ");
 Serial.println(AssorbitaMediaP);
 Serial.write ("Amper RMS Prodotti= ");
 Serial.println(ProdottaMediaP);
 Serial.write ("Potenza assorbita= ");
 Serial.println(PotenzaAss);
 Serial.write ("Potenza Prodotta= ");
 Serial.println(PotenzaPro);
 Serial.write ("Totale consumata= ");
 Serial.println(TotAssorbita);
 Serial.write ("Totale Prodotta= ");
 Serial.println(TotProdotta);
 Serial.write ("Taratura Sensore Assorbita= ");
 Serial.println(AssorbitaMedia);
 Serial.write ("Taratura Sensore Prodotta= ");
 Serial.println(ProdottaMedia);


 //TRASMETTI DATI OGNI 15 SECONDI OPPURE IMMEDIATAMENTE SE LA POTENZA PRODOTTA
 //E' PROSSIMA ALLA POTENZA ASSORBITA
 if (ProdottaMediaP != 0 && (ProdottaMediaP > (AssorbitaMediaP - 0.30)) && ConfigB==false || millis() > (time + 15000)){
 time = millis();
 byte Pro1 = PotenzaPro&0xFF;
 byte Pro2=(PotenzaPro&0xFF00)>>8;
 byte Ass1=PotenzaAss&0xFF;
 byte Ass2=(PotenzaAss&0xFF00)>>8;
 byte CPro1= int(ProdottaMediaP*100)&0xFF;
 byte CPro2= (int(ProdottaMediaP*100)&0xFF00)>>8;
 byte CAss1= int(AssorbitaMediaP*100)&0xFF;
 byte CAss2= (int(AssorbitaMediaP*100)&0xFF00)>>8;
 byte TPro1= long(TotProdotta*10)&0xFF;
 byte TPro2= (long(TotProdotta*10)&0xFF00)>>8;
 byte TPro3= (long(TotProdotta*10)&0xFF0000)>>16;
 byte TAss1= long(TotAssorbita*10)&0xFF;
 byte TAss2= (long(TotAssorbita*10)&0xFF00)>>8;
 byte TAss3= (long(TotAssorbita*10)&0xFF0000)>>16;
 byte CKS = (ADR+Tensione+Pro1+Pro2+Ass1+Ass2+CPro1+CPro2+CAss1+CAss2+TPro1+TPro2+TPro3+TAss1+TAss2+TAss3)/16;
 char msg[17] = {ADR,Tensione,Pro1,Pro2,Ass1,Ass2,CPro1,CPro2,CAss1,CAss2,TPro1,TPro2,TPro3,TAss1,TAss2,TAss3,CKS};
 digitalWrite(13, true); // Flash a light to show transmitting
 vw_send((uint8_t *)msg, 17 );
 vw_wait_tx(); // Wait until the whole message is gone
 digitalWrite(13, false);
 }
 } 



Nella Configurazione B il PowerMeter visualizza sulla pagina 2 lo Stato dell'UPS
-ACTIVE se stà fornendo energia


-STBY se in attesa


Spero che sia di vostro gradimento e che il mio non sia figlio unico

Saluti Veri
ElettroshockNow

Ora una Breve panoramica della realizzazione:
Il sensore ACS712 da 30A

Consiglio un bel giro di nastro autoagglomerante

Magari installandoli in maniera fissa

L'arduino pronto per sposarsi con il display

L'interno nasconde


L'estetica finale


« Last Edit: 11.09.15 at 17:36:54 by 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 #1 - 09.02.13 at 08:50:00
Print Post  
Bel progetto

Io avrei un Raspberry ma pare che non sia compatibile con il convertitore seriale che mi serve per comunicare con il regolatore di carica, sennò userei anche io quei sensori di corrente, avevo già preso quello da 200A
  
Impianto Fotovoltaico A Isola "eliafino" in Tempo Reale.
http://pv.eliafino.it
Back to top
 
IP Logged
 
NonSoloBolleDiAcqua
Ex Member
*****


--------

Gender: Male
Zodiac sign: Scorpio
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #2 - 09.02.13 at 09:04:00
Print Post  
Un lavoro notevole,realizzato in tempi ristrettissimi e documentato in modo eccelso: cosa dire?
FENOMENALE!!!!!
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3916
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #3 - 09.02.13 at 11:45:00
Print Post  
Thanks ....ma FENOMENALE me pare troppo .
Sò du fesserie al confronto di altri progetti postati nel forum......ma son contento che piace un pochino anche il mio...
In verità mi aspetto questa estate il decollo di PowerMeter ...........Sai quanti saranno curiosi di leggere i consumi e prodotti (negli impianti sprovvisti!!!)

Ciao

CITAZIONE Quote:
Io avrei un Raspberry ma pare che non sia compatibile con il convertitore seriale che mi serve per comunicare con il regolatore di carica

Scusami ma non ne capisco niente di Raspberry ma :
Il tuo PC8048 usa una interfaccia RS485 con protocollo MODBUS ,quindi prova di interfaccia Rs485-232 e implementi il protocollo via software (almeno io farei cosi' con Arduino)!!!

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 #4 - 09.02.13 at 13:48:00
Print Post  
CITAZIONE Quote:
CITAZIONE Quote:
Io avrei un Raspberry ma pare che non sia compatibile con il convertitore seriale che mi serve per comunicare con il regolatore di carica

Scusami ma non ne capisco niente di Raspberry ma :
Il tuo PC8048 usa una interfaccia RS485 con protocollo MODBUS ,quindi prova di interfaccia Rs485-232 e implementi il protocollo via software (almeno io farei cosi' con Arduino)!!!

Ciao
ElettroshockNow

Anche tu hai ragione, loro mi hanno dato una interfaccia RS485<->USB, collegandola al raspberry fa andare in confusione la porta Ethernet...
... potrei provare ad usare un convertitore rs485-rs232 e connetterlo direttamente alla porta seriale del raspberry.
Poi per il modbus non c'è molto, oppure, ci sarebbe un programmino che gira in linux, modpoll, ma non è compilabile per raspberry, non forniscono i sorgenti.
Ci sono script in python, ho visto qualcosa in php, ma niente di facile facile... vediamo...
... mi accontento per ora della paginetta internet
  
Impianto Fotovoltaico A Isola "eliafino" in Tempo Reale.
http://pv.eliafino.it
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3916
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #5 - 09.02.13 at 13:57:00
Print Post  
Gran bel problema........
In alternativa...potesti fare un concentratore di sensori con Arduino (li' i protocolli ModBus ci sono) poi lo interroghi via seriale dal raspberry.....
Certo aggiungi un pezzo al puzzle, ma cosi il lavoro sporco lo farebbe Arduino e al Rasp solo (!!) la grafica. ........

CITAZIONE Quote:
... mi accontento per ora della paginetta internet

E lasci il Rasp solo soletto nel cassetto ..

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 #6 - 09.02.13 at 19:34:00
Print Post  
Appena ho tempo provo qualche soluzione...
... di rasp ne ho 2 una mi fa da mediacenter, connesso alla tv... l'altro x esperimenti, mentre non ho nessun arduino.
  
Impianto Fotovoltaico A Isola "eliafino" in Tempo Reale.
http://pv.eliafino.it
Back to top
 
IP Logged
 
Luca450Mhz
Ex Member
***


--------

Gender: Male
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #7 - 11.02.13 at 12:58:00
Print Post  
CITAZIONE (eliafino @ 9/2/2013, 19:34) Quote:
... di rasp ne ho 2 una mi fa da mediacenter, connesso alla tv...

Piccola intrusione.. ho ordinato il raspberry e devo aspettare ancora una settimana e mezza (almeno).. ho intenzione di usarlo per varie cose, tra le quali media center.. come ti trovi? Quali tipo di file video riproduci? Hai mai provato con file in full-hd? Ce la fa?
Grazie!
  
Pannelli: 3195 Wp policristallini. Inverter UPS Max Power 2kW con switch automatico su Enel. Regolatore di carica: PCM8048.
2 Batterie da autobus da 220Ah in serie. Impianto a 24 V nominali.
Impianto illuminazione giardino: 300Wp amorfi, regolatore MPPT EpSolar, inverter onda pura 300W, 100Ah batterie auto
Back to top
 
IP Logged
 
eliafino
Ex Member
***


--------

Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #8 - 11.02.13 at 16:15:00
Print Post  
Direi che lo uso quasi esclusivamente con mkv in fullhd, ma anche x video in streaming...
... uso xbian come software.

Ottimo prodotto! Soprattutto l'ultima versione con 512Mb di RAM
  
Impianto Fotovoltaico A Isola "eliafino" in Tempo Reale.
http://pv.eliafino.it
Back to top
 
IP Logged
 
Luca450Mhz
Ex Member
***


--------

Gender: Male
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #9 - 11.02.13 at 16:44:00
Print Post  
Ho ordinato questo da 512MB di ram, la revisione 2 del modello B.
Oltre a questa distro che mi hai suggerito, utilizzerò anche l'immagine preparata dal Bolle per fare delle prove..
Non vedo l'ora che arrivi a casa così lo provo subito subito!
  
Pannelli: 3195 Wp policristallini. Inverter UPS Max Power 2kW con switch automatico su Enel. Regolatore di carica: PCM8048.
2 Batterie da autobus da 220Ah in serie. Impianto a 24 V nominali.
Impianto illuminazione giardino: 300Wp amorfi, regolatore MPPT EpSolar, inverter onda pura 300W, 100Ah batterie auto
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3916
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #10 - 13.02.13 at 11:45:00
Print Post  
Ciao a Tutti,
Proseguo ed ultimo il progetto PowerMeter con un Up Software....

Come avevo detto in precedenza il Powermeter invia via radio tutti i dati che misura e che memorizza ....ma come riceverli e visualizzarli ?

La parte hardware è molto semplice,si tratta di un modulo Receiver OOK 433Mhz (dipende dal modulo tx che installate nel PowerMeter) connesso al solito Arduino ...


Caricando il seguente codice <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>#include <virtualwire.h>
int Tensione;
int PotenzaPro;
int PotenzaAss;
float CorrentePro;
float CorrenteAss;
float TotalePro;
float TotaleAss;

void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("setup");

// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec

vw_rx_start(); // Start the receiver PLL running
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen)) // Non-blocking
{
/*
int i;
digitalWrite(13, true); // Flash a light to show received good message
// Message with a good checksum received, dump it.
Serial.print("Got: ");

for (i = 0; i < buflen; i++)
{
Serial.print(buf[i], DEC);
Serial.print(" ");
}
*/
Tensione = buf[1];
PotenzaPro = (int(buf[3]<<8)+buf[2]);
PotenzaAss = (int(buf[5]<<8)+buf[4]);
CorrentePro = float(int(buf[7]<<8)+buf[6])/100;
CorrenteAss = float(int(buf[9]<<8)+buf[8])/100;
TotalePro = float(long(buf[12]<<16)+int(buf[11]<<8)+buf[10])/10;
TotaleAss = float(long(buf[15]<<16)+int(buf[14]<<8)+buf[13])/10;


Serial.write ("Tensione= ");
Serial.print(Tensione);
Serial.println(" Volt");
Serial.write ("Potenza Assorbita= ");
Serial.print(PotenzaAss);
Serial.println(" Watt");
Serial.print ("Potenza Prodotta= ");
Serial.print(PotenzaPro);
Serial.println(" Watt");
Serial.write ("Corrente Assorbita= ");
Serial.print(CorrenteAss);
Serial.println(" Amper");
Serial.write ("Corrente Prodotta= ");
Serial.print(CorrentePro);
Serial.println(" Amper");
Serial.write ("Totale Consumata= ");
Serial.print(TotaleAss);
Serial.println(" Kwh");
Serial.write ("Totale Prodotta= ");
Serial.print(TotalePro);
Serial.println(" Kwh");


//Serial.println("");
digitalWrite(13, false);
}
} [/quote]

verrà visualizzato il solito e noioso Testo


Allora mi son chiesto ....esiste un modo per renderlo piu' colorato ?

Tataaaaaaa Processing !!!!!

Fino a ieri sera ne avevo sentito solo parlare .....quindi durante il turno di notte (a proposito che freddo) mi son scaricato il software (100% Gratuito!),mi son visto gli esempi che mi interessavano e questa mattina ho regalato un pò di colore al PowerMeter.



Questo è il Codice che potete successivamente renderlo StandAlone esportandolo per il vostro sistema operativo attraverso il compilatore Processing <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>PImage img;
import processing.serial.*;

int lf = '#';
Serial myPort;
String inbuf = null;
int Tensione;
int PotenzaPro;
int PotenzaAss;
float CorrentePro;
float CorrenteAss;
float TotalePro;
float TotaleAss;
long TimeRec=0;

void setup() {
println(Serial.list());
myPort = new Serial(this, "COM5", 9600);
myPort.clear();
inbuf = myPort.readStringUntil(lf);
inbuf = null;
img = loadImage("PowerMeterJpg.jpg");
size(400, 250);
}


void draw() {

int Volt=(Tensione-200)*10;
int Ass=-(PotenzaAss/25);
int Pro=-(PotenzaPro/25);
image(img, 0, 0);
fill(255, 0, 0);
rect(Volt, 25,5,15);
fill(0, 204, 255);
rect(166, 230,23,Ass);
textSize(15);
text("Potenza="+PotenzaAss+("W"), 30, 110);
text("Corrente="+CorrenteAss+("A"), 30, 140);
textSize(20);
text(TotaleAss+("Kwh"), 35, 210);
fill(0, 255, 0);
rect(211, 230,23,Pro);
textSize(15);
text("Potenza="+PotenzaPro+("W"), 250, 110);
text("Corrente="+CorrentePro+("A"), 250, 140);
textSize(20);
text(TotalePro+("Kwh"), 255, 210);



if(millis()&#60;timerec+30000)fill(0, 255, 0);
else fill(255, 0, 0);
ellipse(10, 10, 15, 15);






while (myPort.available() > 0) {
TimeRec=millis();
inbuf = myPort.readStringUntil(lf);
if (inbuf != null) {
int[] buf = int(split(inbuf, ','));
Tensione = buf[1];
PotenzaPro = (int(buf[3]<<8)+buf[2]);
PotenzaAss = (int(buf[5]<<8)+buf[4]);
CorrentePro = float(int(buf[7]<<8)+buf[6])/100;
CorrenteAss = float(int(buf[9]<<8)+buf[8])/100;
TotalePro = float(int(buf[12]<<16)+int(buf[11]<<8)+buf[10])/10;
TotaleAss = float(int(buf[15]<<16)+int(buf[14]<<8)+buf[13])/10;

fill(100, 0, 100);
ellipse(10, 10, 15, 15);


print ("Tensione= ");
print(Tensione);
println(" Volt");
print ("Potenza Assorbita= ");
print(PotenzaAss);
println(" Watt");
print ("Potenza Prodotta= ");
print(PotenzaPro);
println(" Watt");
print ("Corrente Assorbita= ");
print(CorrenteAss);
println(" Amper");
print ("Corrente Prodotta= ");
print(CorrentePro);
println(" Amper");
print ("Totale Consumata= ");
print(TotaleAss);
println(" Kwh");
print ("Totale Prodotta= ");
print(TotalePro);
println(" Kwh");
}
}
} [/quote]

Attenzione :Se optate per la grafica "Processing" dovete sostituire sull'Arduino il codice con questo <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>#include <virtualwire.h>
int Tensione;
int PotenzaPro;
int PotenzaAss;
float CorrentePro;
float CorrenteAss;
float TotalePro;
float TotaleAss;

void setup()
{
Serial.begin(9600); // Debugging only
Serial.println("setup");

// Initialise the IO and ISR
vw_set_ptt_inverted(true); // Required for DR3100
vw_setup(2000); // Bits per sec

vw_rx_start(); // Start the receiver PLL running
}

void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

if (vw_get_message(buf, &buflen)) // Non-blocking
{

int i;
digitalWrite(13, true); // Flash a light to show received good message
// Message with a good checksum received, dump it.
//Serial.print("Got: ");

for (i = 0; i < buflen; i++)
{
Serial.print(buf[i], DEC);
Serial.print(",");
}
Serial.print("#");

Tensione = buf[1];
PotenzaPro = (int(buf[3]<<8)+buf[2]);
PotenzaAss = (int(buf[5]<<8)+buf[4]);
CorrentePro = float(int(buf[7]<<8)+buf[6])/100;
CorrenteAss = float(int(buf[9]<<8)+buf[8])/100;
TotalePro = float(long(buf[12]<<16)+int(buf[11]<<8)+buf[10])/10;
TotaleAss = float(long(buf[15]<<16)+int(buf[14]<<8)+buf[13])/10;

/*
Serial.write ("Tensione= ");
Serial.print(Tensione);
Serial.println(" Volt");
Serial.write ("Potenza Assorbita= ");
Serial.print(PotenzaAss);
Serial.println(" Watt");
Serial.print ("Potenza Prodotta= ");
Serial.print(PotenzaPro);
Serial.println(" Watt");
Serial.write ("Corrente Assorbita= ");
Serial.print(CorrenteAss);
Serial.println(" Amper");
Serial.write ("Corrente Prodotta= ");
Serial.print(CorrentePro);
Serial.println(" Amper");
Serial.write ("Totale Consumata= ");
Serial.print(TotaleAss);
Serial.println(" Kwh");
Serial.write ("Totale Prodotta= ");
Serial.print(TotalePro);
Serial.println(" Kwh");
*/
//Serial.println("");
digitalWrite(13, false);
}
} [/quote]


Sperò che sia di vostro Gradimento e che regali un pò di colore anche hai vostri progetti.

Sempre a vostra disposizione per dubbi,critiche e consigli bidirezionali
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
 
NonSoloBolleDiAcqua
Ex Member
*****


--------

Gender: Male
Zodiac sign: Scorpio
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #11 - 13.02.13 at 11:49:00
Print Post  



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


yottawatt

Posts: 3916
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #12 - 13.02.13 at 12:00:00
Print Post  
ora tutto bello colorato
  

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
 
fulroc
Ex Member
*


--------

Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #13 - 13.02.13 at 20:59:00
Print Post  
CITAZIONE (ElettroshockNow @ 13/2/2013, 12:00) Quote:
ora tutto bello colorato

Hai fatto veramente un'ottimo lavoro!!!!
Spero, al più presto, di avere del tempo libero per iniziare a studiare l'arduino per applicarlo.
Un saluto. Fulroc
  
Back to top
 
IP Logged
 
jumpy75
Ex Member
*


--------

Re:Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
Reply #14 - 13.02.13 at 21:01:00
Print Post  
Bolle, qui EettroshockNow ci sta' superando con Arduino......... Bisogna rimettersi sotto e chiudere un po' di proggettini lasciati in sospeso ehehehhehe

Fino al 20 febbraio sono incasinato con l'uni, pero' dal 21 in poi ci possiamo rimettere sotto con il PPTEA-XXX!!!!

J.
  
Back to top
 
IP Logged
 
Page Index Toggle Pages: [1] 2 3 ... 19
Send TopicPrint
 

TOP100-SOLAR Galleria Immagini EnergiAlternativa