EnergiAlternativa

Page Index Toggle Pages: 1 ... 95 96 [97] 98 99 ... 219 Send TopicPrint
Very Hot Topic (More than 500 Replies) Homemade Inverter (Read 1238150 times)
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1440 - 31.03.15 at 09:07:02
Print Post  
CITAZIONE (inverter90, 31/03/2015 08:25:39 ) Quote:
Elettro, ma come mai?Anche con fast pwm 10bit ....


Avevo notato questa curiosa anomalia qualche tempo fà ed è legata alle uscite non invertite.
In pratica ad ogni OVF il pin di uscita OCnx viene posto ad 1 ,ma solo dopo un certo periodo (brevissimo) viene nuovamente settato a 0 se l'OCRnx è a 0.

Ad alta velocità neanche si nota e quando abbiamo un prescaler ad 1 è invisibile ,ma c'è !!!!



La soluzione che ho adottato e che ora implemento nel codice di BellaEli è di usare uscite settate in invertite


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


int Indice = 0;

const int onda[251]=
{0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 99, 104, 109, 114, 119, 124, 128, 133, 138, 143, 147, 152, 157, 161, 166, 170, 175, 179, 184, 188, 193, 197, 201, 206, 210, 214, 219, 223, 227, 231, 235, 239, 243, 247, 251, 255, 259, 263, 266, 270, 274, 277, 281, 285, 288, 292, 295, 298, 302, 305, 308, 311, 315, 318, 321, 324, 327, 329, 332, 335, 338, 340, 343, 346, 348, 351, 353, 355, 358, 360, 362, 364, 366, 368, 370, 372, 374, 375, 377, 379, 380, 382, 383, 385, 386, 387, 389, 390, 391, 392, 393, 394, 395, 395, 396, 397, 397, 398, 398, 399, 399, 399, 400, 400, 400, 400, 400, 400, 400, 399, 399, 399, 398, 398, 397, 397, 396, 395, 395, 394, 393, 392, 391, 390, 389, 387, 386, 385, 383, 382, 380, 379, 377, 375, 374, 372, 370, 368, 366, 364, 362, 360, 358, 355, 353, 351, 348, 346, 343, 340, 338, 335, 332, 329, 327, 324, 321, 318, 315, 311, 308, 305, 302, 298, 295, 292, 288, 285, 281, 277, 274, 270, 266, 263, 259, 255, 251, 247, 243, 239, 235, 231, 227, 223, 219, 214, 210, 206, 201, 197, 193, 188, 184, 179, 175, 170, 166, 161, 157, 152, 147, 143, 138, 133, 128, 124, 119, 114, 109, 104, 99, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 0};

void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
ICR1 = 640; // Setto il periodo a 40 µS (con Fck 16,0 Mhz, Prescaler 1)
TCCR1A = (1 << WGM11); // Setto la modalità Fast PWM a risoluzione variabile
TCCR1B = (1 << WGM12)
  

(1 << COM1B1) (Attachment deleted)

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


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1441 - 31.03.15 at 09:36:30
Print Post  
Wooaaa:clap.gif: . quindi per risolvere quella anomalia  basta solo invertire entrambi le fasi!!
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1442 - 31.03.15 at 09:38:57
Print Post  
Elettro ti posso chiedere una cortesia? Appena puoi mi puoi togliere questa quriosità se riesci a vedere che forma d'onda ha questo codice (mi dai il tuo indirizzo ti mando un uvo di pasqua per il fastidio:D)

#include < avr/io.h >
#include < avr/interrupt.h >
#include < avr/pgmspace.h >


prog_char onda[250] PROGMEM  =
{0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 114, 119, 124, 129, 134, 138, 143, 148, 152, 157, 162,
166, 171, 175, 180, 185, 189, 193, 198, 202, 207, 211, 215, 219, 224, 228, 232, 236, 240, 244, 248, 252, 256, 260, 264, 267, 271, 275, 278, 282, 286,
289, 292, 296, 299, 303, 306, 309, 312, 315, 318, 322, 324, 327, 330, 333, 336, 339, 341, 344, 346, 349, 351, 354, 356, 358, 361, 363, 365, 367, 369,
371, 373, 374, 376, 378, 379, 381, 383, 384, 385, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 396, 397, 398, 398, 399, 399, 399, 400, 400, 400,
400, 400, 400, 400, 400, 399, 399, 399, 398, 398, 397, 396, 396, 395, 394, 393, 392, 391, 390, 389, 388, 387, 385, 384, 383, 381, 379, 378, 376, 374,
373, 371, 369, 367, 365, 363, 361, 358, 356, 354, 351, 349, 346, 344, 341, 339, 336, 333, 330, 327, 324, 322, 318, 315, 312, 309, 306, 303, 299, 296,
292, 289, 286, 282, 278, 275, 271, 267, 264, 260, 256, 252, 248, 244, 240, 236, 232, 228, 224, 219, 215, 211, 207, 202, 198, 193, 189, 185, 180, 175,
171, 166, 162, 157, 152, 148, 143, 138, 134, 129, 124, 119, 114, 110, 105, 100, 95, 90, 85, 80, 75, 70, 65, 60, 55, 50, 45, 40, 35, 30, 25, 20, 15, 10, 5,
};



