bonjour à tous
j'ai fouillé le datasheet et plein de doc sur le voltmètre avec pic 16f628
j'ai bien le voltage qui s'inscrit sur le LCD avec le calcul pour une correction minime d'erreur.
quand je fais le calcul (watt*watt)/50 il me donne une valeur bizarre malgré toutes les combinaisons utilisées.
si un PRO de la prog pouvait m'éclairer sur la méthode j'en serai heureux.
ci-joint le code picbasic pro : il n'est pas de moi et je veux juste rajouter l'affichage de la puissance
'***************************** ****************************** *****
'* Name :f628-comp.bas *
'* Author :F-San *
'***************************** ****************************** *****
@ pic16F628
@ XT_OSC
@ wdt_off
@ pwrt_on
@ mclr_on
@ lvp_off
@ protect_off
' définition du LCD
DEFINE LCD_DREG PORTB ' LCD Data Port
DEFINE LCD_DBIT 4 ' Starting Data Bit
DEFINE LCD_RSREG PORTB ' Register Select Port
DEFINE LCD_RSBIT 1 ' Register Select Bit
DEFINE LCD_EREG PORTB ' Enable Port
DEFINE LCD_EBIT 0 ' Enable Bit
DEFINE LCD_BITS 4 ' Data Bus Size
DEFINE LCD_LINES 2 ' Number of Lines on LCD
Pause 200
LCDout $FE,2,"VOLTMETRE "
vstep var byte
save_vstep var byte
input_val var word
CMCON7_changed var bit
watt var word
CMCON = %10100101 ' Comparator Control
VRCON = %11100000 ' Voltage Reference Control
TRISA = %11111111 ' Set All Inputs
TRISB = %00000000 ' Set All Outputs
Main:
gosub Scan_Vinput
Goto Main
Scan_Vinput:
CMCON7_changed = 0
vstep = 0
while (not CMCON7_changed) and (vstep < 16)
vstep = vstep + 1
VRCON.6 = 0
VRCON.0 = vstep.0
VRCON.1 = vstep.1
VRCON.2 = vstep.2
VRCON.3 = vstep.3
VRCON.6 = 1
pause 1
if CMCON.7 = 0 then
CMCON.7 = 1
CMCON7_changed = 1
save_vstep = vstep
endif
wend
if CMCON7_changed and (CMCON.7 = 0) then gosub Display
return
Display:
input_Val = ((100 * save_vstep / 24) * 5) * 97/100 ' 97/100 = coefficient d'erreur
watt = input_val * input_val /50
LCDout $FE,$C0,Dec (input_Val / 100),".",Dec2 input_Val," V => ",dec (watt /100),".",dec2 watt," W"
return
End
Affichage LCD L1 : VOLTMETRE
Affichage LCD L2 : 3.00 v => 4.89 W >>>> il devrait inscrire pour 3V => 0.180 W
-----