Applicazioni E Realizzazioni Pratiche
Voltmetro, Amperometro, Wattmetro, Contatori Assorbimento

VISUALIZZA L'ALBUM

Pag: (18)  < ...  12   13   14   15   [16]   17   18    (Ultimo Msg)


FinePagina

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 19/05/2015 23:07:47

CITAZIONE (eolo1234, 19/05/2015 20:30:10 ) Discussione.php?53671885&15#MSG234

buona sera a tutti
scusate non vorrei essere insistente ma non c e propio nessuno che puo aiutarmi

grazie


Prova a caricare un programma semplice per testare gli ingressi analogici.

Poi controlla nuovamente le uscite dalla scheda adattatrice :
- circa 2,5V per i sensori
- circa 3V per la tensione (metti un condensatore per il test,poi lo rimuovi quando lo connetti ad arduino)

Fatto ciò controlla come alimenti Arduino.

Deve prendere alimentazione dal Vin e devi usare l'uscita 5V per creare l'offset dei sensori corrente.

Ciao
Elettro

 

eolo1234
KiloWatt


Utente
Msg:253

Stato:



Inviato il: 20/05/2015 09:23:00

Ciao grazie Elettro provo a fare come mi hai detto

Ma vorrei sapere una cosa dopo l'alimentatore 4v 8v e la scheda che stabilizza i voltaggi va messa un altro circuito oppure esco e vado diretto su arduino come da schema ( perché da quel poco che capisco di elettronica mi sembra che esce in alternata e non vorrei che devo trasformarla in contiua )

 

iannez
milliWatt


Utente
Msg:18

Stato:



Inviato il: 20/05/2015 14:40:28

Ciao Eolo,
l'uscita a 8v viene poi raddrizzata e filtrata per alimentare arduino.
per cui va bene cosi.

l altra è quella che tramite il partitore serve poi per leggere
l intera forma dell'onda tramite l ingresso di arduino.

 

eolo1234
KiloWatt


Utente
Msg:253

Stato:



Inviato il: 20/05/2015 14:54:57

grazie iannez
quindi per l uscita 3v devo creare il partitore non ce uno schema cosi lo costruisco
invece quella da 8v la devo attaccare direttamente ad arduino ? oppure devo raddrizzarla e filtrarla se e cosi mi serve lo schema anche di quello

grazie

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 20/05/2015 15:00:02

CITAZIONE (iannez, 20/05/2015 14:40:28 ) Discussione.php?53671885&16#MSG237

l altra è quella che tramite il partitore serve poi per leggere
l intera forma dell'onda tramite l ingresso di arduino.


non proprio tutta ,ma solo le semionde positive.

Perchè?
Se sapevo che il progetto avrebbe nutrito interesse mi sarei impegnato di più.
Quando lo realizzai ,ho aperto il cassetto e ho visto quello che avevo.

La scelta migliore sarebbe stata due piccoli trasformatori isolati.
Uno dedicato all'alimentazione (andava benissimo anche il già bello e pronto alimentatorino con spina) e uno per ridurre la 220 a livelli accettabili.

Il segnale cosi' ridotto (Vpp di circa 3V) lo avrei addizionato ad un offset di 2,5V (tensione prelevata tramite partitore e condensatori di livellamento usando i +5V di Arduino),in maniera tale da ottenere una sinusoide avente Vmin =1V e Vmax=4V e ovviamente zero a 2,5V.

Gli stessi 2,5V possono essere usati anche per i sensori corrente purchè nel partitore resistivo scorrano almeno 20mA per evitare fluttuazioni durante i piccoli assorbimenti del convertitore.

Ancora meglio è usare un generatore di tensione di riferimento da 2,5V dove prelevare gli offset.

Poi un ingresso analogico sul nodo offset e un ingresso per ogni segnale (uno per la tensione ... uno per la corrente1 ... uno per la corrente2 ....)

Questo è quello che farei oggi ....

Ieri ho aperto il cassetto ed ho trovato quel trasfo ... che non mi ha consentito di :
-essere immune a disturbi introdotti da assorbimenti di Arduino
-avere un offset e di conseguenza misurare tutta l'onda della tensione (quindi perdita della potenza attiva e reattiva)


Vabbè il progetto è da rifare ...,ma è più semplice di quello che sembra ...

Le linee guida le ho scritte e sarei onorato se qualcuno le sfruttasse e condividesse .

Ciao
Elettro

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 20/05/2015 16:13:54

Ecco la versione grafica di quello che ho descritto nel post precedente.
Accoppiato al codice allegato (Da testare) vi consentirà di avere un Powermeter con i fiocchi (ancora migliorabile) senza paragoni con il progetto originale della discussione.

http://www.energialternativa.info/public/newforum/ForumEA/E/Powermeter_Simple2.jpg

//**************************************************

#include < LiquidCrystal.h >
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);//ASSEGNAZIONE PIN LCD
const int BACKLIGH_PIN = 10;

