torres.electronico
Well-known-Alfil
Al ver la siguiente gráfica, me parece que existen más de los 1.98 V que supuestamente se obtendrían al sensar 30 amperes.
Sensar 0 Amperes está por los 2.5 V, mientras que 30 amperes está casi por los 4.5 V.
¿Ya realizaste pruebas en físico con el sensor para ver que valores arroja?
Lo estoy por encargar porque me pareció un muy buen precio (99$, o sea, 10 dolares aproximadamente) en cuanto a funcionalidad, tamaño y para la infinidad de proyectos que lo podría meter (si es que puedo llegar a entender como usarlo )
Igualmente, por lo que vi, hay algo de desinformación al respecto.
La hoja de datos dice una cosa, en varios foros y google otras tantas y más o menos, sólo concuerda con la hoja de datos de los valores del sensor si le coloco una corriente variable.
Estaba justamente perdiendo el tiempo en una tabla que pensé que era la solución.
Suena gracioso, pero estaba en el arenero escribiendo una desparramada y de repente me pasó algo por la cabeza y arranqué a escribir unas lineas, pero después me di cuenta que seguía co la misma idea del principio y tendría el mismo problema.
---------- Actualizado después de 3 horas ----------
No entiendo dónde estoy aplicando mal mis matemáticas.
El primer error que noté, es que si entran 5V (4,98Vcc), en el micro se lee ValorADC=1003 como máximo y en 0V=511
Ahí seguro le estoy errando en la configuración del puerto.
El tema está en que estoy viendo de hacerlo trabajar de esta manera y no me cierra.
Como tengo que trabajar entre 512 y 1024, lo que hago es restar ambos y lo divido por la cantidad de pasos (30Amp=30pasos), dándome como resultado la supuesta sensibilidad, o dicho en otra forma, la tensión que varía entre paso y paso (1,71v)
(1024 - 512)=513 / 30 =17.1 = 1,71v por Amp
Hasta acá en una hoja con lápiz cuaja la idea:
(ValorADC - Offset)/ sensibilidad * pasos
Pero llevarlo al plano real está siendo todo un fastidio. No me da para nada el valor que tendría que darme.
Código:
DEFINE OSC 4
@ DEVICE pic16F877A
@ DEVICE pic16F877A, WDT_OFF
@ DEVICE pic16F877A, PWRT_On
@ DEVICE pic16F877A, PROTECT_OFF
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 3
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
Define ADC_BITS 10 ' Establece el número de bits en el resultado
Define ADC_CLOCK 3 ' Ajuste el reloj de origen (rc=3)
Define ADC_SAMPLEUS 50 ' Establezca el tiempo de muestreo en uS
INTCON=%10100001
TMR0=0
T2CON = %00000110
PR2=124
CMCON=7
ADCON1=%10000010
TRISA=%000001
TRISB=%11111111
TRISC=%01111011
TRISD=%00000000
AUX var word
AMP var word
ValorADC var word
Offset con 512
;ON INTERRUPT GoTo ATENCION
;********************************************************************
;Configuro como valor offset 511 que representa supuestamente el valor 2.49V-0A
;para sacar la escala, resto la lecura maxima con la lectura minima y la divido
;por los pasos
; (1024 - 512)=513 / 30 =17.1 = 1,71v por Amp
;Supuestamente entonces, para hacer la lectura tendria que:
;(ValorADC - Offset)/ sensibilidad * pasos
; y no me da para nada... #@¬€<*n¨*^[]&¬¬!!!!!!
;********************************************************************
LCDOUT $fe,1
Inicio:
pause 200
aDCIN 0, ValorADC
AMP = (ValorADC - offset) * 17 /513
AUX = (ValorADC - Offset) /513 ;una prueba alternativa que tampoco me dá
LCDOUT $FE,$80,"A=",dec AMP,".",dec1 amp," ADC=",dec ValorADC
LCDOUT $FE,$C0,"A=",dec Aux,".",dec1 aux
goto inicio
End
;----------------------------------------------------------------
;----------------------------------------------------------------
;*****************************************************************
;++++++++++++++++++++++++ INTERRUPCION +++++++++++++++++++++++++++
;*****************************************************************
DISABLE
ATENCION:
INTCON.2=0
RESUME
ENABLE
END
;*****************************************************************
;*****************************************************************
La salida es lineal, al parecer.
Última edición por un moderador: