COUNTER



新BLOG
 
新BBS
MN-BBS
旧BBS
CALENDAR
S M T W T F S
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
<<  2024 - 11  >>
 
LOGIN
現在モード: ゲストモード
USER ID:
PASS:
CATEGORIES
ARCHIVES
PROFILE
OTHERS
    処理時間 0.372778秒
POWERED BY
POWERED BY
ぶろぐん
DESIGN BY
ブログンサポート
          
<<前の10件 | 1 | ... | 11 | 12 | 13 | 14 | 15 | 16 | 17 | ... | 60 | 次の10件>>

---自作MPGワイヤレス化 (15)---
 自作手パ(MPG)をワイヤレス化するのにアダプターを作製

 し、後は、ケースに組む状態になってます。

 ただ、念のデータの取りこぼしを調べたら、パルスジェネレータ

 を早く回すと、約半分の取りこぼしがあったので、受信側の

 プログラムにリングバッファーをいれました。

 リングバッファーをいれることで、ほぼデーターの取りこぼし

 がなくなりました。

 
 
 多少、疑問が残ったので、送受信のデーターの取りこぼし

 を調べるのに、ローコストLCDシリアル通信モニター

 作製しました。

 これだけでは、ただデーターの表示をするだけなので、

 カウントしたデータを計測してターミナルに表示できるように

 基板とプログラムを作成しました。

 基板といっても、PICにバスコンとICSPの端子をつけ
 
 ただけのものです。

 

 比較的短時間で、ほぼ動くようになりましたが、二つほど

 ドツボにはまって、二日ほどもがくことになりました。

 
 一つは、リングバッファーの操作でした。「s」のキャラクター

 が入力された一つ前のデーターをカウントのキーにするのに、

 リングバッファーの読み取りのポインターを「s」の一つ前に

 もどせばいい、と思いこんでいました。これが、ドツボの始まり

 でした。

 いくら、やっても、思ったキーになりません。

 読み込んだデータを、デバッグ用に表示してみて、やっと

 分かりました。

 データを取り込んだ後、ポインターを次の読み込みにそ

 そなえて、一つ進めていたのです。

 本来なら、ポインターを二つもどさないとだめなわけでした。

 「-1」としていたところを「-2」にしてやっと解決です。


  もう一つは、久しぶりに使ったprintf( )のフォーマットの間

  違いでした。

 「int」の「%4d」としなければならないところを、「char」の

 「%c」としていました。当たり前に、表示されないので、

 あれこれいじって、やっとprintf( )のフォーマットにたどり

 つきました。

 昔、PC用に、Cであれこれやっていたころは、printf( )が

 大嫌いで、直接ビデオラムを操作して表示する関数等を作って

 使ってました。

 今回は、ターミナルへの表示位置を決めるのに、printf( )を

 つかって、エスケープシーケンスの使いまくりでした。

 

 とりあえずのプログラムです。

 main.c

 例によって、ゴミが沢山のこっています。表示をもうちょっと洗練

 させたいなと思ってますが、計測中の表示をやめて、計測終了

 後に表示させた方が、いいのかなと、思案中です。Webはくしゅ

| mabo52 | 11:11 | comments (4) | trackback (0) | DIY:: -MPGワイヤレス |
---手パ(手動パルスジェネレーター)切り替え器制作(10)---
 一応完成した手パ(手動パルスジェネレイター=MPG)で

 すが、コントロールするのに、割り当てた信号線を、

 オルタネートでコントロールしてました。ふとしたことで、

 モーメンタリーでもコントロールできるのではと思い、タクト

 スイッチで、簡単な基板を作って、実験してみました。



 結論から言うと、モーメンタリーでも、コントロールが可能

 でした。

 JogモードからMPGモードへの切り替え、各軸の選択は、

 モメンタリースイッチでも大丈夫でした。

 市販のMPGの各軸選択には、ロータリースイッチが使われて

 います。ロータリースイッチにするのは、多分、誤動作防止

 の意味合いが強いのかなと思いました。Webはくしゅ

