Se sei già registrato           oppure    

Orario: 15/05/2024 21:50:44  

 

Energia Alternativa ed Energia Fai Da Te > Applicazioni E Realizzazioni Pratiche

VISUALIZZA L'ALBUM

Pagine: (18)   [1]   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18    (Ultimo Msg)


Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento
FinePagina

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 8/2/2013,19:33

Oggi si conta faccine/w00t.gif 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 Rev 3.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 faccine/w00t.gif faccine/w00t.gif )

Le sue applicazioni sono molteplici:
-Vuoi misurare la potenza che produci..ora puoi faccine/biggrin.gif
-e che consumi ...ora puoi faccine/biggrin.gif
-Volevi sapere la tensione per un rapido Trouble Shooting..ora puoi faccine/biggrin.gif
-Hai il contatore in comune e vuoi sapere i due consumi ...ora puoi faccine/biggrin.gif
-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 faccine/smile.gif

Dettaglio "LE PAGINE DEL DISPLAY"

Prima pagina (nel programma la numero 0)
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20Pagina%200.jpg

Seconda pagina (nel programma la numero 1)
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20Pagina%201.png

Terza pagina (nel programma la numero 2)
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20Pagina%202.png

Quarta pagina (nel programma indovinate faccine/laugh.gif )
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20Pagina%203.png

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.
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Powermeter%20A%20OnGrid.JPG

-Pippo và di Isola ed usa un inverter
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Powermeter%20A%20OffGrid.jpg

-Pluto và di Isola ed usa un UPS.....
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Powermeter%20B.JPG

-Puffo scrocca
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Powermeter%20A%20contatore%20in%20comune.JPG

Quindi in che configurazione vi trovate ????

Semplicemente o A o B...... faccine/biggrin.gif faccine/biggrin.gif

Come realizzarlo???
Bo!! provate a chiedere al vicino
oppure W il Fai da Te .......

Iniziamo: Sezione Alimentatore e adattatore di livello!!!!
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Alimentazione%20PowerMeter.JPG

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

Il display ed i sensori.... (i miei piccolini ACS712 da 30A) ecco come vanno collegati
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Powermeter%20RF.JPG

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


A dimenticavo.....


Ciao...faccine/tongue.gif

Dimenticavo una cosina... il codice Rev 3.3


/*Progetto Powermeter Rev3.3
Un sentito ringraziamento al Forum "" Energia Alternativa & Energia Fai Da Te "" http://www.energialternativa.info/

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
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20Active.png

-STBY se in attesa
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20Stby.png

Spero che sia di vostro gradimento e che il mio non sia figlio unico faccine/terafin-grin.gif

Saluti Veri
ElettroshockNow

Ora una Breve panoramica della realizzazione:
Il sensore ACS712 da 30A
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Sensore%20ACS.jpg

Consiglio un bel giro di nastro autoagglomerante
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Sensore%20ACS%20con%20nastro.jpg

Magari installandoli in maniera fissa
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Doppio%20Sensore%20in%20scatola.jpg

L'arduino pronto per sposarsi con il display
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/Arduino%20pronto.jpg

L'interno nasconde
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20interno.jpg

L'estetica finale
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PM%20Estetica%20Finale.jpg

 

eliafino

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:1419

Stato:



Inviato il: 9/2/2013,08:50

Bel progetto faccine/happy.gif

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 "eliafino" in Tempo Reale.
http://www.eliafino.it:3000/d/solare/impianto-fotovoltaico-eliafino

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 9/2/2013,09:04

Un lavoro notevole,realizzato in tempi ristrettissimi e documentato in modo eccelso: cosa dire?
FENOMENALE!!!!!
faccine/clap.gif



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 9/2/2013,11:45

Thanks ....ma FENOMENALE faccine/puppyeyes.gif me pare troppo faccine/biggrin.gif .
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
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

 

eliafino

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:1419

Stato:



Inviato il: 9/2/2013,13:48

CITAZIONE
CITAZIONE
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 faccine/happy.gif



---------------
Impianto Fotovoltaico "eliafino" in Tempo Reale.
http://www.eliafino.it:3000/d/solare/impianto-fotovoltaico-eliafino

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 9/2/2013,13:57

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
... mi accontento per ora della paginetta internet

E lasci il Rasp solo soletto nel cassetto .. faccine/cry.gif faccine/cry.gif faccine/cry.gif

Ciao
ElettroshockNow




Modificato da ElettroshockNow - 9/2/2013, 14:54
 

eliafino

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:1419

Stato:



Inviato il: 9/2/2013,19:34

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 "eliafino" in Tempo Reale.
http://www.eliafino.it:3000/d/solare/impianto-fotovoltaico-eliafino

 

Luca450Mhz

Avatar
GigaWatt


Gruppo:Utente
Messaggi:3204

Stato:



Inviato il: 11/2/2013,12:58

CITAZIONE (eliafino @ 9/2/2013, 19:34)
... 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: 6975 Wp (poli e mono). Inverter UPS PSW7 6kW 48V toroidale con switch comandato dal mio sistema di domotica (RaspberryPi + vari Wemos D1 Mini - ESP8266). Regolatore di carica: Mpp Solar PCM8048.
Batterie: 24 elementi trazione pesante 315Ah C5 48V.

 

eliafino

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:1419

Stato:



Inviato il: 11/2/2013,16:15

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 faccine/happy.gif



---------------
Impianto Fotovoltaico "eliafino" in Tempo Reale.
http://www.eliafino.it:3000/d/solare/impianto-fotovoltaico-eliafino

 

Luca450Mhz

Avatar
GigaWatt


Gruppo:Utente
Messaggi:3204

Stato:



Inviato il: 11/2/2013,16:44

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: 6975 Wp (poli e mono). Inverter UPS PSW7 6kW 48V toroidale con switch comandato dal mio sistema di domotica (RaspberryPi + vari Wemos D1 Mini - ESP8266). Regolatore di carica: Mpp Solar PCM8048.
Batterie: 24 elementi trazione pesante 315Ah C5 48V.

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 13/2/2013,11:45

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 ...
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PowerMeterReceiver.jpg

Caricando il seguente codice


#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);
 }
}


verrà visualizzato il solito e noioso Testo faccine/sick.gif
http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PowerMeterSerial.JPG

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.

http://www.energialternativa.info/Public/NewForum/ForumEA/pptea/ForumEA/PowerMeterApp.JPG

Questo è il Codice che potete successivamente renderlo StandAlone esportandolo per il vostro sistema operativo attraverso il compilatore Processing

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() 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");
 }
 }
}


Attenzione :Se optate per la grafica "Processing" dovete sostituire sull'Arduino il codice con questo

#include 
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);
 }
}



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



 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 13/2/2013,11:49

faccine/ohmy.gif faccine/ohmy.gif faccine/ohmy.gif
http://www.energialternativa.info/Public/NewForum/ForumEA/8/9/7/4/3/4/9/1360751325.jpg

faccine/biggrin.gif



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 13/2/2013,12:00

faccine/biggrin.gif ora tutto bello colorato faccine/biggrin.gif

 

fulroc
KiloWatt


Gruppo:Utente
Messaggi:161

Stato:



Inviato il: 13/2/2013,20:59

CITAZIONE (ElettroshockNow @ 13/2/2013, 12:00)
faccine/biggrin.gif ora tutto bello colorato faccine/biggrin.gif

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

 

jumpy75

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:686

Stato:



Inviato il: 13/2/2013,21:01

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.

 
 InizioPagina
 

Pagine: (18)   [1]   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum