Bueno, hay algunas variables mal definidas, las referidas a "tiempo" deben ser unsigned long porque ese es el tipo devuelto por millis(), incluso k.
Es innecesario que las definas como volatile en este contexto, volatile se utiliza generalmente (aunque no siempre) cuando se trabaja con interrupciones .
Esta instrucción
deltaMuestreo = (double)muestreoActual - muestreoAnterior; // delta de muestreo
está mal porque deltaMuestreo es unsigned long y no puedes cambiar su tipo a double
Prueba esto a ver si es lo que quieres
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
int valorADC;
int pot = A0;
float voltaje = 0.0;
float corriente = 0.0;
float corriente_real = 0.0;
int var;
unsigned long muestreoActual = 0; // variables para definición del tiempo de muestreo
unsigned long muestreoAnterior = 0;
unsigned long deltaMuestreo = 0;
float maxi = 0.0; // valor máximo <== Inicializar con un valor muy bajo para asegurarnos que la primera vez actualiza el máximo
float mini = 1023.0; // valor mínimo <== Inicializar con un valor muy alto para asegurarnos que la primera vez actualiza el mínimo
unsigned long k = 1000UL; // tiempo de muestreo
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(pot, INPUT);
analogReference(INTERNAL);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Smart Metering");
}
void loop() {
// put your main code here, to run repeatedly:
muestreoActual = millis();
deltaMuestreo = muestreoActual -
muestreoAnterior; // delta de muestreo
if ( deltaMuestreo >= k) { // se asegura el tiempo de muestreo
Serial.println(millis()); //verificación de tiempo por comunicación serial
muestreoAnterior = muestreoActual; //actualización del tiempo Anterior
// analogReference(INTERNAL);
valorADC = analogRead(A0);
voltaje = valorADC *(1.1 / 1023.0)* 2 ;
corriente = voltaje * 100;
lcd.setCursor(0,1);
lcd.print("Corriente= ");
corriente_real = voltaje * 0.7071; // valor rms / real
if (corriente_real > maxi){
maxi = corriente_real;
Serial.println(corriente_real);
Serial.println(maxi);
lcd.print(maxi);
}
}
}
Lógicamente te va a mostrar el valor máximo de toda la medición hasta que lo reinicies.
Saludos
PD: Edité el código según la observación de @Surbyte ya que se me había escapado ese detalle.