« 2007年2月 | トップページ | 2007年4月 »

2007年3月26日 (月)

PIC16F88でLCD表示

  パターンミス、仕様書理解不足、初期化問題、20年ぶりのC言語などの壁にぶちあたりながらも、ようやくLCDのドライブに成功したので報告です。
私と同じレベルの人には、非常に役に立つ情報だと思います。

素材:マイコン  Microchip社 PIC16F88
    LCD    SUNLIKE社 SC1602BS*B
    BUZZER、LEDなど

環境:デバッガ  Microchip社 MPLAB
    コンパイラ CCS社 PCM 

今現在の目標は、ジェットエンジンのコントローラーの制御パネル作成です。とりあえず、2桁x16行LCDの表示ができないと、何も進まないので、そこからスタート。20年ぶりのC言語ですら高い壁でしたが、結局仕様書だけでは読みきれない事もあったので、報告しますね。最大の難関は、LCDの初期化でした。

何も考えず電源の5Vだけ供給すると、2桁の上の表示だけ、真っ黒になります。
これは、初期化していない状態です。
初期化が中途半端だと、上の表示だけ薄暗くなります。←まともに動きません。まともに初期ができない人は、次をよく注意しながら回路、ソフトを見直してください。

【初期化できない原因】
16F84などのLCDライブラリを、そのまま移植しても、うまく動きません。下記のチェックポイントをよく見直すべし。

①電源の立ち上がりがおそい
  ちゃんと初期化シーケンスができているのに、
  初期化できない場合は、電源の立ち上がりが
  遅い可能性があります。
  初期化の初めは、15msecのWaitからですが、
  LCDの初期化条件は、
  「電源が4.5Vに達してから15msec」です。
  自分の場合は、100msecを入れるとまともに
  動くようになりました。初めてトライするときは、
  200~300msecのWaitからはじめると良いでしょう。

②余計なStrobe(E)信号がでてしまう
  ポートの出力をしていると、その気が無いのに、
  ストローブ信号が出てませんか。
  オシロがあればいいですが、無ければデバッガで
  見てください。

③Strobe(E)信号前、信号中のwaitが少ない
  ストローブをHighにする前に40usec、
  ストローブをLowにするまでの間230usec必要です。

④初期化中に、4bitと8bitを間違える
  初期化では、「0x30」3回のあと、「0x20」を送りますが、
  「0x20」は8bitモードで送信して下さい。
  (あたりまえですね?)

⑤PIC16F88のRA5は入力しかない
  この石で、RA5からアウトプットしようと思ってもできません。
  仕様書をよく読むべし。

⑥はんだ付けを甘く見ない
  悪いこと言わないので、テスターで見直してね。
  (最初にね)

⑦LCDの無使用ピンは、グランドに落ちてるかい?

【サンプル回路】
面倒なので、載せませんが・・・
下記の通りつないでください。PIC16F88は、ポートBにシリアルとかがあるので、私はLCDをポートAにつなぎました。データは4bitバスです。添付のライブラリは、ポートAで、しかもRA0~RA3に、LCDのDB4~DE7を接続して初めて動きます。RA5は"In"専用で、"out"できない為こうなった。(ここで10時間くらいはまった)
下記と違う接続をしても動かないので、あしからず。
RA4~RA7に、LCDのDB4~DB7をつなげる場合は、ライブラリのswap(xxxx)を抜いてください。

// RA0 out LCD_DB4
// RA1 out LCD_DB5
// RA2 out LCD_DB6
// RA3 out LCD_DB7
// RA4 out LCD_R/W         //read/write
// RA5 In   No use
// RA6 out LCD_RS           //chip select
// RA7 out LCD_E             //strobe

// RB0 out No use
// RB1 out No use
// RB2 out No use
// RB3 out No use
// RB4 out BUZZER
// RB5 out LED
// RB6 out No use
// RB7 out No use

【サンプルプログラム】 「PIC16F88_LCD_TEST.c」をダウンロード
上記環境で、とりあえずLCDの表示をするためのサンプルプログラムを作ったので、紹介します。Dscf0207Dscf0206
1. お約束の "Helo !"表示
2. そして、"Helo !"が右に行ったり、左に行ったり、最後は右にフェードアウト

3. 突然カウントダウンが始まる 10→9→8・・・
4. "ENGINE " → "ENGINE START !"

5. 全エリア表示
プログラムでは、LEDやブザーもピコピコ言わせてるので、とりあえず、LCDとその他回路の検証が簡単にできるようになってます。


自分のプログラムスキルが、たいしたこと無いので、あんまり難しいことはしてません。ポインタなんか使ってないので、C言語初心者の人は参考になるかも。

【LCDライブラリ】 「lcd_lib.c」をダウンロード
無理やりライブラリを作りました。(もはや財産!)
もっとスマートに作れそうですが、自分にはこれが限界です。


LCD表示をするために、必要不可欠な関数や、全てのコマンドも準備しました。
コマンドについては、ライブラリの#defineを参照してください。仕様書見てもなんだかよくわからない人は、このコマンドを使ってね。


//  lcd_init()                    イニシャライズ
//  cd_clear()                  クリアディスプレイ
//  lcd_ready()                 ビジーチェック
//  lcd_cmd(cmd)             コマンド送信(cmdにコマンドを入れて送る)
//  lcd_data("string")        文字を送信する("string"部分に文字を入れると表示する)
//  lcd_cur_set(Line,pos)   好きな場所にカーソルを移動させる
                 Line= 1 or 2 , pos= 左からの文字数
//  lcd_ltoa_out(long, digit)  桁数を指定して、数字を表示する
                   long= int or long の数字(最大65535)
                   digit= 桁数(最大5桁)


【PICのCコンパイラ】
PICには、いくつかのCコンパイラがありますが、情報が豊富、サンプル豊富、そんなに高くない、Webで購入できる。などの理由で、CCS社のコンパイラがお勧めです。
CCS社のコンパイラは、PICの種類によって、違うので注意。
また、下記の3種類は単独では動きません。MPLABにビルトイン(合体)させて初めて動くので、よくわからない人は、何で動かないんだろうと、悩まないでね。

PCB 12bitPIC  125ドル
PCM 14bitPIC  125ドル
PCH PIC18    175ドル
詳しくは、http://www.datadynamics.co.jp/ccs/pcwide.html
日本の代理店もありますが、値段は倍です。


MPLABと統合(ビルトイン、合体)させるためのプラグインはここ
Download the MPLAB® IDE Plug-in

合体方法の説明はここにもあるよ
http://www.datadynamics.co.jp/ccs/picc.html
 

【Special Thanks !】
お世話になったページ

電子工作の実験室
http://www.picfun.com/

SPECTRUM電磁工作のページ
http://speana-1.hp.infoseek.co.jp/index.htm

Cのもくじ
http://www9.plala.or.jp/sgwr-t/c/index.html

Microchip社
http://www.microchip.com

Microchip社 MPLAB IDE v7.xx (タダ)
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002

CCS社
http://www.ccsinfo.com/

CCS社 PCMコンパイラ
(125ドル カードで注文、メールで配達!)
http://www.ccsinfo.com/product_info.php?cPath=Store&products_id=PCM_full

CCS社 日本語マニュアルなど
http://www.datadynamics.co.jp/ccs/overview.html

|

2007年3月24日 (土)

PIC16F88のRA5はなんと

別にだれも読んでくれなくてもいいんだけど
はけ口がないので、とりあえず書くよ・・・(泣)

PIC16F88でとりあえずLCD表示のプログラムを組んだが、
一向に表示されず、つぼにはまっていた。
MPLABのDebuggerと何時間にらめっこしてたかわからんが、ようやく原因がつかめた。
きっと、おんなじつぼにはまった人もいるかも(俺だけか?)

LCDのデータバスには、ポートAの上位ビットを出力に当てていたが、なんと、RA5ピンは、入力しか対応してなかった!(うぎゃぁぁぁ)

Ra5_1

ほらね、RA4は「I/O」って書いて歩けど、RA5は「I」しかないでしょ。

ポートAとポートBをひっくり返すか?
(ダメダメ、シリアルポートが使えない)
それともポートAの上位と下位をひっくり返すか?
(プログラムめんどくさ)→(swapがあるよ)
基盤作り直すか・・・?
ほとんど何でもありの、16F88なのに・・・
仕様書読んでなかった俺が悪いんだけどね。
こういうのは、ブレッドボードとかで試作してから基盤作るんだよね。(ホントハ)

