EnergiAlternativa

Page Index Toggle Pages: 1 ... 85 86 [87] 88 89 ... 219 Send TopicPrint
Very Hot Topic (More than 500 Replies) Homemade Inverter (Read 1256750 times)
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1290 - 12.03.15 at 09:59:10
Print Post  
B.giorno si in realta sono 179 punti totali da 0 a 200 89 e da 200 a 0 altri 89,ma la voglio modificare e arrivare a 200 punti totali..
Tornando al discorso temporizzazione vediamo se ciò capito qualcosa.
Dovrei creare 2 variabili di tipo long una che mi memorizzi il tempo trascorso e una che memorizzi il tempo corrente;Poi creo altre 2 variabili di tipo int per memorizzare lo stato,(pwmState1=LOW);(pwmState2=HIGH);

poi in void loop()
se sono trascorsi 10ms e
se ((pwmState1==LOW)&(pwmState2=HIGH));
pwmState1=HIGH;
pwmState2=LOW;

if (pwmState==HIGH);
OCR1A =(PWM_Out);
else if (pwmState ==LOW);
OCR1A =(LOW);

pwmState2 il contrario;

è tutto sbagliato? Ho il concetto è giusto?
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1291 - 12.03.15 at 14:11:41
Print Post  
Un'altra cosa 50 microsecondi equivalgono a 0.05 ms.
Nel programma come li dichiaro? Posso usare la variabile

long temporizzatore = 0.05; ?

oppure meglio

long temporizzatore;

temporizzatore=50/100;?
  
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 #1292 - 12.03.15 at 14:55:37
Print Post  
Quote:
è tutto sbagliato? Ho il concetto è giusto?

No, No, NOOOOOOOOOOOOOOOOO...!!!!!

L'"h" non ci va !!!!!!!!!

Cheesy Cheesy Cheesy

Scherzo, naturalmente...

Il concetto è giusto, l'implementazione è da rivedere...


Madonna quanti errori... :wacko:

Quote:
long temporizzatore = 0.05; ?


Un numero long è intero, non può essere con la virgola, devi usare un float


Quote:
temporizzatore=50/100;?


50/100 = 0,5

al limite dovresti scrivere 5/100

Ora non so cosa ci devi fare con questo valore ma se lo devi dichiarare devi usare la prima espressione, ovvero

float temporizzatore = 0.05;


Ciao...
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1293 - 12.03.15 at 15:45:19
Print Post  
CITAZIONE (BellaEli, 12/03/2015 14:55:37 ) Quote:
Quote:
è tutto sbagliato? Ho il concetto è giusto?

No, No, NOOOOOOOOOOOOOOOOO...!!!!!

L'"h" non ci va !!!!!!!!!

Cheesy Cheesy Cheesy

Scherzo, naturalmente...



Ora non so cosa ci devi fare con questo valore ma se lo devi dichiarare devi usare la prima espressione, ovvero

float temporizzatore = 0.05;


Ciao...


maledette h mi succede sempre:rolleyes:

si mi serve per richiamare l'istruzione  pgm_read_byte_near ogni 50microsecondi..
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1294 - 12.03.15 at 15:49:26
Print Post  
Non c'e un sistema per postare un codice senza che si prenda tutta la pagina?

Ennesima domanda ad esempio se voglio  dichiarare 1 secondo per il tempo di campionamento mi basta int t=1; o 1000?
  
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 #1295 - 13.03.15 at 00:40:20
Print Post  
Quote:
Non c'e un sistema per postare un codice senza che si prenda tutta la pagina?


Hai provato il tag "Code" ?

Premesso che non ho mai visto un codice per sintetizzare una forma d'onda né ho fatto esperimenti in tal senso, direi che se vogliamo realizzare un buon codice dobbiamo avvalerci di due tecniche di programmazione un po' più sofisticate del classico IF: sto parlando di Interrupt agganciato al timer e di puntatori.

Il primo fa in modo che ogni tot microsecondi (stabiliti da noi) il codice principale viene sospeso e viene lanciata funzione dell'interrupt che si occuperà di leggere il valore successivo dal vettore e impostarlo come nuovo valore del PWM.

I puntatori, invece, ci permettono di sapere in quale posizione del vettore ci troviamo e quindi possiamo gestire le letture con maggiore flessibilità nel caso in cui dobbiamo aumentare o diminuire la frequenza di qualche decimo di Hz.

Purtroppo hai scelto un progetto difficile per iniziare, ma se vogliamo dei risultati decenti dobbiamo per forza di cose utilizzare gli strumenti adatti...

Elettro che fine hai fatto ???

Che ne pensi ?