| mabo52 | 22:41 | comments (0) | trackback (0) | DIY:: -自作MPG |
-ローコストLCDシリアル通信モニター(PIC16F1823)-
 諸兄のHPに載っていたローコストLCDシリアル通信モニター

 (PIC16F1823)を作成しました。

 

 USARTのボーレート設定がタクトスイッチでできるのが便利

 です。

 プログラム等は、全部、諸兄の作られた物を使わせていただき

 ました。

 もう一つPICをのせて、データー処理にとおもいましたが、

 今回は、やめました。

 諸兄のプログラムを見てみると、ボーレートの設定をEPROM

 に書き込んで、プログラムからリセットすることで、設定をかえ

 ているようでした。

 いままで、EPROMは使ったことないので、こんな使い方もで

 きるんだなと思いました。

 また、リセットするのに、

  asm("RESET")

 というインラインアセンブラーのコードを使ってるようです。

 それにしても、やはりすごいです。このような知識、どうやって

 獲得されたんでしょうね。Webはくしゅ

| mabo52 | 23:06 | comments (0) | trackback (0) | DIY::  -pic |
---新しいPIC---
 NETサーフィンをしていると「初めてのPIC」というHPが、

 目にとまりました。

 そこで紹介されている「16F1455(16F1459)」というPIC

 が目にとまりました。

 スペックを見ると、クロックが48Mhzに設定でき、

 2.3v~5.5vの幅広い電圧で動作できるとのありました。

 早速衝動買いをしてしまいました。

 ○月や○ルツ等では、取り扱いがなく、「○S」という初めて

 の会社での購入になりました。

 届いたパッケージは、会社独自のおしゃれなものです。

 

 中身は、HDD等の包装に使われている素材の袋にパッケージ

 されてました。

 

 開けてみると、PICは、静電気防止のスポンジ?ではなく、

 一つ一つプラスティックのケースに入っていました。

 

 感想としては、ICの取り扱いになれた?会社なのかなと

 おもいました。

 この「○S」という会社は、PICの検索をすると、必ずといって

 いいほど引っかかる会社でした。なんどか、HPは見て存在は

 知っていたのですが、どんな会社か分からず、利用していません

 でした。

 在庫のしなものばかりではなく、海外からも取り寄せ?で

 しなものを購入できるようです。Webはくしゅ

| mabo52 | 10:41 | comments (4) | trackback (0) | DIY::  -pic |
---自作MPGワイヤレス化 (14)---
 昨日コーディングしたリングバッファーを使ったプログラムの

 検証が終わりました。

 ほぼ満足のいく結果で、データーの取りこぼしもほとんどなく

 なりました。




 今回、リングバッファーに使ったメモリーは、256バイトで、

 これだけで、メモリーの74%を使ってしまいます。

 でも、効果、絶大ですね。パルスの生成に時間がかかる

 ので、その時間差を吸収してくれます。MPG1回転で、

 100パルスですから、2回半程度の回転に対応できると

 思います。



 今回は、大きなはまりどころもなく、すんなりでした。

 main.c

 ざっと、ゴミを取り除いたプログラムです。

 例によって、「uart.c」と「uart.h」は諸兄のものをそのまま

 使わせていただいてます。

 

 LCDのデバックモニターを作成予定ですが、ついでに、

 I2C接続のLCDもあれこれいじってみようと思います。

 本日、LCDの部品が到着しました。Webはくしゅ

