inverter90
| Inviato il: 10/03/2015 13:30:52
|
Raga sto continuando a fare prove sempre a scopo didattico, sembra funzionare ora sul pin 9 ho un uscita negativa e sul 10 positiva è giusto cosi? Mi potete dare uno sguardo a questo codice se c'e da modificare ancora qualcosa?
PROGMEM prog_uchar sine256[] =
{
0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,
18,20,21,23,25,27,29,31,33,35,37,39,42,44,46,49,51,54,56,59,
62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,
121,124,127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,
181,184,187,190,192,195,198,200,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,
158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,
96,93,90,87,84,81,78,76,73,70,67,64,62,59,56,54,51,49,46,44,
42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,
7,6,5,5,4,3,2,2,1,1,1,0,0,0
};
int PWM_Out;
int pwm;
int valore=4;//valore feedback desiderato
int err; //errore rilevato
int t; //tempo di campionamento
int Kp=10; // Guadagno proporzionale
int Ki=10; // Guadagno Integrale
int Kd=0; // Guadagno Derivata
int P; //PROPORZIONALE
int D; //derivata
int I; //INTEGRALE
int deadTime=5;
void setup() {
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
TCCR1A = _BV (COM1A1) | _BV (COM1B1)| _BV (COM1B0) | _BV (WGM11);
TCCR1B = _BV (CS10);
}
void loop() {
// lettura partitore su A1
int val = analogRead(A1);//leggi da pin analogico 1
float feedback = val * (5.0 / 1023.0); //converti nella variabile feedback il valore letto su A1
err=valore-feedback;
pwm= pgm_read_byte_near(sine256);
P=err * Kp;
I=I+(err * t)*Ki;
D=((err-err)/t)*Kd;
PWM_Out= P+I+D;
OCR1A = (PWM_Out*pwm );
delayMicroseconds(deadTime);
OCR1B = (PWM_Out*pwm );
delayMicroseconds(deadTime);
}
Se per qualcuno era possibile vorrei chiedervi una cortesia. Se avete un arduino se potevate provare questo codice e vedere con l'oscilloscopio se tutto va bene..(Perche in questo mese ho troppe spese e non arrivo a comprarlo)..
--------------- Il niente è impossibile finchè non ci provi!!!
|