Problema variabile

di il
3 risposte

Problema variabile

Salve a tutti,, sto cercando di implementare un controllore PID ma ho qualche problema con alcune varibile, mi spiego meglio:

uint16_t Control_Voltage=0;
uint16_t error;
int Kp = 4;

error=ADC0_RA-Control_Voltage;
proportional = Kp*error;
Control_Voltage = Control_Voltage+proportional;

ADCO_RA è il registro di un analog to digital converter, è a 16 bit e contiene il valore letto dall' ADC, Control _voltage è il valore che vado a scrivere su un DAC ( digital to analog converter). Dovrei calcolarmi la fidderenze (error) tra questi due valori e li metto in un uint16_t, poi moltiplicare un intero (o un float ancora non so bene) e quindi modificare il valore di Control_voltage. Il problema è che il codice non mi funziona, se però scrivo:

Control_Voltage = Control_Voltage+error;

il codice funziona ma non è perfettamente quello che vorrei fare, se fisso invece kp=1, mi funziona pure, ma se fisso kp 2 o 3 o 1.5 o qualsiasi altra cosa non mi funziona. Io credo sia un problema di definizioni delle variabili (uint16_ t, float ecc). Ditemi se sono stato poco chiaro o se vi serve qualche altro dato. Grazie mille

3 Risposte

  • Re: Problema variabile

    A parte il fatto che andava scritto tutto nell'area C/C++, direi che non si capisce nulla.

    A parte il fatto che parli di assegnare 1.5 a Kp che è una variabile intera ... ovviamente non ha senso.
  • Re: Problema variabile

    Ok lo sposto scrivo nella giusta sezione e cerco di spiegarmi meglio
  • Re: Problema variabile

    tim ha scritto:


    ok lo sposto scrivo nella giusta sezione e cerco di spiegarmi meglio
    No ... tu non lo puoi spostare, lo devi chiedere ad un moderatore ...
Devi accedere o registrarti per scrivere nel forum
3 risposte