int OffsetPin = A4;
int TensionePin = A1;
int CorrentePin_1 = A2;
int CorrentePin_2 = A3;
float Fattore_Conversione_Tensione = 1.03; //da calcolare
float Fattore_Conversione_Corrente_1 = .2212; //da calcolare
float Fattore_Conversione_Corrente_2 = .2212 ; //da calcolare
float TensioneRMS ;
float CorrenteRMS_1 ;
float CorrenteRMS_2 ;
float PotenzaAttiva_1;
float PotenzaAttiva_2;
float PotenzaApparente_1;
float PotenzaApparente_2;
float FattorediPotenza_1;
float FattorediPotenza_2;

void setup() {
pinMode(BACKLIGH_PIN, OUTPUT);
digitalWrite(BACKLIGH_PIN, HIGH);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PowerMeter");
lcd.setCursor(0,1);
lcd.print("Enhanced");
delay(2000);
lcd.clear();
ADCSRA&=0X90+ 0b101; //Setta ADC prescaler a 32


}

void loop() {
float SommaV=0;
float SommaI_1=0;
float SommaI_2=0;
float SommaP_1=0;
float SommaP_2=0;
int NumCampionamenti = 0;
int Offset = analogRead(OffsetPin);
unsigned long start = micros() ;
while (micros() < (start + 20000)){
float Tensioneinst = (analogRead(TensionePin)-Offset)*Fattore_Conversione_Tensione;
float Correnteinst_1 = (analogRead(CorrentePin_1)-Offset)*Fattore_Conversione_Corrente_1;
float Correnteinst_2 = (analogRead(CorrentePin_2)-Offset)*Fattore_Conversione_Corrente_2;


SommaV += pow(Tensioneinst,2);
SommaI_1 += pow(Correnteinst_1,2);
SommaI_2 += pow(Correnteinst_2,2);
SommaP_1 += (Tensioneinst*Correnteinst_1);
SommaP_2 += (Tensioneinst*Correnteinst_2);
NumCampionamenti++;
}

TensioneRMS = sqrt(SommaV / NumCampionamenti);
CorrenteRMS_1 = sqrt(SommaI_1 / NumCampionamenti);
CorrenteRMS_2 = sqrt(SommaI_2 / NumCampionamenti);
if (CorrenteRMS_1 < 0.10) {//soglia minima
CorrenteRMS_1=0;
SommaP_1=0;}
if (CorrenteRMS_2 < 0.10) {//soglia minima
CorrenteRMS_2=0;
SommaP_2=0;}
PotenzaAttiva_1 = SommaP_1/ NumCampionamenti;
PotenzaAttiva_2 = SommaP_2/ NumCampionamenti;
PotenzaApparente_1 = TensioneRMS * CorrenteRMS_1;
PotenzaApparente_1 = TensioneRMS * CorrenteRMS_1;
FattorediPotenza_1 = PotenzaAttiva_1/PotenzaApparente_1;
FattorediPotenza_2 = PotenzaAttiva_2/PotenzaApparente_2;


lcd.setCursor(0, 0);
lcd.print(TensioneRMS,0);
lcd.print("V ");
lcd.setCursor(5, 0);
lcd.print(CorrenteRMS_1,1);
lcd.print("A ");
lcd.setCursor(11, 0);
lcd.print(CorrenteRMS_2,1);
lcd.print("A ");
lcd.setCursor(0,1);
lcd.print(PotenzaAttiva_1,0);
lcd.print("W ");
lcd.setCursor(6,1);
lcd.print(PotenzaAttiva_2,0);
lcd.print("W ");
lcd.setCursor(12,1);
lcd.print(FattorediPotenza_1,2);
lcd.print(" ");

}
//***************************************************




Ciao
ElettroshockNow

PS:levare gli spazi su < LiquidCrystal.h >

Modificato da ElettroshockNow - 20/05/2015, 19:57:20

 

eolo1234
KiloWatt


Utente
Msg:253

Stato:



Inviato il: 20/05/2015 18:36:07

ciao Elettro

il circuito non mi sembra complicato neanche per uno scarso come me
avrei sempre il solito problema offset e programmazione
Faccine/Smileys_0044.gif

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 20/05/2015 18:43:03

CITAZIONE (eolo1234, 20/05/2015 18:36:07 ) Discussione.php?53671885&16#MSG241

ciao Elettro

il circuito non mi sembra complicato neanche per uno scarso come me
avrei sempre il solito problema offset e programmazione
Faccine/Smileys_0044.gif


Lo stò Testando ....

 

eolo1234
KiloWatt


Utente
Msg:253

Stato:



Inviato il: 20/05/2015 18:46:21

Elettro sei un grande
Faccine/Smileys_0003.gif
io nel frattempo sto testando arduino
ma per il trasformatore non si puo usare lo stesso usando la porta 8v

quello che non capisco perche se io copio un programma gia testato e corretto con i vari parametri e offset perche non dovrebbe funsionare



Modificato da eolo1234 - 20/05/2015, 18:54:10
 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 20/05/2015 19:26:17

CITAZIONE (eolo1234, 20/05/2015 18:46:21 ) Discussione.php?53671885&16#MSG243

