Si, es un programa para medir corriente alterna desde el modulo ACS712. En Proteus funciona, pero en la
realidad no. El programa esta en Basic (Proton IDE). Gracias.
Device = 16F1827
Reminders 0
Config1 FOSC_XT,WDTE_OFF,PWRTE_ON,MCLRE_ON,CP_OFF,CPD_OFF,BOREN_OFF,IESO_OFF,FCMEN_OFF
Config2 WRT_OFF,PLLEN_OFF,STVREN_OFF,LVP_OFF
Declare PORTB_Pullups = OFF
Reminders 1
Declare Xtal 4
Declare Create_Coff = On
Declare Optimiser_Level = 1
'****************************************************************
TRISA = %00000001
TRISB = %00000000
'**************************************************************
'ADC
Declare Adin_Res = 10
Declare Adin_Tad 64_FOSC
Declare Adin_Stime = 50
FVRCON = %10000011 'Vref = 4.096V
ADCON0 = %00000000
ADCON1 = %11100011'Vref interno, TAD
ANSELA = %00000001
ANSELB = %00000000
OPTION_REG = %10000000
'****************************************************************
'DISPLAY LCD
Declare LCD_DTPin = PORTB.4
Declare LCD_RSPin = PORTB.2
Declare LCD_ENPin = PORTB.3
Declare LCD_Interface = 4
Declare LCD_Lines = 2
Declare LCD_Type = 0
Declare LCD_CommandUs = 2000
Declare LCD_DataUs = 50
'****************************************************************
'FLOAT
Declare Float_Display_Type = Fast
Declare Float_Rounding = Off
'****************************************************************
Dim VAR1 As Word 'Variables utilizadas
Dim CORRIENTE As Float
Dim VMAX As Float
Dim VMIN As Float
Dim VPP As Float
Dim MEDIRC As Byte
'******************************************
'VALORES DE INICIO
CORRIENTE = 0
MEDIRC = 0
VMIN = 5.0
VMAX = 0.0
'******************************************
Cls
DelayMS 100
'****************************************
AMPERIOS:
For MEDIRC = 1 To 100
VAR1 = ADIn 0
CORRIENTE = (4.096 / 1024) * VAR1
If CORRIENTE <= VMIN Then VMIN = CORRIENTE
If CORRIENTE >= VMAX Then VMAX = CORRIENTE
Next
'*********************************************
VPP = VMAX - VMIN
CORRIENTE = Abs(1.9111 * VPP)
Print At 1,1,"Irms=",Dec3 CORRIENTE," "
DelayMS 300
VMIN = 5.0
VMAX = 0.0
CORRIENTE = 0
VAR1 = 0
GoTo AMPERIOS
End