PICバーコード(NW−7)リーダー
概略

バーコードにもいくつかのの規格が有りますが、今回はその中のNW−7という規格に
対応したハンドスキャン方式のバーコードリーダーの試作です。

NW−7の規格は7bitコードとなっており、1キャラクタが4本の黒バーと3本の
白バーで出来ており細エレメントを0、太エレメントを1とします。キャラクタ間は細
エレメントの幅以上となっています。使用できるキャラクターは0〜9−$:/,+の
16種で、それとスタートキャラクタとストップキャラクタに使用するためのA〜Dの
4種が有ります。


センサーユニット


センサー部は、LEDの先にレンズをつけて集光してバーコードを照らしその反射をホ
トトランジスターで受けています。このスポットをレンズにより0.2mm程度まで絞
ることが出来れば理想なのですが、光学の知識が無いものでどうやってもうまく行かな
いため今回は、バーコードをなぞる部分に0.8mmの穴をあけたプラスチック板を張
り付けました、この穴の大きさを0.5mmにしたところホトトラの出力が下がりすぎ
てうまくいきませんでした。この穴が大きいため標準的な大きさのバーコードだと読む
ことが出来ず、2倍程度の大きさにする必要が有ります。サンプルに入っているのチェ
ックようのバーコードを印刷した時に、7キャラクターで約4cm程度にする必要が有
りました。また最低1.5倍印字で3.5cmでどうにか読むことが可能でした。
このセンサーを、手でもってバーコードをなぞることでバーコードを読むことが出来ま
す。


回路図−1

回路図−2   RS232C出力タイプ

   (4月30日にCS保護ダイオードが逆になっていたのを修正)
アナログ部は、オペアンプで2段増幅した後コンパレータを通してPICにいれます、
コンパレータの基準レベルはオペアンプの出力でレベルをダイナミックに変化させてい
ます、これは細バーが多い部分と太バーが多いところではアンプの出力のレベルが変化
することに対応するためです。アンプのゲインはセンサーによりかなりシビアに調整し
ないとうまく読めないようです、アンプは出来るだけ飽和させない方がうまく行きまし
た出力波形を確認しながら細かく調整を行う必要が有ります。

スタートコードの最初は必ず細バーとなっていますから、最初に検出したパルスの時間
をそのまま基準にし、次からはこれより長いパルスを1とし短いと0と判定します。2
発目以降は細バーの1.5倍、太バーの0.75倍を基準値として順次入れ換えていき
判定を行います。このとき白バーと黒バーで別々に基準値を持たしてあります。
読み終わった後ビットデータをキャラクタに変換し次にスタートキャラクターとストッ
プキャラクターを取り除いて出力します。この時エラーが有った場合は出力しません。

デバックモードにすると、スタートキャラクタとストップキャラクターを付けたまま出
力します。ビットモードにするとキャラクタに変換せずにバーコードのビットデータの
まま16進数で出力します。
プログラムは、RS232C出力になっているものと、秋月で販売している16桁2行
表示のLCD出力になっているものの2種類が有ります。RS232C出力のタイプに
は通信速度の切り替えと、改行コードをCRのみかCR+LFにするかの切り替えと、
CSがノンアクティブの場合にアクティブになるまで待つかデータを破棄するかの切り
替えと、電源ON時にロゴデータを送信するかしないかの切り替えスイッチがつきます
これは、それぞれのソースファイルの最初に書いてありますからよく読んでください。

ソースファイルはMPASMを使用しアセンブルしています。コンフィグレジスターの
設定はソースファイルに書いてありますが、OSCはHS、パワーアップタイマーON
ウオッチドックタイマーOFFとします。



最後に

  疑問点等があればメールをください。出来る限りお答えするようにします。

  このプログラムは、フリーウェアーなので、自由に配布可能です。
  使用者自身の責任でご使用下さい。

  「このソフトによってどのような損害が出ても私は責任を負いかねます。」



* PICバーコード(NW−7)リーダーソースファイル*−−pic-br01.lzh ( 約68kByt )
ファイル内容

	nw7red03.asm		LCD出力ソースファイル
	nw7red03.hex		上記Hexファイル
	nw7red10.asm		RS232C出力ソースファイル
	nw7red10.hex		上記Hexファイル
	nw7red01.gif		LCD出力回路図
	nw7red10.gif		RS232C出力回路図
	barcode0.gif		テストようバーコードサンプル
	readme.txt		説明




戻る