Seguidor solar con Balance neto

Buenas.

Estoy intentando hacer un proyecto casero, donde a través de un seguidor solar, este detecte la potencia eléctrica generada por la placa y el consumo eléctrico y a través de unas librerías que dan la posición del sol en función de la fecha, usar unos servos para orientar el seguidor.

La dificultad está a la hora de obtener el balance neto. Le he puesto un margen de 100 w.

Utilizando dos entradas analógicas, una para la lectura del consumo y otra para la potencia generada. Realizando una resta de las dos variables obtengo el balance. Pero el problema surge cuando quiero que dicho balance este por encima de 100w. Mi idea es aumentar la variable tiempo, de manera que el seguidor se coloque por delante de su hora actual, reduciendo la potencia eléctrica y ajustando el balance.

Pero no se muy bien como conseguirlo. A ver si alguien me puede dar alguna idea.

os dejo parte del código por si aclara lo que cuento.

//calculamos posicion solar

    t = rtc.getTime();

    // Activar cuando estemos midiendo el balance real
    
if (balance < 100)
     {
     balance_neto = 0; no tenemos balance neto
     t.hour++;
     variación_horaria++
     }
     if (balance >200 & variación_horaria >0)
     {
       t.hour--;
       variación_horaria--;
     }
     else
     {
     balance_neto = 1;
     }
     
    helios.calcSunPos(t.year, t.mon, t.date, t.hour, t.min, t.sec, 4.718997222, 37.916);  //funcion que nos da el angulo azimut y el angulo elevacion en funcion del tiempo

    dAzimut = helios.dAzimuth;  
    dElevacion = helios.dElevation;
    pos_servo_elevacion = dElevacion;
    pos_servo_azimut = Azimut_servo;
    myservo_elevacion.write(pos_servo_elevacion);
    myservo_azimut.write(pos_servo_azimut);

Lo que veo mal del código, es que como al empezar el loop, calcula la hora de nuevo y si el balance neto esta conseguido volvería a orientarse, cuando debería estarse quieto.

Muchas gracias por atenderme. Intentaré resolverlo, pero si me pueden dar ideas, se lo agradecía mucho.

Creo que ya he conseguido hacerlo. Al final he creado una instancia “time” para llevar el control de la hora actual y otra “t” para controlar la hora desplazada.

Dejo el código para que le echéis un vistazo y me aconsejéis si os parece correcto.

Gracias

//calculamos posicion solar
    time = rtc.getTime();
    
    if (variacion_horaria <= 0)
{
    t = rtc.getTime();   
}  
    variacion_horaria = t.hour - time.hour;
    
if (balance < 100) // no hay balance neto
     {
     balance_neto = 0; // no tenemos balance neto 
     t.hour++;
     }
     if (balance >200)
     {
       if(variacion_horaria >0)
       {
         t.hour--;
       }
       else
       {
         balance_neto = 1;
       }
         ;
     }
     else
     {
     balance_neto = 1;
     }
     
    helios.calcSunPos(t.year, t.mon, t.date, t.hour, t.min, t.sec, 4.718997222, 37.916);

        dAzimut = helios.dAzimuth;
        dElevacion = helios.dElevation;
        pos_servo_elevacion = dElevacion;
        pos_servo_azimut = Azimut_servo;
        myservo_elevacion.write(pos_servo_elevacion);
        myservo_azimut.write(pos_servo_azimut);

Cuando comencé a leer tu post me dije: qué es balance neto? Y por díos!!! me di cuenta de porque vivo en un país de 3er mundo. Asi que puedes compenzar tu consumo con tu demanda y por ende tener un balance a tu discresión.

Ahora que lo entiendo, solo lo comento para el resto de los latinos y no latinos que no sabíán como yo que era Balance Neto.