Лабораторный блок питания с микроконтроллером
Блок питания имеет два независимых канала со стабилизацией тока и напряжения, и третий независимый канал с фиксированными напряжениями
Устройство имеет:
- два источника с регулируемым выходом 0-30вольт и регулируемым ограничением по току 0,02 - 3 ампера.
- источник с фиксированными напряжениями 5 и 12 вольт с ограничением по току 1,5 ампера.
- регулируемые источники имеют цифровую индикацию напряжения, установленного тока ограничения , текущего потребляемого тока нагрузкой, индикатор перехода в режим стабилизации тока.
- для каждого регулируемого источника есть внешний вход отключения, и таймер программатор
- таймер программатор в обычном режиме показывает минуты и секунды включенного состояния,с возможностью сброса.
- в режиме таймер можно установить время до 23час 59 мин и запустить обратный отчсчет, по окончанию которого источник отключится. Можно выйти из этого режима вручную до отключения или изменить индикацию обратного отсчета - ЧЧ:ММ или ММ:СС.
Индикация и управление.
Для повышения точности использован отдельный источник опорного напряжения для АЦП и делается 4 замера с нахождением среднего значения. Предлы измерения напряжения 0-51 вольт с шагом 0,05 вольт, тока 0-5,1 ампера с шагом 0,01 ампер.
Правильно собранный из исправных элементов блок питания в настройке не нуждается. переменными резисторами выставить опорное напряжение АЦП в пределах 4,5- 4,6 вольт и провести калибровку показаний индикаторов по образцовым приборам.
Схема
Схема в полном размере -
Вы не можете скачивать файлы с нашего сервера
Разводка печатной платы
Исходный текст программы
;**********************************************************************
; *
; Filename: bp.asm *
; Date: 29.09.2009 *
; File Version: 1.0.0 *
; *
; Author: BY GARMASH G.V. *
; Company: *
; *
;**********************************************************************
; list p=16f877A ; list directive to define processor
list p=16f877 ; list directive to define processor
;CPU set 16f877A
CPU set 16f877
;CPUspeed set 08MHz
if CPU == 16f877A; check current version
#include ; processor specific variable definitions
; __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
; __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_ON & _CPD_OFF
;DEMO
__CONFIG _CP_ALL & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
else
#include ; processor specific variable definitions
; __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_OFF
;DEMO
__CONFIG _CP_ALL & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_OFF & _LVP_OFF & _DEBUG_OFF & _CPD_ON
#define CMCON 0x9C
endif
;********************
;***** VARIABLE DEFINITIONS * IRQ *****
w_temp EQU 0x70 ; variable used for context saving
status_temp EQU 0x71 ; variable used for context saving
pclath_temp EQU 0x72 ; variable used for context saving
FSR_IRQ EQU 0x73 ; variable used for context saving
COUNT_IRQ EQU 0x74
FLAG EQU 0x75 ; БИТОВЫЙ РЕГИСТР ФЛАГОВ
#define FLAG_PRES_KEY_0 FLAG,0 ;
#define FLAG_PRES_KEY_1 FLAG,1 ;
#define FLAG_TIMER_ON FLAG,2 ;
#define FLAG_STANDART_MODE FLAG,3 ;
#define FLAG_SET_MIN_TIMER_MODE FLAG,4 ;
#define FLAG_SET_HOUR_TIMER_MODE FLAG,5 ;
#define FLAG_SEC_DISPL FLAG,6 ;
#define FLAG_7 FLAG,7 ;
FLAG1 EQU 0x76 ; БИТОВЫЙ РЕГИСТР ФЛАГОВ
#define FLAG_8 FLAG1,0 ;
#define FLAG_9 FLAG1,1 ;
#define FLAG_a FLAG1,2 ;
#define FLAG_b FLAG1,3 ;
#define FLAG_c FLAG1,4 ;
#define FLAG_d FLAG1,5 ;
#define FLAG_e FLAG1,6 ;
#define FLAG_g FLAG1,7 ;
;***** VARIABLE ***************************
ee_data EQU 0x20
ee_addr EQU 0x21
TEMP EQU 0x22
TEMP1 EQU 0x23
TEMP2 EQU 0x24
LOCAL_TEMP EQU 0x25
LOCAL_TEMP1 EQU 0x26
POWER_LEVEL_1L EQU 0x27
POWER_LEVEL_1H EQU 0x28
POWER_LEVEL_2L EQU 0x29
POWER_LEVEL_2H EQU 0x2A
POWER_LEVEL_3L EQU 0x2B
POWER_LEVEL_3H EQU 0x2C
bin1 EQU 0x2D
bin2 EQU 0x2E
bcd1 EQU 0x2F
bcd2 EQU 0x30
bcd3 EQU 0x31
ctr EQU 0x32
IND_1 EQU 0x33
IND_2 EQU 0x34
IND_3 EQU 0x35
IND_4 EQU 0x36
IND_5 EQU 0x37
IND_6 EQU 0x38
IND_7 EQU 0x39
IND_8 EQU 0x3A
IND_9 EQU 0x3B
IND_10 EQU 0x3C
IND_11 EQU 0x3D
IND_12 EQU 0x3E
IND_13 EQU 0x3F
IND_14 EQU 0x40
IND_15 EQU 0x41
IND_16 EQU 0x42
cicle EQU 0x43
COUNT_KEY_0 EQU 0x44
COUNT_KEY_1 EQU 0x45
COUNT_TMR2 EQU 0x46
COUNT_SEC EQU 0x47
COUNT_MIN EQU 0x48
TIMER_SEC EQU 0x49
TIMER_MIN EQU 0x4A
TIMER_HOUR EQU 0x4B
COUNT_BEGIN_CICLE EQU 0x4C
POWER_LEVEL_1L_0 EQU 0x4D
POWER_LEVEL_1H_0 EQU 0x4E
POWER_LEVEL_2L_0 EQU 0x4F
POWER_LEVEL_2H_0 EQU 0x50
POWER_LEVEL_3L_0 EQU 0x51
POWER_LEVEL_3H_0 EQU 0x52
POWER_LEVEL_1L_1 EQU 0x53
POWER_LEVEL_1H_1 EQU 0x54
POWER_LEVEL_2L_1 EQU 0x55
POWER_LEVEL_2H_1 EQU 0x56
POWER_LEVEL_3L_1 EQU 0x57
POWER_LEVEL_3H_1 EQU 0x58
POWER_LEVEL_1L_2 EQU 0x59
POWER_LEVEL_1H_2 EQU 0x5A
POWER_LEVEL_2L_2 EQU 0x5B
POWER_LEVEL_2H_2 EQU 0x5C
POWER_LEVEL_3L_2 EQU 0x5D
POWER_LEVEL_3H_2 EQU 0x5E
POWER_LEVEL_1L_3 EQU 0x5F
POWER_LEVEL_1H_3 EQU 0x60
POWER_LEVEL_2L_3 EQU 0x61
POWER_LEVEL_2H_3 EQU 0x62
POWER_LEVEL_3L_3 EQU 0x63
POWER_LEVEL_3H_3 EQU 0x64
;**********BANK 1 FOR DATA****************
;**********BANK 2 FOR DATA****************
;**********BANK 3 FOR DATA****************
;********************* ПЕРЕФРИЯ ***************************
#define KEY_IN_0 PORTD,1
#define KEY_IN_1 PORTD,2
#define SEG_REG PORTB
#define SEG_0 PORTC,3
#define SEG_1 PORTC,2
#define SEG_2 PORTC,6
#define SEG_3 PORTC,7
#define SEG_4 PORTC,4
#define SEG_5 PORTC,5
#define SEG_6 PORTC,1
#define SEG_7 PORTC,0
#define SEG_8 PORTD,3
#define SEG_9 PORTD,5
#define SEG_A PORTD,4
#define SEG_B PORTD,6
#define SEG_C PORTE,0
#define SEG_D PORTE,1
#define SEG_E PORTD,7
#define SEG_F PORTE,2
#define POWER_OFF PORTA,4
;********************* INT EEPROM ADDRESS *********************
ADR_EE EQU 0x00
;*********************CONSTANT***********************
; МАКРОСЫ
;*********************
;------------------------------------------;
TSTPAGE macro LABEL
if (high LABEL != high ($-1))
ERROR LABEL - граница допустимой страницы
endif
endm
;Применение:
;
;G_TUNH MOVLW high G_TUNH ; --------------PULL UP ENABLE(0) DISABLE(1)
; |>-------------RB0 INT 0 to 1
; ||>------------TMR0 CONNECT TO CLK/4
; |||>-----------
; ||||>----------PRESCALER TO wdt
; |||||>--\ Prescaler -> WDT
; ||||||>-->-----; 1:128, rising edge
; |||||||>/
movlw b'01001111'
movwf OPTION_REG^80
;*****************
;TMR0 CONNECT TO CLK/4 = 5 000 000 Hz
;TMR0 OWERFLOW TO 5 000 000 / 256
; >--------------IRQ PSP
; |>-------------IRQ AD
; ||>------------IRQ USART RX
; |||>-----------IRQ USART TX
; ||||>----------IRQ SPP
; |||||>---------IRQ CPP1
; ||||||>--------IRQ TMR2
; |||||||>-------IRQ TMR1
; MOVLW b'11110001' ;
MOVLW b'00000010' ; IRQ MODULE
MOVWF PIE1^80 ;
; | >-------IRQ CCP2
; MOVLW b'11110000' ;
MOVLW b'00000000' ; IRQ MODULE
MOVWF PIE2^80 ;
MOVLW .124
MOVWF PR2^80
BANK0
;настроим таймер 2 и ccp для часов .
MOVLW b'01001111'
MOVWF T2CON ;PERIOD = 1 000 000 /16 /125 /10
; >--------------IRQ ON
; |>-------------IRQ ON PEREPHERIAL
; ||>------------IRQ ON TMR0
; |||>-----------IRQ ON RB0 INT
; ||||>----------OFF CHANGE PORTB
; |||||>---------
; ||||||>--------
; |||||||>-------
MOVLW b'11100000' ; IRQ ON
MOVWF INTCON ;
RETURN
;**********************************************************************
;**********************************************************************;
;Название: bin2bcd bcd1, bcd2, bcd3 = bin1, bin2
;Входные данные: двоичное число в регистрах bin1, bin2. При этом bin1 - старший байт.
;Выходные: единицы будут в младшей тетраде регистра bcd3, десятки в старшей регистра bcd3,
;сотни в младшей тетраде регистра bcd2, тысячи в старшей bcd2,
;десятки тысяч будут находиться в младшей тетраде регистра bcd1.
;Используемые регистры: bin1, bin2, bcd1, bcd2, bcd3, ctr.
bin2bcd
movlw .16
movwf ctr
clrf bcd1
clrf bcd2
clrf bcd3
goto start
adjdec movlw 0x33
addwf bcd1,f
addwf bcd2,f
addwf bcd3,f
movlw 0x03
btfss bcd1,3
subwf bcd1,f
btfss bcd2,3
subwf bcd2,f
btfss bcd3,3
subwf bcd3,f
movlw 0x30
btfss bcd1,7
subwf bcd1,f
btfss bcd2,7
subwf bcd2,f
btfss bcd3,7
subwf bcd3,f
start rlf bin2,f
rlf bin1,f
rlf bcd3,f
rlf bcd2,f
rlf bcd1,f
decfsz ctr,f
goto adjdec
return
;**********************************************************************
;**********************************************************************
;*** КРОС ССЫЛКИ НА 1 БАНК *************
;**********************************************************************
;P1_LOAD_EE
; PAGESEL LOAD_EE
; CALL LOAD_EE^800
; PAGESEL P1_LOAD_EE
; RETURN
;P1_INIT_ALL
; PAGESEL _INIT_ALL
; CALL _INIT_ALL^800
; PAGESEL P1_INIT_ALL
; RETURN
;**********************************************************************
;********* КОНЕЦ 0 БЛОКА *********************************************
;**********************************************************************
ORG 0x800
;P0_Delay_40mS
; PAGESEL Delay_40mS
; CALL Delay_40mS^800
; PAGESEL P0_Delay_40mS
; RETURN
;**********************************************************************
;*** КРОС ССЫЛКИ НА 0 БАНК END *************
;**********************************************************************
NOP
;**********************************************************************
;********* КОНЕЦ 2 БЛОКА *********************************************
;**********************************************************************
ORG 0x1000
ORG 0x1800
;**********************************************************
INT_EE_DATA ORG 0x2100
DE 0xFF
DE 0xFF
DE 0xFF
DE 0xFF
DE 0xFF
DE 0xFF
DE 0xFF
DE 0xFF
DE 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF; резерв
EE_DATA_COPY
ORG 0x2180
DE "Copyright (C) 2005-2008 by Garmash G.V. v.1.1.0"
;**********************************************************************
END
;**********************************************************************
Прошивка процессора
:020000040000FA
:10000000000000000000D229F0000308031383124F
:10001000F1000A08F2000408F30000308A000B190E
:1000200014288C18172843280B11312143288C10D1
:10003000C60A32304606031D4328C601C70A3C30B3
:100040004706031D2A28C701C80A3C304806031D7D
:100050002A28C801751D4328C903490A031D4328DE
:100060003B30C900CA034A0A031D43283B30CA007B
:10007000CB034B0A031D43280030CA00CB00C90044
:100080007511051643280313831273088400831225
:0E00900072088A0071088300F00E700E0900DD
:10020000003E0319ED34FF3E03190534FF3E031988
:10021000E334FF3E03196734FF3E03190F34FF3EFA
:1002200003196E34FF3E0319EE34FF3E03192534E3
:10023000FF3E0319EF34FF3E03196F34FF3E0319ED
:10024000AF34FF3E0319CE34FF3E0319E834FF3EBE
:100250000319C734FF3E0319EA34FF3E0319AA34D9
:100260000034003086008715071507178717071613
:100270008716871407148815881608160817091496
:10028000891488170915000000000000003043069B
:10029000031988290130430603198C2902304306CB
:1002A00003199129033043060319952904304306A5
:1002B000031999290530430603199D290630430681
:1002C0000319A229073043060319A629083043065B
:1002D0000319AA29093043060319AE290A30430637
:1002E0000319B3290B3043060319B7290C30430611
:1002F0000319BB290D3043060319BF290E304306ED
:100300000319C4290F3043060319C829C3018829DA
:10031000330886008711CC293408860007110000B5
:10032000CC29350886000713CC29360886008713A8
:10033000CC29370886000712CC2938088600871296
:100340000000CC29390886008710CC293A0886009D
:100350000710CC293B0886008811CC293C08860070
:1003600088120000CC293D0886000812CC293E08DE
:1003700086000813CC293F0886000910CC294008C4
:10038000860089100000CC29410886008813CC29FA
:10039000420886000911CC29C30A1030430603190C
:1003A000C30108005C2405160624F5150030002161
:1003B000B30001300021B40002300021B500033049
:1003C0000021B60004300021B70005300021B8003C
:1003D00006300021B90007300021BA0008300021A2
:1003E000BB0009300021BC000A300021BD000B30E9
:1003F0000021BE000C300021BF000D300021C000E4
:100400000E300021C1000F300021C2000624062456
:1004100006240512F1231E24CC0AC8304C06031909
:10042000CC0100304C060319212A32304C06031946
:100430002E2A64304C0603193B2A96304C060319C9
:10044000482A2808CE002708CD002A08D00029080D
:10045000CF002C08D2002B08D100F72A2808D4009E
:100460002708D3002A08D6002908D5002C08D80070
:100470002B08D700F72A2808DA002708D9002A080D
:10048000DC002908DB002C08DE002B08DD00F72A41
:100490002808E0002708DF002A08E2002908E10018
:1004A0002C08E4002B08E300A701A8014D08A707CA
:1004B0004E08A8075308A7070318A80A5408A80756
:1004C0005908A7070318A80A5A08A8075F08A7072A
:1004D0000318A80A6008A807A80CA70CA80CA70C6A
:1004E000A81328130530271C00300021B600A80CE3
:1004F000A70CA8132808AD002708AE0092243108E5
:100500000F390021B500310E0F390021B400300839
:100510000F390021B3003416A901AA014F08A90719
:100520005008AA075508A9070318AA0A5608AA07D7
:100530005B08A9070318AA0A5C08AA076108A907AB
:100540000318AA0A6208AA07AA0CA90CAA0CA90CEB
:10055000AA132A13AA0CA90CAA132A08AD00290869
:10056000AE00922431080F390021BA00310E0F3944
:100570000021B90030080F390021B80038160A30C0
:100580000021B700AB01AC015108AB075208AC0722
:100590005708AB070318AC0A5808AC075D08AB074F
:1005A0000318AC0A5E08AC076308AB070318AC0A73
:1005B0006408AC07AC0CAB0CAC0CAB0CAC132C1340
:1005C000AC0CAB0CAC132C08AD002B08AE00922485
:1005D00031080F390021BE00310E0F390021BD0056
:1005E00030080F390021BC003C16C230BB00F51D9D
:1005F0001C2B4708AE00AD01922431080F390021B1
:10060000C200310E0F390021C1004808AE00AD0113
:10061000922431080F390021C000310E0F3900211A
:10062000BF004016751C172BC701C8017510F51CBB
:100630001C2BF510F5117516751E382B3B30C900B3
:100640004A08AE00AD01922431080F390021C200E2
:10065000310E0F390021C100BF01C0014016751CC9
:10066000332BCA0A7510F51C382BF5107512F516C8
:10067000F51E542B3B30C9004B08AE00AD0192244F
:1006800031080F390021C000310E0F390021BF00A1
:10069000C101C2014016751C4F2BCB0A7510F51C09
:1006A000542BF510F5127515751D9C2B751B752BAC
:1006B0004B08AE00AD01922431080F390021C00073
:1006C000310E0F390021BF004A08AE00AD0192245F
:1006D00031080F390021C200310E0F390021C1004D
:1006E000491C4016491840128F2B4A08AE00AD0134
:1006F000922431080F390021C000310E0F3900213A
:10070000BF004908AE00AD01922431080F39002125
:10071000C200310E0F390021C10040168F2BF51C8D
:10072000972BF510751F962B7513972B7517751C46
:100730009C2B75107511F5150A2A4908AE00AD01FC
:10074000922431080F390021B600310E0F390021F3
:10075000B5000A2A2108031783128D000317831698
:100760008C130C140000031783120C08031383125C
:10077000A00008000A30A5002008031783128C008F
:10078000031383122108031783128D0003178316A6
:100790008B138C130C1555308D00AA308D008C14E2
:1007A00064008C18D02B0C118B17031383122008B4
:1007B000031783168C130C140000031783120C0606
:1007C0000313831203190034A50BBC2B01340F391A
:1007D000093C0318EE2B093C373E0800093C303E2B
:1007E0000800881CC40A081DC50A8818C401081915
:1007F000C5010A304406031975140319C4170A30D9
:1008000045060319F5140319C5170800FF300E2C0F
:100810004B300E2C05300E2C0F300E2CA600A501EF
:10082000A50B102C6400A60B102C080004301A2C09
:1008300000000130A500A50B1B2C08000313831634
:1008400083309F00031383129F019F171F141F10F3
:100850009F111F129F121F1416241F151F192E2CD3
:100860001E08A800031383161E0803138312A70093
:100870001F109F151F129F121F1416241F151F19DA
:100880003F2C1E08AA00031383161E0803138312AD
:10089000A9001F109F111F169F121F1416241F1549
:1008A0001F19502C1E08AC00031383161E080313D7
:1008B0008312AB001F100800203084008001840ADE
:1008C000841F5E2CA03084008001840A031D642CE8
:1008D0008B010313831607309C0007309F0003131E
:1008E00083129F0185018601870188018901031315
:1008F00083162F30850000308600003087000730D7
:100900008800003089004F30810002308C000030B8
:100910008D007C309200031383124F309200E03040
:100920008B0008001030B200AF01B001B101AA2C59
:100930003330AF07B007B1070330AF1DAF02B01DB2
:10094000B002B11DB1023030AF1FAF02B01FB00214
:10095000B11FB102AE0DAD0DB10DB00DAF0DB20BAB
:04096000982C0800C7
:021000000000EE
:02400E00420C62
:10420000FF00FF00FF00FF00FF00FF00FF00FF00B6
:10421000FF00FF00FF00FF00FF00FF00FF00FF00A6
:1043000043006F0070007900720069006700680068
:1043100074002000280043002900200032003000F3
:10432000300035002D003200300030003800200011
:104330006200790020004700610072006D0061009A
:1043400073006800200047002E0056002E00200059
:0E43500076002E0031002E0031002E003000CD
:00000001FF
Устройство размещается в подходящем по размерам корпусе , рекомендуется использовать принудительную вентиляцию при долговременной работе на больших токах, так как выделяемая тепловая мощность может достигать 100Вт.
О некоторых других моих разработках можно почитать на
www.picping.narod.ru
Гармаш Генадий.