今日だけで、8時間。 貴重な休みが・・・!!!
だれか、プリントパターンのswapコマンド教えてくれ!
めしでも炊くか・・・

| | コメント (3)

2007年3月22日 (木)

なぜかホイアン報告

なぜかホイアンの報告です。
なぜ、ホイアンに言ったのかは、深く説明しませんので、あしからず。

ホイアンは、DaNangから南に25kmくらいの海岸に面した町で、
くわしくは、ここでお勉強してください。
世界遺産の町、異国情緒あふれる、エキゾチックな所です。

スポットとしては、遠来橋(日本橋)、XX会館、クアダイ・ビーチ、カラフルなギャラリーが立ち並ぶお土産屋さんなどがあります。
時間があったら、シクロや、自転車でブラブラして、海でボーっとしたい町です。

謎のシンガポールお姉さん、謎のベトナム人カップル、謎の日本人お兄さんのフォトはこちらです。
謎のホイアン写真集

DaNangにおいでの際は、是非行ってみたら?

| | コメント (2)

2007年3月20日 (火)

ダナン出張報告 その2

今日もダナンです。

今の季節は雨季が明けて、ちょうど良い季節のようで、外国人の観光客もちらほら見かけます。
朝の通勤は、渋滞とは無鉛の海岸線沿いのリゾートコース(日本で言えば江ノ島風)の道路を走ります。
夏は海釣りあり、山登りあり、サーフィン、ダイビング、ラジコン飛ばし(個人的には)が可能で、本当に居心地がよさそうなところです。
もう少し、日本人用の環境がそろえばほんとに言うことなしです。

Dsc07006Dsc07008

一日の仕事(一応仕事ですんで・・・)もおわり、関係者で和やかな夕食のひと幕。
ベトナムの料理と踊りで楽しませていただきました。
踊りはなんとなくタイっぽい南国ムード漂う、くねくねした踊り。
ベトナムの民族楽器での(ハノイでもおきまりですが・・・)「さくらさくら」「酒よ」「上を向いて歩こう」などの日本人向けサービス満点で、とても好感触!

夕食中に、ダナンでがんばってらっしゃる方々から、苦労話を聞かせていただきましたが、ベトナムの中ではどこも同じ悩みを抱えている事がわかり、非常に親近感を感じました。
皆様には、「がんばってください」としか言いようがありませんが、エールを送らせていただきたいと思います。「がんばりましょうね!」

ところで今泊まっているホテルですが、宿泊料金の表を見てびっくり、スイートで50ドル!(安ぅ~!)
フットマッサージにもトライしてみましたが、チップなしで、1時間60000ドン(450円くらい)(安ぅ~!)
お金のたまりそうなところです。

以上、ダナン出張報告でした。

| | コメント (0)

2007年3月19日 (月)

ダナン出張報告

  今日は出張で、ベトナムのへそ「ダナン」に来ています。
一口で言うと、ホーチミンにもハノイにも無い雰囲気で、好感触!

ダナンの良い所(赴任すると仮定して・・・)
あったかい。車、バイクが少ない。渋滞が無い。
道路がきれいって言うか普通に平らで車の乗り心地が良い。
クラクションが少ない。
すぐそばが海。振り向くと山。ビルが無い。
空の上から見ても、地上から見ても平らな所が多く、ラジコンを飛ばすには都合が良い。

ダナンのがんばって欲しいところ(赴任すると仮定して・・・)
って言うか、まだ半日しかいないので、あんまりわかりませんが、
ハノイと比較しても何も無い。ハノイも無いのに、さらに無い。
日本食の居酒屋は4件しかありません。
日本からの直行便が無い。
何も無いのが、良い所かもしれませんね。

ダナンはまだまだ外資の投資が少なく、日本の企業も少ない場所ですが、
何しろ住む環境としては、気候、海、山などとてもよい場所です。
リゾートホテルもあるしね。(ゴルフ場が無いそうですが・・・)
どうせハノイにもラジコンショップは無いので、自分的には、ダナンでもいいかも、なんて思ってしまいました。

