Applicazioni E Realizzazioni Pratiche
Homemade Inverter "modulo DC/AC"

VISUALIZZA L'ALBUM

Pag: (167)  < ...  85   86   87   [88]   89   90   91  ...>    (Ultimo Msg)


FinePagina

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 13/03/2015 14:00:23

CITAZIONE (inverter90, 13/03/2015 10:08:01 ) Discussione.php?55031252&87#MSG1336

Ci rinuncio

.... Ora che arriva il bello ?
Le linee guida sono quelle che ho malamente spiegato , bisognerà sicuramente rivedere il metodo di pilotaggio e una spiegazione più dettagliata.

 

giordanto1971
milliWatt


Utente
Msg:4

Stato:



Inviato il: 13/03/2015 15:17:33

http://www.feec.ece.vt.edu/NewProjects/FuelCellConverter.php
http://www.feec.ece.vt.edu/NewProjects/FuelCellConverter/NewV6.jpg

 

inverter90

Avatar
MegaWatt


Utente
Msg:323

Stato:



Inviato il: 13/03/2015 15:45:13

CITAZIONE (ElettroshockNow, 13/03/2015 15:17:33 ) Discussione.php?55031252&88#MSG1337

CITAZIONE (inverter90, 13/03/2015 10:08:01 ) Discussione.php?55031252&87#MSG1336
Ci rinuncio

.... Ora che arriva il bello ?
Le linee guida sono quelle che ho malamente spiegato , bisognerà sicuramente rivedere il metodo di pilotaggio e una spiegazione più dettagliata.


Si Elettro sarà stata la stanchezza di fine turno ora a mente lucida vediamo di ripartire.Comunque in ogni caso quando avrete tempo una spiegazione piu dettagliata per i non adddetti mi sarabbe molto utile prima di proseguire... Faccine/Smileys_0006.gif



---------------
Il niente è impossibile finchè non ci provi!!!


 

scinty

Avatar
GigaWatt


Utente
Msg:734

Stato:



Inviato il: 13/03/2015 21:42:15

CITAZIONE (giordanto1971, 13/03/2015 15:45:13 ) Discussione.php?55031252&88#MSG1338

http://www.feec.ece.vt.edu/NewProjects/FuelCellConverter.php
http://www.feec.ece.vt.edu/NewProjects/FuelCellConverter/NewV6.jpg

