2014-11-24 Mon
===「LCD表示ライブラリー」===PICのプログラムを組んで、検証するのに、LCDの表示が便利
です。秋月のSD1602というLCDを使ってますが、これを使うに
あたって、表示のためのライブラリーが必要です。
諸先輩のHPを参考に動かしていましたが、
使用ピンを変更したくて、あれこれやりました。
プログラムを見ると、
#define LCD_DATA PORTB
void lcd_write(unsigned char c){
__delay_us(40);
LCD_DATA = ( ( c >> 4 ) & 0x0F );
//上位4ビットを右に4回シフトしてRB0~RB3に書き込む
LCD_STROBE();
LCD_DATA = ( c & 0x0F );
//下位4ビットをRB0~RB3に書き込む
LCD_STROBE();
}
という項目があり、データをBレジスタで書き込んでいる
ようですので、ここを書き換えるといいはずでした。
プログラムでは、8ビットのデータを2回に分けてRB0~RB3
に書き込んでいるようでしたので、ここを変更すれば、
違う端子から書き込みができるはずでした。
ここを、RB4~RN7に変更すべく、
void lcd_write(unsigned char c){
// 送信データのバイト列上位4ビットを処理
RB4 = ( ( c >> 4 ) & 0x01 ) ;
RB5 = ( ( c >> 5 ) & 0x01 ) ;
RB6 = ( ( c >> 6 ) & 0x01 ) ;
RB7 = ( ( c >> 7 ) & 0x01 ) ;
LCD_STROBE() ;
// 送信データのバイト列下位4ビットを処理
RB4 = ( ( c ) & 0x01 ) ;
RB5 = ( ( c >> 1 ) & 0x01 ) ;
RB6 = ( ( c >> 2 ) & 0x01 ) ;
RB7 = ( ( c >> 3 ) & 0x01 ) ;
LCD_STROBE() ;
}
と変更してみましたが、うまくいきませんでした。考え方は、
これでいいみたいでしたが、ネットでくぐると、
別な方のHPに同じ考えのライブラリーが載ってました。
最初の#defineのところで、使用ポートを記述すればいいので、
便利だと思います。
今日も一つ勉強しました。
ライブラリー用に編集したものをここに掲載します。
ヘッダーファイルは、HITEC-Cのサンプルのを
そのまま使います。
2014-11-17 Mon
ステッピングモーターのコントローラーをケースれるために、パネルの加工をしています。
形状のちょっと複雑な電源の差し込みコネクターの穴を開け
るのにsable2015を使おうと思い、Gコードの作成にかかった。
いつもの通り、「花子→JWCAD→NCVC」とデータを作成した
が、NCVCで「原点レイヤーが読めない。」と怒られてしまう。
あれこれやってネットでも検索して、JWCADのデーターを
そのまま読み込むときちんと原点レイヤーも読み込まれる。
JWCADで、DXFファイルに変更すると原点レイヤーが読み
こまれなくなる。
あれこれさがして、JWCADのレイヤーの書き込みか、と
あたりをつけて、設定のところを見てみると、
ありました。オプションのところに「レイヤーに番号を付加する」
オプションがあり、しっかりチェックが入っていました。
ここを外して、保存して、読み込むと、あっさりよみこめました。
めでたし、めでたし。
ちなみに、新しくNCVCとJWCADをインストールしたばかり
でした。デフォルトでは、だめだったんですね。
2014-11-15 Sat
ほぼ満足のいく結果になってきたので、ケースの操作パネルの作成にかかります。
操作パネル作成のフリーソフトを探しましたが、見つけられま
せんでしたので、花子で作りました。
エーワンの屋外でも使えるラベルあたりに印刷して、
使おうかと思います。
それにしても、操作パネル作成のフリーソフト、ありそうな
きがするのですが。結構需要あると思うのです。
2014-11-12 Wed
重量物(工作機械)を将来買ったときの運搬のために、「玉掛け」と「小型移動クレーン」の講習を受けたいなと思って
ました。
手始めに、「玉掛け」の講習を受けてきました。
講習の空きをインターネットで確認し、インターネットで申し込むと、
申し込み用紙が送られてきました。必要事項を書き込んで、当日、
本籍の確認できる住民票と写真を持って、行ってきました。
場所が不安でしたが、駐車場につくと、
表示がありその方向に行くと、入り口が表示してありました。
建物の中に入ると学校の教室のようでした。
ここで、一日目は、5時近くまで講義。二日目は、講義と
筆記試験でした。三日目は、周りにたくさんおいてある重機
に囲まれたちょっとした広場で実技をしました。
実技の後は、3人一組で、代わる代わるリーダーと
補助者になりながら、リーダーとして玉掛けの指示と実際
の移動の試験で、6時過ぎまでかかりました。
実技試験では、うまくできなかった部分もありますが、
それとなくヒントがでたりで、無事合格できました。
基本的に、落とす試験ではないようです。
免許証大の写真入りの修了証とヘルメットに
貼るステッカーをもらってきました。
無事取得できましたが、久しぶりに疲れました。
次回は、たぶん来年でしょうが、小型移動式クレーン(ユニック)
の講習を受けたいです。
玉掛けは、3日間で、2福沢諭吉4野口英世でした。
ちなみに、移動式小型クレーンは、4野口英世割引で、
4福沢諭吉ですから、ジェジェジェです。
2014-11-11 Tue
最後のチェックと調整がほぼ終わりました。センサーまわりがうまくいきませんでした。原因を特定する
のにオシロでフォットカプラーの出力部分を見てみましたが、
接近するときと離れるときに、きちんとのこぎり型のパルス
がでてました。
立ち上がりの割り込みが一度しかかからなかったので、
センサーが一度働くと、フォットカプラーの出力で、電流が
0にならない状態なのかと思いましたが、原因はPICのよ
うでした。
一度Hightになるとどうしてか、Lowにならならなくて、立ち
上がりパルスの割り込みがかからないようでした。
対応策がわからなかったので、入力方法を、
アックティブハイからアクティブローに切り替えてみました。
すると、やっと、思った動作ができるようになりました。
問題を特定するのに、ネットで検索しましたが、やはり同じような
原因でなやんでいる方がいたようです。同じTLP621での投書
がありました。解決策は書いてありませんでしたが、きっと
TLP621の問題といいうよりは、PIC側の問題だったんでしょうね。
ケースに組みこんで、電気部分はほぼ完成です。
あとは、旋盤に取り付けるハードを作成します。
スイッチでのオンオフ、センサーでの逆転、の様子です。
ちょっと満足してます。
2014-11-09 Sun
基盤が組みあがり、プログラムを書き込んだPICで、試運転しました。最初、全く動きませんでした。
細かい部分をチェックしていくと、配線の間違いやら、配線
を忘れたところやら、プログラムの間違いやら、けっこうあり
一つ一つ修正してきました。やっと、下記の動作ができるように
なりました。
正転・逆転・ストップ・回転数の変更
やってることは、たいしたことなく、アナログのスイッチ等で
制御すれば簡単だと思いますが、これも自作の醍醐味です。
まだセンサーによる逆転の部分のテストがすんでいませが、
やっと先が見えてきました。
今回、一番のネックになったのが、やはり、フォットカプラーです。
センサーが最低電圧で12Vで動作で、PICが5ボルトですから、
フォットセンサーで、電位差をならす必要がありました。
使ったのは、秋月のTLP621というフォットカプラーです。
適当に選らんだのですが、入力したパルスをオシロで見て
見ると、立ち下がりがシャープでなくなります。
赤の形状になっています。きっと、反応が鈍いのでしょうね。
デジタルタイプのカプラーもあるそうですが、こちらが、
きっと、もっときれいな形状になるんでしょうね。
2014-11-08 Sat
ハードの作成と、プログラムの作成を同時に進めてきました。やっと、制御部分のPICのプログラムとハードのテストがいい
結果になりました。
テストボードで、ハードの仮組をし、ソフトを確認しながら、手を
加えて、プログラムを作成しました。
今回は、PICを二つ使ってます。なんとも、もったいない使い方
で、プログラムは、容量の20パーセントぐらいしかつかって
ません。余分なコメントもありますが、掲載します。
制御プログラム----main.c
今回のプログラムは、タイマー0の割り込みと外部割り込み
を使ってます。
当初、押しボタンスイッチは、スタートとストップだけでしたが、
急遽、リセットの押しボタンスイッチを追加しました。
この、コントローラーは、ステッピングモーターの回転数と
正転・逆転のコントロール、センサーで正転から逆転への
切り替え、の動作を制御するだけです。
自動で
正転→センサーで逆転
手動で
正転 逆転 停止
これだけの動作です。パルスをカウントして、その分だけ
戻るようにすれば、停止も自動でできますが、ちょっと面倒
ですね。確か、ワンパルスで1.8度ぐらい回転しますので、
一回転には、360÷1.8=200パルス。
リードが2ミリとすると5cm動くのには、
200×50mm÷2=5000パルス往復では、
5000×2=10000パルス。
このくらいのパルス数なら、それほど苦労しなくてもカウント
できそうですが、まあ、この次の課題ですね。
ちなみに、unsigned int の整数だと
0 ~ 65535
カウントが可能ですので、Long型の整数を使わなくても
大丈夫のようです。ここまで細かいプログラムを組むと、
CNCになってしまうので、CNCにしてしまったほうが楽
でしょうね。
2014-11-06 Thu
今日もまた一つ勉強。センサーをフォットカプラー接続して、センサーのON-OFFを
フォットカプラーを介して、PICに取り込む簡単な回路とプログラムで、
実験しました。
PICじゃなくて、LEDを接続して実験すると、センサーのON-OFF
でLEDのLED-OFFができるのに、PICに接続すると、PIC入力端子
のレベルが、HIGHT(ON)、LOW(OFF)に変化しませんでした。
問題を切り分けるのに、あれこれやりましたが、マイナスコント
ロールするとうまくいきます。
プログラムで、入力端子の初期設定で、LOWレベルにしても
LOWになりません。
あれこれ悩みましたが、ソフトの原因ではなくて、ハードの原因の
ようで、電源を入れると入力端子がHIGHTになるようでした。
教科書のように、プルダウン抵抗を入れてみました。
すると、電源投入直後も、入力端子がLOWレベルになり、思った
動作ができるようになりました。
プルダウン抵抗やプルアップ抵抗が必要だと教科書には、
書いてありますが、その意味がやっと
分かりました。
TOP PAGE △