Тут при напряжении на элементе меньше 3,2 вольта загорается D2, при большем напряжении D3. D1 моргает, показывая напряжение - сначала длинными вольты, потом короткими десятые, после паузы повторяет. В схеме забыл емкость на 0,1 мкФ на вход АЦП и токоограничительные резисторы 100-300 Ом для светодиодов, ну и программа написана левой ногой для примера (picbasic pro):
'@device = pic12F675, intrc_osc_noclkout, wdt_on, mclr_on, protect_off
led1 var GPIO.4
led2 var GPIO.5
ledind var GPIO.2
trisio=%00000001 ' отключаем GPIO.0
ANSEL = %00110001 ' внутренний RC генератор, AN0
adcon0=%01000001 ' опорное - gp1, An0, модуль АЦП включен
gpio = 0
CMCON = 7
define adc_bits 8
define adc_clock 3
define adc_sampleus 50
adval var byte
i var byte
ms var word
digit var byte
pause 1500 ' ждем пока устаканится напряжение
main:
ledind = 0 ' выключаем D1
adcin 0, adval
if adval < 160 then
led1 = 0 'напряжение меньше 3,2 вольта
led2 = 1
endif
if adval >= 160 then
led2 = 0 ' напряжение больше или равно 3,2
led1 = 1
endif
adval = adval/5 ' превращаем значение с АЦП в число вольт * 10
digit = adval dig 1
ms = 1000
call flash ' промаргиваем еденицы вольт
pause 1000
digit = adval dig 0
ms = 500
call flash ' промаргиваем десятые вольт
pause 5000 ' пауза перед повтором
goto main
flash: while digit > 0
ledind = 1
pause ms
ledind = 0
pause 300
digit = digit - 1
wend
return
end


идея маленького малошумящего лабораторного блока питания на lm317 и контроллере


2481 просмотров
комментировать