(57)【特許請求の範囲】
【請求項１】
バーコード読取装置であって、
バーコードからの反射光を受光し、受光信号を生成する受光手段と、
前記受光信号と、前記バーコード読取装置の動作電圧の上限値及び下限値の中間電圧である基準電圧と、を比較し、前記基準電圧以上の前記受光信号の波形を積分することにより第１の積分値を算出し、前記基準電圧未満の前記受光信号の波形を積分することにより第２の積分値を算出する積分値算出手段と、
前記第１の積分値と前記第２の積分値との和に基づいて、前記受光信号のゲインを調整するゲイン調整手段と、
前記第１の積分値と前記第２の積分値との差に基づいて、前記受光信号のオフセット電圧を調整するオフセット調整手段と、
を備えるバーコード読取装置。
【請求項２】
前記ゲイン調整手段は、アンプと帰還抵抗とを有する負帰還回路を含み、
前記帰還抵抗は、前記第１の積分値及び前記第２の積分値の和に基づく電圧が入力され、入力される電圧に応じて抵抗値が変化する第１の電圧抵抗変換回路であり、
前記アンプのゲインは、前記第１の電圧抵抗変換回路の抵抗値に基づいて変化する請求項１に記載のバーコード読取装置。
【請求項３】
前記オフセット調整手段は、
一端が第１の電源電圧に接続された抵抗素子と、
一端が第２の電源電圧に接続され、他端が前記抵抗素子の他端に接続され、前記第１の積分値と前記第２の積分値との差に基づく電圧が入力され、入力される電圧に応じて抵抗値が変化する第２の電圧抵抗変換回路と、を有し、
前記オフセット調整手段は、前記第１の積分値と前記第２の積分値との差に基づくバイアス電圧を生成し、前記バイアス電圧を用いて前記受光信号のオフセット電圧を変化させる請求項１または２に記載のバーコード読取装置。  
【請求項４】
バーコード読取装置の制御方法であって、
バーコードからの反射光を受光し、受光信号を生成するステップと、
前記受光信号と、前記バーコード読取装置の動作電圧の上限値及び下限値の中間電圧である基準電圧と、を比較し、前記基準電圧以上の前記受光信号の波形を積分することにより第１の積分値を算出するステップと、
前記基準電圧未満の前記受光信号の波形を積分することにより第２の積分値を算出するステップと、
前記第１の積分値と前記第２の積分値との和に基づいて、前記受光信号のゲインを調整するステップと、
前記第１の積分値と前記第２の積分値との差に基づいて、前記受光信号のオフセット電圧を調整するステップと、
を備えるバーコード読取装置の制御方法。
【請求項５】
バーコード読取装置を制御するためのプログラムであって、
コンピュータに、
受光部にバーコードからの反射光を受光させ、受光信号を生成させるステップと、
前記受光信号と、前記バーコード読取装置の動作電圧の上限値及び下限値の中間電圧である基準電圧と、を比較させ、前記基準電圧以上の前記受光信号の波形を積分することにより第１の積分値を算出させるステップと、
前記基準電圧未満の前記受光信号の波形を積分することにより第２の積分値を算出させるステップと、
前記第１の積分値と前記第２の積分値との和に基づいて、前記受光信号のゲインを調整させるステップと、
前記第１の積分値と前記第２の積分値との差に基づいて、前記受光信号のオフセット電圧を調整させるステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はバーコード読取装置、バーコード読取装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
商品コードの識別などにバーコードが用いられている。バーコード読取装置は、光源から出射した光をバーコード上に投光し、受光素子を用いてバーコードからの反射光を受光する。そして、バーコード読取装置は、受光した反射光を電気信号に変換し、当該電気信号に基づいてバーコードシンボルの配置を読み取る。これにより、バーコード読取装置は、バーコードで表示されている情報を読み取る。
【０００３】
バーコード読取装置には読取速度や読取精度の向上が要求されており、様々な提案がなされている。例えば、特許文献１には、バーコード読取装置を構成するアナログ素子のばらつきによらず、正確にバーコードを読み取ることができる利得制御方法が開示されている。また、特許文献２には、バーコードの背景環境に影響されることなくバーコードを正確に読み取ることができるバーコード読取装置が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２３２２４５号公報
【特許文献２】特開２００９−２５９０５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、バーコードの欠陥や、読取時におけるバーコード読取装置の不適切な姿勢等の影響によって、バーコードからの反射光が電気信号に変換された時に、電気信号の振幅が小さくなってしまう場合がある。このため、バーコード読取装置は、バーコードを正しく読み取ることが出来ず、読み取り失敗となってしまうという問題があった。
【０００６】
本発明は、このような問題を解決するためになされたものであり、バーコードの読み取り精度を向上させることができるバーコード読取装置、バーコード読取装置の制御方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明にかかるバーコード読取装置は、バーコードからの反射光を受光し、受光信号を生成する受光手段と、前記受光信号と予め設定された基準電圧と比較し、前記基準電圧以上の前記受光信号の波形を積分することにより第１の積分値を算出し、前記基準電圧未満の前記受光信号の波形を積分することにより第２の積分値を算出する積分値算出手段と、前記第１の積分値と前記第２の積分値との和に基づいて、前記受光信号のゲインを調整するゲイン調整手段と、を備えるものである。
【０００８】
本発明にかかるバーコード読取装置の制御方法は、バーコードからの反射光を受光し、受光信号を生成するステップと、前記受光信号と予め設定された基準電圧と比較し、前記基準電圧以上の前記受光信号の波形を積分することにより第１の積分値を算出するステップと、前記基準電圧未満の前記受光信号の波形を積分することにより第２の積分値を算出するステップと、前記第１の積分値と前記第２の積分値との和に基づいて、前記受光信号のゲインを調整するステップと、を備えるものである。
【０００９】
本発明にかかるプログラムは、コンピュータに、受光部にバーコードからの反射光を受光させ、受光信号を生成させるステップと、前記受光信号と予め設定された基準電圧と比較させ、前記基準電圧以上の前記受光信号の波形を積分することにより第１の積分値を算出させるステップと、前記基準電圧未満の前記受光信号の波形を積分することにより第２の積分値を算出させるステップと、前記第１の積分値と前記第２の積分値との和に基づいて、前記受光信号のゲインを調整させるステップと、を実行させるものである。
【発明の効果】
【００１０】
本発明により、バーコードの読み取り精度を向上させることができるバーコード読取装置、バーコード読取装置の制御方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態にかかるバーコード読取装置のブロック図である。
【図２】実施の形態にかかる積分値算出部のブロック図である。
【図３】実施の形態にかかる調整部のブロック図である。
【図４】実施の形態にかかるバーコード読取装置の動作を示すフローチャートである。
【図５】実施の形態にかかるバーコード読取装置の動作を説明するための図である。
【図６】実施の形態にかかるバーコード読取装置の動作を説明するための図である。
【図７】比較例にかかるバーコード読取装置の図である。
【図８】実施の形態にかかるバーコード読取装置のブロック図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施の形態について説明する。
図１に、本実施の形態にかかるバーコード読取装置１のブロック図を示す。バーコード読取装置１は、バーコードラベル９０に記載されたバーコードの情報を読み取る。ここで、バーコードとは、縞模様状の線の太さによって数値や文字などを示す識別子である。
【００１３】
＜バーコード読取装置１の構成＞
バーコード読取装置１は、投光用ＬＥＤ（Light Emitting Diode）１１と、受光レンズ１２と、ＣＣＤ（Charge Coupled Device）１３と、アンプ１４と、調整回路１５と、ＣＰＵ(Central Processing Unit)１６と、を備える。
【００１４】
投光用ＬＥＤ１１は、発光素子であり、バーコードラベル９０に対して光を照射する。受光レンズ１２は、バーコードラベル９０からの反射光を集光する。ＣＣＤ１３は、受光レンズ１２によって集光された反射光を受光し、電気信号（受光信号）を生成する受光素子である。ＣＣＤ１３は、受光した光を受光信号に変換し、アンプ１４に出力する。アンプ１４は、受光信号を増幅し、調整回路１５に出力する。
【００１５】
調整回路１５は、積分値算出部１５１と、調整部１５２と、を備える。積分値算出部１５１は、増幅された受光信号に基づいて、受光信号の振幅の大きさや、受光信号の振幅の中心と基準電圧との差を検出する。ここで、基準電圧とは、バーコード読取装置１の動作電圧の中間電圧である。つまり、基準電圧とは、最小動作電圧を０Ｖとすると、最大動作電圧の１／２（５０％）の電圧を意味する。また、調整部１５２は、検出した振幅の大きさや振幅の中心と基準電圧との差に基づいて、受光信号のゲインとオフセット電圧とを調整する。なお、調整回路１５の詳細な構成及び動作については後述する。
【００１６】
ＣＰＵ１６は、バーコード読取装置１の各部の制御を行う中央制御装置である。ＣＰＵ１６は、Ａ／Ｄコンバータ１６１と、メモリ１６２と、ＧＰＩＯ（General Purpose Input/Output）１６３と、を備える。
【００１７】
Ａ／Ｄコンバータ１６１は、調整回路１５から出力されたアナログ信号（ゲイン及びオフセットの調整後の受光信号）をデジタル信号に変換する。なお、デコード処理については、バーコード読取技術においては公知の技術であるため、詳細な説明は省略する。Ａ／Ｄコンバータ１６１は、デジタル化したデータをメモリ１６２に格納する。メモリ１６２は、例えば、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等の記憶装置である。ＧＰＩＯ１６３は、汎用入出力部である。ＣＰＵ１６は、ＧＰＩＯ１６３を介してＣＬＫ信号や制御信号を調整回路１５に出力する。また、ＣＰＵ１６は、ＧＰＩＯ１６３を介して投光用ＬＥＤ１１を発光させるための制御信号を出力する。
【００１８】
＜調整回路１５の詳細構成＞
ここで、調整回路１５の詳細な構成について説明する。図２及び図３は、調整回路１５のブロック図である。図２は、積分値算出部１５１のブロック図である。図３は、調整部１５２のブロック図である。
【００１９】
まず、図２を参照して積分値算出部１５１の構成について説明する。積分値算出部１５１は、Ａ／Ｄコンバータ２０１と、コンパレータ２０２と、加算回路２０３〜２０５と、減算回路２０６と、ＡＮＤ回路２０７、２０８と、ＮＯＴ回路２０９と、を備える。なお、図２に記載された「アナログ信号」とは、図１に示したアンプ１４の出力信号（つまり、アンプ１４において増幅された受光信号）である。
【００２０】
Ａ／Ｄコンバータ２０１には、アナログ信号が入力される。Ａ／Ｄコンバータ２０１は、ＣＰＵ１６から出力されるＣＬＫ信号のタイミングに同期して、入力されたアナログ信号をデジタル変換し、デジタルデータとしてバスに出力する。つまり、Ａ／Ｄコンバータ２０１は、デジタルデータを加算回路２０３、２０４に出力する。なお、図２及び図３において、データバスを８、１１、１２ビットデータバスとしているが、ビット数は、これらに限られるものではない。
【００２１】
コンパレータ２０２のプラス端子には、アナログ信号が入力される。一方、コンパレータ２０２のマイナス端子側には、基準電圧が入力される。基準電圧とは、上記の通り、最大動作電圧の５０％の値とする。本実施の形態においては、最大動作電圧を３．０Ｖ、基準電圧を１．５Ｖとする。コンパレータ２０２は、入力されたアナログ信号と基準電圧とを比較し、比較結果に応じた出力信号をＡＮＤ回路２０７及びＮＯＴ回路２０９に出力する。例えば、コンパレータ２０２は、基準電圧よりもアナログ信号が大きい場合、Ｈ（Ｈｉｇｈ）レベルの信号を出力し、基準電圧よりもアナログ信号が小さい場合、Ｌ（Ｌｏｗ）レベルの信号を出力する。
【００２２】
加算回路２０３、２０４は、入力されたデジタルデータ（アナログ信号が離散化されたデータ）の値を加算する。なお、加算回路は公知の回路であるので、詳細な説明は省略する。加算回路２０３、２０４を動作させるための加算タイミング信号は、Ａ／Ｄコンバータ２０１を動作させるためのＣＬＫ信号とコンパレータ２０２の出力信号の論理積で生成される。
【００２３】
加算回路２０３は、コンパレータ２０２の出力がＨレベルで、ＣＬＫ信号が立ち上がったときに加算動作を行う。このとき、コンパレータ２０２の出力がＨレベルの場合とは、コンパレータ２０２のプラス端子に入力されたアナログ信号の電圧値が、コンパレータ２０２のマイナス端子に入力された基準電圧より高い場合である。言い換えると、加算回路２０３は、基準電圧である１．５Ｖよりも高い電圧（１．５Ｖ〜３．０Ｖ）の波形がアナログ信号としてコンパレータ２０２に出力されている間のみ、Ａ／Ｄコンバータ２０１からの値を加算する。このため、加算回路２０３に格納されている値は、アナログ信号が基準電圧より高い電圧である場合において、Ａ／Ｄ変換されたデータの和となる。つまり、加算回路２０３は、基準電圧よりも高い電圧のアナログ信号波形の積分値（面積）を算出する。加算回路２０３により算出された積分値は第１の積分値である。
【００２４】
加算回路２０４は、コンパレータ２０２の出力がＬレベルで、ＣＬＫ信号が立ち上がったときに加算動作を行う。このとき、コンパレータ２０２の出力がＬレベルの場合とは、コンパレータ２０２のプラス端子に入力されたアナログ信号の電圧値が、コンパレータ２０２のマイナス端子に入力された基準電圧より低い場合である。言い換えると、加算回路２０４は、基準電圧である１．５Ｖよりも低い電圧（０Ｖ〜１．５Ｖ）の波形がアナログ信号としてコンパレータ２０２に出力されている間のみ、Ａ／Ｄコンバータ２０１からの値を加算する。このため、加算回路２０４に格納される値は、アナログ信号が基準電圧より低い電圧である場合において、Ａ／Ｄ変換されたデータの和となる。つまり、加算回路２０４は、基準電圧よりも低い電圧のアナログ信号波形の積分値（面積）を算出する。加算回路２０４により算出された積分値は第２の積分値である。
【００２５】
加算回路２０３、２０４は、加算したデータを加算回路２０５及び減算回路２０６に出力する。加算回路２０３、２０４は、ＣＣＤ１３によるスキャン前、もしくは、スキャン後（調整回路１５の演算終了後）に、ＣＰＵ１６から出力されるクリア信号によってクリアされる。これにより、加算回路２０３、２０４に格納された値（積分値）が０にリセットされる。
【００２６】
加算回路２０５は、加算回路２０３の加算結果と加算回路２０４の加算結果とを加算する。このとき、加算回路２０３の加算結果は、基準電圧よりも電圧が大きいアナログ信号の振幅の総和（第１の積分値）である。加算回路２０４の加算結果は、基準電圧よりも電圧が小さいアナログ電圧の振幅の総和（第２の積分値）である。つまり、加算回路２０５の加算結果は、アナログ信号の振幅（基準電圧に対する振幅）の総和である。
【００２７】
加算回路２０５の出力は、ＣＰＵ１６から出力されるラッチ信号によってラッチされて出力される。加算回路２０５の出力である加算データ出力は、読み取ったバーコード信号波形（アナログ信号波形）の大きさを示す信号である。加算データ出力は、バーコード信号波形の大きさが大であれば大きくなり、小であれば小さくなる。
【００２８】
また、減算回路２０６は、加算回路２０３の加算結果から加算回路２０４の加算結果を減算して出力する。減算回路２０６の出力は、ＣＰＵ１６から出力されるラッチ信号によってラッチされて出力される。減算回路２０６の出力である減算データ出力は、読み取ったバーコード信号波形の中心が、どの程度ずれているかを示す信号である。減算データ出力は、ずれが大であれば大きくなり、ずれが小であれば小さくなり、上にずれていれば正の値となり、下にずれていれば負の値となる。
【００２９】
ＡＮＤ回路２０７には、コンパレータ２０２の出力信号とＣＬＫ信号とが入力される。ＡＮＤ回路２０７は、コンパレータ２０２の出力信号及びＣＬＫ信号のレベルに応じたレベル（ＨレベルまたはＬレベル）の信号を加算回路２０３に出力する。ＡＮＤ回路２０８には、ＮＯＴ回路２０９を介してコンパレータ２０２の出力信号が入力される。また、ＡＮＤ回路２０８には、ＣＬＫ信号が入力される。ＡＮＤ回路２０８は、ＮＯＴ回路２０９の出力信号及びＣＬＫ信号に応じたレベル（ＨレベルまたはＬレベル）の信号を加算回路２０４に出力する。
【００３０】
次に、図３を参照して調整部１５２の構成について説明する。調整部１５２は、比較回路３０３、３０４と、電圧・抵抗変換回路３０５、３０６と、アンプ３０７と、抵抗３０８、３０９と、コンデンサ３１０と、カップリングコンデンサ３１１と、を備える。
【００３１】
ＣＰＵ１６から出力されるラッチ信号によって、加算回路２０５と減算回路２０６の出力がラッチされた後、比較回路３０３、３０４は、例えば、演算可能な素子を用いて構成されており、ＣＰＵ１６から出力されるコンペア信号を受け、以下のように動作する。
比較回路３０３は、加算回路２０５の出力（電圧値）に対応する、ゲインを制御する電圧・抵抗変換回路３０５（第１の電圧・抵抗変換回路）への出力（電圧値）を予め定めた対応表を有し、加算回路２０５の出力（電圧値）に応じて、電圧・抵抗変換回路３０５（第１の電圧・抵抗変換回路）へ電圧値を出力する。加算回路２０５の出力（電圧値）が大きすぎる場合、電圧・抵抗変換回路３０５の抵抗値を小さくする電圧値が出力され、加算回路２０５の出力（電圧値）が小さすぎる場合、電圧・抵抗変換回路３０５の抵抗値を大きくする電圧値が出力される。
【００３２】
比較回路３０４は、減算回路２０６の出力（電圧値）に対応する、オフセット電圧を制御する電圧・抵抗変換回路３０６（第２の電圧・抵抗変換回路）への出力（電圧値）を予め定めた対応表を有し、電圧・抵抗変換回路３０６（第２の電圧・抵抗変換回路）へ電圧値を出力する。減算回路２０６の出力（電圧値）が正の値の場合は、電圧・抵抗変換回路３０６の抵抗値を正の値に応じて小さくする電圧値が出力され、減算回路２０６の出力（電圧値）が負の値の場合は、電圧・抵抗変換回路３０６の抵抗値を負の値に応じて大きくする電圧値が出力される。減算回路２０６の出力（電圧値）が正の値の場合でも、また、負の値の場合でも、減算回路２０６の出力（電圧値）が"０"に近くなるように、電圧・抵抗変換回路３０６の抵抗値が調整される。
なお、バーコードには、前後にクワイエットゾーンが存在するので、オフセット電圧については、その分を考慮して調整を行うように、電圧・抵抗変換回路３０６を設定する必要がある。なお、クワイエットゾーンとは、バーパターンの前後の空白部分である。
【００３３】
電圧・抵抗変換回路３０５、３０６は、入力された電圧値に応じた抵抗値を有する抵抗として動作する。つまり、電圧・抵抗変換回路３０５、３０６の抵抗値は、入力電圧に比例する。電圧・抵抗変換回路３０５、３０６は、例えばポテンショメータ（可変抵抗器）である。電圧・抵抗変換回路３０５の一端は、抵抗３０８を介してグランドに接続される。また、電圧・抵抗変換回路３０５の一端は、アンプ３０７のマイナス側端子に接続される。電圧・抵抗変換回路３０５の他端は、アンプ３０７の出力端子に接続される。抵抗３０８の一端は、電圧・抵抗変換回路３０５及びアンプ３０７のマイナス側端子に共通接続される。抵抗３０８の他端は、コンデンサ３１０を介して、グランドに接続される。すなわち、電圧・抵抗変換回路３０５、アンプ３０７、及び抵抗３０８は、非反転増幅回路を構成し、ゲイン調整手段として機能する。電圧・抵抗変換回路３０５は、アンプ３０７の帰還抵抗である。したがって、アンプ３０７のゲインは、電圧・抵抗変換回路３０５の抵抗値と抵抗３０８の抵抗値との比に応じて変化する。なお、抵抗３０８の抵抗値は固定値である。
【００３４】
電圧・抵抗変換回路３０６の一端は、アンプ３０７のプラス側端子に接続される。また、電圧・抵抗変換回路３０６の一端は、カップリングコンデンサ３１１に接続される。電圧・抵抗変換回路３０６の他端は、グランドに接続される。抵抗３０９の一端は、電源電圧Ｖｃｃに接続される。抵抗３０９の他端は、電圧・抵抗変換回路３０６のプラス側端子に接続される。また、抵抗３０９の他端は、カップリングコンデンサ３１１に接続される。つまり、電圧・抵抗変換回路３０６及び抵抗３０９は、バイアス回路を構成し、オフセット調整手段として機能する。バイアス回路は、カップリングコンデンサ３１１からの入力信号に対してバイアスをかけて、アンプ３０７に出力する。なお、図３において、Ｖｃｃは動作電圧の上限値（第１の電源電圧。３．０Ｖ）であり、グランドは動作電圧の下限値（第２の電源電圧。０Ｖ）である。
【００３５】
＜調整回路１５の動作＞
続いて、調整回路１５の動作について、図４に示すフローチャートを参照して説明する。まず、積分値算出部１５１は、前回の計算結果をクリアする（ステップＳ１０１）。つまり、ＣＰＵ１６は、クリア信号を出力することにより、加算回路２０３、２０４に格納されている加算結果を０にする。
【００３６】
次に、コンパレータ２０２は、アナログ信号（増幅された受光信号）の電圧値を確認する（ステップＳ１０２）。具体的には、コンパレータ２０２は、アナログ信号の電圧値と基準電圧とを比較する。アナログ信号の電圧値が基準電圧以上である場合（ステップＳ１０３：Ｙｅｓ）、加算回路２０３は、基準電圧以上のデータを加算する（ステップＳ１０４）。一方、アナログ信号の電圧値が基準電圧未満である場合（ステップＳ１０３：Ｎｏ）、加算回路２０４は、基準電圧未満のデータを加算する（ステップＳ１０５）。
【００３７】
ＣＰＵ１６は、全データを処理したか否かを判定する（ステップＳ１０６）。全データが処理されている場合（ステップＳ１０６：Ｙｅｓ）、ステップ１０７以降の処理へ進む。一方、全データが処理されていない場合（ステップＳ１０６：Ｎｏ）、ステップＳ１０２の処理に戻る。
【００３８】
このとき、全データとは、バーコード読取装置１が１回スキャンを行い、それに伴ってＣＣＤ１３から出力された信号をＡ／Ｄコンバータ２０１がＡ／Ｄ変換したデータの全てを意味する。また、全データが処理されているか否かの判断は、Ａ／Ｄコンバータ２０１に入力されたＣＬＫ信号の値に基づいて判断される。例えば、バーコード読取装置１の１回分のスキャンにおいて生成された出力データに対して、ＣＬＫ＝１のＣＬＫ信号を用いてＡ／Ｄ変換が行われた場合、ＣＰＵ１６は、１回の加算処理が行われたときに全データが処理されたと判断する。また、ＣＬＫ＝１００のＣＬＫ信号を用いてＡ／Ｄ変換が行われた場合、ＣＰＵ１６は、１００回の加算処理が行われたときに全データが処理されたと判断する。
【００３９】
次に、加算回路２０５は、基準電圧以上のデータの和と基準電圧未満のデータの和を加算する（ステップＳ１０７）。つまり、加算回路２０５は、加算回路２０３、２０４の出力の合計を算出する。加算回路２０５は、加算結果を加算データ出力として、比較回路３０３に出力する。
【００４０】
ここで、図５を用いて加算回路２０５の動作を説明する。図５は、アナログ信号の波形である。具体的には、図５は、バーコードリーダが正しく読み取ることが出来ない信号の波形を示す。図５は、信号の振幅が小さすぎるため、ノイズ等の影響が大となり、正しくデコードすることができない状態の波形を示す。横軸は時間を示す。つまり、横軸は、ＣＣＤ１３がバーコードを走査した時間を示す。縦軸は信号レベル（Ｖ）を示す。このとき、バーコードの黒い領域は照射された光を吸収するため、反射光の強度が弱くなり、黒い領域に対応する信号レベルは低くなる。一方、バーコードの白い部分は照射した光を反射するため、反射光の強度が強くなり、白い領域に対応する信号レベルは高くなる。また、上記したように、本実施の形態においては、動作電圧の範囲は０Ｖ〜３．０Ｖであるものとする。基準電圧は、最大動作電圧の５０％である１．５Ｖとする。
【００４１】
図５において、波形の基準電圧（１．５Ｖ）以上の領域は、加算回路２０３により加算されるデータであり、基準電圧未満の領域は、加算回路２０４により加算されるデータである。加算回路２０５は、基準電圧以上のデータと基準電圧未満のデータ（図５の斜線領域）の総和を算出する。つまり、加算回路２０５は、基準電圧以上の電圧のアナログ信号波形の積分値と、基準電圧よりも低い電圧のアナログ信号波形の積分値と、の合計（図５の斜線領域の面積）を算出する。このため、バーコードの波形の振幅が大きい程、加算回路２０５の加算結果は大きくなり、バーコードの波形の振幅が小さい程、加算回路２０５の加算結果は小さくなる。
【００４２】
比較回路３０３は、加算回路２０５の出力（電圧値）に応じた電圧値を、電圧・抵抗変換回路３０５に出力する。電圧・抵抗変換回路３０５の抵抗値は、入力された電圧値に応じた抵抗値に変化する。例えば、調整回路１５に入力されたアナログ信号の振幅量が少ない場合（加算データ出力の値が小さい場合）は、アナログ変換後の加算データも小さくなる。電圧・抵抗変換回路３０５は、その加算データに応じて比較回路３０３から出力された電圧を、電圧抵抗変換して、アンプ３０７の帰還抵抗として利用している。より詳細には、電圧・抵抗変換回路３０５の抵抗値をＲ１、抵抗３０８の抵抗値をＲ２とすると、電圧利得は（Ｒ１＋Ｒ２）／Ｒ２となる。アンプ３０７は、Ｒ１、Ｒ２に応じた電圧利得を用いてアナログ信号を増幅する。これにより、アンプ３０７のゲインが調整される（ステップＳ１０９）。そして、次回のスキャン時のゲインとして使用される。なお、抵抗３０８の抵抗値は、電圧・抵抗変換回路３０６の可変範囲や必要とする電圧利得の値に応じて予め設定される。
【００４３】
また、減算回路２０６は、基準電圧以上のデータの和から基準電圧未満のデータの和を減算する（ステップＳ１０８）。つまり、減算回路２０６は、加算回路２０３の出力から加算回路２０４の出力を減算する。減算回路２０６は、減算結果を減算データ出力として比較回路３０４に出力する。
【００４４】
ここで、図６を用いて減算回路２０６の動作を説明する。図６は、アナログ信号の波形である。具体的には、図６は、バーコードリーダが正しく読み取ることが出来ない信号の波形を示す。より詳細には、図６は、波形の振幅の中心（一点鎖線）が動作電圧範囲の中心（基準電圧１．５Ｖ）から上限側に電圧Ｖｇだけずれている状態の波形を示す。この場合、信号がサチュレーションしてしまい、正しいバー幅データを取得することができない。より詳細には、波形の振幅の中心が基準電圧と一致していれば、バー幅ｄｒが実際のバーコードの白い領域の幅となる。しかし、図６の状態のままデコードしてしまうと、Ａ／Ｄコンバータ１６１は、基準電圧（１．５Ｖ）に基づいて二値化するため、バー幅ｄｓをバーコードの白い領域の幅として認識してしまう。このため、バーコードの読み取りができなかったり、誤読してしまったりして、正しくデコードすることができない。図５と同様に、縦軸は信号レベル（Ｖ）を示し、横軸は時間を示す。また、上記したように、本実施の形態においては、動作電圧の範囲は０Ｖ〜３．０Ｖであるものとする。基準電圧は、最大動作電圧の５０％である１．５Ｖとする。
【００４５】
図６において、波形の基準電圧（１．５Ｖ）以上の領域は、加算回路２０３により加算されるデータであり、基準電圧未満の領域は、加算回路２０４により加算されるデータである。減算回路２０６は、基準電圧以上のデータの和（図６の斜線領域）から基準電圧未満のデータの和（図６のドット領域）を減算した値を算出する。つまり、バーコードの波形の振幅の中心の基準電圧に対するずれが大きい程、減算回路２０６の減算結果は大きくなり、バーコードの波形の振幅の中心の基準電圧に対するずれが小さい程、減算回路２０６の減算結果は小さくなる。
【００４６】
比較回路３０４は、減算回路２０６の出力（電圧値）に応じた電圧値を、電圧・抵抗変換回路３０６に出力する。電圧・抵抗変換回路３０６の抵抗値は、入力された電圧値に応じた抵抗値に変化する。アナログ信号は、カップリングコンデンサ３１１において直流成分が除去される。直流成分が除去された信号には、電圧・抵抗変換回路３０６の抵抗値及び抵抗３０９の抵抗値に応じた電圧だけバイアスがかかる。
【００４７】
電圧・抵抗変換回路３０６及び抵抗３０９がバイアス回路を構成する。より詳細には、電圧・抵抗変換回路３０６の抵抗値をＲ３、抵抗３０９の抵抗値をＲ４、バイアス回路の入力電圧をＶｉとすると、バイアス回路の出力（バイアス電圧）はＲ３／（Ｒ３＋Ｒ４）×Ｖｉとなる。つまり、入力電圧が電圧・抵抗変換回路３０６と抵抗３０９によって分圧される。そして、バイアスがかかったアナログ信号がアンプ３０７に入力される。
【００４８】
例えば、アナログ信号の波形が動作電圧の上限側にずれている場合、電圧・抵抗変換回路３０６の抵抗値は大きくなる。そのため、Ｒ３はＲ４よりも大きい値となり、Ｒ３／（Ｒ３＋Ｒ４）の値は１／２より小さくなる。その結果、アナログ信号の波形の中心を下限側に調整することができる。同様に、アナログ信号の波形が動作電圧の下限側にずれている場合、電圧・抵抗変換回路３０６の抵抗値は小さくなる。そのため、Ｒ３はＲ４よりも小さい値となり、Ｒ３／（Ｒ３＋Ｒ４）の値は１／２より大きくなる。その結果、アナログ信号の波形の中心を上限側に調整することができる。これにより、アンプ３０７のオフセット電圧が調整される（ステップＳ１１０）。そして、次回のスキャン時のオフセット電圧として使用される。
【００４９】
このように、調整部１５２は、受光信号のゲイン及びオフセット電圧を調整する。そして、調整後の受光信号をＣＰＵ１６のＡ／Ｄコンバータ１６１に出力する。このため、Ａ／Ｄコンバータ１６１は、適切な振幅及び振幅中心を有する波形の受光信号を用いてデコード処理を行うことができる。
【００５０】
＜比較例＞
ここで、比較例にかかるバーコード読取装置９の構成について説明する。比較例にかかるバーコード読取装置９は、図１に示したバーコード読取装置９の構成に比べて、調整回路１５を有していない点で異なる。なお、その他の構成については、バーコード読取装置１と同様の構成であるため、適宜説明を省略する。
【００５１】
バーコード読取装置９の構成によれば、ＣＣＤ１３がアンプ１４に受光信号を出力する。そして、アンプ１４が、受光信号を増幅し、Ａ／Ｄコンバータ１６１に出力する。Ａ／Ｄコンバータ１６１は、入力された受光信号をデジタル信号に変換（二値化）して、デコードする。つまり、受光信号は補正されることなくデジタル信号に変換される。このため、受光信号の波形の振幅が小さかったり、振幅の中心が動作電圧の上限側または下限側にずれてしまったりする場合、Ａ／Ｄコンバータ１６１は正確にデコードすることができない。
【００５２】
これに対して、本実施の形態にかかるバーコード読取装置１においては、積分値算出部１５１が、基準電圧以上の受光信号の波形を積分することにより第１の積分値を算出し、基準電圧未満の受光信号の波形を積分することにより第２の積分値を算出する。そして、調整部１５２が、当該第１の積分値及び第２の積分値に基づいて、受光信号のゲイン及び中心電圧を調整する。このため、受光信号の波形を適切な波形に修正することができる。したがって、バーコード読取装置の読み取り精度を向上させることができる。
【００５３】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、バーコード読取装置１の構成は、図１に示した構成に限られない。本発明にかかるバーコード読取装置１は、図８に示すように、少なくともバーコードからの反射光を受光し、受光信号を生成する受光部１３、積分値算出部１５１、及び調整部１５２を備えていればよい。
【００５４】
また、上述のバーコード読取装置１の任意の処理は、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。この場合、コンピュータプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュメモリ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００５５】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現される場合だけでなく、このプログラムが、コンピュータ上で稼動しているＯＳ（Operating System）もしくはアプリケーションソフトウェアと共同して、上述の実施の形態の機能を実現する場合も、本発明の実施の形態に含まれる。さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットによって行われて、上述の実施の形態の機能が実現される場合も、本発明の実施の形態に含まれる。
【００５６】
例えば、調整回路１５においてハードウエア（Ａ／Ｄコンバータ、加算回路、減算回路等）を用いて実現していた処理を、ソフトウエア（ＣＰＵ）を用いて実現してもよい。
【符号の説明】
【００５７】
１  バーコード読取装置
１１  投光用ＬＥＤ
１２  受光レンズ
１３  ＣＣＤ
１４  アンプ
１５  調整回路
１６  ＣＰＵ
１５１  積分値算出部
１５２  調整部
１６１  Ａ／Ｄコンバータ
１６２  メモリ
１６３  ＧＰＩＯ
【要約】
【課題】バーコードの読み取り精度を向上させることができるバーコード読取装置、バーコード読取装置の制御方法、及びプログラムを提供すること。
【解決手段】本発明にかかるバーコード読取装置１は、ＣＣＤ１３と、積分値算出部１５１と、調整部１５２と、を備える。ＣＣＤ１３は、バーコードからの反射光を受光し、受光信号を生成する。積分値算出部１５１は、受光信号と予め設定された基準電圧と比較し、基準電圧以上の受光信号の波形を積分することにより第１の積分値を算出する。また、積分値算出部１５１は、基準電圧未満の受光信号の波形を積分することにより第２の積分値を算出する。調整部１５２は、第１の積分値と第２の積分値との和に基づいて、受光信号のゲインを調整する。
【選択図】図１【図１】
0005534486.tif 000002
【図２】
0005534486.tif 000003
【図３】
0005534486.tif 000004
【図４】
0005534486.tif 000005
【図５】
0005534486.tif 000006
【図６】
0005534486.tif 000007
【図７】
0005534486.tif 000008
【図８】
0005534486.tif 000009