驚いたのは、ホテルの安さ。今泊まってるホテル(Minh Toan Hotel ☆☆☆)は、ツインで一泊25ドル!
それも余裕の広さで、そこそこきれい。しかもそこそこの夜景付き。

Dsc0700125ドルとは思えないツインルーム。これで朝食付き。
(よくある会社の割引価格ではありません。)

Dsc07004

部屋からの夜景。香港や神戸の100万ドルの夜景には及びませんが。窓から水辺、ライトアップされた橋などが見えるだけでよし!

明日もまだダナンなので、気が向いたら報告しまっす。

| | コメント (1)

2007年3月18日 (日)

回転計と温度センサー付けた!

今日は雨だったので、一日工作の日です。
日本にいたら家族がいるので、まる一日工作なんてムリムリ・・・
単身赴任のいいところですな。
飯はダイエットも兼ねて昼飯だけ(日本だったら残り物も出てきて太ってしまう・・・)

さて、エンジン本体の改造ですが、今日はジェットエンジンに欠かせないセンサーをつけました。
付けたセンサーは、回転計と排気温度計。

Dscf0202 カウンターが指している「173.2」はHzなので、
173.2×60≒10400rpm ってアンバイ。
下に写っているテスターが指している「027」はそのまま℃なので、室温の27℃ってアンバイ。

なぜか持ってるカウンター (周波数が計れるって便利!)
ホントはオシロがほしいんだけど・・・(ハノイで買うか・・・)

【回転計】Dscf0198
Dscf0199回転計のセンサーは、秋葉の千石電商で買ってきた、松下製のホール IC 「DN6851」
電源と出力だけの3pinなので、な~んにも考えずに、はんだ付けして、配線するだけで完成。
「DN6852」ってのもありますが、そっちはオープンコレクタタイプなので注意。

これからホール素子を使って、磁石の工作しようと思っている人へ。
間違えて、「ホール素子」買わないようにご注意。初心者が買うのは、「ホールIC」ですから~
自分も半年前に日本から買ってきた「ホール素子」の仕様書を見てビックリ(アンプとバッファが外付け!)買ったはいいが、永久に使うことは無いでしょう・・・

Dscf0197

めんどくさいかったのは、マグネットの取り付け。
日本から買ってきた「ネオジウム」製の最強磁石(φ6×t 3、3500ガウス、750円なり!なんとφ6mmで800gの吸着力だとか・・・、肩こりに効くかも!)を取り付けるために、コンプレッサーのブレードに穴あけして、スーパーXで接着して、バランス取り直し。
バランス取りでは、間違って軽い側を削り続けて30分後、重い方を削ることに気づき、1時間後に何とか完成。削りすぎでとてもスリムな仕上がりになり、満足。

【排気温度センサー】
Dscf0205秋葉の秋月電子で買ってきた、K型熱電対
-200℃~+1250℃まで計れるっす。
ジェットエンジンの排気温度は700℃に達するので、J型(600℃まで)ではダメ。

Dscf0204

テスト中の熱電対用のアンプは、AnalogDevice製 「AD594A」
±15V電源電圧で、1250℃まで計れますが、多分使うことになるだろうと思われるLipoの3セル電圧11.1Vでも1000℃まで計れるし、マイナス温度は測定不要なので、電源電圧は11.1VでOK!
「AD594A」はJ型用で、K型用は本当は「AD595A」なんですが、売って無かったので、594Aを買いました。
使い方間違っても温度が3割増しになるだけなので、プログラムで修正すればOK。

ってことで、次はC言語と格闘の予定。

| | コメント (0)

ECUのコントローラ ハード出来た

先週の休みを使って、ジェットエンジンのECUのコントローラ(操作盤)を作ったっす。
ジェットエンジンは空に飛んでしまうと、どうなっているのか皆目検討がつかないので、私に代わって機体に乗ってコントロールしてくれる人が必要です。実際は人ではなくて、ECUって言っていう、マイコンが乗ったやつがコントロールしてくれます。(はず)
先週作ったのは、そのECUに地上で接続して、設定、モニターなんかをするためのコントローラ(操作盤)です。これ↓Dscf0194_1 Dscf0195_1Dscf0196_2