Non mi hai risposto all'altro post, tu come gestisci le piccole variazioni di frequenza ?
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1296 - 13.03.15 at 06:36:03
Print Post  
Si BellaEli provato, ma lo stesso occupa un intera pagina. Cmq non lo posto perche è anche sbagliato. Ieri son riuscito a lavoro a provare con l'oscilloscopio, ma con risultati pessimi su pin 9 avevo un dente di sega e su pin 10 una linea continua. Comunque niente c'e poco da fare devo aspettare te per un buon codice da solo senza le basi mi sta diventando impossibile!!
  
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 #1297 - 13.03.15 at 06:57:09
Print Post  
Ci sono Tongue ... (24h ..sono poche .... una nana bianca forse mi fa' recuperare qualche minuto... mi serve una stella per provare) .

La soluzione migliore è usare un interrupt che cadenza il cambio di pwm , come suggerito da BellaEli.
Arduino , in particolare (mini/nano/uno) usano vome processore un Atmega328 il quale dispone di 3 timer .
Un timer lo stiamo già usando per creare il nostro amato pwm a 15Khz ....
Un secondo timer lo possiamo usare per i campionamenti.

Nei miei scorsi esempi ho evidenziato come calcolare la frequenza di uscita (ricordate 16000000/1/511/2) ...

Stesso discorso , ma ci aggiungiamo qualcosa Smiley

Se si analizzano i modi di funzionamento dei timer (tabelle postate da Inverter90) possiamo vedere che il timer si resetta ad un valore preimpostato o scelto dall'utente.

Nel caso "pwm, phase correct 9bit " il valore e' 511 (0x1FF) , ma in altri è OCR ....

Significa che la frequenza in uscita (o il timer) avrà una frequenza pari a :16000000/prescaler/OCR (il diviso 2 non va' messo se il timet si resetta solo sul fronte di salita) .

A questo punto si sceglie il prescalet giusto per avvicinarsi ai 50Hz e si fa' una regolazione fine con l'OCR ....

La risposta alla tua domanda è OCR Smiley , oppure fat ripetere uno step pwm o saltare uno step pwm, ottenendo appunto una variazione  di fase di 1/200esimo di periodo.

Differenza tra i due metodi di rifasamento:
-nel primo caso non introduco distorsione ,ma vario la frequenza
-nel secondo introduco distorsione , ma non vario la frequenza .

Quale sia il migliore ?
Bo!!!!

Ciao
Elettro

ps:andate forti e nutro ammirazione a Inverter90 che pian pianino raggiungerà dama.
  

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 #1298 - 13.03.15 at 07:07:38
Print Post  
Ho trovato questo forse puo essere utile, ma bisogna conoscere l'inglese.
LINK
  
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 #1299 - 13.03.15 at 07:14:28
Print Post  
Perché l'inglese ...è scritto nello stesso linguaggio ... il C Smiley

Cmq è ottimo e appunto usa un secondo timer impostato "CTC" per creare la cadenza.

Se noti nel routine loop ... è vuoto Cheesy
Questo perché fa' tutto la routine interrupt che viene richiamata tramite il timer ...



.
  

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 #1300 - 13.03.15 at 07:25:13
Print Post  
Ok tanto per capirci lui usa timer 0 per generare l'onda e timer1 per ricreare la cadenza.. Ma nello specifico cosa significa in c questo?ISR(TIMER1_COMPA_vect)
  
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 #1301 - 13.03.15 at 07:44:29
Print Post  
È l'istruzione più importante ..... Smiley
  

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 #1302 - 13.03.15 at 08:29:49
Print Post  
Cheesy:D:wacko::wacko:
  
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 #1303 - 13.03.15 at 09:20:23
Print Post  
ISR(TIMER1_COMPA_vect)

Questa istruzione gestisce la frequenza (la forma dalla tabella).
In pratica vengono eseguite le istruzioni contenute nella routine ogni volta che il timer1 raggiunge il vettore .

Essendo una cadenza dettata dall'hardware , avrà la stabilità dell'hardware.

Quindi ogni 100 microS o 50 micro nell'esempio di BellaEli (selezionare il giusto prescaler , il giusto ocr , il giusto timer basandosi sul datasheet ....)
Viene richiamata la routine interrupt che modifica il valore pwm .... e con il primo if si resetta l'indice sample per ricominciare la lettura dal sample 0.

Nella routine loop ci metti tutto il resto del programma .... l'onda viene generata e gestita dall'hardware del micro Wink
  

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 #1304 - 13.03.15 at 10:08:01
Print Post  
Ci rinuncio:(Sad:crash.gif::crash.gif:
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1 ... 85 86 [87] 88 89 ... 219
Send TopicPrint
 

TOP100-SOLAR Galleria Immagini EnergiAlternativa