EnergiAlternativa

Page Index Toggle Pages: 1 ... 89 90 [91] 92 93 ... 219 Send TopicPrint
Very Hot Topic (More than 500 Replies) Homemade Inverter (Read 58040 times)
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1350 - 23.03.15 at 10:08:14
Print Post  
CITAZIONE (ElettroshockNow, 20/03/2015 17:34:04 ) Quote:
CITAZIONE (inverter90, 15/03/2015 08:58:14 ) Quote:
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





Elettro gentilmente sai dirmi dove posso trovare uno schema simile ma per l'ATMEGA16? E da ieri che cerco su internet,ma non ho trovato niente
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1351 - 23.03.15 at 10:38:22
Print Post  
Ho riletto tutto il corso dalla prima pagina fino alla parte dei display. E devo dire che rileggendolo molti punti ora mi sono piu chiari, tuttavia mi rimane un punto che proprio non sto riuscendo a capire e avrei bisogno di aiuto.

Sarebbero queste due righe qua
DDRC = 0b10111100; /* PC0, PC1 e PC6 sono ingressi */
DDRD = 0b11110011; /* PD2 e PD3 sono ingressi */

Vedendo nel datasheet
PC0 SCL (Two-wire Serial Bus Clock Line)
PC1 SDA (Two-wire Serial Bus Data Input/Output Line)
PC7 TOSC2 (Timer Oscillator Pin 2)

PD2 INT0 (External Interrupt 0 Input)
PD3 INT1 (External Interrupt 1 Input)

quello che mi è oscuro perche questi pin bisogna dichiararli come ingressi?

Help me please:crash.gif:
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
farstar1965
Ex Member
**


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1352 - 23.03.15 at 13:26:40
Print Post  
CITAZIONE (inverter90, 23/03/2015 10:38:22 ) Quote:
CITAZIONE (ElettroshockNow, 20/03/2015 17:34:04 ) Quote:
CITAZIONE (inverter90, 15/03/2015 08:58:14 ) Quote:
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





Elettro gentilmente sai dirmi dove posso trovare uno schema simile ma per l'ATMEGA16? E da ieri che cerco su internet,ma non ho trovato niente


Prova ad andare su " pighixxx.com " se non lo trovi li vuol dire che non esiste:D
  
Più impari più ti rendi conto di quanto sei ignorante.
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1353 - 23.03.15 at 14:49:17
Print Post  
CITAZIONE (farstar1965, 23/03/2015 13:26:40 ) Quote:
Prova ad andare su " pighixxx.com " se non lo trovi li vuol dire che non esi
ste:D


Come miseria fate a trovare tutti sti siti interessanti?:huh: Pultroppo non c'e comunque grazie farstar..Smiley
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
farstar1965
Ex Member
**


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1354 - 23.03.15 at 15:20:34
Print Post  
Non sono cosi esperto finora ho usato solo il 328 e il 1024 ma se cerchi con google "pinout atmega16 stickers" nelle immagini mi pare di aver visto quello che ti serve. Non proprio uguale ai fantastici disegni di pighixxx (cosi in stile vintage nuova elettronica quando ci facevamo i primi circuiti di luci psichedeliche) ma comunque simile
  
Più impari più ti rendi conto di quanto sei ignorante.
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1355 - 23.03.15 at 15:44:31
Print Post  
Si si quelle immagini le avevo gia viste mi sarebbe piaciuto trovare proprio tutte le diramazioni dei pin, ma comunque quello che cercavo era nel datasheet completo dell' atmega.. Mi rimane solo da capire perche bisogna impostare quei pin come ingressi e qualè la loro funzione...
  
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 #1356 - 24.03.15 at 01:01:01
Print Post  
Ciao inverter 90, è da un po' che non scrivo ma solo perché in questa fase di studio non sarei di grande aiuto.
In ogni caso controllo questo topic più volte al giorno, tutti i giorni !

Sto continuando con la guida, sono a pag 64 e, finalmente, alcune "strane" istruzioni iniziano ad essere più comprensibili, per esempio: TCCR1B = (1 << CS12)
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1357 - 24.03.15 at 07:56:29
Print Post  
Ciao BellaEli si teoricamente per i timer non ci dovrebbero essere problemi io gli ho impostati cosi e sembra funzionare, anzi se ai la posibilità di provare questo codice mi confermeresti..


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


void setup() {


}   


pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
//TIMER1 GENERAZIONE PWM
TCCR1A = (1 << WGM11)
  