なにやら ICっ ぽい物が載っていますが、 18pinのICがPICと言われているマイコン君です。流行のPIC16F88。

マイコン君は、頭がいいのですが、まだ何にも教えてない(プログラムしてない)ので、今はボケーっとしているだけです。これから教えてあげなければなりません。
その前に私がプログラミングを誰かに教えてもらわなければならないんです。(実は)

今からアセンブラを組むつもりはないので(考えるのがめんどくさい)、C言語をと考えてますが、C言語は20年くらい使ってないので、すっかり忘れてるし、最近の統合環境にもついて行けてません。しかし、いろいろなC言語のライブラリや、解説書、HPを駆使し、人のプログラムをパクリながら、なんとか開発を進めていこうともくろんでいます。

とりあえず、MikroCという無償版のC言語環境ではじめてみましたが、「LCDなんか簡単さ」なんてどこかのHPに書いてありましたが、ぜんぜん出来ない!
LCDの仕様書と、MikroCのHELPをにらみ続け、3日間かけてやっとLCDのリセットが出来たところです。
しかし、MikroCはバグだらけのようで、「絶対に間違えないようの無い3行の私のプログラムでさえコンパイルが出来ず」その後が続きません。もちろん私のプログラムもバグだらけですが・・・
MikroCの解説をしたHPはありますが、親切なようで、私には親切ではないし・・・
結局、MikroCはあきらめて、後閑さんとうPICの神様みたいな人がつくるHPで推奨している環境を整えることにしました。

コンパイラ CCS社の「CCS Cコンパイラ」 
環境     MICROCHIPのMPLAB

CCS社のコンパイラは、ネットで注文すると、メールで送られてくる様です。
さっき注文したので、早くて月曜日ですかねぇ。
MPLABは、無償なので、今からダウンロードします。
それとついでに、後閑さんの出版した名著と思しき「C言語によるPICプログラミング入門」を紀伊国屋に注文。(日本の自宅に送り、日本からベトナムに応援に来る会社の人に持ってきてもらう)

ということで、今日はマイコン君の開発環境もないし、外は雨なので、エンジン本体の改良でもしよっかな~(日曜日も忙しくて休むひまなし!!!)

| | コメント (3) | トラックバック (0)

2007年3月 7日 (水)

ベトナムフライト日誌

先日の日曜日は、一月ぶりの飛行会だった。
朝方、私の部屋に集合したJoさんと、大島さん。
しばし私の研究所をご案内しているうちに、外は雨。
あきらめて、室内で、Joさんのバレリーナのエンジン調整を行う。

飛行会をあきらめていたところに、ベトナム人からの電話で
雨が上がったことがわかり、急遽、飛行会実施とあいなりました。

ベトナムフライト日誌(研究所) 写真集

私は、SAITO72エンジンのハイパーカブ、自作Vテールモグラ、SALグライダー
Joさんは、新作のバレリーナ、電動機
ベトナム人のMr.Tran(チャン)は、電動機と、OS15のなぞのトレーナー
もう一人、初顔合わせのベトナム人Mr.Toc(トック)は、電動機をそれぞれ持参。

なぞの電波障害
とりえず、指慣らしで自作Vテールモグラを飛ばして見たところ、期待が上空で「ピクピク!」
まずい!どこから見ても、電波障害である。
近くで、でかいGPSアンテナ測量作業らしい一団がいたので、とりあえず彼らのせいにし、緊急着陸。
すると、Mr.Tocの愛機も「ピクピク」している。何のことはない、同じバンドだったのだ・・・
いくらベトナムでのマナーがいい加減だといっても、バンドチェックはしないとダメです。

さて、Joさんのフライトはと言うと、ちょっと足の具合がよろしくないようで、着陸は問題が残りましたが、
上空では危なげない飛行でした。しか~し、機体整備をしていると、水平尾翼の裏側にフィルムが無い
ことに気が付く! 私からはこれ以上コメントできませんので、ご本人のバレリーナ不思議事件をどうぞ。
JoBlogベトナム飛行会
JoBlogベトナム飛行会

当日は、濃いー一日となりました。

| | コメント (3) | トラックバック (0)

« 2007年2月 | トップページ | 2007年4月 »