(57)【要約】【課題】ばねを用いて一方向の反復移動による走査駆動させる走査ミラーを搭載する光走査モジュールは、その振れ角度（走査角）を制御するために専用のセンサや調整機構を設けている。【解決手段】走査ミラー内の走査方向に沿った出射ミラー面の両側に反射散乱面を設けて、それらの反射散乱面からの反射光を検出して走査ミラーの振れ角度を光学的に検出し、反射散乱面が破損され得る角度を下回るように制御する光学的振幅検出方法及び振幅制御方法である。【選択図】    図１４
2010061029.tif 000002
【特許請求の範囲】
【請求項１】
走査ミラーを揺動するミラー駆動部と、
前記走査ミラーに設けられ、光源部から出射されたレーザ光を走査対象に向けて反射する第１の反射面を有する出射ミラー部と、
前記走査ミラーの前記出射ミラー部の周囲に設けられ、前記走査対象を含む外部からの戻り光を集光し、且つ反射する第２の反射面を有する戻りミラー部と、
前記戻りミラー部で集光されて反射された戻り光を受光する受光部と、
前記走査ミラーが所定の角度を超える揺動角に達して前記光源部からのレーザ光が前記出射ミラー部から外れて照射された際に、該外れたレーザ光が照射される位置に形成される第３の反射面と、
を有する光学的走査装置における出射ミラー部の揺動角検出方法において、
前記光源から前記レーザ光を発光させる発光ステップと、
前記ミラー駆動部に駆動力を与えて、前記出射ミラー部を揺動させるミラー揺動ステップと、
前記受光部によって戻り光を受光するステップと、
前記受光部での受光量から、第３の反射面からの反射光の有無を検出する検出ステップと、
を有することを特徴とする揺動角検出方法。
【請求項２】
前記検出ステップは、  
前記受光量に基づき、デジタル信号を得る第１のステップと、
得られた前記デジタル信号の中から、前記出射ミラー部の揺動角を検出するための揺動角検出領域を抽出する第２のステップと、
前記揺動角検出領域に基づき、前記第３の反射面からの反射光の有無を検出する第３のステップと、
を有することを特徴とする請求項１記載の揺動角検出方法。
【請求項３】
前記揺動角検出領域が、前記出射ミラー部の揺動角が所定以上の光量落ちが発生する角度以上の範囲内に設けられていることを特徴とする請求項２記載の揺動角検出方法。
【請求項４】
前記揺動角検出領域が、前記走査対象からの情報に対応した有効走査領域の外側に隣接する領域であることを特徴とする請求項２記載の揺動角検出方法。
【請求項５】
光源部から発せられたレーザ光を走査対象に向けて反射させる第１の反射面を有する出射ミラー部と、
前記出射ミラー部を揺動するミラー駆動部と、
前記走査対象を含む外部からの戻り光を集光させ、且つ反射させる第２の反射面を有する戻りミラー部と、
前記戻りミラー部で集光及び反射させられた前記戻り光を受光する受光部と、
前記出射ミラー部が所定の角度を超える揺動角に達した際に、前記光源部からのレーザ光が照射される位置に形成される第３の反射面と、
を有する光学的走査装置における前記出射ミラー部の揺動角検出方法において、
前記光源部からレーザ光を発光させる発光ステップと、
前記ミラー駆動部を駆動させて、前記出射ミラー部を揺動させるミラー揺動ステップと、
前記戻り光を受光する受光ステップと、
受光した前記戻り光の光量から、前記第３の反射面からの反射光の有無を検出する検出ステップと、
前記第３の反射面からの反射光の有無に応じて、前記ミラー駆動部の駆動力を制御する駆動制御ステップと、
を有し、出射ミラー部の揺動角を制御することを特徴とする揺動角制御方法。
【請求項６】
前記検出ステップは、
受光した戻り光の光量に基づき、デジタル信号を得る第１のステップと、
得られたデジタル信号の中から、出射ミラー部の揺動角を検出するための領域（揺動角検出領域）を抽出する第２のステップと、
揺動角検出領域から、第３の反射面からの反射光の有無を検出する第３のステップと、
を有することを特徴とする請求項５記載の揺動角検出方法。
【請求項７】
前記揺動角検出領域から、前記第３の反射面からの反射光に対応する信号を検出したとき、前記出射ミラー部の揺動角を減少させるように前記ミラー駆動部の駆動力を制御することを特徴とする請求項６記載の揺動角制御方法。
【請求項８】
揺動角検出領域から、第３の反射面からの反射光に相当する信号を検出しないとき、出射ミラー部の揺動角を増加させるように、前記ミラー駆動部の駆動力を制御することを特徴とする請求項６記載の揺動角制御方法。
【請求項９】
ミラー駆動部の駆動力の制御は、ミラー駆動部に与える駆動パルスの期間あるいは駆動電圧を変化させることで行うことを特徴とする請求項７又は８記載の揺動角制御方法。
【請求項１０】
前記第３の反射面が凹凸面を有し、前記凹凸面からの反射光は、散乱光として前記受光部に受光され、前記凹凸面からの反射光の光量が前記第２の反射面からの反射光の光量に比べて、増大変化することを特徴とする請求項１に記載の揺動角検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を光学的に読み取る光走査モジュールにおける光学的振幅検出方法及び振幅制御方法に関する。
【背景技術】
【０００２】
一般に、バーコード等のシンボル情報を光学的に読み取る装置には、光源として半導体レーザ素子を用いて、出射された光束（レーザ光）を走査させてバーコードに照射し、その戻り光から情報を得る光走査モジュールがある。近年の携帯電子機器に搭載するための、小型の光走査モジュールが普及している。バーコードを筆頭とするシンボル情報は、通常、光学的に情報が認識可能な記号化された情報であるが、他にも、画面化された自動車や人物等の陰影情報や、走査型レーザ顕微鏡により観測したい試料等における物体情報であってもよい。
【０００３】
これらのレーザ光を走査させる公知な方式としては、一枚のミラーを揺動させる走査ミラー方式や、多面ミラー（ポリゴンミラー）を回転させる方式が知られている。例えば、特許文献１には、板ばねと走査ミラーを用いた走査機構が提案されている。また特許文献２は、同様に走査ミラー等を用いた走査機構であるが、駆動部分の共振現象を利用して振幅制御する方式である。ポリゴンミラーを回転させる方式は、回転モータを別途配置する必要があり駆動部が大型化するため、ＰＯＳレジスタなどの据え置き型の電子機器に搭載されている。
【０００４】
これに対して、上述の走査ミラー方式は、マグネットと駆動コイルを配置することで走査機構を構成できるため、小型軽量化を実現するものとして有利であった。そのため、携帯機器へ搭載する光走査モジュールとしては、走査ミラー方式が一般に普及している。
【０００５】
こうした光走査モジュールは、電子機器のうち、携帯情報端末などの情報機器へのデータ入力の用途に適しており、機器内に組み込まれ、物流、製造業、小売業等に広く普及している。また、同光走査モジュールを物体認識センサとして用いることで、例えば、車間センサや安全・防犯装置等への応用も可能となっている。
【特許文献１】米国特許番号ＵＳ６，３６０，９４９
【特許文献２】米国特許番号ＵＳ６，９８１，６４５
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述した光走査モジュールにおいては、その機構上、温度・湿度等の外部環境の変化により、走査角（出射光が走査する角度）の変化や材料の経時変化が生じている。例えば、特許文献１、２等によれば、共振ばね等を利用している。温度又は湿度などの外部環境の変化や、ばね材料の製造ロット、長年の使用等により、共振ばねのヤング率やポアソン比等の材料特性は変化する。さらに、共振ばねの摩擦粘性係数も変化する。さらに、ばね等の吸水膨張係数、温度による線膨張係数等に応じて形状も変化する。そのため、同じ大きさの駆動パルスを与えたとしても走査ミラーの揺動角が変動するという問題があった。
【０００７】
特に、設計仕様で決められた所定の範囲の揺動角を越えるような揺動を走査ミラーに行わせると、衝撃により光走査モジュールが損傷したり正常な信号が取得できなくなるという不具合がある。このような背景により、走査モジュールには、走査ミラーの振幅、すなわち揺動角が所定の範囲を超えないようにするため、検出コイルなどの揺動角度検出機構を設けている。この揺動角度検出機構で走査ミラーの揺動角度を検出し、所定の範囲の揺動角度を超えるようであれば、走査ミラーの揺動角度が小さくなるように制御することで、光走査モジュールの信頼性や耐久性を高めている。
【０００８】
しかしながら、揺動角度検出機構として専用のセンサや調整機構を設けることから、部品点数が増加し、結果的に製品コストが上昇し、製品を小型化することが難しくなってしまうという問題があった。
【０００９】
そこで本発明は、簡易な構成で且つ安価なコストで走査ミラーの揺動角度範囲を検出し、この揺動角度範囲制御する光学的振幅検出方法及び振幅制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に従う実施形態は、走査ミラーを揺動するミラー駆動部と、前記走査ミラーに設けられ、光源部から出射されたレーザ光を走査対象に向けて反射する第１の反射面を有する出射ミラー部と、前記走査ミラーの前記出射ミラー部の周囲に設けられ、前記走査対象を含む外部からの戻り光を集光し、且つ反射する第２の反射面を有する戻りミラー部と、前記戻りミラー部で集光されて反射された戻り光を受光する受光部と、前記走査ミラーが所定の角度を超える揺動角に達して前記光源部からのレーザ光が前記出射ミラー部から外れて照射された際に、該外れたレーザ光が照射される位置に形成される第３の反射面と、を有する光学的走査装置における出射ミラー部の揺動角検出方法において、前記光源から前記レーザ光を発光させる発光ステップと、前記ミラー駆動部に駆動力を与えて、前記出射ミラー部を揺動させるミラー揺動ステップと、前記受光部によって戻り光を受光するステップと、前記受光部での受光量から、第３の反射面からの反射光の有無を検出する検出ステップと、を有する揺動角検出方法を提供する。
【００１１】
また、光源部から発せられたレーザ光を走査対象に向けて反射させる第１の反射面を有する出射ミラー部と、前記出射ミラー部を揺動するミラー駆動部と、前記走査対象を含む外部からの戻り光を集光させ、且つ反射させる第２の反射面を有する戻りミラー部と、前記戻りミラー部で集光及び反射させられた前記戻り光を受光する受光部と、前記出射ミラー部が所定の角度を超える揺動角に達した際に、前記光源部からのレーザ光が照射される位置に形成される第３の反射面と、を有する光学的走査装置における前記出射ミラー部の揺動角検出方法において、前記光源部からレーザ光を発光させる発光ステップと、前記ミラー駆動部を駆動させて、前記出射ミラー部を揺動させるミラー揺動ステップと、前記戻り光を受光する受光ステップと、受光した前記戻り光の光量から、前記第３の反射面からの反射光の有無を検出する検出ステップと、前記第３の反射面からの反射光の有無に応じて、前記ミラー駆動部の駆動力を制御する駆動制御ステップと、を有し、出射ミラー部の揺動角を制御する揺動角制御方法を提供する。
【発明の効果】
【００１２】
本発明によれば、簡易な構成で且つ安価なコストで走査ミラーの揺動角度範囲を検出し、この揺動角度範囲制御する光学的振幅検出方法及び振幅制御方法を提供することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明の実施形態について詳細に説明する。  
まず、図１Ａ，１Ｂに示す本発明の第１の実施形態に係る光学的振幅検出方法及び振幅制御方法を実現する光走査モジュールの概要について説明する。この光走査モジュール１は、大別して、基材となるハウジング２（２ａ，２ｂ）、光源部４、走査ミラー１２、駆動部３、折り返しミラー部５、受光部６、制御部として機能する回路基板８及び、外部出力端子９等により構成される。
【００１４】
この光走査モジュール１において実現された外寸は、１６．３８７ｃｍ３（１立方インチ）以下程度の容積である。この光走査モジュール１は、光学読み取り機能の１ユニットとして、種々の電子機器に搭載できるように、例えば、ハウジング２ａ下面に固定用ねじ穴等が形成される。搭載可能な電子機器としては、例えば、携帯端末機器、ハンドヘルドスキャナ、ＰＯＳコンピュータ及び通信機器等があり、それぞれに筐体内に搭載され、その機器の制御部により制御される。
【００１５】
次に、光走査モジュール１の構成について詳細について説明する。図２には、図１Ａに示した光走査モジュールにおける光学部品を抜粋して示している。
【００１６】
光源部４は、ハウジング２ａに実装されており、光束（ビーム光）としてレーザ光を発生させる半導体レーザ素子２３、コリメータレンズ２４及び出射開口部２６等により構成される。半導体レーザ素子２３は、波長約６５０ｎｍのレーザ光を発生し、レーザ光はコリメータレンズ２４及び出射開口部２６を経由することで整形される。コリメータレンズ２４と出射開口部２６の形状は、読み取り対象となるバーコード等のシンボルマークや読み取り距離に応じて、読み取りが最適となるように調整及び設定されている。具体的には、レーザ光のビームウェストまでの距離が出射開口部から２００ｍｍ程度、ビームウェストの直径が０．３ｍｍ以下程度となるように調整されている。
【００１７】
折り返しミラー２５は、その反射面が出射開口部２６を経由して整形されたレーザ光の光軸に対して所定角度をなすように、ハウジング２ａに対して固定され、当該レーザ光を走査ミラー１２に向けて反射させる。  
走査ミラー１２は、駆動部３と軸受部１０と一体的に接合されており、ハウジング２ａに植設された回転軸１１を中心に回転自在となっている。
【００１８】
図３Ａに示すように、走査ミラー１２の前面には、その中央付近に平面で矩形形状の出射ミラー面（第１の反射面）１３と、その出射ミラー面１３を取り囲むように、非球面で且つ凹面状に湾曲した集光ミラー面１２ａ（第２の反射面）とが形成されている。さらに、出射ミラー面１３の揺動方向両端（図３Ａにおいて、出射ミラー面１３の左右端）に、本実施形態の特徴となる微細な凹凸を有する反射散乱面（第３の反射面）１４ａ，１４ｂが形成されている。
【００１９】
揺動されている出射ミラー面１３は、折り返しミラー２５から入射されたレーザ光を読み取り対象となるシンボルマークに向けて走査光として出射する。集光ミラー面１２ａは、シンボルマークで反射された戻り光を集光させて、その光束を後段の光検出器３２に向けて反射させる。集光ミラー面１２ａは、反射光を集光させた焦点が光検出器３２の受光面の近傍に位置するように、その凹面状態が加減されている。
【００２０】
反射散乱面１４ａ，１４ｂは、折り返しミラー２５からレーザ光が入射したときに、その表面に形成された微細な凹凸により、四方へ散乱するように反射させる。つまり、出射ミラー面１３は、レーザ光を光束のまま反射させて、シンボルマークに出射することに対して、反射散乱面１４ａ，１４ｂは、レーザ光を散乱光として反射している。
【００２１】
また、図３Ｂに示すように、走査ミラー１２の背面には、ハウジング２ａに植設された回動軸１１と嵌合し、回動軸１１にまわりに所定の回動範囲で摺動自在に支持されるすべり軸受１０が設けられている。
【００２２】
出射ミラー面１３は、軸受（走査ミラーの回動中心）１０に対してオフセットされて形成されているため、出射ミラー面１３の角度を変化させようと走査ミラー１２を回動させると、出射ミラー面１３の位置は徐々にずれていてくことになる。このため、出射レーザ光が出射ミラー面１３に照射されていても、走査ミラー１２の揺動角が所定の範囲（ここでは、走査ミラーを安定して操作でき、且つ、破損しない程度と定義する）よりも大きく揺動した場合には、出射ミラー面１３から出射レーザ光のスポットが外れるようにしている。つまり、出射ミラー面１３の横幅（図３Ｃの左右方向）の長さは、走査ミラー１２の揺動角が所定の範囲内で回動している間、出射レーザ光スポットが出射ミラー面１３から外れない程度の長さに設定している。
【００２３】
走査ミラー１２は、射出成型により、出射ミラー面１３、集光ミラー面１２ａ、反射散乱面１４ａ，１４ｂ等を一体的に形成した樹脂成形部品として構成されている。尚、走査ミラー１２の後方には、さらに、軸受１０と、走査ミラー１２に回動軸１１まわりの回動力を伝えるための駆動部３が接着により固定されている。
【００２４】
この駆動部３は、図３Ｄに示すように、駆動コイル１６と、板ばね１９と、支持ばね保持部材１７、ヨーク上に配置されたマグネット１８と、により構成される。本実施形態では、走査ミラー１２側に駆動コイル１６を、ハウジング２ａ側にマグネット１８をそれぞれ固定し、駆動コイル１６に後述する回路基板より所定の駆動パルスを印加することで電磁力を発生させて走査ミラー１２を揺動させる、いわゆるムービングコイル方式の駆動モータである。反対に、走査ミラー側にマグネット、ハウジング側に駆動コイルを配置した、いわゆるムービングマグネット方式の駆動モータといった公知の駆動モータも採用することが可能である。
【００２５】
このように、駆動部３におけるマグネット１８と駆動コイル１６の位置を適正に配置し、且つ所定の駆動パルスを駆動コイルに印加することで、駆動部３にトルクが発生し、走査ミラー１２を回動（揺動）させることができる。出射ミラー面１３で反射して出射されたレーザ光（出射光）は、図１Ｂに示すハウジング２ａに設けられた走査開口面Ｌ（図２参照）を通過して外部に出射される。この出射ミラー面１３で反射されるレーザ光の光軸方向が走査開口面の垂線方向に対して略一致するときの走査ミラーの角度を基準（揺動角０°、かつ、走査角０°）として、その基準からの走査ミラーの機械的な回動角度を揺動角と称する。揺動角は、ある基準位置からの走査ミラーの機械的な角度変動量であるのに対し、出射角は、出射光の光学的な角度変動量を示す。幾何光学によれば光の入射角と反射角は一致するので、走査角は揺動角の２倍となる。例えば図１Ａで、走査ミラーを基準位置から±１０度回転させると、出射光（走査光）は±２０度変動する。
【００２６】
また図２に示す走査開口面Ｌ（走査幅）は、出射ミラー面１３が揺動する角度により規定され、その角度は衝突による走査ミラー１２及び駆動部３への破損を防止する範囲内に設定されている。
【００２７】
ここで反射散乱面１４ａ，１４ｂについて、さらに詳細に説明する。  
図３Ｂ，３Ｃにおいて、走査ミラー１２は、Ｚ軸方向に沿って延びる軸１１を中心に揺動可能とする。よって、出射ミラー面１３と集光ミラー面１２ａが揺動する方向は、Ｙ軸方向に沿った左右となる。出射ミラー面１３と集光ミラー面１２ａの揺動方向における境界部分１５ａ，１５ｂを越えて反射散乱面１４ａ，１４ｂが設けられている。
【００２８】
より詳細に説明すると、図３Ａにおいて、平坦な出射ミラー面１３が集光ミラー面１２ａから突出するように形成されている。その出射ミラー面１３と集光ミラー面１２ａとの間を、出射ミラー面１３の垂線に対する角度θ、例えば３０°を超える程度の傾斜で繋がるように形成される平坦な面が反射散乱面１４ａ，１４ｂとなる。この反射散乱面１４ａ，１４ｂの表面は、微細な凹凸に加工されている。
【００２９】
走査ミラー１２を樹脂成形で形成する際に用いる金型構造において、成型時に金型から走査ミラー１２を離型する方向が、出射ミラー面１３に対して略９０°となるように設定されている。このとき、集光ミラー面１２ａに対して凸形状となっている出射ミラー面１３の部分の周囲については、離型性を高めるため、３０°以上の抜き勾配としての傾斜部を施している。そして、この傾斜部の表面には砂目地状の加工が施されている。
【００３０】
本実施形態では、走査ミラーの成型後に、出射ミラー面１３と集光ミラー面１２ａと抜き勾配の傾斜部にそれぞれ、金の真空蒸着を施し、この抜き勾配の傾斜部における傾斜面を反射散乱面１４ａ，１４ｂとして利用している。
【００３１】
この走査ミラー１２が揺動している際に、半導体レーザ素子２３からのレーザ光が入射されると、図３Ｃに示すように、レーザ光のスポットは出射ミラー面１３内を移動する。このレーザ光のスポットは、走査ミラー１２が設計仕様で決められている所定の角度範囲内で揺動していれば継続される。しかし、外部からの衝撃や外部の環境変化など何らかの理由で走査ミラー１２が所定の角度範囲を超えて回動した場合には、レーザ光のスポットは、出射ミラー面１３の外側に設けられた反射散乱面１４ａ，１４ｂに照射される。  
受光部６は、ハウジング２ａ上に固定されており、バンドパスフィルタ３３と受光開口部３１と光検出器３２等により構成される。
【００３２】
バンドパスフィルタ３３は、半導体レーザ素子２３から出射されるレーザ光の波長を基準として設定される。本実施形態では、波長が６５０ｎｍ近傍の光のみを通過させるように設定されている。このため、読み取り対象となるシンボルマークで反射した光（戻り光）は、レーザ光のみがバンドパスフィルタ３３を透過し、それ以外の波長の光は遮断される。
【００３３】
これにより、戻り光のみがバンドパスフィルタ３３を通過し、受光開口面３１を経由して光検出器３２に入射する。光検出器３２は、光電変換面を有し、入射する光の強弱に応じた光電流を生成する。光検出器３２は、図４に示す基板上に形成される制御部である電気回路４１に接続されている。光検出器３２により生成された光電流は、電気回路４１に取り込まれて、電流／電圧変換や増幅、復号処理等、種々の処理がなされる。尚、光検出器３２に入射する光の強弱は、シンボルマーク等の読み取り対象物の反射率や形状の陰影の情報に対応している。
【００３４】
従って、戻り光から生成された信号レベルの変化が、予め設定された規格（信号レベル変化）と合致するか否かを判定することにより、バーコードとして印刷された情報を取得することができる。また情報だけではなく、物体の有無を検出することもできる。
【００３５】
次に、本実施形態の光走査モジュールにおける回路構成について説明する。  
図４は、本実施形態における基板上に形成される制御部である電気回路のブロック図である。  
電気回路４１には、光源部４２、駆動部４３及び、受光部４４等が電気的に接続されている。さらに、電気回路４１は図示しないコネクタ等を介して外部機器に接続可能であり、本実施形態ではコンピュータ５１が接続される。光走査モジュール１とコンピュータ５１との間で、プログラムやデータの通信を行っている。
【００３６】
電気回路４１は、光源回路４５、駆動回路４７、電流／電圧（Ｉ／Ｖ）変換回路４８、アナログ／デジタル（Ａ／Ｄ）変換回路４９、走査制御回路４６、復号回路５０等を備えている。光源回路４５は、走査制御回路４６からの光源駆動信号ＯＤ１に基づき、光源部４２の半導体レーザ素子２３に対して光源駆動電圧ＶＥ１を印加し、レーザ光を発光させる。駆動回路４７は、走査制御回路４６からの駆動信号ＤＲ１に基づき、走査ミラー１２の駆動部４３に対して駆動パルスＤＰ１を印加し、走査ミラー１２を揺動させる。電流／電圧変換回路４８は、受光部４４の光検出器３２が受光した際に発生する光電流ＰＩ１を電圧に変換し、アナログ／デジタル変換回路４９は、その電圧をデジタル信号ＤＳ１に変換する。
【００３７】
走査制御回路４６は、デジタル・シグナル・プロセッサ（ＤＳＰ）等からなり、上述した光源部４２、駆動部４３などの構成部位全体を制御する。復号回路５０は、マイクロプロセッサや不揮発メモリ等により構成される。例えば、戻り光から生成された光電流ＰＩ１の信号の取り込みや、その信号に基づくバーコード情報の復号などの所望する機能を実現するためのソフトウェアを電気回路の外部機器（例えば、コンピュータ５１）から書き込むことができる。
【００３８】
このように構成された電気回路４１において、コンピュータ５１から読み取りを指示するトリガー信号ＴＧ１が入力されると、復号回路５０から走査開始信号ＳＥ１が走査制御回路４６に出力される。走査制御回路４６は駆動回路４７に対して駆動信号ＤＲ１を出力する。駆動回路４７は、この駆動信号ＤＲ１に基づいて駆動パルスＤＰ１を駆動部４３に出力して駆動部４３に対して駆動力を発生させる。この駆動力により、走査ミラー１２が回動軸１１周りに反復的に揺動する。
【００３９】
また、走査制御回路４６は、光源回路４５に対して光源駆動信号ＯＤ１を出力する。光源回路４５は光源駆動信号ＯＤ１に基づいて、光源駆動電圧ＶＥ１を光源部４２の半導体レーザ素子２３に出力する。半導体レーザ素子２３は、印加された光源駆動電圧ＶＥ１に基づいてレーザ光を発生する。
【００４０】
バーコード等の読み取り対象物からの反射光は、戻り光として、受光部４４の光検出器３２によって受光され、反射光の光強度に応じた電流が発生する。この電流は、電流／電圧変換回路４８にて電圧値に変換され、アナログ／デジタル変換回路４９にてデジタル値に変換される。そして、復号回路５０にて、情報が復号化される。
【００４１】
本実施形態の光走査モジュールにおける走査ミラーの制御方法について説明する。  
図５Ａでは、走査ミラー１２が基準位置（回動角度０°）にあるときの出射レーザ光の光軸を示している。この走査ミラーが基準位置にあるときは、上述したように、出射ミラー面１３で反射される出射レーザ光の光軸は、走査開口面Ｌの垂直方向に一致している。
【００４２】
この状態で、図６に示すように、走査ミラー１２の駆動部３にＷ１、Ｗ２で示される正負の駆動パルス（幅）を交互に印加することで、走査ミラー１２が揺動して左スキャンさせたり（図５Ｂ）、右スキャンさせたりする（図５Ｃ）ことができる。このようなスキャン状態で、出射ミラー１３で反射され出射される出射レーザ光は、直線上を左右に往復走査する。
【００４３】
しかし図５Ａに示すように、出射ミラー面１３と走査ミラー１２の回動軸１１には、一定の距離のオフセットが生じている。このため、走査ミラー１２の回動に伴い、出射ミラー面１３上において出射レーザ光の入射位置（光スポット）が移動することとなる。
【００４４】
図６に示したように、パルス幅Ｗ１、Ｗ２で正負を変えた駆動パルスを駆動コイル２０与えると、図５Ｂ、図５Ｃに示したように、反時計周りの左スキャン、時計周りの右スキャンが生じる。その結果、図８に示すように、出射光の走査角は反復的に変動する。駆動部３の質量により慣性モーメントを有することから、走査角［度］の変動は駆動パルスの変動に対して位相遅れが発生する。しかしながら、走査制御回路４６によって、その位相遅れを調整することが可能であり、駆動部分の慣性モーメントに応じて適正に補正された値となっている。
【００４５】
この補正により、駆動パルスとデータの取り込みのタイミング（後述する有効走査領域に相当するタイミング）が適正に維持され、安定的にデータを取り込むことができる。また、これとは反対に有効走査領域以外に相当するタイミングについても、位相遅れの値を適宜設定することで、把握することが可能となる。
【００４６】
図７Ａ（ａ）〜図７Ａ（ｅ）は、走査開口面側から走査ミラー１２を見た図であって、基準位置から左スキャンして、また基準位置に戻ってくるまでの出射レーザ光のスポット１３ａを示している。図７Ａ（ａ）〜図７Ａ（ｅ）に示すように、出射レーザ光のスポット１３ａは、出射ミラー面１３上を反復するように移動する。尚、正常な状態であれば、右スキャンに振り切った場合でも、出射レーザ光のスポット１３ａは出射ミラー面１３の端からはみ出て、反射散乱面１４ａに達することはない。
【００４７】
図８は、走査ミラー１２に正負の駆動パルスを与えたときの、走査角度と時間との関係を示している。ここで、走査角度が２０°から−２０°までの変位が図５Ｂに示す左スキャンであり、走査角度−２０°から２０°までの変位が図５Ｃに示す右スキャンに対応する。
【００４８】
そして、図９には、図８で示すように走査ミラー１２を反復的に揺動させたときの光検出器３２の受光量の時間変化を示している。この図から分かるように、左スキャン及び右スキャンのそれぞれの中央、即ち、基準位置における光検出器３２の受光量は大きく、左スキャンの始端（右スキャンの終端）と、左スキャンの終端（右スキャンの始端）といった、走査角度の絶対値が大きいときの光検出器３２の受光量は小さくなる。
【００４９】
これは、読み取り対象となるバーコードは平坦な面であるため、走査角の絶対値が大きくなると、一般に光のけられやコサインｎ乗則など、周辺光量落ちと呼ばれる現象が生じる。そのため、走査範囲の中で中央付近においては、得られる光量が最大となり、走査範囲の両端において光量が減少する。
【００５０】
さらに、反復的な振れとなる走査の両端では、走査方向が反転するように切り替えられる。つまり、その両端では、速度が停止するまで下がるため、適正な周波数の信号が得られない。これらの理由により、走査の両端は、バーコード等の読み取りに使うことができない。その結果、対象物からの反射光を取り込むのに、安定で有効な領域Ａ１，Ａ２が基準位置を中心に、各スキャンの中央近辺に存在することになる。以下、この領域を有効走査領域Ａ１，Ａ２と称する。
【００５１】
図１０は、図９に示された光量変化を光検出器で取り込んで、電流／電圧変換やアナログ／デジタル変換等の処理を行い、さらに、二値化した後の信号を示したものである。この二値化において、前述した有効走査領域Ａ１，Ａ２における戻り光から生成された信号が取り込まれるように閾値が設定されているものの、有効走査領域Ａ１，Ａ２における信号が「１」として判断されていることが分かる。これに対して、有効走査領域Ａ１，Ａ２以外、特に走査角度が大きくなる左スキャン及び右スキャンの始端、終端近辺で受光した戻り光から生成された信号は、受光量が小さいため、本来「１」と判断されるべきところが「０」と判断される。以上が、光走査モジュールが安定的に設計仕様通りに駆動しているときの状態である。
【００５２】
しかし、実際の使用現場においては、光走査モジュールに対して、温度や湿度などの環境変化が影響して、走査ミラー１２の走査角が大きく変動する場合がある。
【００５３】
上述したように、温度や湿度等が変動して設計仕様の範囲を超えた場合や経年変化により駆動部３に含まれるバネ１９の弾性が劣化するなどの変化が生じる。この変化は、これまでと同じ所定の駆動パルスを駆動部３に印加しているにも関わらず、正規な左右スキャンの端（走査方向の切り返し位置）で停止せずにオーバーランして、走査ミラー１２の揺動角が所定以上に回動してしまう現象が発生する。
【００５４】
図７Ｂ（ａ）〜図７Ｂ（ｅ）は、このような現象が発生した場合における出射ミラー面１３上の出射レーザ光のスポット１３ａの変動を示している。この図７Ｂは、図７Ａと同様に、走査ミラーが基準位置から左スキャンを行い、最大揺動角度に達した後、再度、基準位置に復帰するまでの過程を示している。
【００５５】
前述したように、回転軸中心と出射ミラー面１３との間には、オフセットが設けられていることから、出射ミラー面１３上におけるスポットの移動量は、揺動角の増減に対応する。つまり、揺動角が基準位置に対して最大となった時に、出射レーザ光のスポット１３ａも基準位置からの変動量が最大となる。
【００５６】
図７Ｂ（ｃ）には、最も走査ミラー１２の揺動角度が大きくなった状態を示し、そのときの出射レーザ光のスポット１３ａは、出射ミラー面１３から外側に外れ、出射ミラー面１３の左エッジ１５ａを超えて反射散乱面１４ａ上に至る。その出射レーザ光は、反射散乱面１４ａで発散的に反射され、その一部が受光部６の光検出器３２にて受光される。この時の光検出器３２の受光量は、対象物からの反射光を受光したときの受光量とは異なり、著しく大きな値となる。
【００５７】
図１１は、揺動角度が大きくなった場合の光検出器３２の受光量変化を示す。尚、この図１１において、走査角が大きくなったところに相当するボトム部分の信号が一部抜けて図示されていないが、これは信号値が大きく変化して、記載できる範囲を超えているため図示できないことを意味する。
【００５８】
つまり、走査ミラー１２の揺動角（走査角）が所定の範囲を超えると、反射散乱面１４ａ，１４ｂによる散乱光が光検出器３２に直接取り込まれる。反射散乱面１４ａ，１４ｂと光検出器３２の距離は近いため、光検出器３２が受光する散乱光の光量は非常に多く、光信号の値は非常に大きな値となることを示している。他方、走査角が所定の範囲を超えない正常動作のときは、前述した図９の場合と同様の値をとる。
【００５９】
このように、光検出器３２で受光する光信号という観点からすると、走査角が所定の範囲を超えるか否かによって、光検出器３２における光信号は大きく変動し、走査角の変化を検出するに十分な変動量となっている。つまり、本来安定している状態であれば、図９に示すように、各スキャンの始端及び／終端では光検出器の受光量が最も少なくなる部分（時間）であるのに対し、この散乱光が後述する光信号を二値化する際の閾値以上に光量が大きいため、散乱光が入射したか否かの判断を迅速に行うことができる。
【００６０】
図１２には、図１１に示した光信号をアナログ／デジタル（Ａ／Ｄ）変換して所定の閾値に基づき二値化した二値化信号を示している。また、図１３は、駆動パルスとデジタル信号のタイミングと位相の遅れを概念的に示すタイミングチャートである。
【００６１】
図１２から分かるように、左スキャン、右スキャンの各終了端周辺を示す２値化信号“０”の中に、反射散乱面１４ａ，１４ｂからの反射光に相当する２値化信号“１”（それぞれ左エッジ検出信号Ｂ１、右エッジ検出信号Ｂ２と称する）が現れる。
【００６２】
この左エッジ検出信号Ｂ１及び右エッジ検出信号Ｂ２を検出するには、左スキャンを実行させる駆動パルス及び右スキャンを実行させる駆動パルスからのディレイ量を調整することで、左スキャン終端、右スキャン終端の時間帯を特定する。そして、その時間帯において、左エッジ検出信号及び右エッジ信号が出現するか否かを検出すれば良い（図１３参照）。
【００６３】
次に、左エッジ検出信号Ｂ１と右エッジ検出信号Ｂ２の検出方法について説明する。  
図１３は、駆動パルスと二値化信号の関係を示すタイミングチャートである。走査ミラー１２は停止している状態の時には、走査範囲の中位位置に停止しているため、図示したように駆動パルスを印加した後、左右のエッジ検出信号を得るまでには、時間の遅れ（位相の遅れＤ１）が生じている。
【００６４】
駆動パルスＷ１，Ｗ２を与えると、走査ミラー１２は、連続的に左スキャン及び右スキャンを行い、出射光がバーコード上を横切るように走査する。そして、バーコードからの反射光が光検出器３２によって受光される。その反射光の受光量に応じた二値化信号は、有効走査領域Ａ１，Ａ２においてバーコードに関する情報として取得される。
【００６５】
さらに、有効走査領域Ａ１，Ａ２のそれぞれの後に続くエッジ検出信号Ｂ１，Ｂ２により、走査ミラー１２の挙動に関する情報が取得される。駆動パルスに対応するデジタル信号が取得されるまでには、位相の遅れＤ１が生じている。この位相の遅れＤ１については、走査制御回路内において、慣性モーメント等の駆動部の設計に基づいて値が適正になるように微調整を行う。従来技術においては、有効走査領域Ａ１，Ａ２以外の二値化信号部分の情報については、全く利用されていなかったが、本願発明では有効走査領域Ａ１，Ａ２以外の領域において、左エッジ検出信号と右エッジ検出信号を検出するために用いている。
【００６６】
次に、走査制御回路の観点から、前述した左エッジ検出信号及び右エッジ検出信号の処理について詳細に説明する。  
図４に示したように、電気回路４１は走査制御回路４６を有している。走査制御回路４６は、デジタル・シグナル・プロセッサ（ＤＳＰ）等からなり、不揮発メモリ、各種レジスタ等を有する。デジタル・シグナル・プロセッサの内部の不揮発メモリには、製品仕様等に基づいて、Ｃ言語やアセンブリ言語等で書かれたソフトウェアをコンパイルしたデータや調整値が書き込まれている。
【００６７】
図１４に示すフローチャート及び図４に示す構成を参照して、走査制御回路４６の動作について説明する。  
電気回路４１に電源が投入されると、各回路が起動する。走査制御回路４６は、まず、起動時に初期パラメータを設定した後（ステップＳ１）、前述した走査開始信号を監視して、トリガー信号の有無に応じた動作を行う（ステップＳ２）。
【００６８】
次に、駆動パルスの生成処理を行う（ステップＳ３）。この処理は、具体的には、トリガー信号を受け取った場合、その直後から一定期間、前述した駆動パルスを生成して、駆動部３に印加して、走査ミラー１２の回動動作を行う。その後、光源駆動信号が光源回路４５に入力され、生成された光源駆動電圧が光源部４２に供給される。光源部４２は、レーザ光を走査ミラー１２の出射ミラー面１３に出射する。走査ミラー１２は、走査駆動しており、出射ミラー面１３から走査するレーザ光がバーコードに向かって照射される。
【００６９】
次に、バーコードで反射したレーザ光を戻り光として取り込み、取得されたデータを出力する（ステップＳ４）。具体的には、図４において前述したように、外部のコンピュータ５１等からトリガー信号を受け取ると、受光部４４の光検出器３２が検出した信号を取得して予め定めた閾値を参照して、二値化信号を生成する。さらに、駆動パルスのカウンタ値から一定時間Ｄ１だけ遅らせて、さらに有効走査領域の幅Ａ１，Ａ２を反映させて、復号開始信号を生成する。即ち、復号開始信号は、図１３に示した有効走査領域のタイミングを復号回路５０に知らせるための信号である。
【００７０】
走査制御回路４６から復号回路５０に、復号開始信号と二値化信号が出力される。この位相遅れのパラメータＤ１は、前述したとおり、駆動パルスに対する走査ミラーの応答の遅れを設定するためのものである。具体的には、前述の走査ミラー部分の回動部分の慣性モーメントに対応して設定されたものであって、回動部分の機械設計が決まった段階で決まるパラメータである。この位相遅れの値Ｄ１は、予め適切に調整がなされている。そして、走査ミラーの左スキャン、右スキャンのタイミングに同期した信号が発生して、前述の有効走査領域のタイミングを復号回路に伝えるものである。復号回路は、二値化信号の取り込みのためのバッファ等を有する。
【００７１】
図１４に示したように、データの取り込み・出力（ステップＳ４）処理を行なった後、走査制御回路４６は、操作の終了処理を行なう（ステップＳ５）。ここで終了するか否かの判断を行う（ステップＳ６）、引き続き、読み取りを行う場合には（ＮＯ）、ステップＳ２に戻り、走査開始信号の監視を行う。読み取りを終了する場合は（ＹＥＳ）、リターンをして制御を上位に返す。
【００７２】
図１５に示すフローチャートを参照して、復号回路５０の動作について説明する。  
復号回路５０は、電源を投入した後、パラメータ及びバッファの初期化を行い（ステップＳ１１）、さらに復号開始信号に対応する入カポートの状態を繰り返し取り込み、復号開始信号の状態を監視する（ステップＳ１２）。
【００７３】
次に、復号開始信号がオンされると、オン期間の間、二値化信号の時間変化をバッファに取り込み（ステップＳ１３）、復号開始信号の入力ポートの状態がオフになったか否かを監視する（ステップＳ１４）。ここで、オフになると（ＹＥＳ）、復号処理に移行する（ステップＳ１５）。この復号処理は、バッファに取り込まれた二値化データに対して、復号を試みる。この復号処理は、走査有効領域以外の時間の範囲内程度に完了する。
【００７４】
次に、適正に復号されたか否かを判断し（ステップＳ１６）、適正に復号されたならば（ＹＥＳ）、復号回路はバーコード等の対象物から得られた情報を復号データとして外部のコンピュータ等に出力する（ステップＳ１７）。一方、復号に成功しなかった場合には（ＮＯ）、ステップＳ１１に戻り、その二値化信号を破棄して、データを初期化し、再度ステップＳ１２における復号開始信号を監視する状態に戻る。
【００７５】
以上説明した復号回路５０の動作は、各処理が順次行われるように説明したが、実際には、これらの処理が同時又は並列的に実行することができる。例えば、走査制御回路４６と復号回路５０は、独立した集積回路であって、異なるクロックにより、各回路の処理は独自に並列的に実行される。駆動回路及び光源回路についても同様である。
【００７６】
次に、図１６に示すフローチャートを参照して、図１４に示した走査制御回路４６におけるパラメータの初期設定の動作について詳細に説明する。
【００７７】
まず、左スキャン・右スキャンのための駆動パルス幅について、最小値Ｗ１_min，Ｗ２_min，最大値Ｗ１_max，Ｗ２_max，初期値Ｗ１_ini，Ｗ２_ini等が設定される。さらに、出力ポートも初期化されて回路基板の状態を一意に規定する（ステップＳ２１）。他にも、処理状態の初期設定Status1＝１、位相遅れＤ１の設定、二値化の閾値Ｔｈ１の設定、有効走査領域幅Ａ１，Ａ２の設定、出力ポートの初期化などを行う。
【００７８】
ここで駆動パルス幅Ｗ１，Ｗ２の値は、初期値Ｗ１_ini，Ｗ２_iniに設定される。この駆動パルスの幅は、図６で示したように、駆動コイルの印加電圧のパルス幅に対応している。そして、走査制御回路４６のクロック数等から換算して、駆動パルスの周期Ｌ１やレーザ光の走査の周期が所望の値となるように各パラメータが適正に設定されている。駆動パルス幅の最小値、最大値は、駆動パルスの幅を変動させるとき、その範囲を制限するためのものである。
【００７９】
次に、駆動パルス生成用の変数の設定を行う（ステップＳ２２）。即ち、左エッジ検出フラグＦ１＝０、右エッジ検出フラグＦ２＝０、駆動パルスの出力状態を示すフラグＰ１＝０、駆動パルスのパルス幅等を計るためのカウンタＮ１＝０、さらに初期パルス幅の設定Ｗ１＝Ｗ１_ini、Ｗ２＝Ｗ２_ini等の駆動パルスの生成（図１４に示すステップＳ３）に用いるパラメータが初期状態に設定される（ステップＳ２３）。
【００８０】
その後、データの取り込み・出力（図１４に示すステップＳ４）のためのパラメータとして、データ取得用バッファ等のクリア及びデータ取り込みフラグCap１＝０が初期化される（ステップＳ２３）。さらに、処理状態を示すパラメータStatus１を次の状態に遷移するように番号（Status１→２）を書き換え（ステップＳ２４）、リターンする。
【００８１】
ここで、処理状態を示すパラメータStatus１について説明する。  
図１７に示すように、Status１は、０以上の整数値を取り、値に応じて走査制御回路４６、即ち、光走査モジュールの状態が一意に規定されている。本実施形態においては、１：パラメータの初期化前の状態、２：トリガー信号待ちの状態、３：バーコードの読み取りを実行している状態、４：読み取りの走査を終了した状態、５：予備のパラメータに設定されている。各状態の詳細の一例においては、図１７の説明の項に記載する。勿論、これらの設定に限定されるものではなく、設計や仕様に応じて適宜変更することは可能である。
【００８２】
この例では、図１４に示した各処理ルーチンにおいて、これらのパラメータを確認した後、各処理を実行する。例えば、処理状態Status１＞１とならない限り、パラメータの初期化等が完了していないため、後段の処理には移行せず、誤動作等が防止される。
【００８３】
次に、図１８に示すフローチャートを参照して、図１４に示したステップＳ２における走査開始信号の監視の動作について説明する。  
まず、パラメータStatus１が１を越えた設定値か否かにより処理状態を判断する（ステップＳ３１）。ここで判断した処理状態が１以下であれば（ＮＯ）、まだ初期設定が完了せず、後段の処理への移行は不適切であると判断して、図１４におけるパラメータの初期設定にリターンする。一方、Status１が１を越えた設定値であり、初期設定は完了した状態で後段への移行が適切と判断されたならば（ＹＥＳ）、次に走査制御回路の入力ポートの状態を取得する（ステップＳ３２）。具体的には、電圧レベルが閾値を超えていないか（Ｌｏｗ）、超えているか（Ｈｉｇｈ）を取得して、内部のレジスタ等に保存する。
【００８４】
次に、走査開始信号ＳＥ１の入力ポートの状態がオンか否かを判断する（ステップＳ３３）。入力ポートがオンかオフかは、電圧レベルのＨｉｇｈ、Ｌｏｗに対応しているが、限定されるものではなく、システムの設計により適宜、定義してもよい。ここで、走査開始信号がオン（ＳＥ１＝１）であると判断された場合には（ＹＥＳ）、処理状態を示すパラメータStatus１を後段の状態（Status１＝３）に移行し（ステップＳ３４）、リターンする。一方、走査開始信号がオフである場合は（ＮＯ）、ＳＥ１を０に切り換えた後、終了処理を行う状態（Status１＝４）に移行し（ステップＳ３５）、リターンする。これにより、走査開始信号ＳＥ１を検出している期間のみ、後段の読み取り等の処理状態に移行する。
【００８５】
次に、図１９に示すフローチャートを参照して、図１４に示したステップＳ３２における駆動パルスの処理の動作について説明する。  
まず、処理状態を示すパラメータStatus１を確認する。即ち、パラメータStatus１＞２か否かを判断する（ステップＳ４１）。この判断で、パラメータStatus１＞２であれば（ＹＥＳ）、走査開始信号ＳＥ１を受信し処理状態が適正であると判断して、駆動パルスの生成処理（ステップＳ４２）に移行し、後述する駆動パルスの生成処理後に、リターンする。一方、パラメータStatus１＞２でなければ（ＮＯ）、走査開始信号ＳＥは未受信で処理状態が適正ではないと判断して、駆動パルスを生成することなく、リターンする。
【００８６】
ここで、図２０に示すフローチャート、図６及び図７を参照して、図１９に示したステップＳ４１における駆動パルス生成について説明する。  
駆動パルスの生成にあたり、前述した駆動パルスの周期Ｌ１、左スキャンの駆動パルス幅Ｗ１、右スキャンの駆動パルス幅Ｗ２、タイマ値Ｎ１等に相当するレジスタを予め定義する。これのパラメータは、ステップＳ１において、すでに電気回路４１が起動すると共に初期化されているものとする。
【００８７】
駆動パルスの生成処理は、まず、タイマ値Ｎ１が周期Ｌ１の前半（Ｎ１≧Ｌ１／２）であるか否かを判断する（ステップＳ５１）。この判断でタイマ値Ｎ１が周期Ｌ１の前半であれば（ＹＥＳ）、タイマ値Ｎ１がＬ１／４−Ｗ１／２からＬ１／４＋Ｗ１／２の間にあるか否かを判断する（ステップＳ５２）。
【００８８】
このステップＳ５２の判断において、タイマ値Ｎ１がＬ１／４−Ｗ１／２からＬ１／４＋Ｗ１／２の間にある場合は（ＹＥＳ）、駆動パルスの出力状態を示すパラメータＰ１を左スキャンの状態（Ｐ１＝−１）に設定する（ステップＳ５４）。即ち、タイマ値Ｎが周期の１／４である点を中心としてパルス幅Ｗ１の範囲にある時は、左スキャンパルス生成のための設定を行う。一方、ステップＳ５２の判断において、タイマ値Ｎ１がＬ１／４−Ｗ１／２からＬ１／４＋Ｗ１／２の間にはない場合は（ＮＯ）、駆動パルスの出力状態を示すパラメータＰ１をパルスなしの状態（Ｐ１＝０）に設定する（ステップＳ５５）。
【００８９】
また、ステップＳ５１の判断で、タイマ値Ｎ１が周期Ｌ１の前半ではない、即ち後半であれば（ＮＯ）、タイマ値Ｎ１が３Ｌ１／４−Ｗ２／２から３Ｌ１／４＋Ｗ２／２の間にあるか否かを判断する（ステップＳ５３）。
【００９０】
この判断で、タイマ値Ｎ１が３Ｌ１／４−Ｗ２／２から３Ｌ１／４＋Ｗ２／２の間にある場合には（ＹＥＳ）、駆動パルスの出力状態を示すパラメータＰ１を右スキャンの状態（Ｐ１＝＋１）に設定する（ステップＳ５６）。一方、タイマ値Ｎ１が３Ｌ１／４−Ｗ２／２から３Ｌ１／４＋Ｗ２／２の間にない場合には（ＮＯ）、駆動パルスの出力状態を示すパラメータＰ１を駆動パルスなしの状態（Ｐ１＝０）に設定する（ステップＳ５７）。
【００９１】
即ち、次のようになる。
【００９２】
（１）N1 ≦ L1/2 且つ L1/4-W1/2 ≦ N1 ≦ L1/4+W1/2 →  Ｐ１＝−１  
（２）N1 ≦ L1/2 且つ N1＜ L1/4-W1/2 →  Ｐ１＝０  
（３）N1 ≦ L1/2 且つ N1 ＞ L1/4+W1/2 →  Ｐ１＝０  
（４）N1 ＞ L1/2 且つ 3L1/4-W2/2 ≦ N1 ≦ 3L1/4+W2/2 →  Ｐ１＝１  
（５）N1 ＞ L1/2 且つ N1 ＜ 3L1/4-W2/2→  Ｐ１＝０
（６）N1 ＞ L1/2 且つ N1 ＞ 3L1/4+W2/2 →  Ｐ１＝０  
次に、パラメータＰ１を設定した後、駆動回路４７から駆動部４３に駆動パルスＤＰ１を出力する（ステップＳ５８）。即ち、駆動回路４７は、２つのポートを用いて、図６に示したように、左スキャン（Ｐ１＝−１）の状態と、右スキャン（Ｐ１＝＋１）の状態であれば、それぞれ駆動電圧が反転するように、また、それ以外の状態（Ｐ１＝０）であれば駆動電圧がゼロとなるように駆動信号ＤＲ１を出力する。このように、状態が３つとなるため、電気回路４１上において、２つの出力ポートの状態ＤＲ１に応じて駆動パルスＤＰ１が生成される。
【００９３】
さらに、タイマ値Ｎ１に１を加算した後（ステップＳ５９）、そのタイマ値Ｎ１が周期Ｌ１の時間を越えたか否か判断する（ステップＳ６０）。この判断で、タイマ値Ｎ１が周期Ｌ１の時間に満たない場合には（ＹＥＳ）、そのままリターンし、Ｎ１がＬ１以上であれば（ＮＯ）、タイマ値Ｎ１をクリア（Ｎ１＝０）して（ステップＳ６１）、制御フローを上位のフローチャートにリターンする。
【００９４】
次に、図２１に示すフローチャートを参照して、図１４に示したステップＳ４におけるデータの取り込み・出力の処理について説明する。  
まず、処理状態を示すパラメータStatus１を確認する。即ち、Status１＞２か否かを判断する（ステップＳ７１）。この判断において、Status１＞２でなければ（ＮＯ）、まだ初期化が完了していない状態、又はトリガー信号を受け取っていない状態であり、データは出力しないものと判断し（ＮＯ）、処理を終了して制御を上位にリターンする。一方、Status１＞２である場合は、データの取り込み処理が適正であると判断し（ＹＥＳ）、前述した光検出器３２により生成されたデジタル信号を取得する（ステップＳ７２）。
【００９５】
具体的には、図４に示したように、受光部６から得られた光電流ＰＩ１は、電流／電圧変換や増幅やノイズ処理等が施された後、アナログ／デジタル変換が行われ、１０ビットのデジタル信号ＤＳ１に変換される。１０ビットのデジタル信号は、走査制御回路４６のポートを介して取り込まれる。
【００９６】
次に、前述した図１６に示したステップＳ１の起動時のパラメータの初期設定処理において、二値化の閾値Ｔｈ１が設定されている。１０ビットのデジタル信号ＤＳ１は、適当な補正処理等を経た後、この閾値と大小関係を比較して、二値化処理が行われる（ステップＳ７３）。この二値化信号ＢＩ１は、パラメータとして保持される。この二値化信号ＢＩ１は、前述した駆動パルスＤＰ１の出力に対応していることから、対象物上でレーザ光のスポットを走査したときの反射光の強弱に対応している。
【００９７】
次に、復号開始信号の生成処理を行う（ステップＳ７４）。この生成処理は、タイマ値Ｎ１が有効走査領域Ａ１，Ａ２内に存在する場合には、復号開始信号の状態Ｓ０１を変え、二値化信号ＢＩ１が有効となっている走査領域のタイミングを復号回路５０に知らせるためのものである。具体的には、まず、図１３に示したように、二値化信号のためのタイマ値Ｎ２＝Ｎ１−Ｄ１を定義する。このタイマ値Ｎ２は、前述した駆動パルス用のタイマ値Ｎ１が位相遅れＤ１の値に一致したとき、Ｎ２＝０となるように定義されている。
【００９８】
後述する式において必要があれば、Ｎ２をＮ１−Ｄ１に置き換えればよい。
【００９９】
位相遅れＤ１は、前述した駆動パルスに対する走査ミラー１２の応答の遅れを調整するためのものである。即ち、図１３に示したように、駆動パルスに対して、取得される二値化信号の周期は共通するものの、タイミングずれが生じている。そこで、位相の遅れＤ１を定義しておくことで、そのタイミングずれを内部的に補正するためのパラメータとしている。例えば、周期の１／４の遅れが発生している場合は、位相の遅れＤ１＝（周期Ｌ１）／４として、この値近辺で微調整をすればよい。この値は、製品の出荷時に初期値として与えられている。有効走査領域Ａ１，Ａ２の値も、二値化信号の取り込みの範囲と位置が最適となるように初期値が設定されている。
【０１００】
図１３に示すように、走査有効領域は、タイマ値Ｎ２を基準とすると、周期Ｌ１となっており、周期Ｌ１の１／４倍、３／４倍に相当する位置を中心に、幅Ａ１，Ａ２を有している。従って、タイマ値Ｎ２が、Ｌ１／４−Ａ１／２からＬ１／４＋Ａ１／２までの範囲にある場合はＳＯ１＝１に設定する。
【０１０１】
さらに、タイマ値Ｎ２が、３Ｌ１／４−Ａ２／２から３Ｌ１／４＋Ａ２／２までの範囲にある場合は、ＳＯ１＝１に設定する。それ以外の範囲にある場合は、ＳＯ１＝０とする。即ち、タイマ値Ｎ２が周期Ｌ１の１／４倍の位置を中心とする有効走査領域Ａ１の範囲にある場合には、対象物の左スキャン中であると見なして、復号開始信号をオンにする（ＳＯ１＝１）。
【０１０２】
タイマ値Ｎ２が、Ｌ１／４−Ａ１／２からＬ１／４＋Ａ１／２までの範囲にある場合はＳＯ＝１に設定する。  さらに、タイマ値Ｎ２が、３Ｌ１／４−Ａ２／２から３Ｌ１／４＋Ａ２／２までの範囲にある場合は、ＳＯ１＝１に設定する。それ以外の範囲にある場合は、ＳＯ１＝０とする。即ち、次のようになる。  
（１）L1/4-A1/2 ≦ N2 ≦ L1/4+A1/2 →  ＳＯ１＝１  
（２）3L1/4-A2/2 ≦ N2 ≦ 3L1/4+A2/2 →  ＳＯ１＝１  
（３）N2が上記（１），（２）の範囲以外  →  ＳＯ１＝０
また、タイマ値Ｎ２が周期Ｌ１の３／４倍の位置を中心とする有効走査領域Ａ２の範囲にある場合には、対象物の右スキャン中であると見なして、復号開始信号をオンにする（ＳＯ１＝１）。それ以外の範囲にある場合には、光信号は対象物からのものではないと見なして、復号開始信号をオフにする（ＳＯ１＝０）。前述したように、復号回路５０は、ＳＯ１の状態を監視しており、有効走査領域Ａ１，Ａ２のタイミングに合わせて、二値化信号を取得して後号処理を行う。
【０１０３】
次に、エッジ検出信号の取得処理を行う（ステップＳ７５）。この取得処理においても、前述したタイマ値Ｎ２を参照して、左エッジ検出信号Ｂ１、右エッジ検出信号Ｂ２の取得を行う。具体的には、タイマ値Ｎ２が、Ｌ１／２−Ｂ３／２≦Ｎ２≦Ｌ１／２＋Ｂ３／２の範囲内にあり且つ、前述した二値化信号ＢＩ１がオンしている場合（ＢＩ１＝１）は、左エッジ検出フラグＦ１を＋１にする。また、二値化信号ＢＩ１がオフしている場合には（ＢＩ１＝０）は、左エッジ検出フラグを−１にする。
【０１０４】
ここで、Ｂ３は、サンプル数であって、Ｄ１等よりも小さな値である。初期値としてＢ３＝０と設定されている。この値は、検出の感度を上げたい場合には、変更すればよい。例えば、Ｂ３＝２とすると、左エッジ検出を３回繰り返して実施するため、検出の感度を上げることができる。また、タイマ値Ｍは、Ｌ１を超えた時点で原点０にリセットされ、二値化信号用のタイマ値Ｎ２＝Ｎ１−Ｄ１も同時にリセットされる。尚、説明のため、計算式には、マイナス符号を用いたが、タイマ値Ｎ１は０からＬ１の値の範囲となるようにとる（周期Ｌ１を法とする剰余演算を行う）。
【０１０５】
従って、タイマ値Ｎ１の大小比較をするとき、タイマ値やタイマ値と比較する値が負になったり、Ｌ１を超えたりする場合は、適宜、Ｌ１の整数倍を加除することで、０〜Ｌ１の範囲内となるよう適正化するものとする。また、タイマ値Ｎ２が、−Ｂ３／２から＋Ｂ３／２の範囲内にある場合であって、前述した二値化信号ＢＩ１がオンしている場合（ＢＩ１＝１）は、右エッジ検出フラグＦ２に１を設定する。
【０１０６】
また、二値化信号がオフになっている場合には、右エッジ検出フラグＦ２に−１に設定する。即ち、この処理では、図１３に示すように、タイマ値がエッジ検出信号の領域にある場合は、対応するフラグＦ１，Ｆ２の値を−１又は＋１に設定する。  
各フラグの初期値は０であって、タイマ値がエッジ検出信号の領域内に存在しない場合には、フラグＦ１，Ｆ２の値は変更しない。従って、エッジを検出した時のみ、これらの値を０以外の値に変更する。後述するが、パルス幅Ｗ１，Ｗ２を変更する時には、これらのフラグの値が０以外の値を取ったときのみ変更される。
【０１０７】
図１３において、二値化信号に対して、タイマ値Ｎ２を基準にみると、周期Ｌ１の１／４倍、３／４倍を中心とした領域には有効走査領域Ａ１，Ａ２が存在し、周期Ｌ１の０／４倍、２／４倍を中心とした領域には、エッジ検出信号Ｂ１，Ｂ２が存在していることになる。従って、走査制御回路は、位相遅れＤ１と駆動パルスの周期Ｌ１を基準に、二値化信号ＢＩ１あるいはデジタル信号ＤＩ１を監視することで、対象物からの光信号と走査角の双方を検出して制御することが可能となる。
【０１０８】
次に、復号開始信号・二値化信号の出力処理（ステップＳ７６）に移行する。このステップＳ７６においては、図２に示したように、二値信号である前述したＢＩ１の値と復号開始信号ＳＯ１の値に基づいて、それぞれ、二値化信号と復号開始信号の出力ポートの状態を変更して出力する。上位のルーチンにおいてこの処理が繰り返されると、対象物の輝度信号が、順次、復号回路５０に転送されることになる。このデータの取り込み・出力処理を完了した後、制御フローを上位のフローチャートにリターンする。
【０１０９】
次に、図２２に示すフローチャートを参照して、図１４に示したステップＳ５における駆動パルス出力の終了処理について説明する。  
まず、処理状態を示すパラメータStatus１を監視する（ステップＳ８１）、具体的には、Status１≧４を判断する。前述したステップＳ２における走査開始信号の監視処理のように、走査開始信号は、常時、状態が監視されている。走査開始信号がオンしている間は、Status１＝３に設定されている。従って、Status１≧４の条件を満たしていないため、何も処理がなされずに制御フローを上位のフローチャートにリターンする。
【０１１０】
一方、走査開始信号がオフされると、前述したように、Status１＝４に切り替わったならば（ＹＥＳ）、出力ポートの処理を行う（ステップＳ８２）。この処理は、復号開始信号と二値化信号の出力を初期状態（ＳＯ１＝０、ＢＩ１＝０）に戻して、復号回路の動作を終了させる。
【０１１１】
次に、終了処理に移行する（ステップＳ８３）。この終了処理においては、パラメータの初期化等を行い、必要に応じて信号を出力する。例えば、前述した左エッジ検出信号及び右エッジ検出信号の状態に応じた電気信号を外部のコンピュータ５１に出力する。これにより、外部のコンピュータ５１から光走査モジュール１の走査角が所定の値に達していることをモニタすることができる。例えば、走査角が所定の値に達していない場合、外部のコンピュータ５１の操作により必要なコマンドを送信して、光走査モジュール１における異常の有無を確認することができる。
【０１１２】
次に、処理状態を示すパラメータStatus１を２に戻す。即ち、前述したとおり、トリガー信号ＴＧ１の待ち状態となるように値を戻す（ステップＳ８３）。この後、処理を終了して制御フローを上位のフローチャートにリターンする（ステップＳ８４）。
【０１１３】
以上説明したように、走査ミラー１２の揺動角を検出する専用の検出器（検出コイル等）を搭載しなくても、バーコードからの反射光を受光する光検出器を流用して、走査ミラー１２が所定の角度以上に揺動したことを検出することが可能となる。つまり、走査制御回路４６において、左エッジ検出信号と右エッジ検出信号の双方を検出したか、いずれか一方のみを検出したか、又はどちらも検出しなかったかを判断し、さらには、左エッジ検出信号や右エッジ検出信号のパルス幅がどの程度かなどを求める。これらの結果により、走査ミラー１２の揺動角（走査角）が所定の角度範囲を超えたか否か、どちらに揺動したときに所定の角度範囲を超えたのか、所定の角度範囲をどれだけ超えたのかを検出することが可能となる。
【０１１４】
従って、従来の構成であれば、走査ミラーやその駆動部が所定の角度以上に大きくなると、破損等が発生する虞があるため、機械的にストッパを設けるなどの対応が必要であった。本実施形態においては、走査ミラーの振れ角度（角度範囲）を光学的に検出して、反射散乱面が破損され得る角度を下回るように制御することで容易に信頼性の高い光走査モジュールを実現することができる。角度検出に用いる反射面は出射ミラー面の両側に配置され、それらの位置検出もバーコードを読み取るための光検出器を用いているため、既存の構成部位に対して簡易な加工を施すだけで容易に実現させることができる。
【０１１５】
次に、本願発明の第２の実施形態に係る光学的振幅検出方法及び振幅制御方法を実現する光走査モジュールの概要について説明する。
【０１１６】
図２３に示すように、本実施形態は、前述した第１の実施形態とは、走査の終了処理（ステップＳ９５）の最後のステップが追加された点が異なっている。即ち、図２２においてリターンする前に、駆動パルス幅の調整処理が追加されている。  
即ち、処理状態を示すパラメータStatus１を監視する（ステップＳ８１）。走査開始信号がオフされ、Status１＝４に切り替わったならば（ＹＥＳ）、復号開始信号と二値化信号の出力を初期状態（ＳＯ１＝０、ＢＩ１＝０）に戻して、復号回路の動作を終了させる出力ポートの処理を行う（ステップＳ８２）。次に、パラメータの初期化等を行い、必要に応じて信号を出力する終了処理を行う（ステップＳ８３）。その後、トリガー信号ＴＧ１の待ち状態となるように、処理状態を示すパラメータStatus１を２に戻す（ステップＳ８３）。
【０１１７】
そして、駆動パルス幅の調整処理（ステップＳ９１）が行われ、制御フローを上位のフローチャートにリターンする。
【０１１８】
ここで、図２４に示すフローチャートを参照して、前記ステップＳ９１の駆動パルス幅の調整処理について説明する。  
この駆動パルス幅の調整処理では、左エッジ検出フラグの値Ｆ１（フラグ値Ｆ１とする）、右エッジ検出フラグの値Ｆ２（フラグ値Ｆ２とする）に応じて、駆動パルス幅Ｗ１，Ｗ２の値を変更する。まず、左エッジ検出フラグの値Ｆ１＝−１であるか否かを判断する（ステップＳ１０１）。この判断で、フラグ値Ｆ１＝−１であれば（ＹＥＳ）、Ｗ１の値を（Ｗ１＋（Ｎ３−１）＊Ｗ１_ｍａｘ）／Ｎ３に置き換えて、フラグＦ１＝０に戻し（ステップＳ１０２）、次の右エッジ検出フラグにおけるフラグ値Ｆ２の確認（Ｆ２＝−１）を行う（ステップＳ１０５）。ここで、Ｎ３は、重みのパラメータであり、正の整数値として設定されている。このため、Ｎ３の値が大きい場合には、パルス幅Ｗ１が大きく変化する。即ち、Ｎ３の値を大きくすると、感度（追従性）が高くなる反面、安定性という観点では劣ることになる。このＮ３は、駆動パルス幅が安定して制御できるように予め適正化されている。
【０１１９】
一方、ステップＳ１０１において、フラグ値Ｆ１＝−１には該当しない場合（ＮＯ）、フラグ値Ｆ１＝１か否かを判断する（ステップＳ１０３）。この判断で、フラグ値Ｆ１＝＋１の時には（ＹＥＳ）、Ｗ１の値を（Ｗ１＋（Ｎ３−１）＊Ｗ１_ｍｉｎ）／Ｎ３に置き換えて、フラグ値Ｆ１＝０に戻し（ステップＳ１０４）、右エッジ検出フラグの確認（ステップ１０５）に移行する。一方、Ｆ１＝＋１ではない場合（ＮＯ）、即ち、フラグ値Ｆ１は、１又は−１ではなく、フラグ値Ｆ１＝０となる。このフラグ値Ｆ１＝０の時には、Ｗ１の値は維持されたまま、ステップＳ１０５に移行する。
【０１２０】
前述したＷ１の値の置き換えは、左エッジが検出されなかった場合（Ｆ１＝−１）には、Ｗ１の値は最大値Ｗ１_ｍａｘに近づくことになる。一方、左エッジが検出された場合（Ｆ１＝＋１）には、Ｗ１の値は、最小値Ｗ１_ｍｉｎに近づくことになる。最大値Ｗ１＿ｍａｘやＷ１＿ｍｉｎに近づく速度は、Ｎ３の値に依存するが、このＮ３の値は、予め初期値として最適化されている。さらに、左エッジの検出自体を行っていない場合は（Ｆ１＝０）、パルス幅Ｗ１は変更しない。これと同様の処理が右エッジ検出フラグＦ２に対しても実施される。
【０１２１】
次に、ステップＳ１０５においては、右エッジ検出フラグにおけるフラグ値Ｆ２＝−１であるか否かの判断を行う。
【０１２２】
この判断において、フラグ値Ｆ２＝−１の場合には（ＹＥＳ）、Ｗ２の値を（Ｗ２＋（Ｎ３−１）＊Ｗ２_ｍａＸ）／Ｎ３に置き換えて、フラグ値Ｆ２＝０に戻し（ステップＳ１０６）、走査の終了処理のサブルーチンにリターンする。一方、前記判断において、フラグ値Ｆ２＝−１ではなかった場合には（ＮＯ）、次に、フラグ値Ｆ２＝１か否かを判断する（ステップＳ１０７）。この判断でフラグ値Ｆ２＝１であれば、Ｗ２の値を（Ｗ２＋（Ｎ３−１）＊Ｗ２_ｍｉｎ）／Ｎ３に置き換えて、フラグ値Ｆ２＝０に戻し（ステップＳ１０８）、走査の終了処理のサブルーチンにリターンする。また、フラグ値Ｆ２＝１ではない場合には（ＮＯ）、即ち、フラグ値Ｆ２は、１又は−１ではなく、フラグ値Ｆ２＝０となる。このフラグ値Ｆ２＝０の時には、Ｗ２の値は維持されたまま、走査の終了処理のサブルーチンにリターンする。
【０１２３】
前述したような一連の置き換え処理によって、左エッジが検出された場合は、左スキャンの駆動パルスの幅Ｗ１が最小値Ｗ１_ｍｉｎに近づく。一方、左エッジが検出されなかった場合には、駆動パルスの幅Ｗ１が最大値Ｗ１_ｍａｘに近づく。また、右エッジが検出された場合には、右スキャンの駆動パルスの帽Ｗ２が最小値Ｗ２_ｍｉｎに近づく。一方、右エッジが検出されなかった場合には、駆動パルスの幅Ｗ２が最大値Ｗ２_ｍａｘに近づく。さらに、エッジの検出自体を行っていない場合には、Ｗ１，Ｗ２の値は変更されず、そのまま維持される。
【０１２４】
走査制御回路４６は、図１４のフローチャートに従った制御処理を繰り返し実行する。従って、走査ミラー１２に入射するレーザ光の移動範囲は、反射散乱面１４ａ，１４ｂのエッジの範囲に正確に収束する動作となる。即ち、走査ミラーの走査角の絶対値がハウジングに設けられた光学部品の位置に応じて調整されることとなり、走査ミラー１２の振幅が光学的に正確に制御されることになる。
【０１２５】
走査角の情報という観点からは次のようにいうことができる。すなわち、走査角が所定の範囲を超えているかどうかという機械的な位置（走査角度）の情報（図５Ａ〜５Ｃ）は、反射散乱面１４ａ，１４ｂからの反射光の有無（反射光の時間変化）という形で光学的な情報に変換される。続いて、走査角の情報は、光検出器とアナログ回路を経由することで、走査の両端部におけるアナログ信号の強弱という形で、電気的な情報に変換される（図９、図１１）。さらに、アナログ／デジタル変換回路（図１０、図１２）と前述の判定処理を経由することにより、フラグＦ１，Ｆ２の変化というソフトウェア的な情報に変換される。ここで、フラグＦ１，Ｆ２の変化（時間）は、フラグが変化するタイマ値やパルス幅として取得できる（図１３）。他方、上述したように、駆動周波数（駆動パルスの時間変化、あるいは、走査速度）は設計によって規定されている（図６）。従って、フラグの変化という情報（時間）と駆動周波数（速度）から、走査角・位置（＝時間×速度）を光学的に正確に制御できることになる。
【０１２６】
また、レーザ光の入射位置は、前述したように、回転軸１１を中心に対して出射ミラー面１３のオフセット量と出射ミラー面１３の寸法によって規定されている。その位置関係は、回動動作中であっても、軸受部１０を介して部品位置が規定されることから、角度・位置関係が正確に規定される。従って、従来の検出コイルを用いた構成に比べると、位置関係が正確に規定されることから、走査角は格段に正確に制御できることになる。温度・湿度変化があった場合であっても、機械的な走査角を光学的に制御していることから、環境条件によって生じた変化を打ち消して補正するように機能する。
【０１２７】
さらに、本実施形態では、共振現象を必ずしも用いる必要がない。即ち、駆動周波数は前述したとおり、走査制御回路４６によって生成された駆動パルスの周波数によって制御されている。従って、必要であれば、駆動周波数を変更することも可能である。さらに、前述した走査の終了処理（ステップＳ５）に、動作異常処理を加えてもよい。即ち、駆動パルス幅Ｗ１，Ｗ２が、すでに最大値Ｗ１_ｍａｘ，Ｗ２_ｍａｘ程度であるにもかかわらず、左エッジ検出信号Ｂ１、右エッジ検出信号Ｂ２が取得できない時には、動作異常が生じているものとして、エラー信号を外部のコンピュータ５１に転送して、光源駆動信号ＯＤ１を切り替え、光源部４のレーザ光の出力を停止してもよい。
【０１２８】
このように、本実施形態によれば、走査ミラー１２の揺動角が所定以上揺動したことを検出した場合には、駆動パルスの幅を制御して、走査ミラー１２の揺動角が所定以上揺動しないように制御することが可能となる。さらに、本実施形態によれば、走査ミラー１２の揺動角が所定の値に達しない場合には、駆動パルスの幅を制御して、走査ミラー１２の揺動角が小さくなりすぎないように制御することが可能となる。
【０１２９】
尚、本実施形態では、反射散乱面１４の形成位置を、走査ミラー１２が破損しない程度の回動を検出できるような位置に形成したが、これに限定されない。例えば、走査角度の基準位置からの増加に伴い低下する光検出器３２の受光量が、データ取り込み用として使用できないほど低くなってしまう領域（走査角度）に達することを検出できるような位置に形成してもよい。
【０１３０】
また、本実施形態では、走査ミラー１２を樹脂成型品とし、出射ミラー面１３の周囲に設けた抜き勾配をそのまま反射散乱面１４として利用しているため、走査ミラー１２の成型のし易さ（成型時の良品率の改善）と反射散乱面１４を形成するための工数減・部品点数減を両立できている。
【０１３１】
以上説明した光走査モジュールについては、回転軸１１をハウジング２ａに固定し、軸受部１０を走査ミラー１２と一体化したが、必ずしもこの構成に限定されるものではない。例えば、回転軸１１を走査ミラー１２に固定し、軸受部１０をハウジング２ａに固定しても、走査ミラー１２の位置を正確に規定することができる。
【０１３２】
また、走査ミラー１２の軸受部１０に付勢力を与えてもよい。これにより、走査ミラー１２の位置をより正確に規定することができるため、走査角の精度をより正確に制御することができる。
【０１３３】
また、本実施形態の光走査モジュールは、バーコード等のシンボルマークの読み取りに好適する。例えば、ＪＡＮ、ＥＡＮ、Ｃｏｄｅ３９、Ｃｏｄａｂａｒ、ＩＴＦ等のバーコードの読み取りに好適する。また、前述した復号回路５０に搭載されたソフトウェアを書き換えることで、あらゆる物体検出等に応用が可能である。例えば、自動車、人物等の移動の検出や、防犯・監視装置等を構成することができる。
【０１３４】
また、本発明の光走査モジュールは、あらゆる機器に搭載できる。例えば、無線装置、自動車、船舶、半導体製造装置、自動販売機、カード認識装置、ハンドヘルドバーコード読み取り装置等である。また、本実施形態においては、レーザ光を６５０ｎｍの波長としたが、必ずしもこの限りではない。即ち、４００ｎｍ近辺の光源としてもよいし、８００ｎｍ以上の赤外光を用いてもよい。この場合、前述したバンドパスフィルタやミラーの透過率・反射率等を使用波長に応じて変えればよい。この構成により、監視センサや、赤外用の特殊インクを用いた印刷物を自動認識する等の応用が可能となる。
【０１３５】
また、本発明の光走査モジュールによれば、従来から用いていた検出コイルやその検出回路等が不要である。従って、従来の構成に比べて、より小型の光走査モジュールを構成することができる。従って、携帯情報端末装置、携帯電話等、バッテリー駆動タイプの機器への搭載に好適する。
【０１３６】
さらに、本発明の光走査モジュールによれば、光走査モジュールの走査角を、より正確に検出して制御できる。従って、温度・湿度が変動する屋外環境での使用に好適する。例えば、宅配業、運送業や、屋外での営業活動で用いる情報機器への搭載に好適する。
【０１３７】
以上説明したように、走査対象物の輝度信号の取得に用いられている光検出器を、走査ミラーの走査角の検出にも応用し、その光検出器からの出力に基づいて、走査ミラーの走査角を検出することが可能となる。そして、走査範囲（走査角）を検出するための検出コイル等の部品を新たに設ける必要がなくなり、部品点数の増加を防止することができる。
【０１３８】
さらに、走査ミラーの走査角を、従来のような検出コイル等を用いた走査速度等の間接的な物理量ではなく、走査ミラーの揺動角の絶対位置を光学的に検出しているため、走査角・揺動角のばらつきや時間変動・経時変化を低減できる。これにより、温度・湿度等の環境変化の影響を受けにくくなる。
【０１３９】
以上説明した光学的振幅検出方法及び振幅制御方法は、以下の発明を含んでいる。  
（１）光源部から発せられたレーザ光を走査対象に向けて反射させる第１の反射面を有する出射ミラー部と、出射ミラー部を揺動させるミラー駆動部と、走査対象からの反射光を集光させ、かつ反射させる第２の反射面を有する戻りミラー部と、戻りミラー部で集光及び反射させられた走査対象からの反射光を受光する受光部と、出射ミラー部が所定の角度を超える揺動角に達した際に、光源部からのレーザ光が照射される位置に形成される第３の反射面と、を有する光学的走査装置における出射ミラーの揺動角検出方法において、光源からレーザ光を発光させるステップ１と、ミラー駆動部に駆動パルスを与えて出射ミラー部を揺動させるステップ２と、走査対象からの反射光を受光するステップ３と、受光した反射光量に基づき、デジタル信号を得るステップ４と、得られたデジタル信号の中から、出射ミラー部の揺動角を検出するための領域（揺動角検出領域）を抽出するステップ５と、揺動角検出領域から、第３の反射面からの反射光に対応する情報の有無を検出するステップ６と、を有することを特徴とする出射ミラーの揺動角検出方法。  
（２）前記ステップ５の揺動角検出領域が、出射ミラーの揺動角が所定以上の光量落ちが発生する角度に達している範囲に設けられていることを特徴とする（１）項に記載の出射ミラー揺動角検出方法。
【０１４０】
（３）前記ステップ５の揺動角検出領域が、有効走査領域以外の領域であることを特徴とする請求項１記載の出射ミラー揺動角検出方法。
【０１４１】
（４）前記ステップ５において、揺動角検出領域から、第３の反射面からの反射光に相当する信号を検出しないとき、出射ミラー部の揺動角を増加させるように駆動パルスを切り替えることを特徴とする揺動角制御方法。
【０１４２】
（５）前記ステップ５において、揺動角検出領域から、第３の反射面からの反射光に相当する信号を検出したとき、出射ミラー部の揺動角を減少させるように駆動パルスを切り替えることを特徴とする揺動角制御方法。
【０１４３】
（６）前記（４）項及び（５）項に記載の揺動角制御方法において、駆動パルスの期間あるいは駆動電圧を変化させることで、駆動パルスを切り替えることを特徴とする揺動角制御方法。
【図面の簡単な説明】
【０１４４】
【図１Ａ】図１Ａは、本発明の第１の実施形態に係る光学的振幅検出方法及び振幅制御方法を実現する光走査モジュールの内部構成例を示す図である。
【図１Ｂ】図１Ｂは、本発明の第１の実施形態に係る光学的振幅検出方法及び振幅制御方法を実現する光走査モジュールの外観構成例を示す図である。
【図２】図２は、図１に示す光走査モジュールにおける光学部品を抜粋して示す図である。
【図３Ａ】図３Ａは、実施形態における走査ミラーを斜め前方から見た外観図である。
【図３Ｂ】図３Ｂは、実施形態における走査ミラーを斜め後から見た外観図である。
【図３Ｃ】図３Ｃは、実施形態における走査ミラーを正面から見た外観図である。
【図３Ｄ】図３Ｄは、実施形態における走査ミラーの駆動部を上面から見た外観図である。
【図４】図４は、実施形態における制御系のブロック構成を示す図である。
【図５Ａ】図５Ａは、走査ミラーによる左スキャンと右スキャンについて説明するための図である。
【図５Ｂ】図５Ｂは、走査ミラーの左スキャン状態を概念的に示す図である。
【図５Ｃ】図５Ｃは、走査ミラーの右スキャン状態を概念的に示す図である。
【図６】図６は、定常状態における駆動コイルの印加電圧における時間変化を示す図である。
【図７Ａ】図７Ａ（ａ）乃至７Ａ（ｅ）は、所定範囲内にある時の走査ミラーの走査角に対応するレーザ光の入射位置の変化の状態を示す図である。
【図７Ｂ】図７Ｂ（ａ）乃至図７Ｂ（ｅ）は、所定範囲を越えた時の走査ミラーの走査角に対応するレーザ光の入射位置の変化を示す図である。
【図８】図８は、定常状態における走査ミラーの走査角の時間変化を示す図である。
【図９】図９は、定常状態における受光する光量の時間変化を示す図である。
【図１０】図１０は、検出された二値化信号における有効走査領域を概念的に示す図である。
【図１１】図１１は、走査ミラーの走査角が所定範囲を越えた時の受光する光量の時間変化を示す図である。
【図１２】図１２は、走査ミラーの走査角が所定範囲を越えた時に得られる有効走査領域及び走査角検出信号を概念的に示す図である。
【図１３】図１３は、駆動パルスとデジタル信号のタイミングと位相の遅れを概念的に示すタイミングチャートである。
【図１４】図１４は、走査制御回路の動作について説明するためのフローチャートである。
【図１５】図１５は、復号回路の動作について説明するためのフローチャートである。
【図１６】図１６は、走査制御回路におけるパラメータの初期設定の動作について説明するためのフローチャートである。
【図１７】図１７は、処理状態を示すパラメータStatus１について説明するための図である。
【図１８】図１８は、図１４に示したステップＳ２における走査開始信号の監視の動作について説明するためのフローチャートである。
【図１９】図１９は、図１４に示したステップＳ３２における駆動パルスの処理の動作について説明するためのフローチャートである。
【図２０】図２０は、図１９に示したステップＳ４１における駆動パルス生成について説明するためのフローチャートである。
【図２１】図２１は、図１４に示したステップＳ４におけるデータの取り込み・出力の処理について説明するためのフローチャートである。
【図２２】図２２は、図１４に示したステップＳ５における駆動パルス出力の終了処理について説明するためのフローチャートである。
【図２３】図２３は、本発明の第２の実施形態に係る光学的振幅検出方法及び振幅制御方法を実現するフローチャートである。
【図２４】図２４は、図２３に示したステップＳ９１の駆動パルス幅の調整処理について説明するためのフローチャートである。
【符号の説明】
【０１４５】
１…光走査モジュール、２…ハウジング、３…駆動部、４…光源部、５…折り返しミラー部、６…受光部、１０…軸受部、１１…回転軸、１２…走査ミラー、１２ａ…集光ミラー面（戻りミラー部）、１３…出射ミラー面（出射ミラー部）、１４，１４ａ，１４ｂ…反射散乱面、２３…半導体レーザ素子、２４…コリメータレンズ、２５…折り返しミラー、２６…出射開口部、３２…光検出器。
【図１Ａ】
2010061029.tif 000003
【図１Ｂ】
2010061029.tif 000004
【図２】
2010061029.tif 000005
【図３Ａ】
2010061029.tif 000006
【図３Ｂ】
2010061029.tif 000007
【図３Ｃ】
2010061029.tif 000008
【図３Ｄ】
2010061029.tif 000009
【図４】
2010061029.tif 000010
【図５Ａ】
2010061029.tif 000011
【図５Ｂ】
2010061029.tif 000012
【図５Ｃ】
2010061029.tif 000013
【図６】
2010061029.tif 000014
【図７Ａ】
2010061029.tif 000015
【図７Ｂ】
2010061029.tif 000016
【図８】
2010061029.tif 000017
【図９】
2010061029.tif 000018
【図１０】
2010061029.tif 000019
【図１１】
2010061029.tif 000020
【図１２】
2010061029.tif 000021
【図１３】
2010061029.tif 000022
【図１４】
2010061029.tif 000023
【図１５】
2010061029.tif 000024
【図１６】
2010061029.tif 000025
【図１７】
2010061029.tif 000026
【図１８】
2010061029.tif 000027
【図１９】
2010061029.tif 000028
【図２０】
2010061029.tif 000029
【図２１】
2010061029.tif 000030
【図２２】
2010061029.tif 000031
【図２３】
2010061029.tif 000032
【図２４】
2010061029.tif 000033