図1〜図7を参照して、実施形態の人力駆動車用制御装置50について説明する。以後、人力駆動車用制御装置50を、単に制御装置50と記載する。制御装置50は、人力駆動車10に設けられる。人力駆動車10は、少なくとも人力駆動力Hによって駆動することができる車両である。人力駆動車10は、車輪の数が限定されず、例えば1輪車および3輪以上の車輪を有する車両も含む。人力駆動車10は、例えばマウンテンバイク、ロードバイク、シティバイク、カーゴバイク、および、リカンベントなど種々の種類の自転車を含む。自転車は、電気モータによって駆動力が与えられる電動自転車(E−bike)を含む。電動自転車は、電動モータによって車両の推進を補助する電動アシスト自転車を含む。電動自転車は、電気モータによって推進が補助される電動アシスト自転車を含む。以下、実施の形態において、人力駆動車10を、2つの車輪を有する自転車として説明する。
人力駆動車10は、クランク14、ホイール12、および、車体16を含む。車体16は、フレーム18およびサドル20を含む。クランク14には、人力駆動力Hが入力される。クランク14は、フレーム18に対して回転可能なクランク軸14Aと、クランク軸14Aの軸方向の端部にそれぞれ設けられるクランクアーム14Bとを含む。各クランクアーム14Bには、一対のペダル22が個別に連結される。ホイール12は、従動輪12Aおよび駆動輪12Bを含む。駆動輪12Bは、クランク14が回転することによって駆動される。駆動輪12Bは、フレーム18に支持される。クランク14と駆動輪12Bとは、駆動機構24によって連結される。駆動機構24は、クランク軸14Aに結合される第1回転体26を含む。クランク軸14Aと第1回転体26とは、一体に回転するように結合されていてもよく、第1ワンウェイクラッチを介して結合されていてもよい。第1ワンウェイクラッチは、クランク14が前転した場合に、第1回転体26を前転させ、クランク14が後転した場合に、第1回転体26を後転させないように構成される。第1回転体26は、スプロケット、プーリ、または、ベベルギアを含む。駆動機構24は、第2回転体28と、連結部材30とをさらに含む。連結部材30は、第1回転体26の回転力を第2回転体28に伝達する。連結部材30は、例えば、チェーン、ベルト、または、シャフトを含む。
第2回転体28は、駆動輪12Bに連結される。第2回転体28は、スプロケット、プーリ、または、ベベルギアを含む。第2回転体28と駆動輪12Bとの間には、第2ワンウェイクラッチが設けられていることが好ましい。第2ワンウェイクラッチは、第2回転体28が前転した場合に、駆動輪12Bを前転させ、第2回転体28が後転した場合に、駆動輪12Bを後転させないように構成される。人力駆動車10は、クランク軸14Aの回転速度に対する駆動輪12Bの回転速度の変速比率Bを変更するために用いられる変速機46を含んでいてもよい。変速機46は、例えばフロントディレイラ、リアディレイラおよび内装変速機の少なくとも1つを含む。変速機46は、フロントディレイラのみ、リアディレイラのみ、内装変速機のみ、または、フロントディレイラ、リアディレイラおよび内装変速機のうちの任意の組合せを含んでいてもよい。本実施形態では、第1回転体26および第2回転体28の少なくとも一方は、複数のスプロケットを含む。第1回転体26のみ、第2回転体28のみ、または、第1回転体26および第2回転体28の両方が、複数のスプロケットを含んでいてもよい。本実施形態では、第1回転体26は、1枚のスプロケットを含み、第2回転体28は、複数のスプロケットを含む。ディレイラは、第1回転体26が複数のフロントスプロケットを含む場合、フロントディレイラを含み、第2回転体28が複数のフロントスプロケットを含む場合、リアディレイラを含む。変速機46が内装変速機を含む場合、内装変速機は、例えば、駆動輪12Bのハブに設けられる。
人力駆動車10は、前輪および後輪を含む。フレーム18には、フロントフォーク32を介して前輪が取り付けられている。フロントフォーク32にはハンドル部34が取り付けられている。ハンドル部34は、ステム36およびハンドルバー38を含む。フロントフォーク32には、ハンドルバー38がステム36を介して連結されている。以下の実施形態では、後輪を駆動輪12Bとして説明するが、前輪が駆動輪12Bであってもよい。
人力駆動車10は、バッテリ40をさらに含む。バッテリ40は、1または複数のバッテリセルを含む。バッテリセルは、充電池を含む。バッテリ40は、人力駆動車10に設けられ、バッテリ40と電気的に接続されている他の電気部品、例えば、人力駆動車用制御装置50に電力を供給する。バッテリ40は、人力駆動車用制御装置50と有線または無線によって通信可能に接続されている。バッテリ40は、例えば電力線通信(PLC;power line communication)によって人力駆動車用制御装置50と通信可能である。バッテリ40は、フレーム18の外部に取り付けられてもよく、少なくとも一部がフレーム18の内部に収容されてもよい。
人力駆動車10は、人力駆動車10の推進をアシストするように構成されるモータ42を含む。人力駆動車10は、駆動回路44をさらに含む。駆動回路44は、インバータ回路を含む。モータ42は、駆動回路と同一のハウジングに設けられることが好ましい。駆動回路44は、バッテリ40からモータ42に供給される電力を制御する。駆動回路44は、人力駆動車用制御装置50と有線または無線によって通信可能に接続されている。駆動回路44は、例えばシリアル通信によって人力駆動車用制御装置50の制御部52と通信可能である。駆動回路44は、人力駆動車用制御装置50に含まれていてもよい。駆動回路44は、制御部52からの制御信号に応じてモータ42を駆動させる。
モータ42は、電気モータを含む。モータ42は、ペダル22から後輪までの人力駆動力Hの動力伝達経路、または、前輪に回転を伝達するように設けられる。モータ42は、人力駆動車10のフレーム18、後輪、または、前輪に設けられる。本実施形態では、モータ42は、クランク軸14Aから第1回転体26までの動力伝達経路に結合される。モータ42とクランク軸14Aとの間の動力伝達経路には、クランク軸14Aを人力駆動車10が前進する方向に回転させた場合にクランク14の回転力によってモータ42が回転しないようにワンウェイクラッチが設けられるのが好ましい。モータ42および駆動回路44が設けられるハウジングには、モータ42および駆動回路44以外の構成が設けられてもよく、例えばモータ42の回転を減速して出力する減速機が設けられてもよい。
人力駆動車用制御装置50は、制御部52を含む。制御部52は、予め定められる制御プログラムを実行する演算処理装置を含む。演算処理装置は、例えばCPU(Central Processing Unit)またはMPU(Micro Processing Unit)を含む。制御部52は、1または複数のマイクロコンピュータを含んでいてもよい。制御部52は、複数の場所に離れて配置される複数の演算処理装置を含んでいてもよい。人力駆動車用制御装置50は、記憶部54をさらに含む。記憶部54には、各種の制御プログラムおよび各種の制御処理に用いられる情報が記憶される。記憶部54は、例えば不揮発性メモリおよび揮発性メモリを含む。制御部52および記憶部54は、例えばモータ42が設けられるハウジングに設けられる。
人力駆動車用制御装置50は、好ましくは、クランク回転センサ56、車速センサ58、および、トルクセンサ60をさらに含む。クランク回転センサ56、車速センサ58、および、トルクセンサ60は、モータ42が設けられるハウジングの内部に設けられてもよく、外部に設けられてもよい。クランク回転センサ56、車速センサ58、および、トルクセンサ60の少なくとも1つは、人力駆動車用制御装置50に含まれなくてもよい。
クランク回転センサ56は、人力駆動車10のクランク14の回転速度Nを検出するために用いられる。クランク回転センサ56は、例えば人力駆動車10のフレーム18またはモータ42が設けられるハウジングに取り付けられる。クランク回転センサ56は、磁界の強度に応じた信号を出力する磁気センサを含んで構成される。周方向に磁界の強度が変化する環状の磁石が、クランク軸14Aまたはクランク軸14Aから第1回転体26までの間の動力伝達経路に設けられる。クランク回転センサ56は、制御部52と有線または無線によって通信可能に接続されている。クランク回転センサ56は、クランク14の回転速度Nに応じた信号を制御部52に出力する。クランク回転センサ56は、クランク軸14Aから第1回転体26までの人力駆動力Hの動力伝達経路において、クランク軸14Aと一体に回転する部材に設けられてもよい。例えば、クランク回転センサ56は、クランク軸14Aと第1回転体26との間に第1ワンウェイクラッチが設けられない場合、第1回転体26に設けられてもよい。クランク回転センサ56は、人力駆動車10の走行速度Vを検出するために用いられてもよい。この場合、制御部52は、クランク回転センサ56によって検出されるクランク14の回転速度Nと、変速比率Bとに応じて、駆動輪12Bの回転速度を演算して、人力駆動車10の走行速度Vを検出する。変速比率Bに関する情報は、記憶部54に予め記憶されている。
人力駆動車10に変速比率Bを変更するための変速機が設けられる場合、制御部52は、人力駆動車10の走行速度Vと、クランク14の回転速度Nとに応じて、変速比率Bを演算してもよい。この場合、駆動輪12Bの周長、駆動輪12Bの直径、または、駆動輪12Bの半径に関する情報が記憶部54に予め記憶されている。人力駆動車用制御装置50は、変速センサを含んでいてもよい。変速センサは、例えば、変速機46に設けられる。変速センサは、変速機46の現在の変速ステージを検出する。変速センサは、制御部52に電気的に接続されている。変速ステージと変速比率Bとの関係は、記憶部54に予め記憶されている。制御部52は、変速センサの検出結果から、現在の変速比率Bを検出することができる。制御部52は、駆動輪12Bの回転速度を変速比率Bで除算することによって、クランク14の回転速度Nを演算できる。この場合、車速センサ58および変速センサをクランク回転センサ56として用いてもよい。変速センサは、変速機46ではなく、変速操作部に設けられてもよく、変速ワイヤに設けられてもよい。
車速センサ58は、ホイール12の回転速度を検出するために用いられる。車速センサ58は、有線または無線によって制御部52と電気的に接続されている。車速センサ58は、制御部52と有線または無線によって通信可能に接続されている。車速センサ58は、ホイール12の回転速度に応じた信号を制御部52に出力する。制御部52は、ホイール12の回転速度に基づいて人力駆動車10の走行速度Vを演算する。制御部52は、走行速度Vが所定値以上になると、モータ42を停止する。所定値は、例えば時速25Km、または、時速45Kmである。車速センサは、例えば、リードスイッチを構成する磁性体リード、または、ホール素子を含む。車速センサ58は、フレーム18のチェーンステイに取り付けられ、後輪に取り付けられる磁石を検出する構成としてもよく、フロントフォーク32に設けられ、前輪に取り付けられる磁石を検出する構成としてもよい。別の例では、車速センサ58は、GPS受信部を含む。制御部52は、GPS受信部によって取得したGPS情報と、記憶部54に予め記録されている地図情報と、時間とに応じて、人力駆動車10の走行速度Vを検出してもよい。制御部52は、時間を計るためのタイマを含むことが好ましい。
トルクセンサ60は、人力駆動力HのトルクTHを検出するために用いられる。トルクセンサ60は、例えば、モータ42が設けられるハウジングに設けられる。トルクセンサ60は、クランク14に入力される人力駆動力HのトルクTHを検出する。トルクセンサ60は、例えば、動力伝達経路に第1ワンウェイクラッチが設けられる場合、第1ワンウェイクラッチよりも上流側に設けられる。トルクセンサ60は、歪センサまたは磁歪センサなどを含む。歪センサは、歪ゲージを含む。トルクセンサ60が歪センサを含む場合、歪センサは、好ましくは、動力伝達経路に含まれる回転体の外周部に設けられる。トルクセンサ60は、無線または有線の通信部を含んでいてもよい。トルクセンサ60の通信部は、制御部52と通信可能に構成される。
制御部52は、例えば、人力駆動力Hに対するモータ42の駆動力が所定の比率Aになるように、モータ42を制御する。制御部52は、例えば、人力駆動車10の人力駆動力HのトルクTHに対する、モータ42によるモータ42の駆動力の出力トルクTMが所定の比率Aになるように、モータ42を制御してもよい。制御部52は、例えば、人力駆動力Hに対するモータ42の出力の比率Aの異なる複数の制御モードから選択される1つの制御モードでモータ42を制御する。人力駆動車10の人力駆動力HのトルクTHに対するモータ42の出力トルクTMのトルク比率ATを、比率Aと記載する場合がある。制御部52は、例えば、人力駆動力Hの仕事率WH(ワット)に対する、モータ42の仕事率WX(ワット)が所定の比率Aになるように、モータ42を制御してもよい。人力駆動車10の人力駆動力Hの仕事率WHに対するモータ42の出力の仕事率WXの比率AWを、比率Aと記載する場合がある。人力駆動力Hの仕事率WHは、人力駆動力Hとクランク14の回転速度Nとの乗算によって算出される。モータ42の出力が減速機を介して人力駆動力Hの動力経路に入力される場合は、減速機の出力を、モータ42の出力とする。制御部52は、人力駆動力Hの仕事率WHまたはトルクTHに応じて、制御指令をモータ42の駆動回路44に出力する。制御指令は、例えばトルク指令値を含む。具体的には、制御部52は、人力駆動力Hに対するモータ42の駆動力の比率Aが所定の比率Aになるように目標値Xを設定し、設定した目標値Xを出力するようにモータ42を制御する制御指令を駆動回路44に出力する。
制御部52は、モータ42の出力の上限値が所定値以下になるようにモータ42を制御する。制御部52は、例えば、上限値の異なる複数の制御モードから選択される1つの制御モードでモータ42を制御する。モータ42の出力は、モータ42の出力トルクTMを含む。モータ42の出力は、モータ42の仕事率WXを含んでいてもよい。この場合、制御部52は、モータ42の仕事率WXが所定値WX1以下になるようにモータ42を制御する。所定値WX1は、一例では、500ワットである。所定値WX1は、別の例では、300ワットである。制御部52は、トルク比率ATが所定トルク比率AT1以下になるようにモータ42を制御してもよい。所定トルク比率AT1は、一例では、300%である。
複数の制御モードのそれぞれにおいて、比率Aおよびモータ42の出力の上限値の少なくとも一方が異なっていてもよい。複数の制御モードのそれぞれにおいて、比率Aのみ、上限値のみ、または、比率Aおよび上限値の両方が異なっていてもよい。この場合、制御部52は、モータ42の出力が選択されているモータ42の制御モードにおいて規定される比率A以下、かつ、所定値以下になるようにモータ42を制御する。
制御装置50は、人力駆動車10に設けられるクランク14に入力される人力駆動力Hに応じて人力駆動車10の推進をアシストするモータ42を制御する制御部52を含む。制御部52は、クランク14に入力される人力駆動力Hに応じて、第1演算処理と、第1演算処理とは異なる第2演算処理と、を行う。制御部52は、第1演算処理で算出した第1演算値M1と、第2演算処理で算出した第2演算値M2と、の合算値MXに応じてモータ42を制御する。第1演算値M1、第2演算値M2、および、合算値MXは、モータ42の駆動力の指令値であることが好ましい。制御部52は、モータ42の駆動力が合算値MXになるようにモータ42を制御する。
制御部52は、第1演算処理部52Aと、第2演算処理部52Bと、合算部52Cとを含むことが好ましい。合算部52Cは、加算回路を含むことが好ましい。合算部52Cは、第1演算処理部52Aから出力される第1演算値M1と、第2演算処理部52Bから出力される第2演算値M2とを合算する。
制御部52は、人力駆動力Hに対するモータ42の駆動力の比率Aが所定の比率Aになるように目標値Xを設定し、目標値Xを用いて第1演算処理および第2演算処理を行う。例えば、制御部52は、選択されている制御モードと対応する比率Aになるように、モータ42の目標値Xを設定する。制御部52は、設定した目標値Xを用いて第1演算処理を行って第1演算値M1を算出し、設定した目標値Xを用いて第2演算処理を行って第2演算値M2を算出する。第1演算処理に用いる目標値Xを第1目標値と記載し、第2演算処理に用いる目標値Xを第2目標値と記載することがある。目標値Xは、第1演算処理と第2演算処理とのそれぞれに異なる値が設定されてもよい。例えば、制御部52は、目標値Xを所定周期ごとに算出し、第1演算処理および第2演算処理において、最新の目標値Xおよび過去に算出された目標値Xのうちの所定の目標値Xを用いる。例えば、制御部52は、第2演算処理においては、その制御周期において最新の目標値Xを用い、第1演算処理においては、過去に算出された目標値Xのうちの所定の目標値Xを用いる。制御部52は、第1演算処理および第2演算処理の少なくとも一方において、目標値Xに所定の処理を加えることもできる。例えば、制御部52は、第1演算処理において、目標値Xに0よりも大きく1よりも小さい第1値X1を乗算する。制御部52は、第1演算値M1、第2演算値M2、および、合算値MXの少なくとも1つが予め定める上限値以下になるようにしてもよい。この場合、制御部52は、例えば、ローパスフィルタを用いて、第1演算値M1、第2演算値M2、または、合算値MXを処理することが好ましい。
第1演算処理と第2演算処理との少なくとも一方は開ループ演算処理であることが好ましい。本実施形態では、第1演算処理が開ループ制御であり、第2演算処理が閉ループ制御である。第2演算処理は、フィードバック制御を含む。フィードバック制御は、比例制御、PI制御、または、PID制御の少なくとも1つを含む。第2演算処理においては、最新の人力駆動力Hと、直前の検出周期において検出された人力駆動力Hとの変化に応じて第2演算値M2を変化させる。制御部52は、クランク14に人力駆動力Hが入力されると、第1演算処理と第2演算処理とを開始することが好ましい。第1演算処理の開始タイミングと、第2演算処理の開始タイミングとは、等しくてもよく、異なっていてもよい。
制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満の間に、人力駆動車10のクランク14に入力される人力駆動力Hに応じてモータ42を制御する。第1演算処理を行う頻度は、第2演算処理を行う頻度よりも少ない。制御部52は、第1目標値を目標値Xとして第1演算処理で用い、第2目標値を目標値Xとして第2演算処理に用い、第1目標値を設定する頻度は、第2目標値を設定する頻度よりも少なくしてもよい。この場合、制御部52は、第1目標値を設定した後に、第1目標値を維持することによって第1演算値M1を変化させない。例えば、人力駆動車10が停止状態から走行状態に遷移した後の初回の第1演算処理において用いられた目標値Xを第1目標値として次回以降の第1演算処理においても用いる。制御部52は、第1演算処理では、例えば、人力駆動力Hと目標値Xとを乗算することによって、第1演算値M1を算出する。制御部52の第1演算処理部52Aは、乗算回路を含むことが好ましい。
第1演算処理を行う頻度は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満の間に1回であることが好ましい。本実施形態では、制御部52は、クランク14が一周するまでに人力駆動力Hを取得し、第1演算処理を行う。すなわち、制御部52は、第1演算処理において、クランク14の回転量CAが360度になるまでに目標値Xを設定し、第1演算処理を行うことが好ましい。より好ましくは、制御部52は、クランク14の回転量CAが180度以内に人力駆動力Hを取得し、第1演算処理を行う。より好ましくは、制御部52は、クランク14の回転量CAが90度以内に人力駆動力Hを取得し、第1演算処理を行う。制御部52は、クランク14の回転量CAが45度以内に人力駆動力Hを取得し、第1演算処理を行ってもよく、クランク14の回転量CAが30度以内に人力駆動力Hを取得し、第1演算処理を行ってもよい。
制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になると、第1演算処理の第1演算値M1を下げることが好ましい。制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になると、第1演算値M1を徐減させることが好ましい。制御部52は、第1演算処理に用いる目標値Xを小さくすることによって第1演算値M1を下げてもよく、第1演算処理において第1演算値を小さくする処理を行うことによって第1演算値M1を下げてもよい。制御部52は、目標値Xを徐減させることによって第1演算値M1が徐減させてもよく、目標値Xをゼロにし、第1演算処理用の目標値Xの変化に対する第1演算値M1の応答速度を低下させるフィルタ制御を行うことで第1演算値M1を徐減させてもよい。
制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離Lが所定値以上になると第1演算値M1を徐減させる場合、第1演算値M1に走行距離Lの増加または時間経過に応じて大きくなる係数を乗算する。係数の最大値は、0であることが好ましい。走行距離Lに関する所定値は、例えば、10メートル以下であり、好ましくは3メートル以上かつ10メートル以下である。
制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行速度Vが所定値以上になると第1演算値M1を徐減させる場合、第1演算値M1に走行速度Vの増加または時間経過に応じて大きくなる係数を乗算する。係数の最大値は、1であることが好ましい。走行速度Vに関する所定値は、例えば、時速10km以下であり、好ましくは時速5km以上かつ時速10km以下である。
制御部52は、人力駆動車10が停止状態から走行状態に遷移した後のクランク14の回転量CAが所定値以上になると第1演算値M1を徐減させる場合、第1演算値M1にクランク14の回転量CAの増加または時間経過に応じて大きくなる係数を乗算する。係数の最大値は、1であることが好ましい。クランク14の回転量CAに関する所定値は、例えば、360度以上かつ720度以下である。一例では、クランク14の回転量CAに関する所定値は、360度である。
制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満の間に、人力駆動車10のクランク14の回転が停止すると、第1演算値M1を下げることが好ましい。制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満の間に、人力駆動車10のクランク14の回転が停止すると、第1演算値M1を0にすることが好ましい。制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満の間に、人力駆動車10のクランク14の回転が停止すると、第1演算値M1を徐減させてもよい。制御部52は、第1演算処理に用いる目標値Xを小さくすることによって第1演算値M1を下げてもよく、第1演算処理において第1演算値を小さくする処理を行うことによって第1演算値M1を下げてもよい。制御部52は、目標値Xを徐減させることによって第1演算値M1が徐減させてもよく、目標値Xをゼロにし、第1演算処理用の目標値Xの変化に対する第1演算値M1の応答速度を低下させるフィルタ制御を行うことで第1演算値M1を徐減させてもよい。
制御部52は、人力駆動車10が停止状態から走行状態に遷移すると、クランク14に入力される人力駆動力Hに応じて所定の頻度で第2演算処理を行う。所定の頻度は、人力駆動力Hの検出頻度以下であることが好ましい。所定の頻度は、例えば、毎所定秒であることが好ましい。所定秒は、例えば0.1秒以下である。所定秒は、0.05秒以下であることが好ましい。所定秒は、0.01秒以下であることがさらに好ましい。制御部52の第2演算処理部52Bは、乗算回路を含むことが好ましい。制御部52は、例えば、第2演算処理において人力駆動力Hと目標値Xとの乗算値に人力駆動力Hの変化に応じた補正値を加算または乗算することによって、第2演算値M2を算出してもよい。制御部52は、人力駆動力Hの変化に応じて目標値Xを変更してもよい。
制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満の間、第2演算処理の第2演算値M2にフィルタ制御を行うことが好ましい。制御部52は、フィルタ制御を行うためのフィルタ部を含むことが好ましい。制御部52は、フィルタ制御を行うことによって、モータ42の駆動力をゆるやかに上昇させることが好ましい。一例では、制御部52は、第2演算処理において算出した第2演算値M2にフィルタ制御を行うことによって、最終の第2演算値M2を算出する。制御部52は、最終の第2演算値M2を用いて、モータ42を制御する。別例では、制御部52は、人力駆動力Hにフィルタ制御を行い、フィルタ制御を行った値と目標値Xとを乗算することによって第2演算値M2を算出する。フィルタ制御に代えて、例えば、クランク14の回転量CAが大きくなるにつれて100%に近付くゲインを第2演算値M2に乗算し、最終の第2演算値M2としてもよい。制御部52は、クランク14の回転量CAに代えて、走行距離L、走行時間、または、走行速度Vの少なくとも1つが大きくなるにつれて100%に近付くゲインを第2演算値M2に乗算し、最終の第2演算値M2としてもよい。
図3を参照して、モータ42を制御する処理について説明する。制御部52は、制御部52に電力が供給されると、処理を開始して図3に示すフローチャートのステップS11に移行する。制御部52は、図3のフローチャートが終了すると、電力の供給が停止されるまでは、所定周期後にステップS11からの処理を繰り返す。
制御部52は、ステップS11において、モータ42を駆動させるか否かを判定する。制御部52は、例えば、モータ42によって人力駆動力Hのアシストを行う制御モードが選択されている場合、モータ42を駆動すると判定する。制御部52は、人力駆動力Hが所定駆動力HX以上の場合、クランク14の回転速度Nが所定速度NX以上の場合、および、走行速度Vが所定速度VX以下の場合に、モータ42を駆動させると判定してもよい。制御部52は、モータ42を駆動させない場合、処理を終了する。制御部52は、モータ42を駆動させる場合、ステップS12に移行する。
制御部52は、ステップS12において、第1演算値M1を取得し、ステップS13に移行する。制御部52は、例えば、第1演算処理部52Aから出力される第1演算値M1を読み込むことによって第1演算値M1を取得する。
制御部52は、ステップS13において、第2演算値M2を取得し、ステップS14に移行する。制御部52は、例えば、第2演算処理部52Bから出力される第2演算値M2を読み込むことによって第2演算値M2を取得する。ステップS12とステップS13との順序は入れ替えてもよい。
制御部52は、ステップS14において、第1演算値M1と第2演算値M2との合算値MXを算出し、ステップS15に移行する。制御部52は、ステップS15において、合算値MXに応じてモータ42を制御し、処理を終了する。
図4を参照して、第1演算処理について説明する。制御部52は、制御部52に電力が供給されると、処理を開始して図4に示すフローチャートのステップS21に移行する。制御部52は、図4のフローチャートが終了すると、電力の供給が停止されるまでは、所定周期後にステップS21からの処理を繰り返す。
制御部52は、ステップS21において、人力駆動車10が停止状態から走行状態に遷移したか否かを判定する。制御部52は、例えば、クランク14の回転が停止した状態から、回転を開始した状態に変化した場合、人力駆動車10が停止状態から走行状態に遷移したと判定する。制御部52は、人力駆動車10が停止状態から走行状態に遷移していないと判定した場合、処理を終了する。制御部52は、人力駆動車10の停止状態が維持されている場合、および、人力駆動車10の走行状態が維持されている場合、処理を終了する。制御部52は、人力駆動車10が停止状態から走行状態に遷移した場合、ステップS22に移行する。
制御部52は、ステップS22において、クランク14に人力駆動力Hが入力されているか否かを判定する。制御部52は、クランク14に人力駆動力Hが入力されていない場合、処理を終了する。制御部52は、クランク14に人力駆動力Hが入力されている場合、ステップS23に移行する。
制御部52は、ステップS23において、目標値Xに応じて第1演算値M1を算出し、処理を終了する。制御部52は、ステップS23において第1演算処理を行う。
図5を参照して、第1演算値M1を下げる処理について説明する。制御部52は、制御部52に電力が供給されると、処理を開始して図5に示すフローチャートのステップS31に移行する。制御部52は、図5のフローチャートが終了すると、電力の供給が停止されるまでは、所定周期後にステップS31からの処理を繰り返す。
制御部52は、ステップS31において、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になったか否かを判定する。制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になった場合、ステップS32に移行する。
制御部52は、ステップS32において、第1演算値M1を下げ、処理を終了する。制御部52は、ステップS32において、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量が措定値以上になってからの、走行距離L、走行速度V、クランク14の回転量、および、時間の少なくとも1つに応じて第1演算値M1を下げてもよい。制御部52は、ステップS32を実行するごとに、第1演算値M1を段階的に下げるようにしてもよい。制御部52は、第1演算値M1を算出するための第1演算処理用の目標値Xを下げることによって第1演算値M1を下げてもよく、第1演算処理によって算出された第1演算値M1に所定の処理を行うことによって第1演算値M1を下げてもよい。
制御部52は、ステップS31において、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になっていない場合、ステップS33に移行する。制御部52は、ステップS33において、クランク14が停止したか否かを判定する。制御部52は、クランク14が停止していない場合、処理を終了する。制御部52は、クランク14が停止している場合、ステップS34に移行する。制御部52は、ステップS34において、第1演算値M1を下げ、処理を終了する。制御部52は、ステップS34において、第1演算値M1を徐々に0に下げることが好ましい。制御部52は、第1演算値M1を算出するための第1演算処理用の目標値Xを下げることによって第1演算値M1を下げてもよく、第1演算処理によって算出された第1演算値M1に所定の処理を行うことによって第1演算値M1を下げてもよい。目標値Xが人力駆動力Hが0になる場合に0に設定される場合は、クランク14が停止すると人力駆動力Hが0になるため、ステップS34において、第1演算値M1が徐々に0になるように第1演算値M1を下げることが好ましい。
制御部52は、図4のステップS23において用いた目標値Xを第1演算処理用の目標値X(第1目標値)として第1演算処理部52Aに記憶領域を設けて記憶するか、記憶部54に記憶してもよい。制御部52は、図4のステップS23において用いた目標値Xを第1演算処理用の目標値Xとして記憶して、演算周期ごとに第1演算値M1を算出する場合、かつ、ステップS32において目標値Xを下げることによって第1演算値M1を下げる場合、ステップS23において記憶した目標値Xを下げることによって第1演算値M1を下げてもよい。目標値Xは、下げるごとに下げた目標値Xに更新してもよく、目標値Xを下げるための補正処理に用いるゲイン、または、フィルタ制御の応答速度を時間経過ごとに変化するようにしてもよい。この場合、制御部52は、図3のステップS12において、記憶した目標値Xを用いて算出した第1演算値M1を取得する。
制御部52は、図4のステップS23において算出した第1演算値M1を、第1演算処理部52Aに記憶領域を設けて記憶するか、記憶部54に記憶してもよい。この場合、制御部52は、ステップS32またはステップS34において下げた第1演算値M1を図4のステップS23において記憶された第1演算値M1に上書きしてもよく、図4のステップS23において記憶された第1演算値M1とは各別に記憶してもよい。この場合、制御部52は、図3のステップS12において、ステップS32またはステップS34において下げた第1演算値M1が記憶部54に記憶されている場合は、下げた第1演算値M1を取得する。
図6を参照して、第2演算処理について説明する。制御部52は、制御部52に電力が供給されると、処理を開始して図6に示すフローチャートのステップS41に移行する。制御部52は、図6のフローチャートが終了すると、電力の供給が停止されるまでは、所定周期後にステップS41からの処理を繰り返す。
制御部52は、ステップS41において、人力駆動車10が停止状態から走行状態に遷移したか否かを判定する。制御部52は、例えば、クランク14の回転が停止した状態から、回転を開始した状態に変化した場合、人力駆動車10が停止状態から走行状態に遷移したと判定する。制御部52は、人力駆動車10が停止状態から走行状態に遷移していないと判定した場合、処理を終了する。制御部52は、人力駆動車10の停止状態が維持されている場合、処理を終了する。制御部52は、人力駆動車10が停止状態から走行状態に遷移した場合、ステップS42に移行する。
制御部52は、ステップS42において、クランク14に人力駆動力Hが入力されているか否かを判定する。制御部52は、クランク14に人力駆動力Hが入力されていない場合、処理を終了する。制御部52は、クランク14に人力駆動力Hが入力されている場合、ステップS43に移行する。
制御部52は、ステップS43において、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満か否かを判定する。制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満の場合、ステップS44に移行する。
制御部52は、ステップS44において、目標値Xに応じて第2演算値M2を算出し、かつ、フィルタ制御を行い、算出した第2演算値M2を記憶部54に記憶し、ステップS43に移行する。
制御部52は、ステップS43において、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値未満ではない場合、ステップS45に移行する。
制御部52は、ステップS45において、目標値Xに応じて第2演算値M2を算出し、記憶部54に記憶し、ステップS46に移行する。制御部52は、ステップS46において、人力駆動車10が停止状態か否かを判定する。制御部52は、人力駆動車10が停止状態ではない場合、ステップS45に移行する。このため、制御部52は、人力駆動車10が停止状態の場合、第2演算値M2を算出する第2演算処理が繰り返される。制御部52は、ステップS46において、人力駆動車10が停止状態と判定すると、処理を終了する。
図7を参照して、人力駆動車10が停止状態から走行状態に遷移した場合のモータ42の制御の実行態様について説明する。
時刻t10は、人力駆動車10が停止状態から走行状態に遷移し、かつ、制御部52が人力駆動力Hが入力されたことを判定した時刻を示す。制御部52は、第1演算値M1と第2演算値M2とを算出する。
時刻t10以降において、第1演算値M1は、時刻t10において算出された値が維持される。第2演算値M2は、所定周期ごとに算出された値に更新される。第2演算値M2の算出のための第2演算処理には、フィルタ制御が用いられる。
時刻t11は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になった時刻を示す。時刻t11以降において、第1演算値M1は、時間tが経過するごとに小さくなる。時刻t11以降において、第2演算値M2の算出のための第2演算処理には、フィルタ制御が用いられない。
人力駆動車10が停止状態から走行状態に遷移した直後の期間においては、トルクセンサ60によって検出される人力駆動力Hに外乱等の影響が大きい。
制御部52は、フィルタ制御を含む第2演算処理によって第2演算値M2を算出し、第2演算値M2を用いてモータ42を制御するため、外乱等の影響が低減されたモータ42の制御を行うことができる。制御部52は、さらに、第2演算値M2に加えて第1演算値M1を用いてモータ42を制御するため、モータ42の出力の低下を抑制できる。このため、第2演算値M2によって、モータ42の駆動力を人力駆動力Hに応じてなめらかに変化させ、かつ、モータ42の出力の低下を抑制できる。
(変形例)
実施形態に関する説明は、本発明に従う人力駆動車用制御装置が取り得る形態の例示であり、その形態を制限することを意図していない。本発明に従う人力駆動車用制御装置は、例えば以下に示される実施形態の変形例、および、相互に矛盾しない少なくとも2つの変形例が組み合わせられた形態を取り得る。以下の変形例において、実施形態の形態と共通する部分については、実施形態と同一の符号を付してその説明を省略する。
・第1演算処理を行う頻度を、第2演算処理を行う頻度以上にしてもよい。第1演算処理を行う条件と、第2演算処理を行う条件とを異ならせて、第1演算処理を行う頻度と、第2演算処理を行う頻度とが、毎回異なるようにしてもよい。
・第2演算処理をフィードフォワード制御にしてもよい。この場合、例えば、人力駆動力Hの変化に関するパラメータの変化を用いて第2演算値M2を算出する。人力駆動力Hの変化に関するパラメータは、例えば、人力駆動車10の傾斜角度、走行路の路面状態、および、走行速度Vの少なくとも1つを含む。
・第2演算処理を開ループ演算処理にしてもよい。この場合、第2演算処理において、平滑化処理を含めてもよい。平滑化処理は、例えば、なまし処理を含む。この場合も、モータ42の駆動力の人力駆動力Hに応じてなめらかに変化させることができる。
・第1演算処理を閉ループ演算処理にしてもよい。この場合も、第2演算値M2に第1演算値M1が合算された合算値MXを用いてモータ42が制御されるため、モータ42の駆動力の低下を抑制できる。この場合、例えば、第1演算処理は、第2演算処理と同様に行われ、かつ、演算周期を異ならせることが好ましい。また、例えば、第1演算処理は、第2演算処理とは異なる閉ループ演算処理にしてもよい。第1演算処理は、フィードバック制御であってもよく、フィードフォワード制御であってもよい。
・制御部52は、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になった場合、第2演算処理を終了し、第3演算処理を開始するようにしてもよい。この場合、人力駆動車10が停止状態から走行状態に遷移した後の走行距離L、走行速度V、および、クランク14の回転量CAの少なくとも1つが所定値以上になった後においては、制御部52は、第3演算処理によって算出される第3演算値に応じてモータ42を制御する。
・制御部52は、モータ42を制御するための第1演算値M1を算出するための第1演算処理と、第1演算処理とは異なり、かつ、モータ42を制御するための第2演算値M2を算出するための第2演算処理と、を行い、人力駆動車10の走行状態に応じて第1演算処理と第2演算処理との少なくとも一方を変更し、第1演算値M1と、第2演算値M2と、の合算値MXに応じてモータ42を制御するようにしてもよい。この場合、人力駆動車10の走行状態は、例えば、人力駆動力Hを含む。