Научная статья на тему 'Определение емкости батарей с помощью микроконтроллера ht46r63'

Определение емкости батарей с помощью микроконтроллера ht46r63 Текст научной статьи по специальности «Электротехника, электронная техника, информационные технологии»

CC BY
212
51
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по электротехнике, электронной технике, информационным технологиям, автор научной работы — Ракович Николай

В статье рассмотрено применение микроконтроллера HT46R63 в устройстве определенияемкости батарей. Идея заключается, во-первых, в преобразовании емкости батареи в аналоговый сигнал, затем — в преобразовании этого сигнала посредством встроенного в HT46R63 аналого-цифрового преобразователя в цифровой.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Определение емкости батарей с помощью микроконтроллера ht46r63»

Компоненты и технологии, № 2'2005

Определение „ емкости батареи

В статье рассмотрено применение микроконтроллера ^46Р63 в устройстве определения емкости батарей. Идея заключается, во-первых, в преобразовании емкости батареи в аналоговый сигнал, затем — в преобразовании этого сигнала посредством встроенного в ^46Р63 аналого-цифрового преобразователя в цифровой. Этот цифровой сигнал и будет индицировать емкость батареи с помощью восьми светодиодов: если емкость батареи выше самого высокого уровня, все светодиоды будут гореть; если емкость батареи ниже минимально допустимой величины, светодиоды будут отключены.

■у

Чиа-Вей Шеу

Перевод:

Николай Ракович

Р1

\\

02

\\

1ЕО

03

\\

04

\\

05

\\

1ЕО

06

\\

07

\\

08

\\

1ЕО

Микроконтроллер НТ46И63 представляет собой 8-разрядный однократнопрограммируемый (ОТР) прибор фирмы Нокек нового поколения со встроенным АЦП и драйвером ЖКИ. Его структура и параметры были приведены в предыдущем номере нашего журнала («Цифровой вольтметр на базе микроконтроллера НТ46И63», с. 98-100).

Принцип работы

Измерение емкости батареи — это не просто измерение ее напряжения. Параллельно с батареей до начала измерения должен быть установлен соответствующий резистор. Если резистор не используется, то полностью заряженная и практи-

100

ВТ1

2_| І і |_1_

, I ,

1,5 В

Рис. 1. Схема измерителя емкости батарей

х— 2

3

X- 4

10

12

13

14

X- 16

17

18

19

70

?1

77

23

24

25

?6

77

78

79

X- 30

т

N01 ЯРЗЯ

N02 <¿00

N03

N04

РАО

РА1

РА2

РАЗ

РА4

РА5

РА6

РА7

УвЭ

РВ0/А1Ч0

РВ1/АМ1

РВ2/АІМ2

РВЗ/АМЗ

РВ4/А№

РВ5/А1Ч5

PB6/AN6

РВ7/А^

А\ЛЮ

N025

N026

N027

N028

N029

N030

N031

N032 § о

НТ46 Р63/НТ46С63-100 СТР-А

0000ш(/)с/3>^^у555^00 N014

222^оо> 5§бб>22 ¡¡¡25

N012 N011 N010 СОМО СОМ1 СОМ2 СОМЗ/БЕ619 БЕСІв ЭЕС17 ЭЕС16 ЗЕЄІб ЗЕ614 БЕСІЗ ЭЕС12 ЭЕвИ БЕЄЮ ЭЕСЭ вЕСв 8ЕС7 БЕСб БЕС5 БЕ04 БЕЄЗ БЕЄг БЕвІ ЭЕСО

ш со Єн*

■=*5

&868858Б88Я}£8Ьоооо"С9 а_а.о.о.о.о.о.а_а_о.о.о.о.о.о_а_2222

79 -X

78

77

76

75

74

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

73

72

71

70

69

68

67

66

65

64

63

62

61

60

59

58

57

56

55

54

53

5?

51 -к

У00

Р9

47К

С1

104

4,00 МГц

Компоненты и технологии, № 2'2GG5

e-

INCLUDE HT46R63.INC SUB A, VARIABLE SET PA4

SNZ C ;compare 13H with VARIABLE MOV A, AD_VALUE

;HT46R63 battery energy capacity detector Register value MOV VARIABLE, A

JMP LOOP2 MOV A, 38H