| mabo52 | 11:04 | comments (0) | trackback (0) | DIY:: -MPGワイヤレス |
---自作MPGワイヤレス化 (13)---
 どこでデータが欠落するのか、いろいろ調べようと思って

 ます。そのために、LCDデバックモニターを作って、みようと思

 います。部品を注文しましたので、届くのをまちます。



 デバッグモニターの制作と平行して、データー受信を

 リングバッファーを使ったプログラムに変更しみようと

 思います。



 当初は、リングバッファーを使ったプログラムにする予定で

 したが、リングバッファーの理解がいまいちで、コーデング

 できませんでした。その一番の原因は、構造体とポインタの

 理解ができてないことでした。

 ネットには、リングバッファーを使ったプログラムが沢山ある

 のですが、そのほとんどが、構造体とポインタという、私が

 一番苦手な手法を使ってありました。


 いろいろあさっていると、構造体とポンタを使わないプログラム

 を使って解説しているHPを見つけました。

 Elementary data structures - Queue

 このHPでやっと、リングバッファーの仕組みが理解で

 きました。



 また、このプログラムを組むにあたって、割り算のあまりを

 求める、計算をしなければなりません。この計算に、結構

 な時間がかかります。一般的には、計算の時間を短縮す

 るために2のN乗の数を使うそうです。2のN乗の数を使う

 ことで、割り算のあまりを出す計算を、X & (N-1)とする

 ことで可能にできるそうです。これで、飛躍的に計算を早く

 できると書いてあるHPにも出会ました。この2のN乗の大き

 さをバッファーの大きさにするそうで、計算時間の短縮がで

 きます。

 この & を使った計算方法が、


 %(剰余)の最適化について

 というHPに分かり易く書いてありました。


 ということで、リングバッファーを使ったプログラムを

 コーデングしていきます。Webはくしゅ

| mabo52 | 20:51 | comments (0) | trackback (0) | DIY:: -MPGワイヤレス |
---自作MPGワイヤレス化 (12)---
 
 16F1827への移植がほぼ終わったので、有線でのMPGと

 ワイヤレスのMPGの動作について、テストしました。

 Multi Step-Cycle Jog Step1.00の設定で

 100パルス(MPG1回転)をSS経由でMachを動かして

 ました。

   ワイヤレスMPG ゆっくり回転 97.00
              早めに回転 64.00

   有線    MPG ゆっくり回転 100.00
              早めに回転 100.00

 というような結果で、ワイヤレスの方は、早く回転すると、

 4割ほど、パルスが欠落するようです。

 今回生成したA相とB相のパルスは、振幅を少し広めに

 とりました。この振幅をもうちょっと狭くすると、応答もよく

 なるような気がします。

 送信と受信側で、送受信のデータの個数を計測してみ
 
 ようと思います。Webはくしゅ

| mabo52 | 21:54 | comments (0) | trackback (0) | DIY:: -MPGワイヤレス |
---自作MPGワイヤレス化 (11)---
 外部セラロックを使わないで、内部PLLを使って、32Mhzで

 動作させるために、16F1827に16F88のプログラムを移

 植しました。

 今回、移植するのに、丸々3日ほどかかりました。はまっ

 てしまったのは、二つでした。

 一つ目は、大いなる勘違いで、

     for( ; ; )

 の使い方を誤ってました。そのため、A相、B相のパルスが

 正しく発生できませんでした。16F88で作った時は、パルス

 の発生を前後の余裕をもってしていたので、その余裕が、

 ロジックの誤りを吸収してくれたようです。初期値1~5まで、

 5回のループを作りたいのに、

   for(i=0;i<5;i++)

 のような記述をしてました。これでは、0~4までの5回の

 ループになってしまいます。正しくは、

   for(i=1;i<=5;i++)

 でした。

 もう一つは、原因がよく分からないのですが、クロックを早く

 すると、PORTが思った動作をしてくれなくなるようで、

 PORTレジスタとLATレジスタ
 
 と

 PICとMikroC
 
 に記事がありました。

 早速、LATレジスタを使って組み直すと、見事動きました。

 動いたプログラムです。ゴミが沢山残ってます。

  main.c

 特に、メインの処理では、switch分とif分が混在してます。

 原因をあれこれ探るためにやった名残です。

 もしかして、このように、PICは癖があるのかもしれませんね。

 AVR等は、どうなんでしょうか。

