"モータと、前記モータの回転力によって回転するハンマーと、工具要素が装着される出力軸が装着され、前記ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わると前記ハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、前記モータの回転速度を検出する回転速度検出手段と、前記回転速度検出手段により検出される前記回転速度に基づき、時系列的に連続して発生する前記回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、前記極値対検出手段により検出された前記極値対を構成する前記極大値と前記極小値の差である極値差が第1の差閾値以上である場合に前記打撃力が加えられていることを検出する打撃検出手段と、を備えていることを特徴とする回転打撃工具。請求項1に記載の回転打撃工具であって、前記極値対検出手段は、予め設定した一定時間内に、時系列的に連続して前記極大値及び前記極小値が発生した場合に、該極大値及び該極小値を前記極値対として検出することを特徴とする回転打撃工具。請求項1又は請求項2に記載の回転打撃工具であって、前記打撃検出手段は、時系列的に異なる複数の前記極値対に対し、該複数の極値対の前記極値差がいずれも前記第1の差閾値以上である場合、又は、該複数の極値対のうち少なくとも1つの前記極値差が前記第1の差閾値以上であって他の前記極値対の前記極値差については前記第1の差閾値よりも小さい第2の差閾値以上である場合に、前記打撃力が加えられていることを検出することを特徴とする回転打撃工具。請求項3に記載の回転打撃工具であって、前記打撃検出手段は、時系列的に異なる2つの前記極値対に対し、まず、先に検出された前記極値対の前記極値差に対して前記第1の差閾値以上であるか否かを判断し、該第1の差閾値以上であった場合には、更に、その後に検出された前記極値対の前記極値差に対して前記第2の差閾値以上であるか否かを判断して、該第2の差閾値以上であった場合に、前記打撃力が加えられていることを検出することを特徴とする回転打撃工具。請求項1~請求項4の何れか1項に記載の回転打撃工具であって、前記打撃検出手段は、自身による前記極値差に基づく前記検出動作の開始後、最初の前記極値対の前記極値差が前記第1の差閾値以上であったならば前記打撃力が加えられていることを検出し、該最初の前記極値対の極値差が前記第1の差閾値以上ではなかった場合は、その極値差が、前記第1の差閾値よりも小さい第2の差閾値以上であるか否かを判断し、該第2の差閾値以上であった場合は、更に、その極値対よりも時系列的に後の前記極値対の少なくとも1つに対し、その極値対における前記極値差が前記第1の差閾値以上であるか否かを判断し、該第1の差閾値以上であった場合に、前記打撃力が加えられていることを検出することを特徴とする回転打撃工具。請求項1~請求項5の何れか1項に記載の回転打撃工具であって、前記極値対を構成する前記極大値及び前記極小値がいずれも所定の回転数範囲内にあるか否かを判断する回転数範囲判断手段を備え、前記打撃検出手段は、前記回転数範囲判断手段により前記極値対を構成する前記極大値及び前記極小値がいずれも前記回転数範囲内にあると判断された場合に、該極値対に基づいて前記打撃力が加えられているか否かの判断を行うことを特徴とする回転打撃工具。請求項6に記載の回転打撃工具であって、前記モータに電力を供給する電源の電圧を検出する電圧検出手段、及び前記モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、前記電圧検出手段及び前記回転方向検出手段の少なくとも一方による検出結果に基づいて前記回転数範囲を設定する回転数範囲設定手段と、を備えていることを特徴とする回転打撃工具。請求項7に記載の回転打撃工具であって、前記正転方向の場合の回転速度と前記逆転方向の場合の回転速度は、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されており、前記回転数範囲設定手段は、前記電圧検出手段により検出された前記電圧が大きいほど前記回転数範囲が高い領域となるよう、また、前記回転方向検出手段により検出された前記回転方向が前記一方の回転方向の場合よりも相対的に回転速度の高い前記他方の回転方向の場合の方が前記回転数範囲が高い領域となるように、前記回転数範囲を設定することを特徴とする回転打撃工具。請求項1~請求項8の何れか1項に記載の回転打撃工具であって、前記モータに電力を供給する電源の電圧を検出する電圧検出手段、及び前記モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、前記電圧検出手段及び前記回転方向検出手段の少なくとも一方による検出結果に基づいて前記差閾値を設定する差閾値設定手段と、を備えていることを特徴とする回転打撃工具。請求項9に記載の回転打撃工具であって、前記正転方向の場合の回転速度と前記逆転方向の場合の回転速度は、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されており、前記差閾値設定手段は、前記電圧検出手段により検出された前記電圧が大きいほど前記差閾値が小さくなるよう、また、前記回転方向検出手段により検出された前記回転方向が前記一方の回転方向の場合よりも相対的に回転速度の高い前記他方の回転方向の場合の方が前記差閾値が小さくなるように、前記差閾値を設定することを特徴とする回転打撃工具。請求項1~請求項10の何れか1項に記載の回転打撃工具であって、前記打撃検出手段により前記打撃力が加えられていることが検出された場合に前記モータの回転速度を制限する第1の回転速度制限手段を備えていることを特徴とする回転打撃工具。請求項1~請求項11の何れか1項に記載の回転打撃工具であって、前記モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段と、前記回転方向検出手段により前記回転方向が前記逆転方向であることが検出されているときに前記打撃検出手段により前記打撃力が加えられていることが検出された場合に、その打撃力の付加が終了するのを判断する打撃終了判断手段と、前記打撃終了判断手段により前記打撃力の付加が終了したと判断された場合に前記モータの回転速度を制限する第2の回転速度制限手段と、を備えていることを特徴とする回転打撃工具。請求項1~請求項12の何れか1項に記載の回転打撃工具であって、前記モータの回転位置に応じた信号を出力するホール素子を備え、前記回転速度検出手段は、前記ホール素子から出力される信号に基づいて前記回転速度を検出することを特徴とする回転打撃工具。しかし、特許文献1に記載の技術では、打撃の検出を、圧電センサや加速度センサ、圧電ブザー、マイクロフォン等の衝撃センサを用い、打撃時の振動あるいは打撃音を検出することにより行うようにしている。そのため、ネジ等の締結対象の部材が、締結の際に工具に加わる負荷の状態が安定しないような材料の場合、打撃を精度よく検出することが難しく、早い段階で打撃が誤検出されてモータが低速になってしまったり、逆に打撃が開始されたにもかかわらずそれが検出されずにネジの頭をなめたり飛ばしたりしてしまうおそれがある。よって、高精度且つ迅速に打撃を検出できるようにすることが望まれている。本発明は上記課題に鑑みなされたものであり、回転打撃工具における打撃の検出を高精度且つ迅速に行うことができるようにすることを目的とする。上記課題を解決するためになされた本発明の回転打撃工具は、モータと、このモータの回転力によって回転するハンマーと、工具要素が装着される出力軸が装着され、ハンマーの回転力を受けて回転しつつ、その回転によって外部から所定値以上のトルクが加わるとハンマーの回転力によって間欠的に回転方向への打撃力が加えられるアンビルと、モータの回転速度を検出する回転速度検出手段と、この回転速度検出手段により検出される回転速度に基づき、時系列的に連続して発生する回転速度の極大値及び極小値である極値対を検出する極値対検出手段と、この極値対検出手段により検出された極値対を構成する極大値と極小値の差である極値差が第1の差閾値以上である場合に打撃力が加えられていることを検出する打撃検出手段と、を備えていることを特徴とする。このように構成された回転打撃工具において、モータの回転速度は、打撃が行われている打撃力が加えられているときと打撃が行われていないときとで、少なくともその回転速度の変動状態が異なる。なお、ここでいう回転速度の変動とは、ハンマーの回転に同期して生じる変動を意味する。打撃が行われていない通常回転時には、回転速度の変動はほとんど生じない。一方、打撃が行われているときは、打撃力を生じさせる原理に起因して、回転速度に変動が生じる。即ち、打撃が行われる際は、通常、ハンマーがアンビルを乗り越えて離れる直前にモータの回転速度が最も遅くなり、ハンマーがアンビルから離れた後再びアンビルに衝突する時即ち打撃力が加えられる直前にモータの回転速度が最も速くなる。そのため、モータの回転速度はハンマーの回転に同期して周期的に変動することになる。そこで、本発明の回転打撃工具では、モータの回転速度の極大値及び極小値を時系列的に連続して検出する。そして、その連続して検出した各極値極値対の差極値差が第1の差閾値以上である場合に、打撃が行われていることを検出する。打撃が行われると回転速度が周期的に変動し、これにより回転速度の極大値及び極小値が周期的に発生するため、第1の差閾値を適切に設定することで、極値差に基づいて打撃を検出できるのである。従って、上記のように構成された本発明の回転打撃工具によれば、打撃時に生じる回転速度の変動を利用して打撃を検出するため、打撃の検出を高精度且つ迅速に行うことができる。極値対としての極大値及び極小値は、時系列的に連続していさえすればよいというわけでは必ずしもない。例えば、打撃が行われていない場合であっても、負荷の状態やモータへの供給電力の変動などの種々外乱等によって回転速度が変化し、これにより大きな時間間隔をもって極大値及び極小値が連続して発生する可能性もある。そして、そのような場合にも、打撃が行われていないにもかかわらず、その両極値の差が第1の差閾値以上であることをもって打撃が誤検出されてしまう。そこで、極値対検出手段は、予め設定した一定時間内に、時系列的に連続して極大値及び極小値が発生した場合に、その極大値及び極小値を極値対として検出するようにするとよい。このように、連続して発生する極大値及び極小値の時間間隔に一定の制限を設けることで、打撃とは異なる要因により生じる極値対を除外することができ、打撃の誤検出を防ぐことができる。また、上述した各種外乱等による打撃の誤検出を防ぐために、次のような構成をとるようにしてもよい。即ち、打撃検出手段は、時系列的に異なる複数の極値対に対し、その複数の極値対の極値差がいずれも第1の差閾値以上である場合、又は、その複数の極値対のうち少なくとも1つの極値差が第1の差閾値以上であって他の極値対の極値差については第1の差閾値よりも小さい第2の差閾値以上である場合に、打撃力が加えられていることを検出する。このように、複数の極値対に対し、それぞれその極値差について同じ第1の差閾値を用いて何れも第1の差閾値以上であるか否かを判断すること、又は第1の差閾値を含む複数種類の差閾値を用いて各極値差がそれぞれ対応するいずれかの差閾値以上であるか否かを判断することによって打撃を検出することで、打撃とは異なる要因により生じる極値対を除外することができ、打撃の誤検出を防ぐことができる。打撃検出手段が複数の極値対を用いて検出を行う場合における具体的検出方法は種々考えられるが、例えば、打撃検出手段は、時系列的に異なる2つの極値対に対し、まず、先に検出された極値対の極値差に対して第1の差閾値以上であるか否かを判断し、第1の差閾値以上であった場合には、更に、その後に検出された極値対の極値差に対して第2の差閾値以上であるか否かを判断して、第2の差閾値以上であった場合に、打撃力が加えられていることを検出するようにしてもよい。このように、2つの極値対に対して順に第1の差閾値及び第2の差閾値を用いることで、打撃検出のための処理負荷を低く抑えつつ高い精度で打撃の検出を行うことができる。なお、複数の極値対は、時系列的に完全に異なるものでなくてはならないわけではなく、一部が重複していてもよい。即ち、例えばまず極大値が検出されてそれに続いて極小値が検出された場合これを例えば第1極値対と称すにおいて、その極値対よりも時系列的に後の極値対としては、第1極値対のうち時系列的に後に検出された極小値とその極小値の次に新たに検出される極大値とにより構成される極値対も含まれる。一方、打撃が行われているにもかかわらず、何らかの要因で一時的に極値差が第1の差閾値よりも小さくなり、これにより打撃が検出されない又は打撃検出が遅れることも考えられる。そこで、打撃検出手段は、自身による極値差に基づく検出動作の開始後、最初の極値対の極値差が第1の差閾値以上であったならば打撃力が加えられていることを検出する一方、最初の極値対の極値差が第1の差閾値以上ではなかった場合は、その極値差が、第1の差閾値よりも小さい第2の差閾値以上であるか否かを判断し、第2の差閾値以上であった場合は、更に、その極値対よりも時系列的に後の極値対の少なくとも1つに対し、その極値対における極値差が第1の差閾値以上であるか否かを判断し、第1の差閾値以上であった場合に、打撃力が加えられていることを検出するようにするとよい。つまり、極値差が第1の差閾値より小さかった場合は、より小さい第2の差閾値との比較を行ってその第2の差閾値以上であったならば、打撃であるとの一応の判定を行い、その上で、打撃であることをより確実に確かめるべく、その後に生じる極値対に対してさらにその極値差が第1の差閾値以上であるか否かを判断し、第1の差閾値以上であったならば打撃と検出するのである。したがって、打撃が行われているにもかかわらず何らかの要因で一時的に極値差の小さい状態が生じたとしても、確実且つ迅速にその打撃を検出することができる。また、通常、打撃が行われているときのモータの回転速度と、打撃が行われていない通常回転時のモータの回転速度とは異なり、打撃が行われているときの方が相対的に回転速度は小さくなる。そこで、極値対を構成する極大値及び極小値がいずれも所定の回転数範囲内にあるか否かを判断する回転数範囲判断手段を備え、打撃検出手段は、その回転数範囲判断手段により、極値対を構成する極大値及び極小値がいずれも回転数範囲内にあると判断された場合に、その極値対に基づいて打撃力が加えられているか否かの判断を行うようにするとよい。上記構成の回転打撃工具によれば、極値差に加えて、極値対を構成する各極値が回転数範囲内にあるか否かも考慮した上で、打撃の検出が行われるため、打撃の検出精度をより高めることができる。また、上記のように回転数範囲判断手段を備えた回転打撃工具は、更に次のように構成してもよい。即ち、モータに電力を供給する電源の電圧を検出する電圧検出手段、及びモータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、電圧検出手段及び回転方向検出手段の少なくとも一方による検出結果に基づいて回転数範囲を設定する回転数範囲設定手段と、を備える。電源電圧が変化するとそれに応じてモータの回転速度も変化し、また、モータの回転方向が正転方向か逆転方向かによってもモータの回転速度は変化する可能性がある。そこで、上記のようにモータの電源電圧あるいは回転方向に基づいて回転数範囲を設定することで、当該工具の使用状態に応じたより適切な回転数範囲が設定されることになり、よって打撃の検出精度をさらに高めることができる。モータの電源電圧あるいは回転方向に基づいて回転数範囲設定手段が回転数範囲を具体的にどのように設定するかについては種々考えられるが、例えば、電圧検出手段により検出された電圧が大きいほど回転数範囲が高い領域となるよう、また、正転方向の場合の回転速度と逆転方向の場合の回転速度が、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されている場合には、回転方向検出手段により検出された回転方向が上記一方の回転方向の場合よりも相対的に回転速度の高い他方の回転方向の場合の方が回転数範囲が高い領域となるように、回転数範囲を設定するようにするとよい。このようにすることで、電源電圧あるいは回転方向が考慮された適切な回転数範囲を設定することができる。また、各差閾値第1の差閾値、第2の差閾値についても、上述した回転数範囲と同様に可変設定できるようにしてもよい。即ち、モータに電力を供給する電源の電圧を検出する電圧検出手段、及びモータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段の少なくとも一方と、電圧検出手段及び回転方向検出手段の少なくとも一方による検出結果に基づいて差閾値を設定する差閾値設定手段と、を備えるようにする。打撃が行われている際の極値対の極値差も、電源電圧や回転方向によって変化する可能性がある。そこで、上記のようにモータの電源電圧あるいは回転方向に基づいて差閾値を設定することで、当該工具の使用状態に応じたより適切な差閾値が設定されることになり、よって打撃の検出精度をさらに高めることができる。モータの電源電圧あるいは回転方向に基づいて差閾値設定手段が差閾値を具体的にどのように設定するかについては種々考えられるが、例えば、電圧検出手段により検出された電圧が大きいほど差閾値が小さくなるよう、また、正転方向の場合の回転速度と逆転方向の場合の回転速度が、相対的に、何れか一方の回転方向の場合の回転速度よりも他方の回転方向の場合の回転速度の方が高くなるよう構成されている場合には、回転方向検出手段により検出された回転方向が上記一方の回転方向の場合よりも相対的に回転速度の高い他方の回転方向の場合の方が差閾値が小さくなるように、差閾値を設定するようにするとよい。このようにすることで、電源電圧あるいは回転方向が考慮された適切な差閾値を設定することができる。また、上述した本発明の回転打撃工具は、打撃検出手段により打撃力が加えられていることが検出された場合に記モータの回転速度を制限する第1の回転速度制限手段を備えたものであるとよい。尚、ここでいう制限とは、回転速度を低下させることを意味するのはもちろん、回転を停止させる意味も含む。このように構成された回転打撃工具によれば、高精度且つ迅速に打撃の検出が行われ、その打撃検出によって迅速にモータの回転速度を迅速に制限することができるため、例えば上述したようなネジの頭をなめたり飛ばしたりするといった、打撃時の過大なトルクが当該回転打撃工具の使用対象に与える悪影響を防ぐことができる。ところで、本発明の回転打撃工具は、例えばネジを締結するといった、使用対象を相手側部材に結合させるような使用目的だけでなく、逆に、例えばある部材に締結されているネジを緩めて取り外すといった、使用対象を相手側部材から分離させるような使用目的でも使用される可能性がある。そのような場合は、打撃中には必ずしも回転速度を低下させる必要はなく、むしろ打撃が終了した後に、ネジ等の使用対象が相手側部材から一気に抜けて落下等してしまわないよう、回転速度を低下させるのが好ましい。そこで、上述した本発明の回転打撃工具は、更に、モータの回転方向が予め設定した正転方向であるかそれともそれとは逆の逆転方向であるかを検出する回転方向検出手段と、この回転方向検出手段により回転方向が逆転方向であることが検出されているときに打撃検出手段により打撃力が加えられていることが検出された場合に、その打撃力の付加が終了するのを判断する打撃終了判断手段と、この打撃終了判断手段により打撃力の付加が終了したと判断された場合にモータの回転速度を制限する第2の回転速度制限手段と、を備えたものとして構成するとよい。このように構成することで、モータを逆転させて工具の使用対象を相手側部材から取り外す際にも、使用対象が一気に外れてしまうことを防ぎ、作業性が悪化するのを防止することができる。そして、本発明の回転打撃工具が、モータの回転位置に応じた信号を出力するホール素子を備えている場合には、回転速度検出手段は、そのホール素子から出力される信号に基づいて回転速度を検出するようにするとよい。このようにすることで、簡素な構成で回転速度を検出することができる。以下に、本発明の好適な実施形態を図面に基づいて説明する。図1は、本発明が適用された回転打撃工具の一例である充電式インパクトドライバ1の縦断面図である。尚、充電式インパクトドライバ1のより具体的な構成特に打撃機構は、例えば既述の特許文献1や特開2006-218605号公報などに詳しく開示されているため、その詳細説明は省略することとし、ここでは打撃機構を中心とする主たる構成について概略説明する。図1に示すように、充電式インパクトドライバ1は、工具本体10と、工具本体10に電力を供給するバッテリパック30とにより構成されている。工具本体10は、後述するモータ4や打撃機構6等が収容されたハウジング2と、ハウジング2の下部図1の下側から突出するように形成されたグリップ部3とにより構成されている。ハウジング2内には、その後部図1の左側にモータ4が収容されていると共に、そのモータ4の前方図1の右側に釣鐘状のハンマーケース5が組み付けられており、このハンマーケース5内に打撃機構6が収容されている。グリップ部3は、作業者が当該充電式インパクトドライバ1を使用する際に把持する部分であり、その上方にトリガスイッチ21が設けられている。このトリガスイッチ21は、作業者により引き操作されるトリガ21aと、このトリガ21aの引き操作によりONOFFされるとともにこのトリガ21aの操作量引き量に応じて抵抗値が変化するように構成されたスイッチ本体部21bとを備えている。また、トリガスイッチ21の上側ハウジング2の下端側には、モータ4の回転方向を正転方向本例では、工具の後端側から前方を見た状態で右回り方向又は逆転方向正転方向とは逆の回転方向の何れか一方に切り替えるための正逆切替スイッチ22が設けられている。更に、ハウジング2の下部前方には、トリガ21aが引き操作されたときに当該充電式インパクトドライバ1の前方を光で照射するための照明LED23が設けられている。また、グリップ部3における前方下部には、打撃時の打撃力詳しくはその上限値を使用者が複数段階に選択的に設定するための打撃力設定スイッチ24と、この打撃力設定スイッチ24により設定された打撃力が表示される打撃力設定表示器25とが儲けられている。また、グリップ部3の下端には、バッテリ29を収容したバッテリパック30が、着脱自在に装着されている。このバッテリパック30は、装着時にはグリップ部3の下端に対してその前方側から後方側へとスライドさせることにより装着される。バッテリパック30に収容されたバッテリ29は、本実施形態では、例えばリチウムイオン2次電池などの繰り返し充電可能な2次電池である。更に、グリップ部3の内部には、図1では図示を省略したものの、バッテリパック30の電力によってモータ4を回転させるための、コントローラ31、ゲート回路32、モータ駆動回路33、及びレギュレータ34などからなるモータ制御装置図2参照が搭載されている。また、モータ4には、図1では図示を省略したものの、モータ4の回転位置を検出するホールIC40図2参照が設けられている。ハウジング2において、ハンマーケース5内には、後端側に中空部が形成されたスピンドル7が同軸で収容され、ハンマーケース5内の後端側に設けられたボールベアリング8がこのスピンドル7の後端外周を軸支している。スピンドル7におけるボールベアリング8の前方部位には、回転軸に対して点対称で軸支された2つの遊星歯車からなる遊星歯車機構9が、ハンマーケース5の後端側内周面に形成されたインターナルギヤ11に噛合している。この遊星歯車機構9は、モータ4の出力軸12の先端部に形成されたピニオン13と噛合するものである。打撃機構6は、スピンドル7と、このスピンドル7に外装されたハンマー14と、このハンマー14の前方側で軸支されるアンビル15と、ハンマー14を前方へ付勢するコイルバネ16とから構成される。ハンマー14は、スピンドル7に対して一体回転可能且つ軸方向へ移動可能に連結されており、コイルバネ16により前方アンビル15側に付勢されている。また、スピンドル7の先端部は、アンビル15の後端に同軸で遊挿されることで回転可能に軸支されている。アンビル15は、ハンマー14による回転力及び打撃力を受けて軸回りに回転するものであり、ハウジング2の先端に設けられた軸受20によって、軸回りに回転自在かつ軸方向に変位不能に支持されている。アンビル15の先端部には、ドライバビットやソケットビット等の各種工具ビット図示略を装着するためのチャックスリーブ19が設けられている。尚、モータ4の出力軸12、スピンドル7、ハンマー14、アンビル15、及びチャックスリーブ19は、いずれも同軸状となるように配置されている。ハンマー14の前端面には、アンビル15に打撃力を与えるための2つの打撃突部17,17が周方向に180°の間隔を隔てて突設されている。一方、アンビル15には、その後端側に、ハンマー14の各打撃突部17,17が当接可能に構成された2つの打撃アーム18,18が周方向に180°の間隔を隔てて形成されている。そして、ハンマー14がコイルバネ16の付勢力でスピンドル7の前端側に付勢保持されることで、そのハンマー14の各打撃突部17,17がアンビル15の各打撃アーム18,18に当接するようになる。この状態で、モータ4の回転力により遊星歯車機構9を介してスピンドル7が回転すると、ハンマー14がスピンドル7と共に回転し、そのハンマー14の回転力が各打撃突部17,17と打各撃アーム18,18とを介してアンビル15に伝達される。これにより、アンビル15の先端に装着されたドライバビット等が回転し、ネジ締めが可能となる。そして、ネジが所定位置まで締付けられることにより、アンビル15に対して外部から所定値以上のトルクが加わると、そのアンビル15に対するハンマー14の回転力トルクも所定値以上になる。これにより、ハンマー14がコイルバネ16の付勢力に抗して後方に変位し、ハンマー14の各打撃突部17,17がアンビル15の各打撃アーム18,18を乗り超えるようになる。即ち、ハンマー14の各打撃突部17,17がアンビル15の各打撃アーム18,18から一旦外れ、空転する。このようにハンマー14の各打撃突部17,17がアンビル15の各打撃アーム18,18を乗り超えると、ハンマー14は、スピンドル7と共に回転しつつコイルバネ16の付勢力で再び前方へ変位し、ハンマー14の各打撃突部17,17がアンビル15の各打撃アーム18,18を回転方向に打撃する。即ち、アンビル15に対して所定値以上のトルクが加わる毎に、そのアンビル15に対してハンマー14による打撃が繰り返し行われるのであり、このようにしてハンマー14の打撃力がアンビル15に間欠的に加えられることにより、ネジを高トルクで増し締めすることができる。次に、モータ4の回転駆動を制御するために充電式インパクトドライバ1の内部に設けられているモータ制御装置について、図2を用いて説明する。図2に示すように、充電式インパクトドライバ1には、モータ4を駆動制御するモータ制御装置として、バッテリ29、コントローラ31、ゲート回路32、及びモータ駆動回路33が備えられている。モータ4は、本実施形態では、U,V,W各相の電機子巻線を備えた3相ブラシレスモータである。モータ駆動回路33は、バッテリ29から所定の直流電圧例えば14.4Vの電源供給を受けて、モータ4の各相巻線に電流を流すためのものであり、本例では、6つのスイッチング素子Q1~Q6からなる3相フルブリッジ回路として構成されている。各スイッチング素子Q1~Q6は、本例ではMOSFETである。モータ駆動回路33において、3つのスイッチング素子Q1~Q3は、モータ4の各端子U,V,Wと、バッテリ29の正極側に接続された電源ラインとの間に、いわゆるハイサイドスイッチとして設けられている。また、他の3つのスイッチング素子Q4~Q6は、モータ4の各端子U,V,Wと、バッテリ29の負極側に接続されたグランドラインとの間に、いわゆるローサイドスイッチとして設けられている。ゲート回路32は、コントローラ31から出力された制御信号に従い、モータ駆動回路33内の各スイッチング素子Q1~Q6をオン/オフさせることで、モータ4の各相巻線に電流を流し、モータ4を回転させるものである。コントローラ31は、本実施形態では、一例として、いわゆるワンチップマイクロコンピュータとして構成されており、メモリ41のほか、CPU、入出力I/Oポート、A/D変換器、タイマなどを有している。メモリ41は、ROM、RAM、及び書換可能な不揮発性メモリ素子例えばフラッシュROMやEEPROMなどを含み、CPUが、メモリ41に記憶された各種プログラムに従って、各種処理を実行する。コントローラ31には、上述したトリガスイッチ21詳しくはスイッチ本体部21b、正逆切替スイッチ22、照明LED23、打撃力設定スイッチ24、打撃力設定表示器25、及びバッテリ電圧検出部26が接続されている。更に、コントローラ31には、モータ4に設けられたホールIC40が接続されている。コントローラ31は、トリガスイッチ21からの駆動指令に従い、モータ駆動回路33を構成する各スイッチング素子Q1~Q6の駆動デューティ比を設定し、その駆動デューティ比に応じた制御信号をゲート回路32に出力することで、モータ4を回転駆動させる。本実施形態のコントローラ31は、打撃力設定スイッチ24により選択された打撃力に対応して予め設定された最大回転数を上限として、使用者によるトリガ21aの引き量操作量に応じた回転数となるように、モータ4の回転を制御する。尚、回転数とは、単位あたりの回転数を意味し、よって回転速度と同義である。トリガスイッチ21を構成するトリガ21aが引き操作されると、同じくトリガスイッチ21を構成するスイッチ本体部21bから、その引き量に応じた信号がコントローラ31に入力される。そのため、コントローラ31は、その入力される信号、即ち引き量に応じた信号に基づき、その引き量に応じた回転数でモータ4が回転するよう、モータ4を制御する。尚、本実施形態では、同じ引き量であっても正転方向の場合よりも逆転方向の場合の方が回転数が高くなるように構成されており、以下の説明もその構成を前提として進める。但しそのような構成はあくまでも一例であり、正転方向の方が逆転方向よりも回転数が高くなるような構成であってもよいし、両者が同じ回転数となるような構成であってもよい。コントローラ31は、この回転数の制御を、ホールIC40からの信号を用いて行う。ホールIC40は、ホール素子を備え、モータ4の回転子の回転位置が所定の回転位置に達する毎即ち、モータ4が所定量回転する毎にパルス信号を出力するよう構成された、周知の回転センサである。コントローラ31は、ホールIC40からのパルス信号に基づいてモータ4の回転位置及び回転数を算出し、算出した回転数が、トリガ21aの引き量に応じて定まる設定回転数と一致するように、ゲート回路32及びモータ駆動回路33とを介して、モータ4を制御する。尚、モータ4の回転は、実際には、高い周波数領域例えば工具ビットの回転周波数の2倍あるいはそれ以上の領域で不規則に変動する。そのため、ホールIC40からのパルス信号に基づいて回転数を演算すると、その不規則に変動する成分である高周波変動成分が含まれた回転数が演算されることになる。そして、そのような高周波変動成分が含まれた回転数をそのまま用いると、各種制御を精度よく行うことができないおそれがある。そこで、本実施形態のコントローラ31は、ホールIC40からのパルス信号に基づいて演算された回転数高周波変動成分を含むに対し、所定の平均化処理を行って、高周波変動成分が除去された即ち平均化された回転数を算出する。そして、その算出した回転数平均化された回転数に基づいて、上述した回転制御や後述する打撃制御処理図6を含む、各種制御処理を行う。図3~図5,図9に示したモータ4の回転数の波形図詳細は後述は、いずれも、コントローラ31が各種制御処理で実際に用いる、上記平均化処理が行われた後の回転数を表している。本実施形態の平均化処理は、コントローラ31内におけるソフトウェア処理例えば時間平均演算により行われるが、これはあくまでも一例であり、例えばローパスフィルタを用いて高周波成分を除去してもよいなど、平均化処理の具体的方法は種々考えられる。また、上記のように平均化処理を行うのは必須ではなく、例えば高周波変動成分が無視できる程度のレベルであるような場合は、ホールIC40からのパルス信号に基づいて演算された回転数をそのまま各種制御処理に用いるようにしてもよい。また、コントローラ31は、正逆切替スイッチ22からの回転方向設定信号に基づき、その正逆切替スイッチ22にて設定された回転方向にてモータ4を回転させる。また、コントローラ31は、トリガ21aが引き操作されているときに照明LED23を点灯させる制御、及び打撃力設定スイッチ24により設定された打撃力を打撃力設定表示器25に表示させる制御も行う。バッテリ電圧検出部26は、バッテリ29の電圧を検出してその電圧値を示す電圧検出信号をコントローラ31へ出力する。コントローラ31は、バッテリ電圧検出部26からの電圧検出信号に基づいてバッテリ29の電圧バッテリ電圧を検出し、後述する打撃制御処理図6などの各種制御処理においてそのバッテリ電圧を用いる。また、コントローラ31は、マイコンにて構成されているため、一定の電源電圧Vccを供給する必要がある。このため、充電式インパクトドライバ1のハウジング2内には、バッテリ29から電源供給を受けて一定の電源電圧Vcc例えば、直流5Vを生成するレギュレータ34も設けられている。次に、コントローラ31が、トリガスイッチ21からの駆動指令に従ってモータ4を回転駆動するために実行する各種制御処理のうち、特に、打撃を検出してモータ4の回転数を制限する例えば低下させる打撃制御処理について、具体的に説明する。まず、図3~図5の波形図を用いて打撃制御処理の概要について説明する。図3は、本実施形態の充電式インパクトドライバ1にて例えばネジの締結をすべく、トリガスイッチ21をON即ちトリガ21aを引き操作してネジの締結を開始し、着座後に一定期間打撃力を与えて増し締めをした上でトリガスイッチ21をOFFさせるまでの一連の締結動作の際のモータ回転数の変化例である。図3に示すように、モータ4の回転開始後即ちネジの締結開始後、ネジが着座するまでは、無負荷状態であって、モータ4は、毎分22500回転近傍の回転数にて高速回転する。なお、ここでいう負荷とは、外部から工具ビットに加わる負荷トルク、換言すれば工具ビットを回転させるチャックスリーブ19を回転させるために必要な回転トルクを意味する。また、ここでいう無負荷とは、負荷回転トルクが所定値より小さくて打撃が行われない状態を意味する。そして、ネジの締結が進み、ネジが締結対象部材に着座すると、負荷が増大し、やがて回転トルクが所定値以上となって、打撃が開始される。打撃中は、負荷回転トルクが大きいため、回転数は無負荷状態のときよりも低く、毎分14000回転近傍の回転数にて回転する。そして、打撃開始後、一定期間打撃力を与えて、その後トリガスイッチ21をOFFさせると、モータ4の回転は停止する。尚、本実施形態では、打撃を高精度に検出するために、打撃検出の判断基準の1つとして、所定の打撃回転数範囲が設定されている。詳しくは、その範囲の下限値を示す打撃回転数下限閾値Bdと、その範囲の上限値を示す打撃回転数上限閾値Buとが設定されている。そして、モータ4の回転数がこの打撃回転数範囲内にあることを、打撃検出の1つの判断条件としている。図4は、打撃が行われない無負荷状態の波形の拡大図であり、より詳しくは、トリガスイッチ21のON後、200~300msの期間における波形の拡大図である。また、図5は、打撃中の波形の拡大図であり、より詳しくは、トリガスイッチ21のON後、800~900msの期間における波形の拡大図である。無負荷時においては、図4からも明らかなように、毎分22500回転近傍の回転数にて高速回転し、且つ、回転数の変動はほとんどない。これに対し、打撃中は、図5からも明らかなように、打撃動作に起因して、モータ4の回転数は周期的に変動する。具体的には、ハンマー14の回転に同期して周期的に変動する。即ち、打撃が行われる際は、ハンマー14がアンビル15を乗り越える時乗り越えてアンビル15から離れる直前に、モータ4の回転数は最も遅い最小値MLとなる。一方、ハンマー14がアンビル15から離れた後再びアンビル15に衝突する時即ち打撃力が加えられる直前に、モータ4の回転数は最も速い最大値MHとなる。そのため、打撃中は、ハンマー14が回転する毎に、その回転と同期してモータ4の回転数は変動し、最小値MLに到達する時と最大値MHに到達する時とが交互に到来する。尚、周期的に変動する波形における上記最小値MLは、数学的な意味で厳密に表現するならば極小値であり、同じく上記最大値MHは極大値である。そのため、打撃中のモータ回転数は、厳密に言えば、極大値と極小値が交互に発生するということになる。但し、本実施形態では、説明の便宜上、打撃中に生じるモータ回転数の極大値及び極小値を、それぞれ上記のように最大値及び最小値と称することとする。つまり、本実施形態においては最大値MHは本発明の極大値に相当するものであり、最小値MLは本発明の極小値に相当するものである。このように、打撃中のモータ回転数は、最小値MLと最大値MHが時系列的に交互に発生する。そこで、本実施形態のコントローラ31は、打撃を検出するために、モータ4の回転中、その回転数の最大値MH及び最小値MLを時系列的に連続して検出する。尚、両者の検出順序はどちらが先でもよい。そして、その連続して検出した最小値MLと最大値MHの差が第1差閾値x以上である場合に、打撃が行われているものと判断する。図5を用いて具体的に説明する。ここでは打撃検出の原理を説明するために、便宜上、図5の波形図において、830ms以降に打撃が開始されたものと仮定して説明する。この場合、打撃開始後まず約839msのタイミングで最大値MHnを検出し、続いて約847msのタイミングで最小値MLnを検出する。すると、コントローラ31は、このように連続して検出された最大値MHn及び最小値MLnについて、両者の差を演算する。そして、両者の差が第1差閾値x以上ならば、打撃が行われているものと判断するのである。尚、本実施形態では、より詳しくは、上記のように一度だけの判断結果をもって打撃検出を行うのではなく、複数回本例では2回の判断を行うことで打撃を検出したり、また、上記差が第1差閾値x以上ではなかった場合には再判定を行うなど、種々の制御方法が取り入れられているのであるが、それらについては後で説明する。このように、打撃中はモータの回転数が周期的に変動し、最大値及び最小値が周期的に発生する。そのため、第1差閾値xを適切に設定することで、打撃を検出することができるのである。第1差閾値xは、打撃の行われない無負荷時にはモータ回転数の変動幅がその第1差閾値xを超えることのないよう図4参照、逆に打撃中はモータ回転数の変動幅即ち最大値と最小値の差がその第1差閾値xを超えるように図5参照、適宜設定する。但し、打撃時に生じうる差を考慮していかなる場合にもその差が第1差閾値xを超えるように設定すると、第1差閾値xが非常に小さな値となって、逆に無負荷時において打撃と誤検出してしまうおそれがある。そのため、第1差閾値xは、無負荷時に打撃と誤検出されることのないよう、適切な大きさを有する値に設定する。次に、上述した打撃検出及びその打撃検出後のモータ回転数制限を実現すべく、コントローラ31が実行する打撃制御処理について、図6~図8に示すフローチャートに沿って説明する。図6に示す打撃制御処理は、レギュレータ34からコントローラ31に電源電圧Vccが印加されているときに、コントローラ31において繰り返し実行されるものである。図6に示すように、コントローラ31は、この打撃制御処理を開始すると、まずS110にて、トリガスイッチ21がONされたか否かを判断する。トリガスイッチ21がOFFされている間はこのS110の処理を繰り返すが、トリガスイッチ21がONされたらS110:YES、S120にて、打撃検出開始タイミングが到来したか否かを判断する。具体的には、トリガスイッチ21がONされてから所定時間経過したか否かを判断する。このように所定時間経過を待つのは、トリガスイッチ21がONされた直後の不安定な状態で打撃が誤検出されるのを防ぐためである。打撃検出タイミングが到来しない間即ちトリガスイッチ21がONされてから所定時間経過しない間は、S130に進み、トリガスイッチ21がONされているか否か判断し、ONされている限りS130:YESS120に戻るが、OFFされた場合にはS130:NO、S110に戻る。打撃検出タイミングが到来したらS120:YES、S140にて、バッテリ電圧検出部26からバッテリ電圧を取得し、S150にて、正逆切替スイッチ22からの信号に基づいてモータ4の回転方向を取得する。そして、これら取得したバッテリ電圧及び回転方向に基づき、S160にて、打撃回転数上限閾値Bu、打撃回転数下限閾値Bd、第1差閾値x、及び第2差閾値yを設定する。具体的には、打撃回転数上限閾値Bu及び打撃回転数下限閾値Bdについては、バッテリ電圧に対しては、そのバッテリ電圧が大きいほど大きい値とすることで上記打撃回転数範囲が全体として回転数の高い領域となるよう、各閾値Bu,Bdを設定する。また、回転方向に対しては、本実施形態では既述の通り正転方向の場合よりも逆転方向の場合の方が回転数が高いことから、各閾値Bu,Bdを、正転方向の場合よりも逆転方向の場合の方が大きい値となるように設定することで、正転方向の場合よりも逆転方向の場合の方が上記打撃回転数範囲が全体として回転数の高い領域となるようにする。また、第1差閾値x及び第2差閾値yについては、基本的には、第2差閾値yが第1差閾値xよりも小さい値となるように設定する。これを基本としつつ、バッテリ電圧や回転方向に応じて各値を設定する。即ち、バッテリ電圧に対しては、そのバッテリ電圧が大きいほど小さい値となるように上記各差閾値x、yを設定する。また、回転方向に対しては、正転方向の場合よりも逆転方向の場合の方が小さい値となるように上記各差閾値x、yを設定する。このようにして各差閾値を設定した上で、S170の打撃検出処理に進む。S170の打撃検出処理の具体的な内容は図7に示す通りである。即ち、この打撃検出処理に移行すると、まずS310にて、メモリ41に記憶されている最大値MH、最小値MLを全てリセットする。そして、S320にて、最大値を検出したか否かを判断する。S320における最大値の検出は、要するに極大値を検出する処理である。具体的には、前回このS320の判断処理を行ったときにコントローラ31にて算出されていた回転数と、今回このS320の判断処理を行う際つまり現在コントローラ31にて算出されている回転数とを比較し、今回の値が前回の値より小さかった場合つまり増加から減少に転じた場合に、前回の値を最大値として検出する。S320で最大値を検出したら、S330にて、その検出した最大値を、最大値MHnとしてメモリ41に記憶する。そして、S340にて、最小値を検出したか否かを判断する。S340における最小値の検出は、要するに極小値を検出する処理である。具体的には、前回このS340の判断処理を行ったときにコントローラ31にて算出されていた回転数と、今回このS340の判断処理を行う際つまり現在コントローラ31にて算出されている回転数とを比較し、今回の値が前回の値より大きかった場合つまり減少から増加に転じた場合に、前回の値を最小値として検出する。但し、S340の最小値検出処理では、最小値が検出されなかった場合はS350に進み、前回最大値を検出した後つまりS320で最大値を検出した後から一定時間経過したか否かを判断する。そして、まだ一定時間経過していなければS350:NO、S340に戻って最小値検出を継続するが、最小値が検出されないまま一定時間経過した場合はS350:YES、この打撃検出処理を終了し、S180図1に進む。一定時間経過するまでに最小値を検出したらS340:YES、S360にて、その検出した最小値を、最小値MLnとしてメモリ41に記憶する。そして、S370にて、S330及びS360でメモリ41に記憶した最大値MHn及び最小値MLnがいずれも打撃回転数範囲内にあるか否か、即ち打撃回転数上限閾値Bu以下で且つ打撃回転数下限閾値以上であるか否かを判断する図3参照。そして、最大値MHn及び最小値MLnのうち何れか一方でも打撃回転数範囲を外れていた場合はS370:NO、この打撃検出処理を終了してS180図1に進むが、最大値MHn及び最小値MLnがいずれも打撃回転数範囲内にある場合はS370:YES、S380に進む。S380では、最大値MHnと最小値MLnの差以下第1の差ともいうが第1差閾値x以上であるか否かを判断する。そして、第1の差が第1差閾値x以上であった場合はS380:YES、打撃が行われている可能性が高いとの一応の仮判断を行った上で、さらに継続して同様の判断を行う。即ち、S390にて、再び次の極値である最大値の検出処理を行う。つまり、現時点で、最大値MHn及び最小値MLnが順次検出されているため、次に再び発生するはずの最大値についてその検出を行うのである。このS390の最大値検出処理は、S320と全く同じである。但し、S390の最大値検出処理では、最大値が検出されなかった場合はS400に進み、前回最小値を検出した後つまりS340で最小値を検出した後から一定時間経過したか否かを判断する。そして、まだ一定時間経過していなければS400:NO、S390に戻って最大値検出を継続するが、最大値が検出されないまま一定時間経過した場合はS400:YES、この打撃検出処理を終了してS180図1に進む。一定時間経過するまでに最大値を検出したらS390:YES、S410にて、その検出した最大値を、最大値MHn1としてメモリ41に記憶し、S420に進む。S420では、最大値MHn1と最小値MLnの差以下第2の差ともいうが、第1差閾値xよりも小さい第2差閾値y以上であるか否かを判断する。ここで、第2の差が第2差閾値yよりも小さかった場合は、打撃が行われているとの判断は行わずにこの打撃検出処理を終了し、S180図1に進むが、第2の差が第2差閾値y以上であった場合はS420:YES、打撃が行われているものとの確定判断を行って、S430にて打撃検出フラグをメモリ41にセットする。つまり、S380で最大値MHnと最小値MLnの差第1の差が第1差閾値x以上であっても、打撃が行われているとの確定判断までは行わずに仮判断に留めておき、さらにその後の最大値MHn1と最小値MLnの差第2の差が第2差閾値y以上であることまで確認した上で、打撃が行われているとの確定判断を行うのである。S380の判断処理において、最大値MHnと最小値MLnの差第1の差が第1差閾値xより小さかった場合はS380:NO、S450に進み、再判定処理を行う。S450の再判定処理の具体的な内容は図8に示す通りである。即ち、この再判定処理に移行すると、まずS510にて、最大値MHnと最小値MLnの差第1の差が第2差閾値y以上であるか否かを判断する。そして、第1の差が第2差閾値yよりも小さかった場合はS510:NO、打撃は行われていないものと判断して、この再判定処理を終了し、S460図7参照に進む。一方、第1の差が第2差閾値y以上であった場合はS510:YES、打撃が行われている可能性が高いとの一応の仮判断を行った上で、再度、第1差閾値xに基づく判断を行う。即ち、S520にて、図7のS390と同様、再び次の極値である最大値の検出処理を行う。また、このS520の最大値検出処理でも、最大値が検出されなかった場合はS530に進み、図7のS400と同様、前回最小値を検出した後から一定時間経過したか否かを判断し、まだ一定時間経過していなければS530:NOS520に戻るが、一定時間経過するまでに最大値が検出されなかった場合はS530:YES、打撃が行われていないものと判断して、この再判定処理を終了する。一定時間経過するまでに最大値を検出したらS520:YES、S540にて、その検出した最大値を、最大値MHn1としてメモリ41に記憶し、S550に進む。S550では、最大値MHn1と最小値MLnの差第2の差が第1差閾値x以上であるか否かを判断する。そして、第2の差が第1差閾値x以上であった場合はS550:YES、S560にて、打撃判定、即ち打撃が行われているものとの確定判断を行って、この再判定処理を終了する。S550の判断処理において、第2の差が第1差閾値xよりも小さかった場合はS550:NO、打撃は行われていないものと判断して、この再判定処理を終了する。図7に戻り、S450の再判定処理が終了した後は、S460に進み、S450の再判定処理にて打撃判定がなされたか否か、即ち図8に示す再判定処理におけるS560の打撃判定が行われたか否かを判断する。そして、S450の再判定処理にて打撃判定が行われなかった場合はS460:NOそのままこの打撃検出処理を終了してS180図1参照に進むが、S450の再判定処理にて打撃判定が行われた場合はS460:YES、S430にて打撃検出フラグをメモリ41にセットした上で、この打撃検出処理を終了し、S180に進む。図6に戻り、S170の打撃検出処理が終了してS180に進むと、S170の打撃検出処理において打撃が検出されたか否か、即ちメモリ41に打撃検出フラグがセットされているか否かを判断する。そして、打撃検出フラグがセットされていた場合はS180:YES、S200に進み、モータ4の回転数を制限低下させる。尚、回転数制限の具体的態様は種々考えられ、例えばモータ4の回転を完全に停止させるようにしてもよい。S180にて、打撃検出フラグがセットされていなかった場合はS180:NO、S190に進み、S130と同様、トリガスイッチ21がONされているか否か判断する。そして、トリガスイッチ21がONされていればS190:YES、S170に戻るが、トリガスイッチ21がOFFされていた場合はS190:NO、S110に戻る。以上説明したように、本実施形態の充電式インパクトドライバ1では、コントローラ31が、ホールIC40からのパルス信号に基づいてモータ4の回転数を算出し、その算出した回転数に基づいて、打撃の有無を検出する。具体的には、時系列的に連続して発生する回転数の最大値MH及び最小値MLの差を演算し、その差が第1差閾値x以上であるか否かに基づいて、打撃が行われているか否かの判断を行う。つまり、打撃時に生じる回転速度の周期的な変動を利用し打撃を検出するのである。そのため、簡素な構成でありながら、打撃の検出を高精度且つ迅速に行うことができる。そして、打撃を検出した場合には、モータ4の回転数を低下させたりあるいは停止させたりするなど、少なくとも打撃検出前よりも回転数が低くなるように、回転数に制限をかける。これにより、ネジ締め作業時において、着座後すぐに打撃が開始されたらすぐに打撃を検出してモータ4の回転数に制限をかけることができるため、ネジの頭をなめたり飛ばしたりするといった不具合を防ぐことができる。また、本実施形態では、時系列的に連続して発生する最大値MH及び最小値MLを順次検出するにあたり、何れか一方を検出してから次に他方を検出するまでの時間に制限を設けている。即ち、一方が検出されてから一定時間が経過するまでに他方が検出された場合に、その両者の差に基づく判断各差閾値x、yとの比較判断等を行うようにしている。そのため、打撃とは異なる要因によって最大値MH及び最小値MLが連続して検出された場合にそれを除外することができ、打撃の誤検出を防ぐことができる。また、本実施形態では、時系列的に連続した最大値MH及び最小値MLが検出された場合、これら両者がいずれも打撃回転数範囲内にあるときに、これら両者の差に基づく打撃判断を行うようにしている。そのため、打撃の検出精度をより高めることができる。また、本実施形態では、最大値MHnと最小値MLnとの差第1の差が第1差閾値x以上であった場合にそのことをもってすぐに打撃検出との確定判断を行わず、更に、次に検出される最大値MHn1とその直前の最小値MLnとの差第2の差について第2差閾値yとの比較を行い、第2の差が第2差閾値y以上であった場合に、打撃と判断する。このように、異なる差閾値を用いた複数回の判断によって打撃を検出することで、打撃の誤検出を防ぐことができる。また、本実施形態では、各閾値Bu、Bd、x、yをそれぞれ、バッテリ電圧及び回転方向を考慮して可変設定している。そのため、バッテリ電圧及び回転方向に応じたより適切な閾値を設定することができ、これにより打撃検出の精度をより高めることができる。[変形例]以上、本発明の実施の形態について説明したが、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。例えば、時系列的に連続して発生する最大値MHと最小値MLとの差について、上記実施形態では第1の差が第1差閾値x以上であって且つそれに続く第2の差が第2差閾値y以上であった場合に打撃と判断したが、逆に、まず第2差閾値yと比較して次に第1差閾値xと比較するようにしてもよい。また、第2差閾値yは第1差閾値xよりも小さいことから、打撃検出用の差閾値としての信頼性は、第1差閾値xの方が第2差閾値yよりも相対的に高い。そのため、例えば第1差閾値xとの比較を1回行い、第1差閾値x以上であった場合には更に第2差閾値yとの比較を複数回行って、その複数回の比較結果がいずれも第2差閾値y以上であった場合に打撃と検出するようにしてもよい。つまり、複数種類の差閾値を用いて複数回の判断を行う際には、相対的に信頼性の低い値の小さい差閾値ほど多くの回数の判断を行うようにしてもよい。また、複数回の判断を行うのではなく、一度だけつまり第1の差についてだけ判断してそれが第1差閾値x以上であった場合には打撃と判断するようにしてもよい。また、複数回の判断を行う場合には、上記実施形態のように第1差閾値xと第2差閾値yを用いて判断するのではなく、第1差閾値xのみを用いて複数回の判断を行うようにしてもよい。例えば、第1の差が第1差閾値x以上であった場合に、さらに、次に検出される第2の差についても第1差閾値xと比較して、第2の差も第1差閾値x以上であった場合に、打撃と判断するようにしてもよい。この場合、2回目の比較において第2の差が第1差閾値xより小さかった場合には、打撃ではないと判断してもよいし、更に次の差即ち最大値MHn1と最小値MLn1の差;以下第3の差というをみてその第3の差が第1差閾値x以上であったならば打撃と判断してもよいし、その第3の差については第2差閾値yとの比較を行って、第2差閾値y以上であったならば更に次の差即ち最大値MHn2と最小値MLn1の差について第1差閾値xとを比較して第1差閾値x以上であったならば打撃と判断するようにしてもよい。また、3つ以上の差第1の差~第3の差に対してそれぞれ第1差閾値xとの比較を行い、3つとも第1差閾値x以上の場合に打撃と判断するようにしてもよい。この場合において、3つ以上の差のうち第1差閾値xより小さいものがあった場合には、そのことをもって即打撃ではないと判断するようにしてもよいし、その第1差閾値xより小さかった差に対して更に第2差閾値yと比較するようにしてもよい。そして、その第2差閾値yとの比較の結果、その第2差閾値yよりは大きかった場合は、そのことをもって打撃と判断してもよいし、更にもう一度、新たに差を演算してそれが第1差閾値x以上であるか否かに基づいて打撃検出を行うようにしてもよい。つまり、時系列的に連続して発生する最大値MHと最小値MLとの差をいくつ用いて打撃判断を行うか、第1差閾値xより小さかった場合に第2差閾値yとの比較判断を行うか否か、その第2差閾値y以上であった場合に次にどうするか打撃と判断するかそれともさらに何れかの差閾値に基づく判断を継続するか、などについては、適宜決めることができる。また、差閾値についても、上記実施形態では2つx、y設定したが、さらに別の差閾値を設定して打撃判断に用いるようにしてもよい。例えば、ある差が第1差閾値xより小さく且つ第2差閾値yよりも小さかった場合、さらに、その第2差閾値yよりも小さい第3差閾値zと比較して、その第3差閾値z以上であった場合には、引き続き打撃判断を継続するようにしてもよい。つまり、打撃判断に用いる差閾値の数は適宜決めることができ、また、複数の差閾値を具体的にどのように打撃判断に用いるかについても適宜決めることができる。また、充電式インパクトドライバ1の用途としては、ネジの締結だけでなく、ネジの取り外し緩めもあり、ネジを緩める場合にも、強く締め付けられている場合には打撃力を利用して緩めることができる。そして、ネジを緩める場合は、締結する場合とは逆に、モータ4を逆転方向に回転させることになる。この逆転時においても、上記実施形態では、図6の打撃制御処理が実行される。但し、打撃力を利用してネジを緩めた場合、ネジが緩んで無負荷状態になると、モータ4が高速回転してネジが一気に抜け落ちてしまい、作業性が悪化するおそれがある。そこで、逆転によりネジを緩める際には、まず打撃を検出し、その後、その打撃が終了したことを検出して、打撃終了が検出されたらモータ4の回転数に制限をかけるようにするとよい。図9に、強く締結されているネジを緩める際のモータ4の回転数の変化例を示す。図9に示すように、ネジを緩めるべくモータ4の逆転が開始されると、逆転開始後まもなくして打撃が開始される。コントローラ31は、この逆転時の打撃についても、図6に示した打撃制御処理より具体的には図7の打撃検出処理と同じ方法にて検出する。そして、その打撃が検出された場合には、その後、打撃終了の検出処理を行う。打撃終了の検出は、具体的には、モータ4の回転数が所定の打撃終了検出閾値F以上となったか否かに基づいて行う。この打撃終了検出閾値Fは、打撃検出処理において用いられる打撃回転数範囲図3参照よりも高く、且つ、無負荷時における回転数よりも低い範囲内において、適宜設定することができる。打撃が終了することによってモータ4の回転数が上昇し、打撃終了検出閾値F以上になった場合は図9における約940ms、打撃が終了したものと判断して、モータ4の回転数に制限をかける。このように、ネジ等を緩める際に打撃が行われた場合は、その打撃終了後にモータ4の回転数に制限をかけることで、ネジ等が高回転で一気に外れてしまうのを防ぐことができ、作業性が悪化するのを防止することができる。また、上記実施形態では、コントローラ31はマイコンにて構成されるものとして説明したが、例えばASICApplicationSpecificIntegratedCircuits、FPGAFieldProgrammableGateArrayなどのプログラマブルロジックデバイスで構成してもよい。また、コントローラ31が実行する上述した各種制御処理は、コントローラ31を構成するCPUがプログラムを実行することにより実現される。そして、このプログラムは、コントローラ31内のメモリ41に書き込まれていてもよく、或いは、コントローラ31からデータを読み取り可能な記録媒体に記録されていてもよい。なお、記録媒体としては、持ち運び可能な半導体メモリ例えばUSBメモリ、メモリカード登録商標などを使用することができる。また、上記実施形態では、モータ4は、3相ブラシレスモータにて構成されるものとして説明したが、工具要素が装着される出力軸を回転駆動可能なモータであればよい。また、バッテリ式ものに限らず、コードを介して電力の供給を受けるものに適用されてもよいし、交流モータによって工具要素を回転駆動させるように構成された回転打撃工具に適用されてもよい。また、モータ駆動回路33を構成する各スイッチング素子Q1~Q6は、MOSFET以外のスイッチング素子例えば、バイポーラトランジスタなどであってもよい。また、上記実施形態では、バッテリ29がリチウムイオン二次電池であるものとして説明したが、これはあくまでも一例であり、例えばニッケル水素二次電池やニッケルカドミウム蓄電池など、他の二次電池であってもよい。"