Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Public Serial1 As Serial
Public analog As Pin
End Sub
Private Sub AppStart
Serial1.Initialize(115200)
analog.Initialize(analog.A0,analog.MODE_INPUT)
Log("AppStart")
Dim Irms As Float=get_corriente' //Corriente eficaz (A)
Dim P As Float=Irms*220.0' // P=IV (Watts)
Log("Irms: ",Irms,"A, Potencia: ",P,"W")
End Sub
Sub get_corriente As Float
Dim voltajeSensor As Float
Dim corriente=0 As Float
Dim Sumatoria=0 As Float
Dim tiempo=Millis() As Long
Dim N=0 As Int
Do While(Millis()-tiempo<500) ' Duración 0.5 segundos(Aprox. 30 ciclos de 60Hz)
voltajeSensor = analog.analogRead * (1.1 / 1023.0) 'voltaje del sensor
corriente=voltajeSensor*30.0 'corriente=voltajeSensor*(30A/1V)
Sumatoria=Sumatoria+(corriente*corriente) 'Sumatoria de Cuadrados
N=N+1
Delay(1)
Loop
Sumatoria=Sumatoria*2' Para compensar los cuadrados de los semiciclos negativos.
corriente=Sqrt((Sumatoria)/N)'ecuación del RMS
Return(corriente)
End Sub