Lo puede solucionar! encontré un ejemplo de algo similar y lo pude adaptar a lo que estaba haciendo, todavía esta en prueba pero parece que anda bien.
Dejo el código que soluciono mi problema por si alguien lo necesita.
unsigned long t_muestreo=0;
float time=0.00;
float time_pas=0.00;
float prev_time=0.00;
float mah=0.00;
void current_capacity()
{
time = (hour()*3600.0) + (minute()*60.0) + second();
if (millis()-t_muestreo>2000)
{
time_pas = time - prev_time;
mah = mah + (amps*1000.0) * (time_pas/ 3600.0);
prev_time=time;
t_muestreo=millis();
}
}
Saludos y gracias!