DATA. SECTION AT 30H 'DATA' ;data start SZ Z judge whether 13H and VARIABLE SUB A, VARIABLE

CLR_MEM_COUNTER DB question ;declare ;are the same SNZ C; compare 38H with VARIABLE

CLR_MEM_COUNTER register JMP LOOP2 ;if they are the same, jump to Register value

AD_VALUE DB question ;declare AD_VALUE register ;LOOP2 JMP LOOP6

VARIABLE DB question ;declare VARIABLE register JMP MAIN SZ Z; iudge whether 38H and VARIABLE

; LOOP2: are the same

CODE. SECTION AT 0 'CODE' ;program start SET PA0 JMP LOOP6 ; if they are the same, jump to

ORG 00H SET PA1 ;LOOP6

JMP START MOV A, AD_VALUE JMP MAIN

START: MOV VARIABLE, A LOOP6:

MOV A, 0FFH-30H MOV A, 1DH SET PA0

MOV CLR_MEM_COUNTER, A SUB A, VARIABLE SET PA1

MOV A, 31H SNZ C ;compare 1DH with VARIABLE SET PA2

MOV MP0, A Register value SET PA3

CLR_MEM: JMP LOOP3 SET PA4

CLR R0 SZ Z judge whether 1DH and VARIABLE SET PA5

INC MP0 ;are the same MOV A, AD_VALUE

SDZ CLR_MEM_COUNTER JMP LOOP3 ;if they are the same, jump to MOV VARIABLE, A

JMP CLR_MEM ;LOOP3 MOV A, 41H

MAIN: JMP MAIN SUB A,VARIABLE

MOV A, 48H LOOP3: SNZ C; compare 41H with VARIABLE

MOV ADCR, A SET PA0 Register value

;set AN0 as analog input, use an SET PA1 JMP LOOP7

;analog channel only SET PA2 SZ Z; judge whether 41H and VARIABLE

SET ADCR.7 MOV A, AD_VALUE are the same

CLR ADCR.7 ;A/D converter in action MOV VARIABLE,A JMP LOOP7 ; if they are the same, jump to

LOOP: MOV A, 26H ;LOOP7

SZ ADCR.6 ;when EOCB=0, A/D conversion is SUB A,VARIABLE JMP MAIN

;completed SNZ C ;compare 26H with VARIABLE LOOP7:

JMP LOOP ;when EOCB=1, jump LOOP to Register value SET PA0

;convert JMP LOOP4 SET PA1

CLR PAC ;set PA OUTPUT SZ Z judge whether 26H and VARIABLE SET PA2

CLR PA ;set PA LOW VOLTAGE ;are the same SET PA3

NOP JMP LOOP4 ;if they are the same, jump to SET PA4

;LOOP4 SET PA5

MOV A, ADR JMP MAIN SET PA6

MOV AD_VALUE, A ;put A/D conversion value into LOOP4: MOV A, AD_VALUE

;AD_VALUE register SET PA0 MOV VARIABLE, A

SET PA1 MOV A, 4DH

MOV VARIABLE, A SET PA2 SUB A, VARIABLE

MOV A, 0AH SET PA3 SNZ C; compare 4DH with VARIABLE

SUB A, VARIABLE MOV A, AD_VALUE Register value

SNZ C MOV VARIABLE, A JMP LOOP8

;compare 0AH with VARIABLE MOV A, 2FH SZ Z; judge whether 4DH and VARIABLE

Register value SUB A, VARIABLE are the same

JMP LOOP1 SNZ C ;compare 2FH with VARIABLE JMP LOOP8 ; if they are the same, jump to

SZ Z judge whether 0AH and VARIABLE Register value ;LOOP8

;are the same JMP LOOP5 JMP MAIN

JMP LOOP1 ;if they are the same, jump to SZ Z judge whether 2FH and VARIABLE LOOP8:

;LOOP1 ;are the same SET PA0

JMP MAIN ;if they are not the same, jump JMP LOOP5 ;if they are the same, jump to SET PA1

;to MAIN ;LOOP5 SET PA2

JMP MAIN SET PA3

LOOP1: LOOP5: SET PA4

SET PA0 SET PA0 SET PA5

MOV A, AD_VALUE SET PA1 SET PA6

MOV VARIABLE, A SET PA2 SET PA7

MOV A, 13H SET PA3 JMP MAIN

