Mikenekoのアイコン画像
Mikeneko 2021年02月24日作成 (2021年02月24日更新)
製作品 製作品 閲覧数 1683
Mikeneko 2021年02月24日作成 (2021年02月24日更新) 製作品 製作品 閲覧数 1683

2部品(PICとLED)だけで作るリチウム電池の電圧表示回路

2部品(PICとLED)だけで作るリチウム電池の電圧表示回路

2次電池の進化で電源コードが不要になり便利な時代になりました。ただ自作する時は電池の電圧を気にしていないと使い過ぎて過放電になり繰り返し使える電池をダメにしてしまいます。かと言って電圧計を付けるのも面倒です。そこで2つの部品だけで現在の電圧を監視し表示する装置を作ってみました。使う部品はPIC10F322と抵抗入りLEDだけです。厳密にはPICの電源に0.1uFのパスコンを入れて3つの部品だけです。既定の電圧以下になれば電流OFFしたり音響関係なら消音用の信号も作れます。コストも100円以下 PIC10F322と抵抗入りLEDとパスコン0.1uFだけです。PICのプログラムはアセンブラーでも書いても僅か146行です。簡単です。

10年前位からPICにはA-Dコンバータの機能として,非常に便利なものが追加されています。それが、FIXED VOLTAGE REFERENCE(FVR)なのです。今回はこの機能を利用しています。

FVRには1.024Vの正確な電圧が内部に有ってこれを基準に自分の電源電圧が測れるのです。例えばPICの電源電圧が5Vあれば1.024Vとの比でAD(8Bit)の値は52になるのですが3Vまで低下すると87になるのです。超精密に測れるわけはないのですが、過放電防止や過充電防止には充分な精度だと思います。また内部で測定するので外部のPINは使いません。10F322は電源除くと4つしか使えるPINがないのでこれは助かります。
残りのPINでシステム(電流カット、警告音、消音など)の制御が出来ます。今回は消音用(Mute)の信号を出しています。

最近のリチウム電池は満充電では4.4V程度電圧があり、使用時は軽い負荷なら2.8V位までは使えます。
今回は3Vを切ったら点滅し電力がないことを知らせ、2.8Vになったら電流を止める、音を消音する様な信号を作ります。
それ以外の電圧では
1)4V以上ある時は4回の点滅して暫く消灯するを繰り返す(満充電されている)
2)3V以上の時は3回の点滅して暫く消灯するを繰り返す
3)2.8V以上の時は2回の点滅して暫く消灯するを繰り返す(もう電力がない)
4)2.8V以下の時は常時点滅 (停止直前)
5)暫くして電流をOFFする、あるいは音響なら消音する別の信号を出します。

光の点滅回数=供給されている電圧です。点滅で現在の電圧が判るシンプルなモノです。
凝る人は点滅をモールス信号にしても良いと思いますが、読める人がどれ位いるのか?

以下にプログラムを載せておきます。実施の回路図(パターン図) デジタルアンプに付けた応用例の動画も付けました。

;PIC 10F322 でシンプルな電圧表示器
;電源電圧をLEDで表示する   5-3Vまでを点滅で知らせる。
LIST P=PIC10F322,ST=OFF,R=DEC
INCLUDE "P10F322.inc"
__CONFIG _FOSC_INTOSC & _BOREN_OFF & _WDTE_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _LVP_OFF & _LPBOR_OFF & _BORV_HI & _WRT_OFF

LP1 EQU 040h
LP2 EQU 041h
ADDATA EQU 042h

SBANK0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
ORG 0h
START
SBANK0
MOVLW B'00000010'
MOVWF OSCCON ;32.25KHz
CLRF ANSELA
CLRF PORTA
MOVLW B'00001000'
MOVWF TRISA
BCF PORTA,0 ;LED ON 電圧を知らせる表示のPIN
CALL INTADC
CALL WAT
CALL WAT
BSF PORTA,1 ;MUTE OFF 消音や電源OFFするためのPIN
MAIN
CALL GETADC
BCF PORTA,0 ;LED ON
MOVFW ADDATA
SUBLW D'52'   ;52-AD
BTFSS STATUS,C ;ADが52以下ならSKIP 4.8V以上
GOTO N1
GOTO MAIN
N1 MOVFW ADDATA
SUBLW D'65'
BTFSS STATUS,C ;ADが65以下ならSKIP 4.0V以上
GOTO N2
GOTO P4
N2 MOVFW ADDATA
SUBLW D'87'
BTFSS STATUS,C ;ADが87以下ならSKIP 3.0V以上
GOTO N3
GOTO P3
N3 MOVFW ADDATA
SUBLW D'93'
BTFSS STATUS,C ;ADが65以下ならSKIP 4.0V以上
GOTO PEND
GOTO P2
P4         ;4V以上なら4回点滅
BSF PORTA,1 ;MuteOFF
BCF PORTA,0 ;LED ON
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
BCF PORTA,0 ;LED ON2
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
BCF PORTA,0 ;LED ON3
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
BCF PORTA,0 ;LED ON4
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
CALL WAT
CALL WAT
CALL WAT
GOTO MAIN
P3         ;3V以上なら3回点滅
BSF PORTA,1 ;MuteOFF
BCF PORTA,0 ;LED ON
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
BCF PORTA,0 ;LED ON2
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
BCF PORTA,0 ;LED ON3
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
CALL WAT
CALL WAT
CALL WAT
GOTO MAIN
P2         ;2.8V以上なら2回点滅
BSF PORTA,1 ;Mute OFF
BCF PORTA,0 ;LED ON
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
BCF PORTA,0 ;LED ON
CALL WAT    ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
CALL WAT
CALL WAT
CALL WAT
CALL WAT
GOTO MAIN
PEND        ;2.8V以下ならMuteしてOFF
BCF PORTA,1 ;Mute ON
BCF PORTA,0 ;LED_ON
CALL WAT   ;362ms
BSF PORTA,0 ;LED OFF
CALL WAT
GOTO PEND
WAT
MOVLW H'0FF'
MOVWF LP1
WATA NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DECFSZ LP1,F
GOTO WATA
RETURN
INTADC
SBANK0
MOVLW B'00001100'
MOVWF ANSELA
MOVLW B'11000001'
MOVWF FVRCON
MOVLW B'00011101'
MOVWF ADCON
RETURN
GETADC
BSF ADCON,GO_NOT_DONE
BTFSC ADCON,GO_NOT_DONE
GOTO $-1
MOVF ADRES,W
MOVWF ADDATA
RETURN

	END

キャプションを入力できます

ここに動画が表示されます

ログインしてコメントを投稿する