**************************
*           追記           *
**************************

 もしやと思い、諸兄の記事を参考に、ポートのビット操作

 の間に’nop’を一ついれて動かして見ました。

 あれほどなやんだのが嘘のように、通常の書き込みで、

 LATレジスタを使わないで、動きました。

   ’nop’をいれたプログラムです。

     main.c

 やはり、諸兄はすごい。Webはくしゅ

| mabo52 | 17:03 | comments (4) | trackback (0) | DIY:: -MPGワイヤレス |
---自作MPGワイヤレス化 (10)---
 やっと動作確認できた、送受信の基板を使って、SS経由で、

 MACHを動かしてみました。

 不具合が出るかなと思いましたが、あっけなく動いてしまい

 ました。

 MACHの数字の変化は、有線でつないだMPGに比べてみて、

 若干もたつくような印象でしたが、とりあえず動くことがわ

 かりました。

 今回の回路です。手直した方がいいところがあるかと思いま

 すが、一応動作したもの覚え書きです。

 

 今回は、エンコーダーが作り出した信号でなくて、PICで作っ

 た信号をSSに入れてますので、両者をオシロで比較してみ

 ました。

 

 PICで作った信号の振幅がやや狭いようです。

 広くするのは、簡単ですが、その分、応答速度が遅くなるような

 気がするので、このままにしようと思います。

 また、今回は、UART(USART)の通信速度は、9600bpsに

 しました。PIC周期を32Mhzにすれば、倍の19200bpsに設定

 しても大丈夫だと思いますので、後日変更してみようと思います。

 ただ、受信側に使ってる16F88は、20Mhzまでなので、

 ついでに購入しておいた16F1827に置き換えてみようと思い

 ます。幸い、RXとTXのピンは、プログラムから変更できるようで

 すが、16F88と同じ設定にできるようです。Webはくしゅ

| mabo52 | 21:55 | comments (0) | trackback (0) | DIY:: -MPGワイヤレス |
---自作MPGワイヤレス化 (9)---
 受信側の基板が完成し、動作確認をしました。今日、丸一日

 かかってやっと動作の確認ができました。

 今回、MCLREの設定ではまりました。

 デバック用につけたLEDがプログラムの開始で、点灯してくれ

 ません。いつも使ってる基板では、きちんと動作してくれるの

 であれこれやりました。幸い、RA5ピンの近くにLEDをつけ

 てましたので、LEDを触ると、つきました。あれ、と思いあれ

 これやっていると、RA5ピンをさわると点灯することが分かり

 ました。RA5ピンは、MCLRE(リセットピン)わりあてられてい

 ます。CONFIGでは、MCLRE=ONの設定で、外部ピンによ

 るリセットが有効になっていました。

 いつも使ってるテスト用の基板は、RA5ピンがリセット用に、

 プルアップされていました。今まで気づきませんでした。

 MCLRE=OFFにして、コンパイルし直すと、デバッグ用の

 LEDがやっとつきました。

 

 自作MPG→PIC→Xbee・・・・・(キャラクタ送信)・・・
       Xbee→PIC→SS

 の経路の作成が8割完成です。

 明日は、受信側で、生成するパルスの確認をします。

 切り替えは、フォットカプラーを介して、該当のピンをグランド

 に落とすことでします。このテストもやります。Webはくしゅ

| mabo52 | 18:57 | comments (0) | trackback (0) | DIY:: -MPGワイヤレス |

こんな物欲しいな
CLOCK
NEW ENTRIES
COMMENTS
    ---SPINDLEのPWM制御 (その2) (7)
  • TR >06.18
    ---番外編---
  • TR >06.02
    ---SPINDLEのPWM制御 (その2) (5)
  • mabo >05.30
保留中コメント:10件
LINKS
    相互リンクさせていただいてます。
  • The Rider
Search Box
名言集
メール
   
連絡は下記から
名前:

メールアドレス:

件名:

メッセージ(必須):


TOP PAGE