以下、本発明の実施例を図面に基づいて説明する。なお、以下の図において、同一の部分には同一の符号を付し、繰り返しの説明は省略する。図1において、マイコン50は、プログラムに従って所定の演算処理を行うものであり、1つの入力ポートANと、4つの入出力ポート群53(IO0〜IO3)を含んで構成される。ここでは図示していないが、マイコン50にはCPUにおける演算処理での時間計測に用いられるタイマ、CPUで実行されるプログラムを実行するROM、CPUでの演算処理の作業領域などに利用されるRAM等を含んで構成される。入力ポート群51では入力されたアナログ信号をデジタル信号に変換するもので、マイコン50には複数の入力ポートが設けられ、その内の一つの入力ポートANには、3つの温度検出手段、即ちサーミスタ(TH1〜TH3)の出力が共通に接続される。入出力ポート(Input Output Port)IO0〜IO3は、入力ポートと出力ポートを兼用する入出力兼用ポートである。入出力ポート群53(IO0〜IO3)には4つの点灯手段、即ち、発光ダイオード(LD0〜LD3)がそれぞれ接続されている。入出力ポートIO0は、発光ダイオードLD0のON/OFFの制御と、すべての発光ダイオードへの電源供給のON/OFF切替えを行う。入出力ポートIO1〜IO3は発光ダイオードLD1〜LD3に接続されると共に、スイッチング素子M1〜M3のゲート端子にそれぞれ接続される。
3つのサーミスタTH1〜TH3は、一方の端子が共通の抵抗Raを介してマイコン50の基準電圧VDDに接続されており、他方がスイッチング素子M1〜M3を介してグランドに接続されている。サーミスタTH1〜TH3は、例えば、温度が上がると抵抗値が下がる特性を有するNTCサーミスタであって、電池セルの近傍に配置することによりマイコン50によって電池セルの温度を測定可能とする。スイッチング素子M1〜M3は電気的にオンまたはオフを切り換えることができる半導体スイッチであり、ここではN型のFET(電界効果トランジスタ)を用いる。但し、半導体式のスイッチング素子の形状はN型のFETに限られずに、その他のスイッチング素子や、オンオフ回路を用いるようにしても良い。スイッチング素子M1〜M3のドレイン端子がサーミスタTH1〜TH3の一方の端子に接続され、ソース端子がグランドに接続される。スイッチング素子M1〜M3のゲート端子は、マイコン50の入出力ポートIO1〜IO3にそれぞれ接続される。スイッチング素子M1〜M3のゲート端子とソース端子間には、出力ポートIO1〜IO3がオープンになった場合にゲート−ソース間を0ボルトにするために接地抵抗R6〜R8がそれぞれ設けられる。
4つの発光ダイオードLD0〜LD3は、任意の色のものを用いることができ、ここでは緑色又は赤色のものを用いる。発光ダイオードLD0〜LD3の一方の端子はスイッチング素子M0を介してマイコン50の基準電圧VDDに接続され、他方の端子はマイコン50の入出力ポートIO0〜IO3にそれぞれ接続される。尚、発光ダイオードLD0〜LD3の回路中には、電流制限用の抵抗R0〜R3が直列に接続される。抵抗R0〜R3は同一抵抗値のものを用いることができる。スイッチング素子M0はP型のFET(電界効果トランジスタ)であり、ゲート端子はマイコン50の入出力ポートIO0に接続され、ソース−ゲート間には抵抗R5が設けられる。ここで入出力ポートIO0は、スイッチング素子M0のゲート端子への接続と、発光ダイオードLD0への接続が共通に行われる並列接続となる。このように入出力ポートIO0へ、スイッチング素子M0と発光ダイオードLD0を並列接続したことにより、入出力ポートIO0をハイ又はローのいずれかに設定することができ、点線で囲む回路を発光ダイオードLD0〜LD3全体の点灯をさせるか否かを切り換える切替回路64として作用させることができる。また、その切替回路64のオンに連動させて発光ダイオードLD0を点灯させるようにした。その他の発光ダイオードLD1〜LD3を点灯させるには、発光ダイオードLD0を点灯させた状態で、さらに入出力ポートIO1〜IO3の出力をロー(グランド電位)にすることにより、発光ダイオードLD1〜LD3を点灯させることができる。尚、発光ダイオードLD1〜LD3を点灯するためにLD0の点灯が必ず必要であるが、電池パックの残量表示は、確認時の短い時間だけ点灯させれば十分なので、消費電力は問題にならない。
入出力ポートIO1〜IO3は、発光ダイオードLD0〜LD3が消灯している際に、サーミスタTH1〜TH3のいずれかの信号の一つを選択させることにより、入力ポートANに入力されるサーミスタTH1〜TH3のいずれかの信号を選択できる。即ち、入出力ポートIO0をローとして、その際に入出力ポートIO1〜IO3の出力を時系列でハイとローに切り換えることにより、サーミスタTH1〜TH3の出力を入力ポートANに択一的に入力できる。また、発光ダイオードLD0〜LD3のいずれかが点灯している際であっても、サーミスタTH1〜TH3の出力をマイコン50が取得する期間だけ入出力ポートIO0の信号をハイインピーダンス状態とすれば、サーミスタTH1〜TH3の出力を時系列に入力ポートANに順次入力させることができる。このサーミスタTH1〜TH3のいずれかの出力をマイコン50が検出する際に、すべての発光ダイオードLD0〜LD3が一時的に消灯状態となるが、消灯状態の間にサーミスタTH1〜TH3による検出をすべて素早く済ませて、再び発光ダイオードLD0〜LD3をもとの点灯状態に戻す。このようにして、発光ダイオードの消灯→サーミスタTH1による検出→発光ダイオードを一定時間再点灯してから、再び、消灯→サーミスタTH2による検出→発光ダイオードを一定時間再点灯してから、再び、消灯→サーミスタTH3による検出→発光ダイオードの再点灯の手順で、サーミスタTH1〜TH3による温度検出を行う。このサーミスタTH1〜TH3による温度検出に要する時間は、例えば各1ミリ秒であり、これらの検出を50ミリ秒間隔で順に行われるようにすれば、消灯した1ミリ秒の後に49ミリ秒点灯時間が存在するので、150ミリ秒の間に3つのサーミスタTH1〜TH3による温度検出を完了できる。この検出の際に発光ダイオードLD0からLD3のいずれかの点灯を行っている場合は、50ミリ秒毎に発光ダイオードの1ミリ秒の消灯が含まれることになるが、この程度の消灯間隔であれば人間の目からは連続点灯と同じように感じるので、一時的な消灯は問題にならない。
図1(2)は各入出力ポートと入力ポートの信号の対応関係を示す表である。縦軸はLEDの点灯状態と、サーミスタTH1〜TH3による検出状態を示し、その際の入出力ポート群53の信号レベルを欄59a、59bにて示している。ここでは例えば、電池容量が25〜50%の場合は発光ダイオードLD0だけを点灯し、50%〜75%の場合は発光ダイオードLD0、LD1の2つを点灯し、75%から100%未満の場合は発光ダイオードLD0〜LD2の3つを点灯し、満充電状態の場合は発光ダイオードLD0〜LD3の4つを点灯する。まず発光ダイオードLD0〜LD3を点灯させる制御を説明する。発光ダイオードLD0だけを点灯(LD0:ON)させるには、欄59aの2行目に示すように入出力ポートIO0だけロー(グランド電位)にして、IO1〜IO3をハイインピーダンス状態にする。発光ダイオードLD0、1の2灯を点灯(LD0、1:ON)させるには、欄59aの3行目に示すように入出力ポートIO0、IO1をローにして、IO2、IO3をハイインピーダンス状態にする。発光ダイオードLD0〜LD2の3灯を点灯(LD0、1、2:ON)させるには、欄59aの3行目に示すように入出力ポートIO0〜IO2をローにして、IO3だけをハイインピーダンス状態にする。発光ダイオードLD0〜LD3のすべてを点灯(LD0、1、2、3:ON)させるには、欄59aの5行目に示すように入出力ポートIO0〜IO3をすべてローにする。このように制御することによって、発光ダイオードLD0〜LD3の点灯により電池電圧の残量表示を行うことができる。尚、欄59aにて示すように入出力ポートIO0をハイインピーダンスとすれば、発光ダイオードLD0〜LD3のすべてを消灯させることができる。
次に、サーミスタTH1〜TH3による温度検出の際の入出力ポート群53の信号レベルを欄59bにて説明する。サーミスタTH1〜TH3による温度検出の際には、入出力ポート群53のうち対応するサーミスタTH1〜TH3のいずれか一つの信号レベルをハイ(VDD電位)にすれば良い。例えば、サーミスタTH1による検出の際には入出力ポートIO1をオンにすれば、スイッチング素子M1がオンになって、サーミスタTH1の両端に所定の電圧がかかり、この結果、マイコン50は入力ポートANからサーミスタTH1の電圧値を検出することができる。サーミスタTH2による検出の際には入出力ポートIO2をオンにすればスイッチング素子M2がオンになって、マイコン50は入力ポートANからサーミスタTH2の電圧値を検出することができる。サーミスタTH3による検出の際には入出力ポートIO3をオンにすればスイッチング素子M3がオンになって、マイコン50は入力ポートANからサーミスタTH3の電圧値を検出することができる。このように入出力ポートIO1〜IO3の信号レベルをローからハイに順次切り替えるが、入出力ポートIO0の信号はいずれの状態においてもハイのままとする。尚、入出力ポートIO0をハイにしても、スイッチング素子M0のソース−ゲート間の電位差が小さいため、スイッチング素子M0は遮断状態を保つので、発光ダイオードLD0〜LD3はいずれも消灯状態となる。以上のように、入出力ポートIO1〜IO3の信号を用いて、入力ポートANに入力されるサーミスタTH1〜TH3の出力を切り換えることができる。
図2は、図1の入出力回路をブロック図にて示した図である。ここでは4つの発光ダイオードLD0〜LD3をブロック66a〜66dで示す出力回路0〜3として図示し、3つのサーミスタTH1〜TH3の代わりに、ブロック67a〜67cで示す電圧1〜電圧3を入力回路として図示している。ブロック67a〜67cのそれぞれの出力は、例えば電池セルの電圧であってマイコン50の入力ポートANに入力されるが、ブロック67a〜67cと入力ポートANの間にスイッチ68a〜68cが介在される。スイッチ68a〜68cは入出力ポートIO1〜IO3によってオン又はオフが制御される。スイッチ68a〜68cの出力側(ブロック67a〜67cとは反対側)が共通に結線された状態にてマイコン50に接続される。ここで、マイコン50は入出力ポートIO1〜IO3の信号をいずれか1つを順次オンにすることにより、マイコン50は複数のブロック67a〜67cからの出力を選択して入力させることができる。本実施例では、この入力信号の切り替え用の信号線61b〜63bを、ブロック66b〜66dで示す出力回路1〜3への信号線61a〜63aと共通に結線したことに特徴がある。つまり、入出力ポートIO1〜IO3からブロック67a〜67cへの出力電圧をハイにすることによって、同時にブロック66b〜66dで示す出力回路1〜3へもハイ信号が伝達される。しかしながら、出力回路1〜3は、入出力ポートIO0によって制御されるスイッチ65を介して電源回路54の基準電圧VDDに接続されるので、マイコン50は、ブロック67a〜67cへの出力電圧がハイになった際に出力回路1〜3をオフにするように制御できる。以上のように、切替回路64を設けたことにより入出力ポートIO1〜IO3の出力を用いて発光ダイオードLD1〜LD3の点灯制御と、ブロック67a〜67cで示す電圧1〜3の入力切替え制御を、共通接続される入出力ポートIO1〜IO3によって制御できるようになった。
以上、図1及び図2で示した入出力方法を採用することにより、3つの電圧1〜3の出力回路からの入力を、一つの入力ポートANで取得できるので、必要とされる入力ポート群51の数を従来の3つから1つに節約することができた。また、この入力ポート数の節約を実現するために、発光ダイオードLD1〜LD3の点灯とは別に切替回路64を設けたので、入出力ポートIO1〜IO3の出力を、出力回路1〜3側で使用するか、入力機器1〜3側で使用するかを切り替えることができるようになった。本実施例では切替回路64のオン状態時に発光ダイオードLD0が点灯する回路構成としたが、発光ダイオードの点灯数を電池電圧残量に対応させるという電池パックの残量表示の場合にはLD0が必ず点灯しても支障がない。尚、電池パックの残量表示という目的以外の発光ダイオードの点灯への応用であって、切替回路64のオン状態時に発光ダイオードLD0が点灯すると支障がでる場合には、入出力ポートIO0の信号を切替回路64の制御だけに使用すれば良い。本実施例では、サーミスタTH1〜TH3による温度検出時に、発光ダイオードLD0〜LD3の全体が消灯するので、消灯している発光ダイオードがわずかに点灯してしまう誤点灯の虞がない。さらに、入力ポートANによる検出時には、発光ダイオードが点灯時でも一時的に消灯させることになるが、消灯させる時間は50〜100msごとに1ms程度であるので、人間の目から見たら連続点灯との相違を感じない。入出力ポートIO0〜IO3の信号をすべてハイインピーダンスとすれば、サーミスタTH1〜TH3による電力消費は回避できる。
図3は本実施例に係るマイコン50の出力回路群(ここでは発光ダイオードLD0〜LD3)の制御手順を示すフローチャートである。図3に示す一連の手順は、マイコン50にあらかじめ格納されたプログラムによってソフトウェア的に実行可能であって、マイコン50が起動している際には図3のプログラムが実行状態にある。電池パック40の残量表示は、作業者によって電池パック40に設けられた残量表示のためのスイッチ(図示せず)が押されることにより開始される(ステップ71)。残量表示スイッチが押されない場合は待機状態になる。残量表示スイッチが押された場合は、マイコン50は、AD処理中を示すフラグが0であるかをチェックする(ステップ72)。“AD処理中を示すフラグ”とは、後述する図4のフローチャートの手順で設定されるフラグであり、入力ポートAN側の入力処理が行われているか否かを示し、入力処理中は1となり、入力処理が行われていない状態が0である。マイコン50は、AD処理中を示すフラグが0になるまで待機する。次に、マイコン50は最上段のセルの正極の電圧V(セルユニット46の正極電位)をセル電圧検出回路55(図15参照)を介して取得することにより、セル電圧Vが、複数に区切られた閾値たるセル電圧V0、V1、V2、V3のうちいずれの範囲であるかを判定する。これらの大小関係は、V0<V1<V2<V3であって、V0以下は電池パック40が使用できない過放電状態を示し、V3以上は電池パック40が満充電状態を示す。また、セル電圧V0とV3の間を3つのレベルに区切るための閾値としてセル電圧V1、V2が設定され、セル電圧Vの大きさに応じた数の発光ダイオードLD0〜LD3が点灯される。セル電圧がV0未満の場合はすべての発光ダイオードを消灯させ、V0以上V1未満の場合はLD0だけを点灯させ、V1以上V2未満の場合はLD0とLD1の2つを点灯させ、V2以上のV3未満の場合はLD0〜LD2の3つを点灯させ、V3以上の場合はすべての発光ダイオードLD0〜LD3を点灯させる。
ステップ73においてマイコン50はセル電圧VがV0未満であるかを判定し、V0未満の場合は、入出力ポートIO0〜IO3をすべてハイインピーダンス状態とする(ステップ74)。この結果、図1(2)の対応表で示したようにすべての発光ダイオードLD0〜LD3が消灯状態になり、この状態でステップ82に進む。セル電圧がV0以上の場合、マイコン50はセル電圧VがV1未満であるかを判定し(ステップ75)、V1未満の場合は、入出力ポートIO0の出力をロー(グランド電位)とし、入出力ポートIO1〜IO3をハイインピーダンス状態とする(ステップ76)。この結果、発光ダイオードLD0の1灯だけが点灯することになる。点灯したらステップ82に進む。
セル電圧がV1以上の場合、マイコン50はセル電圧VがV2未満であるかを判定し(ステップ77)、V2未満であれば入出力ポートIO0、IO11をローとして、入出力ポートIO2、IO3をハイインピーダンス状態とする(ステップ78)。この結果、発光ダイオードLD0とLD1の2つが点灯することになり、この状態でステップ82に進む。最後に、セル電圧がV2以上の場合、マイコン50はセル電圧VがV3未満であるかを判定し(ステップ79)、V3未満の場合は、入出力ポートIO0〜IO2をロー電圧とし、入出力ポートIO3だけをハイインピーダンス状態にする(ステップ80)。この結果、発光ダイオードLD0〜LD2の3つが点灯することになり、この状態でステップ82に進む。ステップ79にてセル電圧がV3以上の場合は、入出力ポートIO0〜IO3のすべてをロー電圧とし(ステップ81)、すべての発光ダイオードLD0〜LD3を点灯させる。ステップ73〜81の処理が行われたら、電池の残量チェック用のLEDを点灯させる時間(一定時間)が経過したかどうかを検出して、経過するまで待機する(ステップ82)。一定時間が経過したら、マイコン50は入出力ポートIO0〜IO3をすべてハイインピーダンス状態として(ステップ83)、すべての発光ダイオードLD0〜LD3を消灯状態に戻してからステップ71に戻る。以上のように制御することによって、電池残量チェックスイッチが押されることに対応して、マイコン50は発光ダイオードLD0〜LD3を点灯させることができ、電池残量チェック機能を実現できる。図3に示す実施例では、電池残量チェックスイッチが押されたら、押したときから数秒間、例えば3秒程度点灯させるように構成したが、電池残量チェックスイッチが押されている間だけ発光ダイオードLD0からLD3を点灯させて、電池残量チェックスイッチが離されたらすぐに発光ダイオードを消灯させるように構成しても良い。
図4は本実施例に係るマイコンの入力回路群(図1のTH1〜TH3)の制御手順を示すフローチャートである。ここでは、出力回路であるサーミスタTH1〜TH3の信号をマイコン50の入力ポートANに入力させる手順として説明する。図4で示す処理手順はマイコン50が図3のフローチャートの処理と並列処理する。まず、最初に本フローチャートにて用いるタイマ値TとフラグTHの値を初期化する。ここでは入力回路群による測定間隔を決定するために1ms毎にカウントされるタイマ値として“ADインターバルタイマT”と、入力ポートANに入力させる出力機器を指定するための“THフラグ”と、入出力ポートIO0〜IO3のいずれかの信号が使用中であるかを示す“AD処理中フラグ”が用いられる。
最初に、タイマ値TとフラグTHの値が初期設定され(ステップ84)、経過時間をカウントするADインターバルタイマTの値に1加算することにより経過時間のカウントを開始する(ステップ85)。次に、マイコンADインターバルタイマTの値が、所定値を越えたか否かを判定する(ステップ86)。ここで所定値とは、例えばT=50(ミリ秒)であり、ステップ86においてADインターバルタイマTが50を越えていなかったらステップ85に戻り、所定時間に到達するまで経過時間(ADインターバルタイマT)のカウントを継続する。
ステップ86においてADインターバルタイマTの値が所定値を越えたら、次のインターバル時間を計測するために、ADインターバルタイマTを0にクリアする(ステップ87)。次に、マイコン50はサーミスタTH1〜TH3のうち指定されたものによる検出を行う。最初は、THフラグが1であるかを判定し(ステップ88)、THフラグが1の場合は、入力ポートANの値としてIO0〜IO1をハイとして、IO3〜IO4をローとする(ステップ89)。この状態は、図1(2)の表で示すサーミスタTH1を用いた検出を行う設定であり、スイッチング素子M1のゲート信号がハイになって導通状態になることにより、サーミスタTH1に基準電圧VDDが印加されることになる。この時のスイッチング素子M2とM3のゲート信号は共にローであるため、サーミスタTH2、TH3には基準電圧VDDが印加されないので、入力ポートANへはサーミスタTH1の出力信号だけが入力されることになる。次にマイコン50は、次のAD処理行う入力機器を指定するためにTHフラグを2にセットし(ステップ90)、AD処理フラグを1にすることにより図3に示すプログラムからの割り込み処理を遮断する(ステップ96)。そして、入力ポートANから入力される信号のAD変換処理(アナログ出力からデジタル値への信号変換処理)を開始する(ステップ97)。AD変換処理が終了したらマイコン50はAD処理フラグを0に戻して、ステップ85に戻る(ステップ98、99)。
ステップ98、99が実行された後にステップ85に戻った場合には、上述した説明と同様の手順でステップ88、91〜93、96〜99を実行する。この状態ではTH=2であるので、ステップ88ではNOとなり、ステップ91に進み、ステップ92が実行される。ステップ92では入出力ポートIO0とIO2をハイとして、入出力ポートIO1とIO3をローにする(ステップ92)。この状態は、図1(2)の表で示すようにサーミスタTH2を用いた検出を行う設定である、スイッチング素子M2のゲート信号がハイになって導通状態になることにより、サーミスタTH2に基準電圧VDDが印加されることになる。この時のスイッチング素子M1とM3のゲート信号は共にローであるため、サーミスタTH1、TH3には基準電圧VDDが印加されないので、入力ポートANへはサーミスタTH2の出力信号だけが入力されることになる。次にマイコン50は、次のAD処理を指定するためのTHフラグを3にセットし(ステップ93)、AD処理フラグを1にセットし(ステップ96)、入力ポートANから入力される信号のAD変換処理(アナログからデジタルへの信号変換処理)を開始する(ステップ97)。AD変換処理が終了したらマイコン50はAD処理フラグを0に戻して、ステップ85に戻る(ステップ98、99)。
2回目のステップ98、99が実行された後にステップ85に戻った場合には、上述した説明と同様の手順でステップ88、91、94〜95を実行する。ここでTH=3であるので、ステップ88、91の双方がNOとなり、ステップ94に進む。ステップ94では入出力ポートIO0とIO3をハイとして、入出力ポートIO1とIO2をローにする。この状態は、図1(2)の表で示すサーミスタTH3を用いた検出を行うもので、スイッチング素子M3のゲート信号がハイになって導通状態になることにより、サーミスタTH3に基準電圧VDDが印加されることになる。この時のスイッチング素子M1とM2のゲート信号は共にローであるため、サーミスタTH1、TH2には基準電圧VDDが印加されないので、入力ポートANへはサーミスタTH3の出力信号だけが入力されることになる。次にマイコン50は、次のAD処理を指定するためのTHフラグを1にセットし(ステップ95)、AD処理フラグを1にセットし(ステップ96)、入力ポートANから入力される信号のAD変換処理(アナログからデジタルへの信号変換処理)を開始する(ステップ98)。AD変換処理が終了したらマイコン50はAD処理フラグを0に戻して、ステップ85に戻る(ステップ98、99)。
以上説明した図4のフローチャートの処理手順はマイコン50が起動している間は継続して行われ、この処理の実行によって複数のサーミスタTH1〜TH3を用いた温度検出が所定の間隔毎に実行される。この際、検出に用い入力ポート群51のうち一つの入力ポートADだけを使用するようにしたので、必要とされる入力ポート数を節約することができた。また、発光ダイオードLD0〜LD3の点灯用の出力端子と、検出するサーミスタ抵抗を選択するための選択端子を兼用するようにしたので、マイコン50に必要とされる入出力ポートの数も節約することができた。
次に図5を用いて実施例の変形例1に係る入出力回路を説明する。図5ではサーミスタTH1〜TH3やLD0〜LD3のような入力回路と出力回路ではなくて、様々な出力回路1〜3と、様々な入力信号たる入力電圧1〜3を制御するブロック図を示している。マイコン50は図1〜図4で示したものと同じであり、入力ポート群51のうちの1つの入力ポートANと、入出力ポート群53として入出力ポートIO0〜IO3を有する。ここでは入出力ポートIO0を出力用の回路1〜3全体への電源供給の一括スイッチとして利用する。また、出力回路1〜3への出力電圧の供給と、入力用の電圧1〜3の選択を行うスイッチ68a〜68cの切替信号の出力を、入出力ポートIO1〜IO3を使用するようにした。この変形例1の動作は図1から図4にて説明した第1の実施例の動作と基本的には同じである。即ち、電圧1〜電圧3の入力を切り替えながら入力ポートANに入力させることにより1つの入力ポートANに3つの電圧1〜電圧3を択一的に入力する。しかも、電圧1〜電圧3の入力は、入出力ポートIO1〜IO3によってスイッチ68a〜68cが順次切り替えられることにより選択されるので、電圧1〜電圧3の出力が重畳されるおそれがなく、マイコン50は高精度な電圧検出を行うことができる。一方、入出力ポートIO1〜IO3の出力は、出力用の回路1〜3にも接続される。このため、入出力ポートIO1〜IO3のいずれかと入出力ポートIO0との出力の組み合わせによって、回路1〜3から光や音、その他の電気回路を用いた出力を行うことができる。この回路1〜3の出力の際には、同時に対応する電圧1〜3が入力ポートANに入力されることになる。しかしながら、マイコン50はその入力を無視することもできるので、回路1〜3側の出力がマイコン50に伝達されても支障は無い。図5の方法では出力用の回路を3つ、入力用の回路を3つ使う場合に必要な計6つのポートでなく、5つのポートで済むので、ポート数の少ない汎用のマイコンを使うことが容易になる。本変形例では出力用の回路1〜回路3として様々な機器を利用できるが、入力ポートANへの入力が電池パックの各セル電圧であって、出力側がLEDを複数個同時に点灯させるような場合は、出力用の回路1〜回路3の複数が短絡状態になって不具合が起きないように十分な対策を図ることが重要である。その対策を行ったのが図6で示す変形例2である。
図6は本発明の第一の実施例の変形例2に係る入出力回路図である。用いるマイコン50は第一の実施例と同じであり、入力ポートANと入出力ポート群53の数も同一である。第一の実施例と違うのは、出力用の回路1〜3が電池パック内の直列接続されたセル電圧V1〜V3の端子電圧信号となる点である。ここでは電池セル69aの+電位を抵抗R11と半導体スイッチング素子M6を介して入力ポートANに接続し、同様にして電池セル69bの+電位を抵抗R10と半導体スイッチング素子M5を介して入力ポートANに接続し、電池セル69cの+電位を抵抗R9と半導体スイッチング素子M4を介して入力ポートANに接続した。入出力ポートIO1〜IO3の出力は、3つの出力回路たる発光ダイオードLD1〜LD3に接続される。ここで本変形例2では半導体スイッチング素子M1〜M3を、半導体スイッチング素子M1〜M3のゲート信号と入出力ポートIO1〜IO3の間に介在させるようにした。これら半導体スイッチング素子M1〜M3を介在させたのは、入出力ポートIO1〜IO3の複数が同時にローになった際に複数の電池セル69a〜69cが短絡される虞があるからである。本変形例では、発光ダイオードLD1〜LD3を点灯させるために入出力ポートIO1〜IO3をローにしても、抵抗R6〜R8の作用によって半導体スイッチング素子M1〜M3のゲート信号が低下することを利用して、その状態では半導体スイッチング素子M1〜M3が導通状態にならないようにした。そのため入力回路側に電池セルの端子電圧を接続することが可能となる。尚、入出力ポートIO0に複数の出力回路全体のオンオフをする切替回路64を接続する点、切替回路64のオンオフに連動するように発光ダイオードLD0が点灯する点は第1の実施例と同じである。
本変形例2における発光ダイオードLD0〜LD3の点灯制御と、発光ダイオードLD0〜LD3の点灯時におけるセル電圧V1〜V3の検出制御手順は図3及び図4で示した手順と同様である。つまり、発光ダイオードLD0〜LD3を点灯している際にセル電圧V1〜V3の測定を行う時は、入出力ポートIO0を一瞬だけハイインピーダンス状態とし、そのハイインピーダンス状態としている間にセル電圧V1〜V3のいずれかの一つの測定を行い、再び入出力ポートIO0をローにする。この際、LEDの点灯が1ミリ秒程度消灯することになるが、点灯時間49ミリ秒おきに1ミリ秒程度消灯であるので、人間の目からは連続点灯しているように見える。このようにして、セル電圧V1を測定して49ミリ秒経過したら再び入出力ポートIO0を一瞬だけハイインピーダンス状態とし、その間に次のセル電圧V2の測定を行う。さらに、49ミリ秒経過したら再び入出力ポートIO0を一瞬だけハイインピーダンス状態とし、その間に次のセル電圧V2の測定を行う。このような電池セルの電圧測定を繰り返すので、一つの入力ポートANだけで複数のセル電圧V1〜V3を効率良く測定することができる。
次に図7を用いて本実施例の第三の変形例を説明する。第二の変形例では入力回路1〜3として、電池セル69a〜69eのそれぞれの電圧を監視する監視IC150から出力される全体電圧AD信号151、過充電状態か否かを示す過電圧H/L信号152、過放電状態か否かを示す低電圧H/L信号153を入力源とした。これら3つの入力源を除いた回路構成や、それらの動作は図6に示した回路と同じである。3つの入力源のそれぞれの出力(151〜153)は、半導体スイッチング素子M4〜M6と抵抗R9〜R11を介して入力ポートANに接続される。また、入力ポートANの信号は、抵抗R12を介して接地される。図7のように接続することによって1つの入力ポートANに監視IC150の3つの出力を切り替えながら入力できる。
第三の変形例の接続方法を用いると入力ポートANを1つ設けることによって1つの監視IC150からの複数の出力信号を入力することができる。この接続方法は複数のセルユニットを有し、それぞれのセルユニットに監視ICを有する電池パックにおいて、1つのマイコン50により複数の監視ICからの出力を入力させる際に、監視ICの数に応じた数の入力ポートANを設けるだけで複数のセルユニットの状態を効率良く監視することができる。
次に図8及び図9を用いて、図7の入出力回路を電動工具の電池パック40に適用した例を説明する。電池パック40側のマイコン50付近の構成は図7で示した回路とほぼ同様であるが、入出力ポート群53Aには、IO0〜IO5の6つのポートを有する。このようにポート数が増えたことに応じて、発光ダイオード群と入力回路側への接続状況を変更した。入出力ポートIO0には切替回路64Aだけが接続される。また、入出力ポートIO1、IO2には発光ダイオードLD1とLD2だけが接続される。発光ダイオードLD1とLD2は、切替回路64を介さずに基準電圧VDDに接続することも可能である。入出力ポートIO3は、発光ダイオードLD3への出力と、監視IC150の出力の一つである全体電圧AD151の出力の切替え信号用に用いられる。入出力ポートIO3は半導体スイッチング素子M1のゲート信号に接続され、半導体スイッチング素子M4のソース信号は半導体スイッチング素子M4のゲート信号に接続される。半導体スイッチング素子M4は監視IC150の出力の一つである全体電圧AD151の出力の切替え信号用に用いられる。
入出力ポートIO4、IO5は、発光ダイオードへの出力とは兼用としないで、代わりに電池パック40から電動工具本体1側又は充電装置30(図10で後述)側に出力する出力線(放電停止信号158、充電停止信号157)と共通に接続される。入出力ポートIO4は、半導体スイッチング素子M2のゲート信号に接続され、半導体スイッチング素子M2のソース信号は半導体スイッチング素子M5のゲート信号に接続される。半導体スイッチング素子M5は監視IC150の出力の一つである過電圧H/L信号152の切替え用に用いられる。出力ポートIO5は、半導体スイッチング素子M3のゲート信号に接続され、半導体スイッチング素子M3のソース信号は半導体スイッチング素子M6のゲート信号に接続される。半導体スイッチング素子M6は監視IC150の出力の一つである低電圧H/L信号153の切替え用に用いられる。
電動工具本体1側はマイコンが用いられない構造である。電動工具本体1にはモータ5が含まれ、電池パック40から供給される直流電力の供給回路が形成され、トリガスイッチ4をオンすることによってモータ5が回転し、トリガスイッチ4をオフすることによってモータ5が停止する。モータ5から負極端子27の途中の経路中には、スイッチング素子M21が介在される。ここではスイッチング素子M21のゲート信号は、一方が抵抗R21を介して正極端子22に接続され、他方が抵抗R22を介してLD端子28に接続される。LD端子28は電池パック40内では、スイッチング素子M7と抵抗R12を介して入出力ポートIO4に接続される。入出力ポートIO4は過電圧H/L信号152の入力ポートANへの入力切替と、LD端子28の出力の切替えを行うものである。しかしながら、過電圧H/L信号152の入力ポートANへの入力のために入出力ポートIO4をハイにすると、LD端子28の信号はスイッチング素子M7に作用によってアース電位に落ちるために、電動工具本体1側のスイッチング素子M21のゲート信号がローとなって、モータ5への電源供給が遮断される。しかしながら、過電圧H/L信号152の入力ポートANへの入力のために入出力ポートIO4をハイにする時間はきわめて短いため、すぐに入出力ポートIO4がハイからロー状態に復帰するので、モータ5の回転状態にはほとんど影響がでない。入出力ポートIO4に兼用して接続される負荷に応じた影響の違いを説明するのが図9である。
図9(1)は、入出力ポートIOに接続される負荷が発光ダイオードLD0である場合を示している。ここでは、ハイ状態にある入出力ポートIOの信号を短い時間だけローにすると、スイッチング素子M10のソース−ドレイン間が遮断されることにより、負荷である発光ダイオードLD0が短い時間だけ消灯する。しかしながら一瞬の消灯はほとんど気がつかない程度であるので問題はない。逆にロー状態にある入出力ポートIOの信号を短い時間だけハイすると、スイッチング素子M10のソース−ドレイン間が導通されることにより、発光ダイオードLD0が一瞬点灯する。この点灯は短い時間であるものの人間の目でも視認できるため、全く点灯させない方が好ましい。従って、負荷がLEDの場合は、常時オフの状態から一瞬だけオンにする制御は避けて、常時オンの状態から一瞬だけオフにする制御に限定する方が望ましい。
図9(2)は、入出力ポートIOに接続される負荷がモータ5やアクチュエータ等の駆動機器である場合を示している。この場合も(1)とほぼ同様の結果であり、スイッチング素子M10のゲート信号がハイ状態にあって回転中のモータ5の電力を信号を短い時間だけオフにして回路を遮断しても、モータ5は惰性で回転し続けるためほとんど影響がでない。しかしながら停止中のモータ5やアクチュエータに対して、入出力ポートIOの信号を短い時間だけハイすると、スイッチング素子M10のソース−ドレイン間が導通されることにより、停止中のモータ5やアクチュエータに対して短い時間の駆動電流が供給される。この駆動時間は短いものの人間の耳で確認できるような作動音が発生する虞があるため、常時オフの状態から一瞬だけオンにする制御は避けるように制御すると良い。
以上説明したように、負荷がLEDやモータ等の場合は、点灯または回転している最中に、一瞬だけ入出力ポートIOの信号をハイインピーダンス状態にして、共通に接続された別の回路(入力回路)を動作させることができる。この制御により入出力ポートIOを共用して、マイコン50Aの入出力ポート数(ここではIO0〜5の6つ)以上の出力回路への出力や、入力回路からの入力切替えを行うことができる。
図10は図8の電池パック40を充電装置30に接続された際の入出力回路図である。電池パック40側の構成は図8で示した回路と同一であるが、装着される相手側機器が充電装置30となる。充電装置30はマイコン等を有する制御部34を含み、充電回路31の出力にて電池パック40を充電する。充電回路31は、商用交流電源35を整流して所定の直流を得るものである。充電装置30と電池パック40の間は、正極端子32と負極端子37の接続に加えて、電池パック40側から送出される充電停止信号157が、充電装置30のLS端子36に入力される。ここでは、充電停止信号157は、入出力ポートIO5から出力されるように構成した。また、入出力ポートIO5の信号は、監視IC150から低電圧H/L153を制御するためのスイッチング素子M3のゲート信号に入力されるようにした。ここでは入出力ポートIO5から出力信号は、スイッチング素子を用いること無く抵抗R13を介して直接LS端子36に接続される。しかしながら、LS端子36とグランドの間にコンデンサC2を介在させるようにした。このコンデンサC2を介在させることによって、入出力ポートIO5がロー状態から、短い時間間隔だけハイ状態になっても、その状態がLS端子36側に減衰された状態にて伝達されるので、実質的に制御部34への充電停止信号157と見なされずに済む。この状態を説明するのが図11である。
図11(1)は、電池パック側のマイコンから、電動工具又は充電器側の制御部34に対して、ハイ又はローのいずれかとなるH/L信号を送出するモデル回路を示している。本変形例の構成では、(2)に示すように、H/L信号線162の途中に抵抗R13を設け、抵抗R13の反マイコン側(マイコン50Aと遠い端部)とグランド間にコンデンサC2を入れて、抵抗R13とコンデンサC2による積分回路を実現した。この結果、マイコン50から短い時間間隔の矩形状のパルス波162Aが入力されても、積分回路によってパルス波162Bのように十分小さくなまらせる(減衰させる)ので、このような波形が制御部34に入力されても、制御部34では信号入力として検出されない。従って、積分回路を有する出力線と、監視IC150から低電圧H/L153を制御するためのスイッチング素子M3のゲート信号を同じ入出力ポートIO5に接続することができた。