bravo giordanato vedo che con google te la cavi a fare copia e incolla però non sai che quello non funziona (se leggi bene c'è pure scritto che è un progetto in corso) e a me non va di fare la foto a quello funzionante perchè vale un perù



---------------
14 pannelli mono da 250Wp 24 pannelli amorfi Sharp da 130Wp banco batterie 48V 225Ah survoltore 5000...

 

BellaEli

Avatar
GigaWatt


MODERATORE
Msg:3286

Stato:



Inviato il: 13/03/2015 23:26:05


CITAZIONE

...perchè vale un perù

Che volevi scrivere ? O, se è un'espressione, che vuol dire ?

CITAZIONE
...però non sai che quello non funziona (se leggi bene c'è pure scritto che è un progetto in corso) e a me non va di fare la foto a quello funzionante...


Onestamente non mi ha fatto piacere vedere quel progetto, non perché penso che non sei all'altezza ma perché sei stato scorretto a non dire che non era il tuo DC-DC...

Mi hai persino rimproverato perché non sembrava un prodotto Homemade...

Cos'è una tecnica di difesa ? Mi hai aggredito per non farti scoprire ?

Più che rimproverare giordano dovresti chiedere scusa a quelli come me che hanno creduto che fosse il tuo progetto e non quello di altri, a prescindere da ogni cosa.

Non importa se tu sei più bravo, se il tuo progetto è migliore, più bello, più efficiente, o più tutto, quello che conta è che senza alcun motivo sensato hai nascosto ai tuoi "amici" del forum che si trattava di una foto presa da internet.

Ora spero solo che prima di rispondere a questo mio post conterai fino a 100 e risponderai con la testa anziché con l'istinto (visto che non ti manca né l'uno né l'altro...)

Con disinteressata amicizia, Eligio.



---------------
C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!






 

BellaEli

Avatar
GigaWatt


MODERATORE
Msg:3286

Stato:



Inviato il: 14/03/2015 00:05:09


CITAZIONE

Comunque in ogni caso quando avrete tempo una spiegazione piu dettagliata per i non adddetti mi sarabbe molto utile prima di proseguire


Probabilmente i tuoi dubbi sono legati alla non conoscenza degli interrupt.
A tal proposito ti consiglio di leggere la breve guida in italiano di Mauro Alfieri, riportata a questo link:
http://www.mauroalfieri.it/elettronica/tutorial-arduino-interrupt.html

Se hai letto la guida dovresti incominciare a capire la direzione che dobbiamo prendere, ma proviamo a spiegare (elettro correggimi se sbaglio, anche per me sono argomenti inesplorati !).

Sappiamo che all'interno dell'atmega ci sono 3 timer, ovvero 3 circuiti indipendenti dal codice che contano da 0 a xxx per poi ripartire, con una frequenza di 16 MHz.

Dovremmo anche essere in grado di resettare tali timer, ovvero farli ripartire da zero a nostro piacimento.

Sappiamo anche che per rallentare il conteggio possiamo utilizzare i prescaler, ovvero una calcolatrice che in tempo reale divide il valore del timer per 2 o un suo multiplo.

A questo punto, dopo aver fatto i dovuti conteggi e impostato i giusti parametri, possiamo impostare un interrupt per essere richiamato tutte le volte che il Timer x arriva al numero y

Ma che vuol dire tutto ciò ?

Che il timer inizia a contare (essendo un contatore hardware il cui clock è determinato da un quarzo è molto preciso) e ipotizziamo che quando arriva a 500 siano passati esattamente 100 microsecondi.

A questo punto agganciamo una funzione interrupt al valore 500 del timer.

Mentre il codice contenuto nella funzione loop viene eseguito, il contatore del timer, indipendentemente è contemporaneamente al codice, conta e appena arriva al valore 500 interrompe il codice della funzione loop e lancia la funzione dell'interrupt.

Nel nostro caso, in tale funzione, ci saranno inserite le istruzioni per leggere il nuovo valore del vettore ed impostarlo sul pin PWM.

Finita la funzione dell'interrupt il codice riprende da dove era stato interrotto e il timer continua il suo conteggio (conviene resettarlo dentro la funzione dell'interrupt ?)

Allora come possiamo fare per variare la frequenza di qualche decimo di Hz ?

Semplice, modifichiamo il valore 500 con 499, 498 o 501, 502 etc.

Tutto chiaro ?

Elettro tutto giusto ?



---------------
C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!






 

inverter90

Avatar
MegaWatt


Utente
Msg:323

Stato:



Inviato il: 14/03/2015 07:46:57

Si l'interrupt non lo mai usati..

ok potrebbe essere qualcosa del genere?Supponiamo sempre che i nostri 100microsecondi equivalgono a 500.

Nel nostro esempio il conteggio arriva a 500 dovrà disattivare timer1? Oppure dovrà disattivare prima l'uscita OCR1A e poi altro conteggio fino a 500 e disattivare uscita OCR1B? Se si come si fa?( con l'istruzione OCR1A= LOW; non funziona.
Il conteggio è meglio farla fare nella funzione loop? o nella funzione ISR(TIMER1_OVF_vect)?

Il pin 2 cioè lo (0 dichiarato su attachInterrupt )è il nostro interruttore meccanico che accenderà e spegnera l'inverter o lo dobbiamo sostituire con una variabile?

int interrConteggio=0;
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

void setup()
{
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);

attachInterrupt(0, interruptPwm, RISING);

sbi (TCCR1A, COM1B0);
sbi (TCCR1A, COM1B1);
sbi (TCCR1A, COM1A1);
cbi (TCCR1A, COM1A0);

sbi (TCCR1A, WGM11);
cbi (TCCR1A, WGM10);
cbi (TCCR1A, WGM12);
cbi (TCCR1A, WGM13);

sbi (TCCR1B, CS10);
cbi (TCCR1B, CS11);
cbi (TCCR1B, CS12);
}

void loop() {
interrConteggio++;



if ( interrConteggio == 500 )
{
interrConteggio = 0;
cbi (TIMSK1,TOIE1);// disabilita timer1
}

}

void interruptPwm()
{
sbi (TIMSK1,TOIE1);// abilita timer1
}

ISR(TIMER1_OVF_vect) {

OCR1A=pgm_read_byte_near(sine256 );
delayMicroseconds(5);
OCR1B=pgm_read_byte_near(sine256 );
delayMicroseconds(5);
}


Thank you



---------------
Il niente è impossibile finchè non ci provi!!!


 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 14/03/2015 07:58:27

@BellaEli Perfect .

Aggiungerei che esistono altri metodi per gestire la frequenza ,sempre con la stabilità data dai Timer interni.

Ad esempio possiamo usare un solo Timer (nel nostro caso 1 ) e inserire in una variabile il numero di periodi.
Sapendo che in uscita abbiamo una frequenza pwm di 15655 (da noi scelta) possiamo contare le oscillazioni (sempre grazie ad un interrupt che viene richiamato ad ogni OverFlow) ....

Quindi 15665/50 = 313 ....

Un'onda completa a 50Hz sarà composta da 313 periodi della frequenza pwm a 15665Hz ....

Se si facesse una tabella della variazione pwm sinusoidale(da 0° a 360°) con 313 step reggiungeremo il massimo della definizione

Vabbè è un'altra soluzione usando un solo Timer .

Metto a conoscenza per chi non lo sapesse che ElettronicaIn (Rivista Elettronica) gratuitamente concede il download dei propri corsi ....
CORSI GRATUITI ELETTRONICAIN

e questo potrebbe essere di aiuto (sopratutto la sezione interrupt )
LINK

Ciao e buona EA
Elettro

 

inverter90

Avatar
MegaWatt


Utente
Msg:323

Stato:



Inviato il: 14/03/2015 08:19:04

CITAZIONE (ElettroshockNow, 14/03/2015 07:58:27 ) Discussione.php?55031252&88#MSG1345

Elettronica) gratuitamente concede il download dei propri corsi ....
CORSI GRATUITI E
LETTRONICAIN


e questo potrebbe essere di aiuto (sopratutto la sezione interrupt )
LINK

Ciao e buona EA
Elettro


WOOAOO



---------------
Il niente è impossibile finchè non ci provi!!!


 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 14/03/2015 09:02:01

Penso che ti toglierà ogni dubbio.
Ammetto di averne sempre una copia vicino insieme al datasheet e ai nomi degli ISR ... (ciò poca memoria )

Lo sai che stai abbandonando Arduino entrando nel cuore del micro ?
Questo è un bene ....

 

inverter90

Avatar
MegaWatt


Utente
Msg:323

Stato:



Inviato il: 14/03/2015 09:14:53

Si si Elettro sei un grande è una rivista di tutto rispetto (spero solo di comprenderla ben). ora come ho qualche ora a disposizione inizio a studiarlo



---------------
Il niente è impossibile finchè non ci provi!!!


 

inverter90

Avatar
MegaWatt


Utente
Msg:323

Stato:



Inviato il: 14/03/2015 18:05:06

Ma void main equivale a void loop?



---------------
Il niente è impossibile finchè non ci provi!!!


 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 14/03/2015 21:18:03

Si il Main in C è il Loop in Wiring ....

Iniziano le differenze

 

inverter90

Avatar
MegaWatt


Utente
Msg:323

Stato:



Inviato il: 15/03/2015 08:58:14

Ok Elettro
Ora però sto facendo un'altra confusione, mi potresti spiegare la differenza (o meglio dire il significato) tra OCR1A E OCR2? Cioè quello che pensavo di sapere è che OCR1A corrisponde a pin 9?, ma leggendo sulla rivista misa che pensavo male..

sul corso dichiara OCR1A= 100 // il timer scatta ogni 7ms

e

ISR (TIMER1_COMPA_vect)
OCR2=luce //l'istruzione da compiere ogni 7ms



---------------
Il niente è impossibile finchè non ci provi!!!


 

ElettroshockNow

Avatar
GigaWatt


Utente
Msg:4656

Stato:



Inviato il: 15/03/2015 09:33:24

CITAZIONE (inverter90, 15/03/2015 08:58:14 ) Discussione.php?55031252&88#MSG1351

Ok Elettro
Ora però sto facendo un'altra confusione, mi potresti spiegare la differenza (o meglio dire il significato) tra OCR1A E OCR2? Cioè quello che pensavo di sapere è che OCR1A corrisponde a pin 9?, ma leggendo sulla rivista misa che pensavo male..

sul corso dichiara OCR1A= 100 // il timer scatta ogni 7ms

e

ISR (TIMER1_COMPA_vect)
OCR2=luce //l'istruzione da compiere ogni 7ms



http://www.energialternativa.info/public/newforum/ForumEA/D/Timer.jpg
*sostituire n con il timer che si vuole usare

OCRn (esempio OCR1,OCR1A,OCR1B,OCR2) sono dei valori che vengono comparati con il contatore TCNTn (esempio TCNT1 ,TCNT2,TCNT3)

OCn (esempio OC1A,OC1B,OC2A) sono le possibili uscite fisiche che possiamo collegare ai rispettivi timer
http://www.energialternativa.info/public/newforum/ForumEA/D/Pinout.jpg
Le possiamo collegare internamente al micro grazie alla configurazione dei bit COMnx (esempio COM1A1 ,COM1A0 ,COM1B0) ...

Poi arduino le chiama sempre uscita 9 ,ma si chiama OC1A


Per gli Interrupt .....
ISR stà per Interrupt Service Routine e in pratica è una routine che viene richiamata ed eseguita ogni volta che succede un interrupt (interruzione del programma nel main o nel loop in Arduino)

Quindi dobbiamo scegliere chi fà interrompere il programma e lo facciamo scrivendo all'interno delle parentesi (esempio TIMER0_COMPA_vect,TIMER0_COMPB_vect,TIMER0_OVF_vect .. lista completa LINK)

Nel tuo esempio ISR (TIMER1_COMPA_vect) chiediamo al micro che ogni volta il valore TCNT1 (che è il conteggio degli impulsi proveniente dalla frequenza del cristallo diviso il prescaler1 ) è uguale al valore di OCR1A esegui la routine

 
 InizioPagina
 

Pag: (167)  < ...  85   86   87   [88]   89   90   91  ...>    (Ultimo Msg)

Versione Completa!

Home page     TOP100-SOLAR    Home page forum