volatile int Indice = 0;
int DeadTime=0;


void setup() {


pinMode(9,OUTPUT);
pinMode(10,OUTPUT);

TCCR1A = (1 << WGM11)
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1443 - 31.03.15 at 09:46:05
Print Post  
Di seguito gli spike che vengono generati sul pin OC1A impostando OCR1A a 0 ....

In teoria dovrebbe essere sempre 0 :blink:
Sono veramente brevi , ma meglio eliminarli.


Torno al lab con il codice di inverter90..
  

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:Homemade Inverter "modulo DC/AC"
Reply #1444 - 31.03.15 at 09:56:09
Print Post  
Di seguito ...
La forma d'onda dovrebbe assomigliare a quella prodotta dal eg8010.

Ho prelevato il segnale parallelandomi al condensatore della rete rc di filtraggio connessa tra pin9 e pin10 .

  

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


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1445 - 31.03.15 at 10:05:09
Print Post  
muuuu male non mi piace.. 12hz? addirittura un periodo di 80ms quasi.. Forze a causato dal DeadTime?
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1446 - 31.03.15 at 10:05:31
Print Post  
Comunque grazie tanto Elettro:clap.gif:
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1447 - 31.03.15 at 10:20:07
Print Post  
a no ho capito quel'è il problema su OCR2A mi è rimasto il numero 40(della vecchia tabella) quindi il timer scattava ogni 20 microsecondi, ma con 250 valori siamo a 40 microsecondi per metà periodo quindi il numero per 20ms sarà 160 impulsi per OCR2A .. E dovrebbe corrispondere 12.5250hz * 4 =50.1hz; invece il periodo siamo 79.8403ms/4=19.96mS..
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
BellaEli
Ex Member
****


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1448 - 31.03.15 at 12:12:36
Print Post  
O mamma quanta post !!!

Dunque, vediamo di risolvere un po' di questioni...

Quote:
Ho trovato un errore: ... Indice = 250 ...


Noooo !!!

Abbagliato dai Timer non ho controllato per bene il codice...

Quote:
scusami BellaEli, ma sta cosa no mi è chiara io pensavo diversamente.
Icr1 che funzione ha? E 640 con quale formula lo ricavi?


Settando il Timer1 nel "Mode 14", il Timer1 conta da 0 fino a ICR1 per poi ripartire



Poichè il prescaler è a 1, il Timer conterà con la velocità data dalla frequenza di Clock, ovvero:

1/16.000.000 = 62,5 nS

Poichè io voglio ottenere un campionamento di 40 µS, quanti cicli da 62.5 nS occorrono per arrivare a 40 µS ?

N_Cicli = 40 µS / 0.0625 µS = 640 !

In questo modo a che frequenza lavorerà il PWM ?

f = 1 / T

sostituendo abbiamo:

f = 1 / 0.000040 = 25 kHz

Tutto chiaro ?

Quote:
Elettro, ma come mai? Anche con fast pwm 10bit il led non si spegne del tutto. Anche mettendo gli OCRXX=0 rimane leggermente acceso. Invece ho provato modalità phase correct 9bit e si spegne con ocrxx= 0 è tutto spento.. C'e una spiegazione per questo?


Quote:
Avevo notato questa curiosa anomalia qualche tempo fà ed è legata alle uscite non invertite.
In pratica ad ogni OVF il pin di uscita OCnx viene posto ad 1 ,ma solo dopo un certo periodo (brevissimo) viene nuovamente settato a 0 se l'OCRnx è a 0.


La spiegazione di Elettro non è del tutto corretta:

Ipotizziamo che OCR1A è impostato a 10.

Il Timer parte a contare da 0, 1, 2...

Il comparatore, ad ogni ciclo di clock, confronta il valore di TCNT1 con quello di OCR1A.

Quando i valori sono identici, al successivo ciclo di clock, l'uscita viene modificata !

Quindi impostando OCR1A a 0, quando il Timer parte (o si resetta), il Pin 9 viene posto a 1, il comparatore si accorge che TCNT1 = OCR1A (che sono entrambi a 0) e al successivo impulso di clock (esattamente dopo 62,5 nS) l'uscita sarà riportata a 0.

Questo è il motivo degli spike.

Quote:
La soluzione che ho adottato e che ora implemento nel codice di BellaEli è di usare uscite settate in invertite


:clap.gif: Risolto il problema in un batter d'occhio !

Quote:
Ed ecco la forma d'onda che genera il codice .... andate forti


Wow !!!

Ma hai già applicato un filtro RC ?

E come hai unito le 2 semionde per formare un'onda intera ?

Inoltre, leggo:

Frequenza: 50,1 Hz
Periodo:   19.9601 ms
DutyCycle: 49 %

I valori sono esatti ? Sono errori del codice o tolleranze dell'oscilloscopio ?

Quote:
Di seguito gli spike che vengono generati sul pin OC1A impostando OCR1A a 0 ....


Come fai a beccarli ?

Vedo la scritta "Stopped", è una funzionalità dell'oscilloscopio ???



Comunque ora abbiamo una base per partire, pian piano vediamo di aggiungere i
vari pezzi...


P.S. Grazie Elettro !!!
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1449 - 31.03.15 at 12:56:11
Print Post  
Limiti dell'oscilloscopio Sad (responsabile anche il filtraggio)

Per unire e filtrare le due semionde ho connesso una rc tra i due pin di uscita ed ho misurato la tensione sul condensatore.
  

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


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1450 - 31.03.15 at 14:22:50
Print Post  
Quote:
Limiti dell'oscilloscopio


Penso ti riferisci ai valori letti...

Solo che mi sorgono alcuni dubbi, vediamo:

C'è un ciclo di clock ogni 62,5 nS, in teoria il Timer conta da 0 a 639 (compreso), quindi 640 valori.

Se facciamo 62,5 * 640 = 40 µS

Indice, tranne il primo ciclo, andrà da 1 a 500 (compreso) quindi 500 campionamenti, che fanno:

40 µS * 500 = 20 mS esatti.


Se per qualche errore nel codice l'indice contasse solo 499 campioni avremmo:

40 µS * 499 = 19.9600 mS (Contro 19.9601 mS letti dall'oscilloscopio)

La frequenza sarebbe:

f = 1 / T = 1 / 0.01996 = 50.100 Hz

il DutyCycle sarebbe di sicuro <> 50 % ma non mi trovo in nessun caso con 49 %


O anche, se per qualche strano motivo il Timer contasse 639 valori anzichè 640 avremmo:

62,5 nS * 639 = 39,9375 µS

che per 500 campionamenti fanno:

39,9375 µS * 500 = 19,96875 mS (Contro 19.9601 mS letti dall'oscilloscopio)

La frequenza sarebbe:

f = 1 / T = 1 / 0.0196875 = 50.078 Hz

il DutyCycle dovrebbe essere esattamente del 50 %

Tu che ne pensi ?
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1451 - 31.03.15 at 14:34:49
Print Post  
Penso che se vuoi un livello di analisi più alto bisogna sostituire l'oscilloscopio.
Cmq i campioni sono 500 (1-2-3-4-5.....496-497-498-499-500-1-2-3-4-5-6....) ,li ho controllati con un print dell'indice e i 40 microS è un valore certo .. quindi mi è difficile pensare che non siano 50Hz Tongue

Ho dei dubbi solo sull' else indice++
  

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


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1452 - 31.03.15 at 14:36:55
Print Post  
Un'altra domanda importantissima prima di andare avanti:

Qual'è il valore ideale del PWM ???

10 kHz ?
20 kHz ?
30 kHz ?

Per ridurre il filtro (e fischi vari) meglio valori alti, per ridurre le perdite di commutazione meglio valori bassi, quindi ci vorrebbe una via di mezzo.

Ma qual'è ?????
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1453 - 31.03.15 at 14:40:26
Print Post  
Bella domanda ... :lol:

Appena sopra l'udibile è il miglior compromesso .

Io che son mezzo sordo mi accontento di 15Khz ,ma non mi sbilancerei oltre i 20Khz altrimenti le perdite da commutazione sono troppo alte
  

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


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1454 - 31.03.15 at 14:42:52
Print Post  
Quote:
Cmq i campioni sono 500 (1-2-3-4-5.....496-497-498-499-500-1-2-3-4-5-6....) ,li ho controllati con un print dell'indice


Anch'io ho ricontrollato varie volte il codice, ma dai calcoli semprerebbe che ci sfugge qualcosa, secondo i valori letti dal tuo oscilloscopio sembra proprio che conta 499 valori al posto di 500 !

Quote:
e i 40 microS è un valore certo .. quindi mi è difficile pensare che non siano 50Hz


Vediamo:

Il Timer parte da 0, ogni 62,5 nS incrementa.

A 639 TCNT1 = ICR1 e sono esattamente 640 valori, quindi 40 µS.

Il successivo ciclo di clock riparte da 0.

Dovrebbe essere corretto.

Quote:
Ho dei dubbi solo sull' else indice++


Cioè ?
  
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1 ... 95 96 [97] 98 99 ... 219
Send TopicPrint
 

TOP100-SOLAR Galleria Immagini EnergiAlternativa