Приложение. Исходный код программы END

e-

чески разряженная батарея будут иметь одно и то же напряжение. В качестве примера возьмем батарею с напряжением 1,5 В. Если батарея полностью заряжена и параллельно к ней подключен резистор сопротивлением 100 Ом, ток через резистор составит 15 мА, а измеренное напряжение на выводах батареи — 1,5 В. При разряженной батарее напряжение, измеренное при таких условиях, будет значительно меньше 1,5 В. Это происходит потому, что разряженная батарея может отдать меньшую мощность, нежели заряженная. Таким образом, если разряженная батарея должна обеспечить ток 15 мА, сохранить при этом напряжение 1,5 В она не способна. При таком способе измерения обеспечивается четкое разграничение между заряженной и разряженной батарей. Надо отметить, что нагрузочный резистор должен быть определенного сопротивления.

При слишком большом сопротивлении ток через резистор мал и напряжение практически любой батареи будет около 1,5 В. Если же сопротивление слишком мало (то есть ток велик), напряжение любой батареи будет низким.

Для эксперимента автор использовал сильно разряженную батарею с номинальным напряжением 1,5 В. Без резистора напряжение батареи составляло 1,0 В, которое снижалось до 0,1 В при подключении резистора 100 Ом. Таким образом, сопротивление нагрузочного резистора было выбрано 100 Ом. После подключения резистора измерялось напряжение батареи, которое потом поступало на АЦП микроконтроллера НТ46И63 для преобразования в соответствующее цифровое значение. После программной обработки результат измерения отображался восемью светодиодами, которые подключались к выходам микроконтроллера.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Так как разрядность микроконтроллера НТ46И63 составляет 8 бит, емкость батареи может быть определена 256 уровнями. Однако для удобства будут использоваться только восемь уровней. Когда напряжение батареи равно 1,5 В, то гореть будут все восемь светодиодов, что означает полную емкость. Если же напряжение батареи около нуля, то все светодиоды будут погашены.

Аппаратная реализация

Разработанная схема измерителя емкости батареи представлена на рис. 1 и содержит микроконтроллер и несколько внешних элементов. ИС-фильтр, установленный между плюсом питания и аналоговым входом, предназначен для устранения помех. При разработке схемы использовались средства разработки Т1СЕ468ЕМЮ00Л и НТ-ГОЕ3000.

Компоненты и технологии, № 2'2005

Вполнить АЦ-п реобразование

Нет

1 -й светодиод включен

Нет

2-й светодиод включен

Нет

3-й светодиод включен

Нет

4-й светодиод включен

X г 1Да

Чтение ADR 5-й светодиод включен

Нет

:adr^2fh;

Нет

;adr^38h^

Да

6-Й СветОДИОД включен

Нет

^ADR>41H"

,Да

7-й светодиод включен

Нет

"adr>4dh; Да

i-и светодиод включен

Рис. 2. Блок-схема алгоритма

Аналого-цифровое преобразование

Чтобы использовать аналого-цифровой преобразователь микроконтроллера HT46, необходимо выполнить следующее:

1. Сконфигурировать каналы порта В установкой PCR2, PCR1 и PRC0.

2. Выбрать канал для АЦ-преобразования установкой ACS2, ACS1 и ACS0. Выбранный канал должен быть сконфигурирован (шаг 1).

3. Установить бит ADCR.7 = 0—> 1—>0 для запуска АЦ-преобразования, ЕОС будет находиться в 1, пока будет идти процесс АЦ-пре-образования.

4. Ожидание 76 тактов АЦП для завершения АЦ-преобразования, после чего ЕОС устанавливается в 0 (завершение процесса). Если разрешено прерывание от АЦП, то устанавливается флаг запроса на прерывание от АЦП.

5. Чтение результата АЦ-преобразования в регистре ADR.

Определение частоты АЦ-преобразования

Каждое аналого-цифровое преобразование занимает 76 тактов, которые задаются ADCS1 и ADCS0 (см. таблицу).

Блок-схема алгоритма программы показана на рис. 2, а исходный код программы — на предыдущей странице. ММ

Таблица

ADCS1 ADCS0 Частота АЦП

0 0 fsys/2

0 1 fsys/8

1 0 Fsys/32

1 1 Не определено

i Надоели баннеры? Вы всегда можете отключить рекламу.