(1 << WGM22);
OCR2A = 64; // con 64 il timer scatta ogni 32 mICROs circa */
TIMSK2 = (1 << OCIE2A);
sei();
//TCCR2A A 0 IN MODALITà NORMALE
//CS21 IMPOSTA PRESCALER 8 (Attachment deleted)
16000000/8=2000000; 1/2000000=0 (Attachment deleted)
5uS
//WGM22 IMPOSTA MODALITà CTC PER IL CONTEGGIO
//OCR2A = 64;
//10/312 CAMPIONAMENTI=32uS (Attachment deleted)
QUINDI 32uS/0 (Attachment deleted)
5uS=64
}

void loop() {


}



ISR (TIMER2_COMPA_vect){


OCR1A = 255;// CON 511 DUTY CICLY AL 100% (Attachment deleted)
CON 0 DUTY CICLY AL 0%;

OCR1B = 255;//USCITA INVERTITA CON 511 DUTY CICLY AL 0%; CON 0 DUTY CICLY AL 100%;


}

Il problema per questo codice e che da una settimana sto smanettando con la funzione progmen (Attachment deleted)
nel senso che non so come fargli leggere gli array agl'ocr1a e ocr1b. E il secondo problema è che non ho dimistichezza con office per fare un campionamento come si deve (Attachment deleted)
ma questo per te non dovrebbe essere un problema..

Poi mi sorge un'altro dubbio (Attachment deleted)
abbiamo detto che con valore 511 OCR1A il duty cicly è al 100% (Attachment deleted)
mentre OCR1B con valore 511 sarà al 0%.Ma se noi dobbiamo introdurre il feedback non possiamo arrivare a 511 perche se il feedback dovrà incrementare il valore l'onda si distorcerebbe (Attachment deleted)
quindi il valore massimo metterei 450.
Mentre per OCR1B la cosa è contraria quando siamo a 0 il duty sarà al 100% quindi se il feedback avrà variazioni non potrà scendere sotto lo zero per incrementare il duty (Attachment deleted)
quindi dovremo partire da 50 anziche 0.Questo mi fa pensare che dovremmo creare 2 array diversi uno per OCR1A e l'altro per OCR1B..

Ora non so se tutte queste ipotesi sono giuste (Attachment deleted)
ma da teoria il discorso dovrebbe filare..

Io farei un array da 250 punti cosi abbiamo un numero intero 10/250=0 (Attachment deleted)
04uS. 250 punti con valori da 0 a 450 per OCR1A e 250 punti con valori da 50 a 511 per OCR1B..

Sperando che qualcosa di quello che ho scritto sia giusta:P (Attachment deleted)
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 #1358 - 24.03.15 at 14:06:33
Print Post  
Inverter90 ci sono 2 regole fondamentali da rispettare in una ISR:

1) Non puoi chiamare un'altra funzione, tutto i codice deve essere contenuto all'interno della ISR (anche la funzione Delay() non è utilizzabile);

2) Il codice all'interno della ISR deve essere eseguibile in tempi brevi, devi fare i conti per evitare che mentre la ISR sta in esecuzione ne venga richiamata un'altra !

Quote:
...non ho dimistichezza con office per fare un campionamento come si deve,ma questo per te non dovrebbe essere un problema...

Esatto, non è un problema, dimmi cosa ti serve e te lo preparo.

A presto
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1359 - 24.03.15 at 15:27:38
Print Post  
ok BellaEli io farei un array da 250 campioni con valori duty da 0 a 500 cosi abbiamo la possibilità di implementare il feedback, ma confermami anche tu se secondo te può andar bene, perche non sono sicuro di ciò che sto dicendo.

0 inizia la semionda positiva(valore duty 0)
250 picco della semionda positiva(valore duty 500)
0 tutto spento(valore duty 0)

e poi si deve ripetere per la semionda negativa, ma qua ho l'ennesimo dubbio,? OCR1B è contrario quindi è cosi?

0 inizia la semionda negativa(valore duty 511)
250 picco della semionda negativa(valore duty 11)(11 perche se il feedback deve incrementare il valore può arrivare a 0)
0 tutto spento(valore duty 511);

quindi tu che dici dobbiamo creare due tabelle diverse una per la positiva e una per la negativa?
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1360 - 24.03.15 at 16:05:25
Print Post  
Un'altra cosa BellaEli supponiamo che tu scriva il codice con l'array,ad esempio:

PROGMEM prog_uchar sine256[] =
{0,40,500,40,0}

void setup(){
supponiamo che timer2 richiami un interrupt ogni tot tempo.
}
void loop(){
.........
}

