Mikeneko が 2021年02月24日11時01分29秒 に編集
初版
タイトルの変更
2部品(PICとLED)だけで作るリチウム電池の電圧表示回路
タグの変更
リチウム電池
電圧監視
ローコスト
シンプル構成
過放電過充電防止
秋葉原2021
本文の変更
> 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 ![キャプションを入力できます](https://camo.elchika.com/602a0b13cd6e79e0c601ac0b1c3b76319852af39/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f65646665326133302d376565362d343464362d383263342d6239316336373466383037622f35343464303637622d306261632d343238622d616134362d396431623036326232313665/) @[youtube](https://youtu.be/NCOfL3c6qek)