Se sei già registrato           oppure    

Orario: 07/05/2024 09:55:04  

 

Energia Alternativa ed Energia Fai Da Te > Applicazioni E Realizzazioni Pratiche

VISUALIZZA L'ALBUM

Pagine: (167)  < ...  85   86   87   88   89   90   91   92   93   94   [95]   96   97   98   99   100   101   102   103   104   105  ...>    (Ultimo Msg)


Homemade Inverter "modulo DC/AC"
FinePagina

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 29/03/2015 09:20:43


CITAZIONE

Devi necessariamente usare 4 driver


4driver 2 per i pwm a 15khz e 2 per l'onda quadra a 50hz questo intendi no?



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 29/03/2015 09:27:38

Un driver per ogni mosfet indipendentemente se li piloti :
-due pwm e due quadre
-tutti e 4 in pwm (lo schema da te proposto)

Poi per i due driver che pilotano i finali superiori del ponti devi predisporre una alimentazione isolata oppure usare la tecnica del bootstrap.

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 29/03/2015 09:53:46

Ok credo di aver afferato il concetto



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 29/03/2015 11:08:07

Configurazione bootstrap dovrebbe essere cosi no? La capacità di c come si calcola?



Immagine Allegata: DRIVER.PNG
 
ForumEA/D/DRIVER.PNG



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 29/03/2015 12:10:23

All'uscita del micro mi consigli di mettere un piccolo transistor?



Immagine Allegata: INVERTER1.png
 
ForumEA/D/INVERTER1.png



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 29/03/2015 12:18:19

Sisi conviene sopratutto se è un optoisolatore.

Cmq ricontrolla lo schema ci sono tanti errori.

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 29/03/2015 12:44:42

tanti errori?dammi un indizio please

ti riferisci alla parte gnd evidenziata?



Immagine Allegata: Cattura.PNG
 
ForumEA/D/Cattura.PNG



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 29/03/2015 12:58:03

Da sx a dx
Resistenza di pilotaggio HCPL ....10 Ohm !!!! ... Calcola come se vuoi pilotare un led usando la corrente nel datasheet.

I Ground.

Si li vedo separati , ma quel mosfet non entrerà mai in conduzione e se ci riesce è al limite minimo.

Devi scegliere bootstrap o alimentazioni separate.

Nello schema vedo D3 e due condensatori , ma non ne capisco lo scopo.

Il gnd in uscita del driver deve essere in comune con il source del finale altrimenti non riesci a pilotarlo.

Di conseguenza il driver deve essere alimentato da una tensione di almeno 12V maggiore di tale comune.
Per farlo ... alimentazione separata o bootstrap.

Ci sono altre cose , ma prima correggi il grande.

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 29/03/2015 15:00:29

Eccomi qua si si i valori sono tutti da calcolare ancora gli ho messi a caso.Resistenza hcpl sarà intorno ai 330ohm..

Scusami, ma la schematica del bootstrap non è questa?Quando Q1 è spento il diodo ricarica c in questo caso 10v e al succesivo ciclo si somma c+ source. La teoria è questa?



Immagine Allegata: Cattura.PNG
 
ForumEA/D/Cattura_1.PNG



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 29/03/2015 15:27:37

quindi se source non deve avere il comune a massa potrebbe essere qualcosa del genere



Immagine Allegata: driver2.PNG
 
ForumEA/D/driver2.PNG



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 30/03/2015 09:09:15

Ok ok lasciamo stare al momento lo schema è ancora troppo presto.

cambiando l'impostazione del timer
TCCR1A = (1 << WGM12)|(1 << WGM11)|(1 << WGM10)| (1 << COM1A1)|(1 << COM1B1);//fast pwm 10 bit, uscite in fase
TCCR1B=(1 << CS10)|(1 << CS10);//prescaler 1024

Ora il valore duty è da 1023 o 256?
TCCR2 per gl'interrupt lo imposto sempre WGM22 modalità CTC....



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 30/03/2015 09:48:33


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