ISR (TIMER2_COMPA_vect){

OCR1A =come fai a fargli eseguire i valori della tabella partendo da 0 fino a 500 e poi di nuovo fino a 0?;

OCR1B =;

il deadTime con quale istruzione gli lo fai eseguire?
}
  
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 #1361 - 24.03.15 at 23:36:22
Print Post  
Quote:
ok BellaEli io farei un array da 250 campioni con valori duty da 0 a 500 cosi abbiamo la possibilità di implementare il feedback, ma confermami anche tu se secondo te può andar bene, perche non sono sicuro di ciò che sto dicendo


Se per il PWM a 8 bit (0...255) parlavamo di un valore di picco di 200, con PWM a 9 bit (0...512) devi pensare a un picco di 400 per avere il giusto margine.

Stasera, in ufficio, ho preparato un foglio Excel dove è possibile settare il numero di campioni e l'escursione desiderata e lui ti tira fuori tutti i valori da inserire nell'Array, naturalmente accompagnato dal relativo grafico, dovevo sistemare le etichette, domani vedo di pubblicarlo così sarai autonomo.

Per quanto riguarda l'Array, in teoria ti basterebbe anche solo 1/4 di onda, poi i valori si ripetono.
Se per esempio l'Array fosse formato da 20 elementi, con incrementi di 1 unità, avremo:
0 -> 0
1 -> 1
...
5 -> 5
...
10 -> 10
11 -> 9
...
15 -> 5
...
20 -> 0

per la semionda positiva, e identici valori per quella negativa.
In realtà, avendo i primi 10 valori potresti costruire l'onda intera scorrendo il vettore una volta verso il basso e la successiva verso l'alto.

Tuttavia tale decisione è da valutare all'atto della stesura del codice, mettendo sul piatto della bilancia la velocità di esecuzione, la complessità di implementazione, il risparmio di memoria, etc.

In ogni caso, fare due vettori mi sembra superfluo, se hai bisogno di valori che partono da 511 quando il vettore sta a 0, basta una semplice sottrazione:
PWM negato = 511 - ValoreArray
e i valori andranno da 511 a 11, proprio come serve a te.

Infine c'è un aspetto che devi tener presente se vuoi far funzionare il tuo codice: svilupparlo per gradi !

Voglio dire che al momento non puoi già pensare al feedback, al dead time, al display, alle protezioni, alla messa in fase con l'Enel, al datalogger, al WebServer, al....
Iniziamo a scrivere un codice che genera una sinusoide e poi proviamo ad implementare le migliorie... Ok ???

Ora vado, a presto !!!
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1362 - 25.03.15 at 06:27:46
Print Post  
CITAZIONE (BellaEli, 24/03/2015 23:36:22 ) Quote:
Voglio dire che al momento non puoi già pensare al feedback, al dead time, al display, alle protezioni, alla messa in fase con l'Enel, al datalogger, al
WebServer, al....
Iniziamo a scrivere un codice che genera una sinusoide e poi proviamo ad implementare le migliorie... Ok ???

Ora vado, a presto !!!


Ok BellaEli hai pienamente ragione andiamo per gradi! E che ogni tanto mi piace guardare oltre:P
A presto
  
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 #1363 - 25.03.15 at 11:58:40
Print Post  
Buongiorno a tutti,

come promesso ho completato il foglio Excel per il calcolo dei valori da inserire nell'Array.

L'idea iniziale era molto più semplice, strada facendo ne è uscito qualcosa di davvero simpatico.

Lo allego di seguito... ciao !#####ALLEGATO-[/IMG][/IMG]?1477[/IMG]
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1364 - 25.03.15 at 12:33:44
Print Post  
Ciao BellaEli, ottimpo sei di parola:clap.gif:
Qusta però sarà da modificare no? Arrivo a 250 campioni con valore massimo 400..Ok io però piu andiamo avanti e piu mi rendo conto che ne sò davvero poco! Quindi ennesima domanda.. ora io riporto quei valori nell 'array
prog_char onda[250] PROGMEM =
{0,200,0
}
per la semionda positiva, ma per la negativa dobbiamo mettere sempre nella stessa tabella -13,-200,-13?o come?
poi vorrei chiarire un'altro punto la semionda positiva sarà sul pin9 gestita dal duty impostato su OCR1A?Giusto?
e la semionda negativa dal pin 10 gestita dal duty impostato da OCR1B?:wacko::wacko:
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
Page Index Toggle Pages: 1 ... 89 90 [91] 92 93 ... 219
Send TopicPrint
 

TOP100-SOLAR Galleria Immagini EnergiAlternativa