Elettro sei un grande
Faccine/Smileys_0003.gif
io nel frattempo sto testando arduino
ma per il trasformatore non si puo usare lo stesso usando la porta 8v

quello che non capisco perche se io copio un programma gia testato e corretto con i vari parametri e offset perche non dovrebbe funsionare

Perchè ci sono in gioco le tolleranze.

Programma testato e funzionante (Qualche errore )
A breve lo allego con qualche info per la taratura e ovviamente video

Poi una volta che avete tutti i dati ,ognuno lo può personalizzare a piacimento.

 

iannez
milliWatt


Utente
Msg:18

Stato:



Inviato il: 20/05/2015 19:27:37

appena ho un momento replico lo schema e provo, per ora tnxx 1000

ho un paio di domande forse banali...

- perche usiamo campionare cosi:

unsigned long start = micros() ;
while (micros() < (start + 20000)){
qualcosa da fare
}

piuttosto che un ciclo for classico da 0 a n iterazioni?

- sto facendo test con un partitore ad cazzum come si suol dire
ma che funziona.
leggo in rms 250v corretti che ci sono nella mia abitazione.
poi ho estesto il codice utilizzando una lettura tensionemax
che sommo e poi divido per il numero dei campionamenti per
avere una media istantanea... solo che i valori differiscono cosi:

250vrms 160v circa istantanea... è normale?

mi sarei aspettato un 250*0.707 che non da 160v

tutto questo perche vorrei visualizzare anche la tensione non rms
come la corrente non rms insieme chiaramente a tutti gli altri valori
calcolati.

cosa sto sbagliando a livello concettuale?

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 20/05/2015 20:07:52

CITAZIONE (iannez, 20/05/2015 19:27:37 ) Discussione.php?53671885&16#MSG245


- perche usiamo campionare cosi:

unsigned long start = micros() ;
while (micros() < (start + 20000)){
qualcosa da fare
}

Per semplicità .
Faccio eseguire nel ciclo while più conversioni possibili nel tempo di 20mS (Arduino usa il Timer0).
Cosi' facendo è possibile aumentare o diminuire il prescaler dell'ADC senza dover calcolare il tempo necessario per ogni conversione e il conseguente numero di campionamenti necessari per campionare un'onda intera.
Calcola che se un giorno vorrai aggiungere un ulteriore sensore ti basterà copiare e incollare alcune linee di codice

Per il resto ... perchè vuoi rinunciare al True RMS .
Il mio PowerMeter ne è sprovvisto e ne sento la necessità .

Con alti carichi induttivi la potenza attiva è molto distante dall'apparente .

Ciao
Elettro

PS:Codice aggiornato e FUNZIONANTE

A breve video e procedura per tarare sensori.

 

eolo1234
KiloWatt


Utente
Msg:253

Stato:



Inviato il: 20/05/2015 20:15:04

Elettro aggiornerai la versione 3.5 cosi come e con i 2 rele?

 

iannez
milliWatt


Utente
Msg:18

Stato:



Inviato il: 20/05/2015 20:17:08

tnx ma il tempo 20ms è un dato particolare uscito da qualche
specifica o è indicativo e cioe poteva essere chesso 50ms?

no elettro no voglio rinunciare a niente anzi!!!
aggiungevo frequenza e anche la V non rms e I non rms

ma è il conto che non mi torna.

in pratica ho aggiunto questo:

if ( Correntemax < Correnteinst ) Correntemax=Correnteinst;
if ( Correntemin > Correnteinst ) Correntemin=Correnteinst;

Tensionemax += Tensioneinst;
Correntemax += Correnteinst;

} // chiudo ciclo campionamento

Tensionemax /= NumCampionamenti;
Correntemax /= NumCampionamenti;

poi li printo su lcd ma con il risultato di cui sopra.

mi aspetto si una discrepanza ma non cosi
non mi tornano i conti.

sbaglio concettualmente sicuramente.

 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 20/05/2015 21:14:20

CITAZIONE (iannez, 20/05/2015 20:17:08 ) Discussione.php?53671885&16#MSG248

tnx ma il tempo 20ms è un dato particolare uscito da qualche
specifica o è indicativo e cioe poteva essere chesso 50ms?

20mS è il Periodo di un'onda a 50Hz
Ma nel nostro calcolo possiamo usare suoi multipli.

Ci sarà cmq un errore dato dallo scostamento della frequenza rispetto alla cononica 50Hz ,ma non superiore all' 1% (con le nuove normative ci adegueremo più avanti :))

CITAZIONE (iannez, 20/05/2015 20:17:08 ) Discussione.php?53671885&16#MSG248

sbaglio concettualmente sicuramente.


Il contrario era più esatto.
Cioè misuri la tensione di picco e di conseguenza (tenendo sempre in condiderazione un'onda sinusoidale pura) calcoli il valore efficace dividendolo per 1.41.

Per la corrente invece sommi più letture e dividi per il numero delle campionature per ottenere una corrente media in una unità di tempo.

 
 InizioPagina
 

Pag: (18)  < ...  12   13   14   15   [16]   17   18    (Ultimo Msg)

Versione Completa!

Home page     TOP100-SOLAR    Home page forum