prog_char onda[500] PROGMEM  =
{0, 6, 11, 17, 23, 28, 34, 40, 45, 51, 57, 62, 68, 73, 79, 85, 90, 96, 102, 107, 113, 118, 124, 130, 135, 141, 146, 152, 158, 163, 169, 174, 180,
185, 191, 196, 202, 207, 213, 218, 224, 229, 235, 240, 246, 251, 257, 262, 267, 273, 278, 283, 289, 294, 300, 305, 310, 315, 321, 326, 331, 337, 342,
347, 352, 357, 363, 368, 373, 378, 383, 388, 393, 398, 404, 409, 414, 419, 424, 429, 434, 439, 443, 448, 453, 458, 463, 468, 473, 477, 482, 487, 492, 
496, 501, 506, 511, 515, 520, 524, 529, 534, 538, 543, 547, 552, 556, 561, 565, 569, 574, 578, 582, 587, 591, 595, 599, 604, 608, 612, 616, 620, 624, 
628, 632, 636, 640, 644, 648, 652, 656, 660, 664, 668, 671, 675, 679, 683, 686, 690, 693, 697, 701, 704, 708, 711, 715, 718, 721, 725, 728, 731, 735, 
738, 741, 744, 748, 751, 754, 757, 760, 763, 766, 769, 772, 775, 778, 780, 783, 786, 789, 791, 794, 797, 799, 802, 804, 807, 809, 812, 814, 817, 819, 
821, 824, 826, 828, 830, 833, 835, 837, 839, 841, 843, 845, 847, 849, 851, 852, 854, 856, 858, 859, 861, 863, 864, 866, 867, 869, 870, 872, 873, 874,
876, 877, 878, 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, 891, 891, 892, 893, 894, 894, 895, 895, 896, 897, 897, 897, 898, 898, 899, 899, 
899, 899, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 900, 899, 899, 899, 899, 898, 898, 897, 897, 897, 896, 895, 895, 894, 894, 893, 892, 891, 
891, 890, 889, 888, 887, 886, 885, 884, 883, 882, 881, 880, 878, 877, 876, 874, 873, 872, 870, 869, 867, 866, 864, 863, 861, 859, 858, 856, 854, 852, 
851, 849, 847, 845, 843, 841, 839, 837, 835, 833, 830, 828, 826, 824, 821, 819, 817, 814, 812, 809, 807, 804, 802, 799, 797, 794, 791, 789, 786, 783, 
780, 778, 775, 772, 769, 766, 763, 760, 757, 754, 751, 748, 744, 741, 738, 735, 731, 728, 725, 721, 718, 715, 711, 708, 704, 701, 697, 693, 690, 686, 
683, 679, 675, 671, 668, 664, 660, 656, 652, 648, 644, 640, 636, 632, 628, 624, 620, 616, 612, 608, 604, 599, 595, 591, 587, 582, 578, 574, 569, 565,
561, 556, 552, 547, 543, 538, 534, 529, 524, 520, 515, 511, 506, 501, 496, 492, 487, 482, 477, 473, 468, 463, 458, 453, 448, 443, 439, 434, 429, 424, 
419, 414, 409, 404, 398, 393, 388, 383, 378, 373, 368, 363, 357, 352, 347, 342, 337, 331, 326, 321, 315, 310, 305, 300, 294, 289, 283, 278, 273, 267,
262, 257, 251, 246, 240, 235, 229, 224, 218, 213, 207, 202, 196, 191, 185, 180, 174, 169, 163, 158, 152, 146, 141, 135, 130, 124, 118, 113, 107, 102, 
96, 90, 85, 79, 73, 68, 62, 57, 51, 45, 40, 34, 28, 23, 17, 11, 6};


int valore=4;//valore feedback desiderato
int deadTime=5;

float err; //errore rilevato
float t; //tempo di campionamento
int Kp=10; // Guadagno proporzionale
int Ki=10; // Guadagno Integrale
int Kd=1; // Guadagno Derivata
float P; //PROPORZIONALE
float D; //derivata
float I; //INTEGRALE
float tempo = 0;
float tempoprevisto = tempo; 
int erroreprevisto = 0;
int PID;
float feedback;

int pwmOUT;
int pwm;
volatile int Indice = 0; 


void setup() {

    

pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
 
TCCR1A = (1 << WGM12)|(1 << WGM11)|(1 << WGM10)| (1 << COM1A1)|(1<<COM1B1);//fast pwm 10 bit, uscite in fase

TCCR1B = (1 << CS12)|(1 << CS10);//prescaler 1024

TCCR2A = 0;
TCCR2B = (1 << CS21) |(1 << WGM22);//imposta CTC,prescaler 8
OCR2A = 40; // con 40 il timer scatta ogni 20 mICROs circa */
TIMSK2 = (1 << OCIE2A);// abilità intterrupt
sei(); 
  
}

void loop() {
  // lettura partitore su A1
int val = analogRead(A1);//leggi da pin analogico 1
feedback = val * (5.0 / 1023.0); //converti nella variabile feedback il valore letto su A1

err=valore-feedback;

tempo = millis();//calcola il tempo trascorso
t = tempo - tempoprevisto; //metti il risultato di tempo - tempoprevisto in t
      
P=err * Kp;
I=I+(err * t)*Ki;
D=((err-erroreprevisto)/t)*Kd;

tempoprevisto = tempo; 
erroreprevisto = err;
PID= P+I+D;
}


ISR (TIMER2_COMPA_vect){

if (Indice < 500) {
pwm=pgm_read_byte(&onda[Indice]);
pwmOUT=pwm*(1+((pwm/125)-feedback)+PID);
OCR1A =pwmOUT;
}
else {
pwm=pgm_read_byte(&onda[Indice - 500]);
pwmOUT=pwm*(1+((pwm/125)-feedback)+PID);
OCR1B=pwmOUT;
}

Indice++;

if (Indice > 999) {
Indice = 0;
} 

}




BellaEli l'impostazione PID va bene?



Modificato da inverter90 - 30/03/2015, 10:57:51


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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 30/03/2015 10:25:07

Binario -> decimale
10bit binario = ?

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 30/03/2015 10:51:53

TCCR1B DOVREBBE ESSERE 00001101, QUINDI WGM12 ANDRà IMPOSTATO NEL REGISTRO TCCR1B?



Immagine Allegata: Cattura.PNG
 
ForumEA/D/Cattura_2.PNG



Modificato da inverter90 - 30/03/2015, 10:56:32


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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 30/03/2015 10:52:58

TCCR1A DOVREBBE ESSERE 10100011




Immagine Allegata: 1.PNG
 
ForumEA/D/1.PNG



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

 
 InizioPagina
 

Pagine: (167)  < ...  85   86   87   88   89   90   91   92   93   94   [95]   96   97   98   99   100   101   102   103   104   105  ...>    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum