(57)【特許請求の範囲】
【請求項１】
モータと、
前記モータの回転力によって回転するハンマーと、
工具要素が装着される出力軸が装着され、前記ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わると前記ハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、
前記モータの回転速度を検出する回転速度検出手段と、
前記回転速度検出手段により検出される前記回転速度に基づき、時系列的に連続して発生する前記回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、
前記極値対検出手段により検出された前記極値対を構成する前記極大値と前記極小値の差を極値差として、時系列的に異なる複数の前記極値対に対し、該複数の極値対のうち少なくとも１つの前記極値差が第１の差閾値以上であって他の前記極値対の前記極値差については前記第１の差閾値よりも小さい第２の差閾値以上である場合に、前記打撃力が加えられていることを検出する、打撃検出手段と、
を備えていることを特徴とする回転打撃工具。
【請求項２】
請求項１に記載の回転打撃工具であって、
前記打撃検出手段は、
時系列的に異なる２つの前記極値対に対し、まず、先に検出された前記極値対の前記極値差に対して前記第１の差閾値以上であるか否かを判断し、該第１の差閾値以上であった場合には、更に、その後に検出された前記極値対の前記極値差に対して前記第２の差閾値以上であるか否かを判断して、該第２の差閾値以上であった場合に、前記打撃力が加えられていることを検出する
ことを特徴とする回転打撃工具。
【請求項３】
モータと、
前記モータの回転力によって回転するハンマーと、
工具要素が装着される出力軸が装着され、前記ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わると前記ハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、
前記モータの回転速度を検出する回転速度検出手段と、
前記回転速度検出手段により検出される前記回転速度に基づき、時系列的に連続して発生する前記回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、
前記極値対検出手段により検出された前記極値対を構成する前記極大値と前記極小値の差である極値差が第１の差閾値以上である場合に前記打撃力が加えられていることを検出する手段であって、その検出動作の開始後、最初の前記極値対の前記極値差が前記第１の差閾値以上でなかった場合は、その極値差が、前記第１の差閾値よりも小さい第２の差閾値以上であるか否かを判断し、該第２の差閾値以上であった場合は、更に、その極値対よりも時系列的に後の前記極値対の少なくとも１つに対し、その極値対における前記極値差が前記第１の差閾値以上であるか否かを判断し、該第１の差閾値以上であった場合に、前記打撃力が加えられていることを検出する、打撃検出手段と、
を備えていることを特徴とする回転打撃工具。
【請求項４】
モータと、
前記モータの回転力によって回転するハンマーと、
工具要素が装着される出力軸が装着され、前記ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わると前記ハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、
前記モータの回転速度を検出する回転速度検出手段と、
前記回転速度検出手段により検出される前記回転速度に基づき、時系列的に連続して発生する前記回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、
前記極値対検出手段により検出された前記極値対を構成する前記極大値と前記極小値の差である極値差が第１の差閾値以上である場合に前記打撃力が加えられていることを検出する打撃検出手段と、
前記極値対を構成する前記極大値及び前記極小値がいずれも所定の回転数範囲内にあるか否かを判断する回転数範囲判断手段と、
を備え、
前記打撃検出手段は、前記回転数範囲判断手段により前記極値対を構成する前記極大値及び前記極小値がいずれも前記回転数範囲内にあると判断された場合に、該極値対に基づいて前記打撃力が加えられているか否かの判断を行う
ことを特徴とする回転打撃工具。
【請求項５】
請求項４に記載の回転打撃工具であって、
前記モータに電力を供給する電源の電圧を検出する電圧検出手段、及び前記モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、
前記電圧検出手段及び前記回転方向検出手段の少なくとも一方による検出結果に基づいて前記回転数範囲を設定する回転数範囲設定手段と、
を備えていることを特徴とする回転打撃工具。
【請求項６】
請求項５に記載の回転打撃工具であって、
前記正転方向の場合の回転速度と前記逆転方向の場合の回転速度は、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されており、
前記回転数範囲設定手段は、前記電圧検出手段により検出された前記電圧が大きいほど前記回転数範囲が高い領域となるよう、また、前記回転方向検出手段により検出された前記回転方向が前記一方の回転方向の場合よりも相対的に回転速度の高い前記他方の回転方向の場合の方が前記回転数範囲が高い領域となるように、前記回転数範囲を設定する
ことを特徴とする回転打撃工具。
【請求項７】
モータと、
前記モータの回転力によって回転するハンマーと、
工具要素が装着される出力軸が装着され、前記ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わると前記ハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、
前記モータの回転速度を検出する回転速度検出手段と、
前記回転速度検出手段により検出される前記回転速度に基づき、時系列的に連続して発生する前記回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、
前記極値対検出手段により検出された前記極値対を構成する前記極大値と前記極小値の差である極値差が第１の差閾値以上である場合に前記打撃力が加えられていることを検出する打撃検出手段と、
前記モータに電力を供給する電源の電圧を検出する電圧検出手段、及び前記モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、
前記電圧検出手段及び前記回転方向検出手段の少なくとも一方による検出結果に基づいて前記差閾値を設定する差閾値設定手段と、
を備え、
前記正転方向の場合の回転速度と前記逆転方向の場合の回転速度は、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されており、
前記差閾値設定手段は、前記電圧検出手段により検出された前記電圧が大きいほど前記差閾値が小さくなるよう、また、前記回転方向検出手段により検出された前記回転方向が前記一方の回転方向の場合よりも相対的に回転速度の高い前記他方の回転方向の場合の方が前記差閾値が小さくなるように、前記差閾値を設定する
ことを特徴とする回転打撃工具。
【請求項８】
モータと、
前記モータの回転力によって回転するハンマーと、
工具要素が装着される出力軸が装着され、前記ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わると前記ハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、
前記モータの回転速度を検出する回転速度検出手段と、
前記回転速度検出手段により検出される前記回転速度に基づき、時系列的に連続して発生する前記回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、
前記極値対検出手段により検出された前記極値対を構成する前記極大値と前記極小値の差である極値差が第１の差閾値以上である場合に前記打撃力が加えられていることを検出する打撃検出手段と、
前記打撃検出手段により前記打撃力が加えられていることが検出された場合に前記モータの回転速度を制限する第１の回転速度制限手段と、
を備えていることを特徴とする回転打撃工具。
【請求項９】
請求項１〜請求項８の何れか１項に記載の回転打撃工具であって、
前記極値対検出手段は、予め設定した一定時間内に、時系列的に連続して前記極大値及び前記極小値が発生した場合に、該極大値及び該極小値を前記極値対として検出する
ことを特徴とする回転打撃工具。
【請求項１０】
請求項１〜請求項９の何れか１項に記載の回転打撃工具であって、
前記モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段と、
前記回転方向検出手段により前記回転方向が前記逆転方向であることが検出されているときに前記打撃検出手段により前記打撃力が加えられていることが検出された場合に、その打撃力の付加が終了するのを判断する打撃終了判断手段と、
前記打撃終了判断手段により前記打撃力の付加が終了したと判断された場合に前記モータの回転速度を制限する第２の回転速度制限手段と、
を備えていることを特徴とする回転打撃工具。
【請求項１１】
請求項１〜請求項１０の何れか１項に記載の回転打撃工具であって、
前記モータの回転位置に応じた信号を出力するホール素子を備え、
前記回転速度検出手段は、前記ホール素子から出力される信号に基づいて前記回転速度を検出する
ことを特徴とする回転打撃工具。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータの回転力により回転動作し、所定値以上のトルクが加わると回転方向へ間欠的な打撃力を加えるよう構成された回転打撃工具に関する。
【背景技術】
【０００２】
この種の回転打撃工具として、打撃力を利用した高いトルクでネジの締結等を行うことが可能なインパクトドライバが知られている。インパクトドライバを用いてネジ締め作業を行う場合、作業者は、通常、作業者自らネジが着座したことを確認した上で、トリガスイッチをＯＦＦしてモータを停止させる。
【０００３】
しかし、高速回転で軽負荷のネジ締めを行う場合、着座後すぐにトリガスイッチをＯＦＦしてモータを停止させるのは難しい。そのため、高速回転による打撃時の過大なトルクによって、ネジの頭をなめたり、ネジの頭が飛んでしまったりするおそれがある。
【０００４】
これに対し、高速回転でネジ締めを行う場合であっても打撃力を小さくしてネジの頭飛び等を防止する技術として、打撃を検出する手段を備え、打撃が検出されたらモータの回転速度を通常速度から低速に切り替える技術が知られている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２０７９５１号公報
【特許文献２】特開号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載の技術では、打撃の検出を、圧電センサや加速度センサ、圧電ブザー、マイクロフォン等の衝撃センサを用い、打撃時の振動あるいは打撃音を検出することにより行うようにしている。
【０００７】
そのため、ネジ等の締結対象の部材が、締結の際に工具に加わる負荷の状態が安定しないような材料の場合、打撃を精度よく検出することが難しく、早い段階で打撃が誤検出されてモータが低速になってしまったり、逆に打撃が開始されたにもかかわらずそれが検出されずにネジの頭をなめたり飛ばしたりしてしまうおそれがある。よって、高精度且つ迅速に打撃を検出できるようにすることが望まれている。
【０００８】
本発明は上記課題に鑑みなされたものであり、回転打撃工具における打撃の検出を高精度且つ迅速に行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するためになされた本発明の回転打撃工具は、モータと、このモータの回転力によって回転するハンマーと、工具要素が装着される出力軸が装着され、ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わるとハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、モータの回転速度を検出する回転速度検出手段と、この回転速度検出手段により検出される回転速度に基づき、時系列的に連続して発生する回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、この極値対検出手段により検出された極値対を構成する極大値と極小値の差である極値差が第１の差閾値以上である場合に打撃力が加えられていることを検出する打撃検出手段と、を備えていることを特徴とする。
【００１０】
このように構成された回転打撃工具において、モータの回転速度は、打撃が行われている（打撃力が加えられている）ときと打撃が行われていないときとで、少なくともその回転速度の変動状態が異なる。なお、ここでいう回転速度の変動とは、ハンマーの回転に同期して生じる変動を意味する。
【００１１】
打撃が行われていない通常回転時には、回転速度の変動はほとんど生じない。一方、打撃が行われているときは、打撃力を生じさせる原理に起因して、回転速度に変動が生じる。即ち、打撃が行われる際は、通常、ハンマーがアンビルを乗り越えて離れる直前にモータの回転速度が最も遅くなり、ハンマーがアンビルから離れた後再びアンビルに衝突する時（即ち打撃力が加えられる直前）にモータの回転速度が最も速くなる。そのため、モータの回転速度はハンマーの回転に同期して周期的に変動することになる。
【００１２】
そこで、本発明の回転打撃工具では、モータの回転速度の極大値及び極小値を時系列的に連続して検出する。そして、その連続して検出した各極値（極値対）の差（極値差）が第１の差閾値以上である場合に、打撃が行われていることを検出する。打撃が行われると回転速度が周期的に変動し、これにより回転速度の極大値及び極小値が周期的に発生するため、第１の差閾値を適切に設定することで、極値差に基づいて打撃を検出できるのである。
【００１３】
従って、上記のように構成された本発明の回転打撃工具によれば、打撃時に生じる回転速度の変動を利用して打撃を検出するため、打撃の検出を高精度且つ迅速に行うことができる。
【００１４】
極値対としての極大値及び極小値は、時系列的に連続していさえすればよいというわけでは必ずしもない。例えば、打撃が行われていない場合であっても、負荷の状態やモータへの供給電力の変動などの種々外乱等によって回転速度が変化し、これにより大きな時間間隔をもって極大値及び極小値が連続して発生する可能性もある。そして、そのような場合にも、打撃が行われていないにもかかわらず、その両極値の差が第１の差閾値以上であることをもって打撃が誤検出されてしまう。
【００１５】
そこで、極値対検出手段は、予め設定した一定時間内に、時系列的に連続して極大値及び極小値が発生した場合に、その極大値及び極小値を極値対として検出するようにするとよい。
【００１６】
このように、連続して発生する極大値及び極小値の時間間隔に一定の制限を設けることで、打撃とは異なる要因により生じる極値対を除外することができ、打撃の誤検出を防ぐことができる。
【００１７】
また、上述した各種外乱等による打撃の誤検出を防ぐために、次のような構成をとるようにしてもよい。即ち、打撃検出手段は、時系列的に異なる複数の極値対に対し、その複数の極値対の極値差がいずれも第１の差閾値以上である場合、又は、その複数の極値対のうち少なくとも１つの極値差が第１の差閾値以上であって他の極値対の極値差については第１の差閾値よりも小さい第２の差閾値以上である場合に、打撃力が加えられていることを検出する。
【００１８】
このように、複数の極値対に対し、それぞれその極値差について同じ第１の差閾値を用いて何れも第１の差閾値以上であるか否かを判断すること、又は第１の差閾値を含む複数種類の差閾値を用いて各極値差がそれぞれ対応するいずれかの差閾値以上であるか否かを判断することによって打撃を検出することで、打撃とは異なる要因により生じる極値対を除外することができ、打撃の誤検出を防ぐことができる。
【００１９】
打撃検出手段が複数の極値対を用いて検出を行う場合における具体的検出方法は種々考えられるが、例えば、打撃検出手段は、時系列的に異なる２つの極値対に対し、まず、先に検出された極値対の極値差に対して第１の差閾値以上であるか否かを判断し、第１の差閾値以上であった場合には、更に、その後に検出された極値対の極値差に対して第２の差閾値以上であるか否かを判断して、第２の差閾値以上であった場合に、打撃力が加えられていることを検出するようにしてもよい。
【００２０】
このように、２つの極値対に対して順に第１の差閾値及び第２の差閾値を用いることで、打撃検出のための処理負荷を低く抑えつつ高い精度で打撃の検出を行うことができる。
なお、複数の極値対は、時系列的に完全に異なるものでなくてはならないわけではなく、一部が重複していてもよい。即ち、例えばまず極大値が検出されてそれに続いて極小値が検出された場合（これを例えば第１極値対と称す）において、その極値対よりも時系列的に後の極値対としては、第１極値対のうち時系列的に後に検出された極小値とその極小値の次に新たに検出される極大値とにより構成される極値対も含まれる。
【００２１】
一方、打撃が行われているにもかかわらず、何らかの要因で一時的に極値差が第１の差閾値よりも小さくなり、これにより打撃が検出されない（又は打撃検出が遅れる）ことも考えられる。そこで、打撃検出手段は、自身による極値差に基づく検出動作の開始後、最初の極値対の極値差が第１の差閾値以上であったならば打撃力が加えられていることを検出する一方、最初の極値対の極値差が第１の差閾値以上ではなかった場合は、その極値差が、第１の差閾値よりも小さい第２の差閾値以上であるか否かを判断し、第２の差閾値以上であった場合は、更に、その極値対よりも時系列的に後の極値対の少なくとも１つに対し、その極値対における極値差が第１の差閾値以上であるか否かを判断し、第１の差閾値以上であった場合に、打撃力が加えられていることを検出するようにするとよい。
【００２２】
つまり、極値差が第１の差閾値より小さかった場合は、より小さい第２の差閾値との比較を行ってその第２の差閾値以上であったならば、打撃であるとの一応の判定を行い、その上で、打撃であることをより確実に確かめるべく、その後に生じる極値対に対してさらにその極値差が第１の差閾値以上であるか否かを判断し、第１の差閾値以上であったならば打撃と検出するのである。
【００２３】
したがって、打撃が行われているにもかかわらず何らかの要因で一時的に極値差の小さい状態が生じたとしても、確実且つ迅速にその打撃を検出することができる。
また、通常、打撃が行われているときのモータの回転速度と、打撃が行われていない通常回転時のモータの回転速度とは異なり、打撃が行われているときの方が相対的に回転速度は小さくなる。
【００２４】
そこで、極値対を構成する極大値及び極小値がいずれも所定の回転数範囲内にあるか否かを判断する回転数範囲判断手段を備え、打撃検出手段は、その回転数範囲判断手段により、極値対を構成する極大値及び極小値がいずれも回転数範囲内にあると判断された場合に、その極値対に基づいて打撃力が加えられているか否かの判断を行うようにするとよい。
【００２５】
上記構成の回転打撃工具によれば、極値差に加えて、極値対を構成する各極値が回転数範囲内にあるか否かも考慮した上で、打撃の検出が行われるため、打撃の検出精度をより高めることができる。
【００２６】
また、上記のように回転数範囲判断手段を備えた回転打撃工具は、更に次のように構成してもよい。即ち、モータに電力を供給する電源の電圧を検出する電圧検出手段、及びモータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、電圧検出手段及び回転方向検出手段の少なくとも一方による検出結果に基づいて回転数範囲を設定する回転数範囲設定手段と、を備える。
【００２７】
電源電圧が変化するとそれに応じてモータの回転速度も変化し、また、モータの回転方向が正転方向か逆転方向かによってもモータの回転速度は変化する可能性がある。そこで、上記のようにモータの電源電圧あるいは回転方向に基づいて回転数範囲を設定することで、当該工具の使用状態に応じたより適切な回転数範囲が設定されることになり、よって打撃の検出精度をさらに高めることができる。
【００２８】
モータの電源電圧あるいは回転方向に基づいて回転数範囲設定手段が回転数範囲を具体的にどのように設定するかについては種々考えられるが、例えば、電圧検出手段により検出された電圧が大きいほど回転数範囲が高い領域となるよう、また、正転方向の場合の回転速度と逆転方向の場合の回転速度が、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されている場合には、回転方向検出手段により検出された回転方向が上記一方の回転方向の場合よりも相対的に回転速度の高い他方の回転方向の場合の方が回転数範囲が高い領域となるように、回転数範囲を設定するようにするとよい。
【００２９】
このようにすることで、電源電圧あるいは回転方向が考慮された適切な回転数範囲を設定することができる。
また、各差閾値（第１の差閾値、第２の差閾値）についても、上述した回転数範囲と同様に可変設定できるようにしてもよい。即ち、モータに電力を供給する電源の電圧を検出する電圧検出手段、及びモータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、電圧検出手段及び回転方向検出手段の少なくとも一方による検出結果に基づいて差閾値を設定する差閾値設定手段と、を備えるようにする。
【００３０】
打撃が行われている際の極値対の極値差も、電源電圧や回転方向によって変化する可能性がある。そこで、上記のようにモータの電源電圧あるいは回転方向に基づいて差閾値を設定することで、当該工具の使用状態に応じたより適切な差閾値が設定されることになり、よって打撃の検出精度をさらに高めることができる。
【００３１】
モータの電源電圧あるいは回転方向に基づいて差閾値設定手段が差閾値を具体的にどのように設定するかについては種々考えられるが、例えば、電圧検出手段により検出された電圧が大きいほど差閾値が小さくなるよう、また、正転方向の場合の回転速度と逆転方向の場合の回転速度が、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されている場合には、回転方向検出手段により検出された回転方向が上記一方の回転方向の場合よりも相対的に回転速度の高い他方の回転方向の場合の方が差閾値が小さくなるように、差閾値を設定するようにするとよい。
【００３２】
このようにすることで、電源電圧あるいは回転方向が考慮された適切な差閾値を設定することができる。
また、上述した本発明の回転打撃工具は、打撃検出手段により打撃力が加えられていることが検出された場合に記モータの回転速度を制限する第１の回転速度制限手段を備えたものであるとよい。尚、ここでいう制限とは、回転速度を低下させることを意味するのはもちろん、回転を停止させる意味も含む。
【００３３】
このように構成された回転打撃工具によれば、高精度且つ迅速に打撃の検出が行われ、その打撃検出によって迅速にモータの回転速度を迅速に制限することができるため、例えば上述したようなネジの頭をなめたり飛ばしたりするといった、打撃時の過大なトルクが当該回転打撃工具の使用対象に与える悪影響を防ぐことができる。
【００３４】
ところで、本発明の回転打撃工具は、例えばネジを締結するといった、使用対象を相手側部材に結合させるような使用目的だけでなく、逆に、例えばある部材に締結されているネジを緩めて取り外すといった、使用対象を相手側部材から分離させるような使用目的でも使用される可能性がある。
【００３５】
そのような場合は、打撃中には必ずしも回転速度を低下させる必要はなく、むしろ打撃が終了した後に、ネジ等の使用対象が相手側部材から一気に抜けて落下等してしまわないよう、回転速度を低下させるのが好ましい。そこで、上述した本発明の回転打撃工具は、更に、モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段と、この回転方向検出手段により回転方向が逆転方向であることが検出されているときに打撃検出手段により打撃力が加えられていることが検出された場合に、その打撃力の付加が終了するのを判断する打撃終了判断手段と、この打撃終了判断手段により打撃力の付加が終了したと判断された場合にモータの回転速度を制限する第２の回転速度制限手段と、を備えたものとして構成するとよい。
【００３６】
このように構成することで、モータを逆転させて工具の使用対象を相手側部材から取り外す際にも、使用対象が一気に外れてしまうことを防ぎ、作業性が悪化するのを防止することができる。
【００３７】
そして、本発明の回転打撃工具が、モータの回転位置に応じた信号を出力するホール素子を備えている場合には、回転速度検出手段は、そのホール素子から出力される信号に基づいて回転速度を検出するようにするとよい。このようにすることで、簡素な構成で回転速度を検出することができる。
【図面の簡単な説明】
【００３８】
【図１】実施形態の充電式インパクトドライバの縦断面図である。
【図２】充電式インパクトドライバに搭載されたモータ制御装置の電気的構成を表す構成図である。
【図３】充電式インパクトドライバの使用時（打撃動作を含む）におけるモータ回転数の変化例を表す波形図である。
【図４】図３の波形図における、打撃の行われない無負荷時（負荷が所定値より小）における所定期間の波形の拡大図である。
【図５】図３の波形図における、所定値以上の負荷がかかって打撃が行われる期間のうち所定期間の波形の拡大図である。
【図６】コントローラが実行する打撃制御処理を表すフローチャートである。
【図７】図６の打撃制御処理におけるＳ１７０の打撃検出処理の詳細を表すフローチャートである。
【図８】図７の打撃検出処理におけるＳ４５０の再判定処理の詳細を表すフローチャートである。
【図９】モータ回転数の変化例の別例（逆転によりネジを緩める場合の変化例）を表す波形図である。
【発明を実施するための形態】
【００３９】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
図１は、本発明が適用された回転打撃工具の一例である充電式インパクトドライバ１の縦断面図である。尚、充電式インパクトドライバ１のより具体的な構成（特に打撃機構）は、例えば既述の特許文献１や特開２００６−２１８６０５号公報などに詳しく開示されているため、その詳細説明は省略することとし、ここでは打撃機構を中心とする主たる構成について概略説明する。
【００４０】
図１に示すように、充電式インパクトドライバ１は、工具本体１０と、工具本体１０に電力を供給するバッテリパック３０とにより構成されている。工具本体１０は、後述するモータ４や打撃機構６等が収容されたハウジング２と、ハウジング２の下部（図１の下側）から突出するように形成されたグリップ部３とにより構成されている。
【００４１】
ハウジング２内には、その後部（図１の左側）にモータ４が収容されていると共に、そのモータ４の前方（図１の右側）に釣鐘状のハンマーケース５が組み付けられており、このハンマーケース５内に打撃機構６が収容されている。
【００４２】
グリップ部３は、作業者が当該充電式インパクトドライバ１を使用する際に把持する部分であり、その上方にトリガスイッチ２１が設けられている。このトリガスイッチ２１は、作業者により引き操作されるトリガ２１ａと、このトリガ２１ａの引き操作によりＯＮ・ＯＦＦされるとともにこのトリガ２１ａの操作量（引き量）に応じて抵抗値が変化するように構成されたスイッチ本体部２１ｂとを備えている。
【００４３】
また、トリガスイッチ２１の上側（ハウジング２の下端側）には、モータ４の回転方向を正転方向（本例では、工具の後端側から前方を見た状態で右回り方向）又は逆転方向（正転方向とは逆の回転方向）の何れか一方に切り替えるための正逆切替スイッチ２２が設けられている。更に、ハウジング２の下部前方には、トリガ２１ａが引き操作されたときに当該充電式インパクトドライバ１の前方を光で照射するための照明ＬＥＤ２３が設けられている。
【００４４】
また、グリップ部３における前方下部には、打撃時の打撃力（詳しくはその上限値）を使用者が複数段階に選択的に設定するための打撃力設定スイッチ２４と、この打撃力設定スイッチ２４により設定された打撃力が表示される打撃力設定表示器２５とが儲けられている。
【００４５】
また、グリップ部３の下端には、バッテリ２９を収容したバッテリパック３０が、着脱自在に装着されている。このバッテリパック３０は、装着時にはグリップ部３の下端に対してその前方側から後方側へとスライドさせることにより装着される。バッテリパック３０に収容されたバッテリ２９は、本実施形態では、例えばリチウムイオン２次電池などの繰り返し充電可能な２次電池である。
【００４６】
更に、グリップ部３の内部には、図１では図示を省略したものの、バッテリパック３０の電力によってモータ４を回転させるための、  コントローラ３１、ゲート回路３２、モータ駆動回路３３、及びレギュレータ３４などからなるモータ制御装置（図２参照）が搭載されている。また、モータ４には、図１では図示を省略したものの、モータ４の回転位置を検出するホールＩＣ４０（図２参照）が設けられている。
【００４７】
ハウジング２において、ハンマーケース５内には、後端側に中空部が形成されたスピンドル７が同軸で収容され、ハンマーケース５内の後端側に設けられたボールベアリング８がこのスピンドル７の後端外周を軸支している。スピンドル７におけるボールベアリング８の前方部位には、回転軸に対して点対称で軸支された２つの遊星歯車からなる遊星歯車機構９が、ハンマーケース５の後端側内周面に形成されたインターナルギヤ１１に噛合している。この遊星歯車機構９は、モータ４の出力軸１２の先端部に形成されたピニオン１３と噛合するものである。
【００４８】
打撃機構６は、スピンドル７と、このスピンドル７に外装されたハンマー１４と、このハンマー１４の前方側で軸支されるアンビル１５と、ハンマー１４を前方へ付勢するコイルバネ１６とから構成される。
【００４９】
ハンマー１４は、スピンドル７に対して一体回転可能且つ軸方向へ移動可能に連結されており、コイルバネ１６により前方（アンビル１５側）に付勢されている。また、スピンドル７の先端部は、アンビル１５の後端に同軸で遊挿されることで回転可能に軸支されている。
【００５０】
アンビル１５は、ハンマー１４による回転力及び打撃力を受けて軸回りに回転するものであり、ハウジング２の先端に設けられた軸受２０によって、軸回りに回転自在かつ軸方向に変位不能に支持されている。アンビル１５の先端部には、ドライバビットやソケットビット等の各種工具ビット（図示略）を装着するためのチャックスリーブ１９が設けられている。尚、モータ４の出力軸１２、スピンドル７、ハンマー１４、アンビル１５、及びチャックスリーブ１９は、いずれも同軸状となるように配置されている。
【００５１】
ハンマー１４の前端面には、アンビル１５に打撃力を与えるための２つの打撃突部１７，１７が周方向に１８０°の間隔を隔てて突設されている。一方、アンビル１５には、その後端側に、ハンマー１４の各打撃突部１７，１７が当接可能に構成された２つの打撃アーム１８，１８が周方向に１８０°の間隔を隔てて形成されている。そして、ハンマー１４がコイルバネ１６の付勢力でスピンドル７の前端側に付勢・保持されることで、そのハンマー１４の各打撃突部１７，１７がアンビル１５の各打撃アーム１８，１８に当接するようになる。
【００５２】
この状態で、モータ４の回転力により遊星歯車機構９を介してスピンドル７が回転すると、ハンマー１４がスピンドル７と共に回転し、そのハンマー１４の回転力が各打撃突部１７，１７と打各撃アーム１８，１８とを介してアンビル１５に伝達される。これにより、アンビル１５の先端に装着されたドライバビット等が回転し、ネジ締めが可能となる。
【００５３】
そして、ネジが所定位置まで締付けられることにより、アンビル１５に対して外部から所定値以上のトルクが加わると、そのアンビル１５に対するハンマー１４の回転力（トルク）も所定値以上になる。これにより、ハンマー１４がコイルバネ１６の付勢力に抗して後方に変位し、ハンマー１４の各打撃突部１７，１７がアンビル１５の各打撃アーム１８，１８を乗り超えるようになる。即ち、ハンマー１４の各打撃突部１７，１７がアンビル１５の各打撃アーム１８，１８から一旦外れ、空転する。このようにハンマー１４の各打撃突部１７，１７がアンビル１５の各打撃アーム１８，１８を乗り超えると、ハンマー１４は、スピンドル７と共に回転しつつコイルバネ１６の付勢力で再び前方へ変位し、ハンマー１４の各打撃突部１７，１７がアンビル１５の各打撃アーム１８，１８を回転方向に打撃する。
【００５４】
即ち、アンビル１５に対して所定値以上のトルクが加わる毎に、そのアンビル１５に対してハンマー１４による打撃が繰り返し行われるのであり、このようにしてハンマー１４の打撃力がアンビル１５に間欠的に加えられることにより、ネジを高トルクで増し締めすることができる。
【００５５】
次に、モータ４の回転駆動を制御するために充電式インパクトドライバ１の内部に設けられているモータ制御装置について、図２を用いて説明する。
図２に示すように、充電式インパクトドライバ１には、モータ４を駆動制御するモータ制御装置として、バッテリ２９、コントローラ３１、ゲート回路３２、及びモータ駆動回路３３が備えられている。モータ４は、本実施形態では、Ｕ，Ｖ，Ｗ各相の電機子巻線を備えた３相ブラシレスモータである。
【００５６】
モータ駆動回路３３は、バッテリ２９から所定の直流電圧（例えば１４．４Ｖ）の電源供給を受けて、モータ４の各相巻線に電流を流すためのものであり、本例では、６つのスイッチング素子Ｑ１〜Ｑ６からなる３相フルブリッジ回路として構成されている。各スイッチング素子Ｑ１〜Ｑ６は、本例ではＭＯＳＦＥＴである。
【００５７】
モータ駆動回路３３において、３つのスイッチング素子Ｑ１〜Ｑ３は、モータ４の各端子Ｕ，Ｖ，Ｗと、バッテリ２９の正極側に接続された電源ラインとの間に、いわゆるハイサイドスイッチとして設けられている。また、他の３つのスイッチング素子Ｑ４〜Ｑ６は、モータ４の各端子Ｕ，Ｖ，Ｗと、バッテリ２９の負極側に接続されたグランドラインとの間に、いわゆるローサイドスイッチとして設けられている。
【００５８】
ゲート回路３２は、コントローラ３１から出力された制御信号に従い、モータ駆動回路３３内の各スイッチング素子Ｑ１〜Ｑ６をオン／オフさせることで、モータ４の各相巻線に電流を流し、モータ４を回転させるものである。
【００５９】
コントローラ３１は、本実施形態では、一例として、いわゆるワンチップマイクロコンピュータとして構成されており、メモリ４１のほか、ＣＰＵ、入出力（Ｉ／Ｏ）ポート、Ａ／Ｄ変換器、タイマなどを有している。メモリ４１は、ＲＯＭ、ＲＡＭ、及び書換可能な不揮発性メモリ素子（例えばフラッシュＲＯＭやＥＥＰＲＯＭなど）を含み、ＣＰＵが、メモリ４１に記憶された各種プログラムに従って、各種処理を実行する。
【００６０】
コントローラ３１には、上述したトリガスイッチ２１（詳しくはスイッチ本体部２１ｂ）、正逆切替スイッチ２２、照明ＬＥＤ２３、打撃力設定スイッチ２４、打撃力設定表示器２５、及びバッテリ電圧検出部２６が接続されている。更に、コントローラ３１には、モータ４に設けられたホールＩＣ４０が接続されている。
【００６１】
コントローラ３１は、トリガスイッチ２１からの駆動指令に従い、モータ駆動回路３３を構成する各スイッチング素子Ｑ１〜Ｑ６の駆動デューティ比を設定し、その駆動デューティ比に応じた制御信号をゲート回路３２に出力することで、モータ４を回転駆動させる。
【００６２】
本実施形態のコントローラ３１は、打撃力設定スイッチ２４により選択された打撃力に対応して予め設定された最大回転数を上限として、使用者によるトリガ２１ａの引き量（操作量）に応じた回転数となるように、モータ４の回転を制御する。尚、回転数とは、単位あたりの回転数を意味し、よって回転速度と同義である。
【００６３】
トリガスイッチ２１を構成するトリガ２１ａが引き操作されると、同じくトリガスイッチ２１を構成するスイッチ本体部２１ｂから、その引き量に応じた信号がコントローラ３１に入力される。そのため、コントローラ３１は、その入力される信号、即ち引き量に応じた信号に基づき、その引き量に応じた回転数でモータ４が回転するよう、モータ４を制御する。
【００６４】
尚、本実施形態では、同じ引き量であっても正転方向の場合よりも逆転方向の場合の方が回転数が高くなるように構成されており、以下の説明もその構成を前提として進める。但しそのような構成はあくまでも一例であり、正転方向の方が逆転方向よりも回転数が高くなるような構成であってもよいし、両者が同じ回転数となるような構成であってもよい。
【００６５】
コントローラ３１は、この回転数の制御を、ホールＩＣ４０からの信号を用いて行う。ホールＩＣ４０は、ホール素子を備え、モータ４の回転子の回転位置が所定の回転位置に達する毎（即ち、モータ４が所定量回転する毎）にパルス信号を出力するよう構成された、周知の回転センサである。
【００６６】
コントローラ３１は、ホールＩＣ４０からのパルス信号に基づいてモータ４の回転位置及び回転数を算出し、算出した回転数が、トリガ２１ａの引き量に応じて定まる設定回転数と一致するように、ゲート回路３２及びモータ駆動回路３３とを介して、モータ４を制御する。
【００６７】
尚、モータ４の回転は、実際には、高い周波数領域（例えば工具ビットの回転周波数の２倍あるいはそれ以上の領域）で不規則に変動する。そのため、ホールＩＣ４０からのパルス信号に基づいて回転数を演算すると、その不規則に変動する成分である高周波変動成分が含まれた回転数が演算されることになる。そして、そのような高周波変動成分が含まれた回転数をそのまま用いると、各種制御を精度よく行うことができないおそれがある。
【００６８】
そこで、本実施形態のコントローラ３１は、ホールＩＣ４０からのパルス信号に基づいて演算された回転数（高周波変動成分を含む）に対し、所定の平均化処理を行って、高周波変動成分が除去された（即ち平均化された）回転数を算出する。そして、その算出した回転数（平均化された回転数）に基づいて、上述した回転制御や後述する打撃制御処理（図６）を含む、各種制御処理を行う。図３〜図５，図９に示したモータ４の回転数の波形図（詳細は後述）は、いずれも、コントローラ３１が各種制御処理で実際に用いる、上記平均化処理が行われた後の回転数を表している。
【００６９】
本実施形態の平均化処理は、コントローラ３１内におけるソフトウェア処理（例えば時間平均演算）により行われるが、これはあくまでも一例であり、例えばローパスフィルタを用いて高周波成分を除去してもよいなど、平均化処理の具体的方法は種々考えられる。また、上記のように平均化処理を行うのは必須ではなく、例えば高周波変動成分が無視できる程度のレベルであるような場合は、ホールＩＣ４０からのパルス信号に基づいて演算された回転数をそのまま各種制御処理に用いるようにしてもよい。
【００７０】
また、コントローラ３１は、正逆切替スイッチ２２からの回転方向設定信号に基づき、その正逆切替スイッチ２２にて設定された回転方向にてモータ４を回転させる。また、コントローラ３１は、トリガ２１ａが引き操作されているときに照明ＬＥＤ２３を点灯させる制御、及び打撃力設定スイッチ２４により設定された打撃力を打撃力設定表示器２５に表示させる制御も行う。
【００７１】
バッテリ電圧検出部２６は、バッテリ２９の電圧を検出してその電圧値を示す電圧検出信号をコントローラ３１へ出力する。コントローラ３１は、バッテリ電圧検出部２６からの電圧検出信号に基づいてバッテリ２９の電圧（バッテリ電圧）を検出し、後述する打撃制御処理（図６）などの各種制御処理においてそのバッテリ電圧を用いる。
【００７２】
また、コントローラ３１は、マイコンにて構成されているため、一定の電源電圧Ｖｃｃを供給する必要がある。このため、充電式インパクトドライバ１のハウジング２内には、バッテリ２９から電源供給を受けて一定の電源電圧Ｖｃｃ（例えば、直流５Ｖ）を生成するレギュレータ３４も設けられている。
【００７３】
次に、コントローラ３１が、トリガスイッチ２１からの駆動指令に従ってモータ４を回転駆動するために実行する各種制御処理のうち、特に、打撃を検出してモータ４の回転数を制限する（例えば低下させる）打撃制御処理について、具体的に説明する。まず、図３〜図５の波形図を用いて打撃制御処理の概要について説明する。
【００７４】
図３は、本実施形態の充電式インパクトドライバ１にて例えばネジの締結をすべく、トリガスイッチ２１をＯＮ（即ちトリガ２１ａを引き操作）してネジの締結を開始し、着座後に一定期間打撃力を与えて増し締めをした上でトリガスイッチ２１をＯＦＦさせるまでの一連の締結動作の際のモータ回転数の変化例である。
【００７５】
図３に示すように、モータ４の回転開始後（即ちネジの締結開始後）、ネジが着座するまでは、無負荷状態であって、モータ４は、毎分２２５００回転近傍の回転数にて高速回転する。なお、ここでいう負荷とは、外部から工具ビットに加わる負荷トルク、換言すれば工具ビットを回転させる（チャックスリーブ１９を回転させる）ために必要な回転トルクを意味する。また、ここでいう無負荷とは、負荷（回転トルク）が所定値より小さくて打撃が行われない状態を意味する。
【００７６】
そして、ネジの締結が進み、ネジが締結対象部材に着座すると、負荷が増大し、やがて回転トルクが所定値以上となって、打撃が開始される。打撃中は、負荷（回転トルク）が大きいため、回転数は無負荷状態のときよりも低く、毎分１４０００回転近傍の回転数にて回転する。そして、打撃開始後、一定期間打撃力を与えて、その後トリガスイッチ２１をＯＦＦさせると、モータ４の回転は停止する。
【００７７】
尚、本実施形態では、打撃を高精度に検出するために、打撃検出の判断基準の１つとして、所定の打撃回転数範囲が設定されている。詳しくは、その範囲の下限値を示す打撃回転数下限閾値Ｂｄと、その範囲の上限値を示す打撃回転数上限閾値Ｂｕとが設定されている。そして、モータ４の回転数がこの打撃回転数範囲内にあることを、打撃検出の１つの判断条件としている。
【００７８】
図４は、打撃が行われない無負荷状態の波形の拡大図であり、より詳しくは、トリガスイッチ２１のＯＮ後、２００〜３００ｍｓの期間における波形の拡大図である。また、図５は、打撃中の波形の拡大図であり、より詳しくは、トリガスイッチ２１のＯＮ後、８００〜９００ｍｓの期間における波形の拡大図である。
【００７９】
無負荷時においては、図４からも明らかなように、毎分２２５００回転近傍の回転数にて高速回転し、且つ、回転数の変動はほとんどない。これに対し、打撃中は、図５からも明らかなように、打撃動作に起因して、モータ４の回転数は周期的に変動する。具体的には、ハンマー１４の回転に同期して周期的に変動する。
【００８０】
即ち、打撃が行われる際は、ハンマー１４がアンビル１５を乗り越える時（乗り越えてアンビル１５から離れる直前）に、モータ４の回転数は最も遅い最小値ＭＬとなる。一方、ハンマー１４がアンビル１５から離れた後再びアンビル１５に衝突する時（即ち打撃力が加えられる直前）に、モータ４の回転数は最も速い最大値ＭＨとなる。そのため、打撃中は、ハンマー１４が回転する毎に、その回転と同期してモータ４の回転数は変動し、最小値ＭＬに到達する時と最大値ＭＨに到達する時とが交互に到来する。
【００８１】
尚、周期的に変動する波形における上記最小値ＭＬは、数学的な意味で厳密に表現するならば極小値であり、同じく上記最大値ＭＨは極大値である。そのため、打撃中のモータ回転数は、厳密に言えば、極大値と極小値が交互に発生するということになる。但し、本実施形態では、説明の便宜上、打撃中に生じるモータ回転数の極大値及び極小値を、それぞれ上記のように最大値及び最小値と称することとする。つまり、本実施形態においては最大値（ＭＨ）は本発明の極大値に相当するものであり、最小値（ＭＬ）は本発明の極小値に相当するものである。
【００８２】
このように、打撃中のモータ回転数は、最小値ＭＬと最大値ＭＨが時系列的に交互に発生する。そこで、本実施形態のコントローラ３１は、打撃を検出するために、モータ４の回転中、その回転数の最大値ＭＨ及び最小値ＭＬを時系列的に連続して検出する。尚、両者の検出順序はどちらが先でもよい。そして、その連続して検出した最小値ＭＬと最大値ＭＨの差が第１差閾値ｘ以上である場合に、打撃が行われているものと判断する。
【００８３】
図５を用いて具体的に説明する。ここでは打撃検出の原理を説明するために、便宜上、図５の波形図において、８３０ｍｓ以降に打撃が開始されたものと仮定して説明する。この場合、打撃開始後まず約８３９ｍｓのタイミングで最大値ＭＨｎを検出し、続いて約８４７ｍｓのタイミングで最小値ＭＬｎを検出する。すると、コントローラ３１は、このように連続して検出された最大値ＭＨｎ及び最小値ＭＬｎについて、両者の差を演算する。そして、両者の差が第１差閾値ｘ以上ならば、打撃が行われているものと判断するのである。
【００８４】
尚、本実施形態では、より詳しくは、上記のように一度だけの判断結果をもって打撃検出を行うのではなく、複数回（本例では２回）の判断を行うことで打撃を検出したり、また、上記差が第１差閾値ｘ以上ではなかった場合には再判定を行うなど、種々の制御方法が取り入れられているのであるが、それらについては後で説明する。
【００８５】
このように、打撃中はモータの回転数が周期的に変動し、最大値及び最小値が周期的に発生する。そのため、第１差閾値ｘを適切に設定することで、打撃を検出することができるのである。
【００８６】
第１差閾値ｘは、打撃の行われない無負荷時にはモータ回転数の変動幅がその第１差閾値ｘを超えることのないよう（図４参照）、逆に打撃中はモータ回転数の変動幅（即ち最大値と最小値の差）がその第１差閾値ｘを超えるように（図５参照）、適宜設定する。但し、打撃時に生じうる差を考慮していかなる場合にもその差が第１差閾値ｘを超えるように設定すると、第１差閾値ｘが非常に小さな値となって、逆に無負荷時において打撃と誤検出してしまうおそれがある。そのため、第１差閾値ｘは、無負荷時に打撃と誤検出されることのないよう、適切な大きさを有する値に設定する。
【００８７】
次に、上述した打撃検出及びその打撃検出後のモータ回転数制限を実現すべく、コントローラ３１が実行する打撃制御処理について、図６〜図８に示すフローチャートに沿って説明する。
【００８８】
図６に示す打撃制御処理は、レギュレータ３４からコントローラ３１に電源電圧Ｖｃｃが印加されているときに、コントローラ３１において繰り返し実行されるものである。
図６に示すように、コントローラ３１は、この打撃制御処理を開始すると、まずＳ１１０にて、トリガスイッチ２１がＯＮされたか否かを判断する。トリガスイッチ２１がＯＦＦされている間はこのＳ１１０の処理を繰り返すが、トリガスイッチ２１がＯＮされたら（Ｓ１１０：ＹＥＳ）、Ｓ１２０にて、打撃検出開始タイミングが到来したか否かを判断する。具体的には、トリガスイッチ２１がＯＮされてから所定時間経過したか否かを判断する。このように所定時間経過を待つのは、トリガスイッチ２１がＯＮされた直後の不安定な状態で打撃が誤検出されるのを防ぐためである。
【００８９】
打撃検出タイミングが到来しない間（即ちトリガスイッチ２１がＯＮされてから所定時間経過しない間）は、Ｓ１３０に進み、トリガスイッチ２１がＯＮされているか否か判断し、ＯＮされている限り（Ｓ１３０：ＹＥＳ）Ｓ１２０に戻るが、ＯＦＦされた場合には（Ｓ１３０：ＮＯ）、Ｓ１１０に戻る。
【００９０】
打撃検出タイミングが到来したら（Ｓ１２０：ＹＥＳ）、Ｓ１４０にて、バッテリ電圧検出部２６からバッテリ電圧を取得し、Ｓ１５０にて、正逆切替スイッチ２２からの信号に基づいてモータ４の回転方向を取得する。そして、これら取得したバッテリ電圧及び回転方向に基づき、Ｓ１６０にて、打撃回転数上限閾値Ｂｕ、打撃回転数下限閾値Ｂｄ、第１差閾値ｘ、及び第２差閾値ｙを設定する。
【００９１】
具体的には、打撃回転数上限閾値Ｂｕ及び打撃回転数下限閾値Ｂｄについては、バッテリ電圧に対しては、そのバッテリ電圧が大きいほど大きい値とすることで上記打撃回転数範囲が全体として回転数の高い領域となるよう、各閾値Ｂｕ，Ｂｄを設定する。また、回転方向に対しては、本実施形態では既述の通り正転方向の場合よりも逆転方向の場合の方が回転数が高いことから、各閾値Ｂｕ，Ｂｄを、正転方向の場合よりも逆転方向の場合の方が大きい値となるように設定することで、正転方向の場合よりも逆転方向の場合の方が上記打撃回転数範囲が全体として回転数の高い領域となるようにする。
【００９２】
また、第１差閾値ｘ及び第２差閾値ｙについては、基本的には、第２差閾値ｙが第１差閾値ｘよりも小さい値となるように設定する。これを基本としつつ、バッテリ電圧や回転方向に応じて各値を設定する。
【００９３】
即ち、バッテリ電圧に対しては、そのバッテリ電圧が大きいほど小さい値となるように上記各差閾値ｘ、ｙを設定する。また、回転方向に対しては、正転方向の場合よりも逆転方向の場合の方が小さい値となるように上記各差閾値ｘ、ｙを設定する。
【００９４】
このようにして各差閾値を設定した上で、Ｓ１７０の打撃検出処理に進む。Ｓ１７０の打撃検出処理の具体的な内容は図７に示す通りである。即ち、この打撃検出処理に移行すると、まずＳ３１０にて、メモリ４１に記憶されている最大値ＭＨ、最小値ＭＬを全てリセットする。そして、Ｓ３２０にて、最大値を検出したか否かを判断する。
【００９５】
Ｓ３２０における最大値の検出は、要するに極大値を検出する処理である。具体的には、前回このＳ３２０の判断処理を行ったときにコントローラ３１にて算出されていた回転数と、今回このＳ３２０の判断処理を行う際（つまり現在）コントローラ３１にて算出されている回転数とを比較し、今回の値が前回の値より小さかった場合（つまり増加から減少に転じた場合）に、前回の値を最大値として検出する。
【００９６】
Ｓ３２０で最大値を検出したら、Ｓ３３０にて、その検出した最大値を、最大値ＭＨｎとしてメモリ４１に記憶する。そして、Ｓ３４０にて、最小値を検出したか否かを判断する。
【００９７】
Ｓ３４０における最小値の検出は、要するに極小値を検出する処理である。具体的には、前回このＳ３４０の判断処理を行ったときにコントローラ３１にて算出されていた回転数と、今回このＳ３４０の判断処理を行う際（つまり現在）コントローラ３１にて算出されている回転数とを比較し、今回の値が前回の値より大きかった場合（つまり減少から増加に転じた場合）に、前回の値を最小値として検出する。
【００９８】
但し、Ｓ３４０の最小値検出処理では、最小値が検出されなかった場合はＳ３５０に進み、前回最大値を検出した後（つまりＳ３２０で最大値を検出した後）から一定時間経過したか否かを判断する。そして、まだ一定時間経過していなければ（Ｓ３５０：ＮＯ）、Ｓ３４０に戻って最小値検出を継続するが、最小値が検出されないまま一定時間経過した場合は（Ｓ３５０：ＹＥＳ）、この打撃検出処理を終了し、Ｓ１８０（図１）に進む。一定時間経過するまでに最小値を検出したら（Ｓ３４０：ＹＥＳ）、Ｓ３６０にて、その検出した最小値を、最小値ＭＬｎとしてメモリ４１に記憶する。
【００９９】
そして、Ｓ３７０にて、Ｓ３３０及びＳ３６０でメモリ４１に記憶した最大値ＭＨｎ及び最小値ＭＬｎがいずれも打撃回転数範囲内にあるか否か、即ち打撃回転数上限閾値Ｂｕ以下で且つ打撃回転数下限閾値以上であるか否かを判断する（図３参照）。そして、最大値ＭＨｎ及び最小値ＭＬｎのうち何れか一方でも打撃回転数範囲を外れていた場合は（Ｓ３７０：ＮＯ）、この打撃検出処理を終了してＳ１８０（図１）に進むが、最大値ＭＨｎ及び最小値ＭＬｎがいずれも打撃回転数範囲内にある場合は（Ｓ３７０：ＹＥＳ）、Ｓ３８０に進む。
【０１００】
Ｓ３８０では、最大値ＭＨｎと最小値ＭＬｎの差（以下「第１の差」ともいう）が第１差閾値ｘ以上であるか否かを判断する。そして、第１の差が第１差閾値ｘ以上であった場合は（Ｓ３８０：ＹＥＳ）、打撃が行われている可能性が高いとの一応の仮判断を行った上で、さらに継続して同様の判断を行う。即ち、Ｓ３９０にて、再び次の極値である最大値の検出処理を行う。つまり、現時点で、最大値ＭＨｎ及び最小値ＭＬｎが順次検出されているため、次に再び発生するはずの最大値についてその検出を行うのである。このＳ３９０の最大値検出処理は、Ｓ３２０と全く同じである。
【０１０１】
但し、Ｓ３９０の最大値検出処理では、最大値が検出されなかった場合はＳ４００に進み、前回最小値を検出した後（つまりＳ３４０で最小値を検出した後）から一定時間経過したか否かを判断する。そして、まだ一定時間経過していなければ（Ｓ４００：ＮＯ）、Ｓ３９０に戻って最大値検出を継続するが、最大値が検出されないまま一定時間経過した場合は（Ｓ４００：ＹＥＳ）、この打撃検出処理を終了してＳ１８０（図１）に進む。一定時間経過するまでに最大値を検出したら（Ｓ３９０：ＹＥＳ）、Ｓ４１０にて、その検出した最大値を、最大値ＭＨｎ＋１としてメモリ４１に記憶し、Ｓ４２０に進む。
【０１０２】
Ｓ４２０では、最大値ＭＨｎ＋１と最小値ＭＬｎの差（以下「第２の差」ともいう）が、第１差閾値ｘよりも小さい第２差閾値ｙ以上であるか否かを判断する。ここで、第２の差が第２差閾値ｙよりも小さかった場合は、打撃が行われているとの判断は行わずにこの打撃検出処理を終了し、Ｓ１８０（図１）に進むが、第２の差が第２差閾値ｙ以上であった場合は（Ｓ４２０：ＹＥＳ）、打撃が行われているものとの確定判断を行って、Ｓ４３０にて打撃検出フラグをメモリ４１にセットする。
【０１０３】
つまり、Ｓ３８０で最大値ＭＨｎと最小値ＭＬｎの差（第１の差）が第１差閾値ｘ以上であっても、打撃が行われているとの確定判断までは行わずに仮判断に留めておき、さらにその後の最大値ＭＨｎ＋１と最小値ＭＬｎの差（第２の差）が第２差閾値ｙ以上であることまで確認した上で、打撃が行われているとの確定判断を行うのである。
【０１０４】
Ｓ３８０の判断処理において、最大値ＭＨｎと最小値ＭＬｎの差（第１の差）が第１差閾値ｘより小さかった場合は（Ｓ３８０：ＮＯ）、Ｓ４５０に進み、再判定処理を行う。
Ｓ４５０の再判定処理の具体的な内容は図８に示す通りである。即ち、この再判定処理に移行すると、まずＳ５１０にて、最大値ＭＨｎと最小値ＭＬｎの差（第１の差）が第２差閾値ｙ以上であるか否かを判断する。そして、第１の差が第２差閾値ｙよりも小さかった場合は（Ｓ５１０：ＮＯ）、打撃は行われていないものと判断して、この再判定処理を終了し、Ｓ４６０（図７参照）に進む。
【０１０５】
一方、第１の差が第２差閾値ｙ以上であった場合は（Ｓ５１０：ＹＥＳ）、打撃が行われている可能性が高いとの一応の仮判断を行った上で、再度、第１差閾値ｘに基づく判断を行う。即ち、Ｓ５２０にて、図７のＳ３９０と同様、再び次の極値である最大値の検出処理を行う。また、このＳ５２０の最大値検出処理でも、最大値が検出されなかった場合はＳ５３０に進み、図７のＳ４００と同様、前回最小値を検出した後から一定時間経過したか否かを判断し、まだ一定時間経過していなければ（Ｓ５３０：ＮＯ）Ｓ５２０に戻るが、一定時間経過するまでに最大値が検出されなかった場合は（Ｓ５３０：ＹＥＳ）、打撃が行われていないものと判断して、この再判定処理を終了する。一定時間経過するまでに最大値を検出したら（Ｓ５２０：ＹＥＳ）、Ｓ５４０にて、その検出した最大値を、最大値ＭＨｎ＋１としてメモリ４１に記憶し、Ｓ５５０に進む。
【０１０６】
Ｓ５５０では、最大値ＭＨｎ＋１と最小値ＭＬｎの差（第２の差）が第１差閾値ｘ以上であるか否かを判断する。そして、第２の差が第１差閾値ｘ以上であった場合は（Ｓ５５０：ＹＥＳ）、Ｓ５６０にて、打撃判定、即ち打撃が行われているものとの確定判断を行って、この再判定処理を終了する。Ｓ５５０の判断処理において、第２の差が第１差閾値ｘよりも小さかった場合は（Ｓ５５０：ＮＯ）、打撃は行われていないものと判断して、この再判定処理を終了する。
【０１０７】
図７に戻り、Ｓ４５０の再判定処理が終了した後は、Ｓ４６０に進み、Ｓ４５０の再判定処理にて打撃判定がなされたか否か、即ち図８に示す再判定処理におけるＳ５６０の打撃判定が行われたか否かを判断する。そして、Ｓ４５０の再判定処理にて打撃判定が行われなかった場合は（Ｓ４６０：ＮＯ）そのままこの打撃検出処理を終了してＳ１８０（図１参照）に進むが、Ｓ４５０の再判定処理にて打撃判定が行われた場合は（Ｓ４６０：ＹＥＳ）、Ｓ４３０にて打撃検出フラグをメモリ４１にセットした上で、この打撃検出処理を終了し、Ｓ１８０に進む。
【０１０８】
図６に戻り、Ｓ１７０の打撃検出処理が終了してＳ１８０に進むと、Ｓ１７０の打撃検出処理において打撃が検出されたか否か、即ちメモリ４１に打撃検出フラグがセットされているか否かを判断する。そして、打撃検出フラグがセットされていた場合は（Ｓ１８０：ＹＥＳ）、Ｓ２００に進み、モータ４の回転数を制限（低下）させる。尚、回転数制限の具体的態様は種々考えられ、例えばモータ４の回転を完全に停止させるようにしてもよい。
【０１０９】
Ｓ１８０にて、打撃検出フラグがセットされていなかった場合は（Ｓ１８０：ＮＯ）、Ｓ１９０に進み、Ｓ１３０と同様、トリガスイッチ２１がＯＮされているか否か判断する。そして、トリガスイッチ２１がＯＮされていれば（Ｓ１９０：ＹＥＳ）、Ｓ１７０に戻るが、トリガスイッチ２１がＯＦＦされていた場合は（Ｓ１９０：ＮＯ）、Ｓ１１０に戻る。
【０１１０】
以上説明したように、本実施形態の充電式インパクトドライバ１では、コントローラ３１が、ホールＩＣ４０からのパルス信号に基づいてモータ４の回転数を算出し、その算出した回転数に基づいて、打撃の有無を検出する。具体的には、時系列的に連続して発生する回転数の最大値ＭＨ及び最小値ＭＬの差を演算し、その差が第１差閾値ｘ以上であるか否かに基づいて、打撃が行われているか否かの判断を行う。つまり、打撃時に生じる回転速度の周期的な変動を利用し打撃を検出するのである。そのため、簡素な構成でありながら、打撃の検出を高精度且つ迅速に行うことができる。
【０１１１】
そして、打撃を検出した場合には、モータ４の回転数を低下させたりあるいは停止させたりするなど、少なくとも打撃検出前よりも回転数が低くなるように、回転数に制限をかける。
【０１１２】
これにより、ネジ締め作業時において、着座後すぐに（打撃が開始されたらすぐに）打撃を検出してモータ４の回転数に制限をかけることができるため、ネジの頭をなめたり飛ばしたりするといった不具合を防ぐことができる。
【０１１３】
また、本実施形態では、時系列的に連続して発生する最大値ＭＨ及び最小値ＭＬを順次検出するにあたり、何れか一方を検出してから次に他方を検出するまでの時間に制限を設けている。即ち、一方が検出されてから一定時間が経過するまでに他方が検出された場合に、その両者の差に基づく判断（各差閾値ｘ、ｙとの比較判断等）を行うようにしている。
【０１１４】
そのため、打撃とは異なる要因によって最大値ＭＨ及び最小値ＭＬが連続して検出された場合にそれを除外することができ、打撃の誤検出を防ぐことができる。
また、本実施形態では、時系列的に連続した最大値ＭＨ及び最小値ＭＬが検出された場合、これら両者がいずれも打撃回転数範囲内にあるときに、これら両者の差に基づく打撃判断を行うようにしている。そのため、打撃の検出精度をより高めることができる。
【０１１５】
また、本実施形態では、最大値ＭＨｎと最小値ＭＬｎとの差（第１の差）が第１差閾値ｘ以上であった場合にそのことをもってすぐに打撃検出との確定判断を行わず、更に、次に検出される最大値ＭＨｎ＋１とその直前の最小値ＭＬｎとの差（第２の差）について第２差閾値ｙとの比較を行い、第２の差が第２差閾値ｙ以上であった場合に、打撃と判断する。このように、異なる差閾値を用いた複数回の判断によって打撃を検出することで、打撃の誤検出を防ぐことができる。
【０１１６】
また、本実施形態では、各閾値Ｂｕ、Ｂｄ、ｘ、ｙをそれぞれ、バッテリ電圧及び回転方向を考慮して可変設定している。そのため、バッテリ電圧及び回転方向に応じたより適切な閾値を設定することができ、これにより打撃検出の精度をより高めることができる。
【０１１７】
［変形例］
以上、本発明の実施の形態について説明したが、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
【０１１８】
例えば、時系列的に連続して発生する最大値ＭＨと最小値ＭＬとの差について、上記実施形態では第１の差が第１差閾値ｘ以上であって且つそれに続く第２の差が第２差閾値ｙ以上であった場合に打撃と判断したが、逆に、まず第２差閾値ｙと比較して次に第１差閾値ｘと比較するようにしてもよい。
【０１１９】
また、第２差閾値ｙは第１差閾値ｘよりも小さいことから、打撃検出用の差閾値としての信頼性は、第１差閾値ｘの方が第２差閾値ｙよりも相対的に高い。そのため、例えば第１差閾値ｘとの比較を１回行い、第１差閾値ｘ以上であった場合には更に第２差閾値ｙとの比較を複数回行って、その複数回の比較結果がいずれも第２差閾値ｙ以上であった場合に打撃と検出するようにしてもよい。つまり、複数種類の差閾値を用いて複数回の判断を行う際には、相対的に信頼性の低い（値の小さい）差閾値ほど多くの回数の判断を行うようにしてもよい。
【０１２０】
また、複数回の判断を行うのではなく、一度だけ（つまり第１の差についてだけ）判断してそれが第１差閾値ｘ以上であった場合には打撃と判断するようにしてもよい。
また、複数回の判断を行う場合には、上記実施形態のように第１差閾値ｘと第２差閾値ｙを用いて判断するのではなく、第１差閾値ｘのみを用いて複数回の判断を行うようにしてもよい。例えば、第１の差が第１差閾値ｘ以上であった場合に、さらに、次に検出される第２の差についても第１差閾値ｘと比較して、第２の差も第１差閾値ｘ以上であった場合に、打撃と判断するようにしてもよい。
【０１２１】
この場合、２回目の比較において第２の差が第１差閾値ｘより小さかった場合には、打撃ではないと判断してもよいし、更に次の差（即ち最大値ＭＨｎ＋１と最小値ＭＬｎ＋１の差；以下「第３の差」という）をみてその第３の差が第１差閾値ｘ以上であったならば打撃と判断してもよいし、その第３の差については第２差閾値ｙとの比較を行って、第２差閾値ｙ以上であったならば更に次の差（即ち最大値ＭＨｎ＋２と最小値ＭＬｎ＋１の差）について第１差閾値ｘとを比較して第１差閾値ｘ以上であったならば打撃と判断するようにしてもよい。
【０１２２】
また、３つ以上の差（第１の差〜第３の差）に対してそれぞれ第１差閾値ｘとの比較を行い、３つとも第１差閾値ｘ以上の場合に打撃と判断するようにしてもよい。この場合において、３つ以上の差のうち第１差閾値ｘより小さいものがあった場合には、そのことをもって即打撃ではないと判断するようにしてもよいし、その第１差閾値ｘより小さかった差に対して更に第２差閾値ｙと比較するようにしてもよい。そして、その第２差閾値ｙとの比較の結果、その第２差閾値ｙよりは大きかった場合は、そのことをもって打撃と判断してもよいし、更にもう一度、新たに差を演算してそれが第１差閾値ｘ以上であるか否かに基づいて打撃検出を行うようにしてもよい。
【０１２３】
つまり、時系列的に連続して発生する最大値ＭＨと最小値ＭＬとの差をいくつ用いて打撃判断を行うか、第１差閾値ｘより小さかった場合に第２差閾値ｙとの比較判断を行うか否か、その第２差閾値ｙ以上であった場合に次にどうするか（打撃と判断するかそれともさらに何れかの差閾値に基づく判断を継続するか）、などについては、適宜決めることができる。
【０１２４】
また、差閾値についても、上記実施形態では２つ（ｘ、ｙ）設定したが、さらに別の差閾値を設定して打撃判断に用いるようにしてもよい。例えば、ある差が第１差閾値ｘより小さく且つ第２差閾値ｙよりも小さかった場合、さらに、その第２差閾値ｙよりも小さい第３差閾値ｚと比較して、その第３差閾値ｚ以上であった場合には、引き続き打撃判断を継続するようにしてもよい。つまり、打撃判断に用いる差閾値の数は適宜決めることができ、また、複数の差閾値を具体的にどのように打撃判断に用いるかについても適宜決めることができる。
【０１２５】
また、充電式インパクトドライバ１の用途としては、ネジの締結だけでなく、ネジの取り外し（緩め）もあり、ネジを緩める場合にも、強く締め付けられている場合には打撃力を利用して緩めることができる。そして、ネジを緩める場合は、締結する場合とは逆に、モータ４を逆転方向に回転させることになる。この逆転時においても、上記実施形態では、図６の打撃制御処理が実行される。
【０１２６】
但し、打撃力を利用してネジを緩めた場合、ネジが緩んで無負荷状態になると、モータ４が高速回転してネジが一気に抜け落ちてしまい、作業性が悪化するおそれがある。そこで、逆転によりネジを緩める際には、まず打撃を検出し、その後、その打撃が終了したことを検出して、打撃終了が検出されたらモータ４の回転数に制限をかけるようにするとよい。
【０１２７】
図９に、強く締結されているネジを緩める際のモータ４の回転数の変化例を示す。図９に示すように、ネジを緩めるべくモータ４の逆転が開始されると、逆転開始後まもなくして打撃が開始される。コントローラ３１は、この逆転時の打撃についても、図６に示した打撃制御処理（より具体的には図７の打撃検出処理）と同じ方法にて検出する。そして、その打撃が検出された場合には、その後、打撃終了の検出処理を行う。
【０１２８】
打撃終了の検出は、具体的には、モータ４の回転数が所定の打撃終了検出閾値Ｆ以上となったか否かに基づいて行う。この打撃終了検出閾値Ｆは、打撃検出処理において用いられる打撃回転数範囲（図３参照）よりも高く、且つ、無負荷時における回転数よりも低い範囲内において、適宜設定することができる。
【０１２９】
打撃が終了することによってモータ４の回転数が上昇し、打撃終了検出閾値Ｆ以上になった場合は（図９における約９４０ｍｓ）、打撃が終了したものと判断して、モータ４の回転数に制限をかける。
【０１３０】
このように、ネジ等を緩める際に打撃が行われた場合は、その打撃終了後にモータ４の回転数に制限をかけることで、ネジ等が高回転で一気に外れてしまうのを防ぐことができ、作業性が悪化するのを防止することができる。
【０１３１】
また、上記実施形態では、コントローラ３１はマイコンにて構成されるものとして説明したが、例えばＡＳＩＣ（Application Specific Integrated Circuits）、ＦＰＧＡ（Field Programmable Gate Array）などのプログラマブル・ロジック・デバイスで構成してもよい。
【０１３２】
また、コントローラ３１が実行する上述した各種制御処理は、コントローラ３１を構成するＣＰＵがプログラムを実行することにより実現される。そして、このプログラムは、コントローラ３１内のメモリ４１に書き込まれていてもよく、或いは、コントローラ３１からデータを読み取り可能な記録媒体に記録されていてもよい。なお、記録媒体としては、持ち運び可能な半導体メモリ（例えばＵＳＢメモリ、メモリカード（登録商標）など）を使用することができる。
【０１３３】
また、上記実施形態では、モータ４は、３相ブラシレスモータにて構成されるものとして説明したが、工具要素が装着される出力軸を回転駆動可能なモータであればよい。また、バッテリ式ものに限らず、コードを介して電力の供給を受けるものに適用されてもよいし、交流モータによって工具要素を回転駆動させるように構成された回転打撃工具に適用されてもよい。
【０１３４】
また、モータ駆動回路３３を構成する各スイッチング素子Ｑ１〜Ｑ６は、ＭＯＳＦＥＴ以外のスイッチング素子（例えば、バイポーラトランジスタなど）であってもよい。
また、上記実施形態では、バッテリ２９がリチウムイオン二次電池であるものとして説明したが、これはあくまでも一例であり、例えばニッケル水素二次電池やニッケルカドミウム蓄電池など、他の二次電池であってもよい。
【符号の説明】
【０１３５】
１…充電式インパクトドライバ、２…ハウジング、３…グリップ部、４…モータ、５…ハンマーケース、６…打撃機構、７…スピンドル、８…ボールベアリング、９…遊星歯車機構、１０…工具本体、１１…インターナルギヤ、１２…出力軸、１３…ピニオン、１４…ハンマー、１５…アンビル、１６…コイルバネ、１７…打撃突部、１８…打撃アーム、１９…チャックスリーブ、２０…軸受、２１…トリガスイッチ、２１ａ…トリガ、２１ｂ…スイッチ本体部、２２…正逆切替スイッチ、２３…照明ＬＥＤ、２４…打撃力設定スイッチ、２５…打撃力設定表示器、２６…バッテリ電圧検出部、２９…バッテリ、３０…バッテリパック、３１…コントローラ、３２…ゲート回路、３３…モータ駆動回路、３４…レギュレータ、４０…ホールＩＣ、４１…メモリ、Ｑ１〜Ｑ６…スイッチング素子
【図１】
0005784473.tif 000002
【図２】
0005784473.tif 000003
【図３】
0005784473.tif 000004
【図４】
0005784473.tif 000005
【図５】
0005784473.tif 000006
【図６】
0005784473.tif 000007
【図７】
0005784473.tif 000008
【図８】
0005784473.tif 000009
【図９】
0005784473.tif 000010