5 ' --- Alimentation 5 - 15 V / 1,5 A --- 10 const device = 3B 15 lcdinit 20 cls : csroff 25 ' --- Affichage du message d'accueil --- 30 locate 0,0 : print "* Alimentation *" : locate 0,1 : print "(c) ELEKTOR 2008" : sound 7,159,2 : delay 5000 : cls 40 ' --- Déclaration des variables utilisées --- 41 dim N as integer : dim RI as integer : dim NR as integer : dim CHF as integer : dim NI as integer 42 dim cons as byte : dim consmod as byte : dim conscor as byte : dim Uc as integer : dim Us as integer : dim AD0 as integer 43 dim BP1 as byte : dim BP2 as byte : dim BP3 as byte 44 dim Ecart as integer 50 ' --- Initialisation de l'alimentation numérique à Us = 10 V --- 51 cons = 128 : consmod = 128 : conscor = 128 52 byteout 1,conscor 53 AD0 = ADIN(0) 54 Uc = (((196*cons)/10)+2500)*2 55 Us = (AD0 / 10) * 149 56 NI = Uc 57 gosub 1000 58 NI = Us 59 gosub 2000 60 ' --- Saisie d'une nouvelle consigne --- 61 BP1 = keyin (2,20) : BP2 = keyin (3,20) : BP3 = keyin (4,20) 62 if BP1 = 0 and BP2 = 1 and BP3 = 1 then gosub 3000 63 if BP1 = 1 and BP2 = 0 and BP3 = 1 then gosub 4000 64 if BP1 = 1 and BP2 = 1 and BP3 = 0 then gosub 5000 70 ' --- Régulation de la tension --- 71 AD0 = ADIN(0) 72 Us = (AD0 / 10) * 149 73 Uc = (((196*cons)/10)+2500)*2 74 if Us > Uc then gosub 6000 75 if Us < Uc then gosub 7000 76 if Ecart > 100 then goto 71 80 goto 60 1000 ' --- SP : Affichage de la tension de consigne en volts --- 1005 N = NI 1010 RI = N / 10 1015 N = RI 1020 RI = N / 10 1025 NR = 10 * RI 1030 CHF = N - NR 1035 if CHF = 0 then locate 11,0 : print "0" 1040 if CHF = 1 then locate 11,0 : print "1" 1045 if CHF = 2 then locate 11,0 : print "2" 1050 if CHF = 3 then locate 11,0 : print "3" 1055 if CHF = 4 then locate 11,0 : print "4" 1060 if CHF = 5 then locate 11,0 : print "5" 1065 if CHF = 6 then locate 11,0 : print "6" 1070 if CHF = 7 then locate 11,0 : print "7" 1075 if CHF = 8 then locate 11,0 : print "8" 1080 if CHF = 9 then locate 11,0 : print "9" 1090 N = RI 1095 RI = N / 10 1100 NR = 10 * RI 1105 CHF = N - NR 1110 if CHF = 0 then locate 10,0 : print "0" 1115 if CHF = 1 then locate 10,0 : print "1" 1120 if CHF = 2 then locate 10,0 : print "2" 1125 if CHF = 3 then locate 10,0 : print "3" 1130 if CHF = 4 then locate 10,0 : print "4" 1135 if CHF = 5 then locate 10,0 : print "5" 1140 if CHF = 6 then locate 10,0 : print "6" 1145 if CHF = 7 then locate 10,0 : print "7" 1150 if CHF = 8 then locate 10,0 : print "8" 1155 if CHF = 9 then locate 10,0 : print "9" 1160 locate 9,0 : print "," 1165 CHF = NR / 10 1170 locate 4,0 : print dec (CHF) 1175 locate 2,0 : print "Uc =" 1180 locate 13,0 : print "V" 1190 return 2000 ' --- SP : Affichage de la tension de sortie en volts --- 2001 NI = Us 2005 N = NI 2010 RI = N / 10 2015 N = RI 2020 RI = N / 10 2025 NR = 10 * RI 2030 CHF = N - NR 2035 if CHF = 0 then locate 11,1 : print "0" 2040 if CHF = 1 then locate 11,1 : print "1" 2045 if CHF = 2 then locate 11,1 : print "2" 2050 if CHF = 3 then locate 11,1 : print "3" 2055 if CHF = 4 then locate 11,1 : print "4" 2060 if CHF = 5 then locate 11,1 : print "5" 2065 if CHF = 6 then locate 11,1 : print "6" 2070 if CHF = 7 then locate 11,1 : print "7" 2075 if CHF = 8 then locate 11,1 : print "8" 2080 if CHF = 9 then locate 11,1 : print "9" 2090 N = RI 2095 RI = N / 10 2100 NR = 10 * RI 2105 CHF = N - NR 2110 if CHF = 0 then locate 10,1 : print "0" 2115 if CHF = 1 then locate 10,1 : print "1" 2120 if CHF = 2 then locate 10,1 : print "2" 2125 if CHF = 3 then locate 10,1 : print "3" 2130 if CHF = 4 then locate 10,1 : print "4" 2135 if CHF = 5 then locate 10,1 : print "5" 2140 if CHF = 6 then locate 10,1 : print "6" 2145 if CHF = 7 then locate 10,1 : print "7" 2150 if CHF = 8 then locate 10,1 : print "8" 2155 if CHF = 9 then locate 10,1 : print "9" 2160 locate 9,1 : print "," 2165 CHF = NR / 10 2170 locate 4,1 : print dec (CHF) 2175 locate 2,1 : print "Us =" 2180 locate 13,1 : print "V" 2190 return 3000 ' --- Incrémentation de la consigne --- 3010 if consmod < 255 then consmod = consmod + 1 3011 if consmod < 256 then Uc = (((196*consmod)/10)+2500)*2 3015 NI = Uc 3016 gosub 1000 : sound 7,139,1 3020 return 4000 ' --- Décrémentation de la consigne --- 4010 if consmod > 0 then consmod = consmod - 1 4011 if consmod >= 0 then Uc = (((196*consmod)/10)+2500)*2 4015 NI = Uc 4016 gosub 1000 : sound 7,139,1 4020 return 5000 ' --- Validation de la nouvelle consigne --- 5010 cons = consmod 5011 Uc = (((196*cons)/10)+2500)*2 5015 NI = Uc 5016 gosub 1000 : sound 7,139,1 5020 return 6000 ' --- Correction de la consigne --- 6010 Ecart = Us - Uc 6020 if Ecart > 40 and conscor > 0 then conscor = conscor - 1 : byteout 1, conscor 6030 AD0 = ADIN(0) : Us = (AD0 / 10) * 149 6050 NI = Us 6060 gosub 2000 6070 return 7000 ' --- Correction de la consigne --- 7010 Ecart = Uc - Us 7020 if Ecart > 40 and conscor < 255 then conscor = conscor + 1 : byteout 1, conscor 7030 AD0 = ADIN(0) : Us = (AD0 / 10) * 149 7050 NI = Us 7060 gosub 2000 7070 return