---「PIC」プログラミング再び (1)---

 ちょっとした制御をPICでやろうとまた思いたちました。以前
 ハンダゴテタイマーをPICで作りましたが,そのプログラムを
 見てみると,全く忘れてしまいました。
 そこで,また,最学習することに・・・・・・・・。
 今回もプログラミング言語は「C」を使いますが,PICの細かい設定
 とうについて,全く忘れてしまいましたので,備忘録代わりに,
 メモ帳代わりに記録していきます。
 以前使った16F627Aです。
 PORTAレジスタ・・・・ポートAの出力端子の電力レベルの設定
      ポートAの出力端子(RA7~RA0)
    例 一括設定
        PORTA=Ob00000000(RA7~RA0が0Vに設定)
             0b・・・2進数
             ・・・・・・8進数
             0x・・・・・16進数            
      単独の設定       
        RA0=0(RA0を0Vに設定)
  PORTBレジスタも同様の設定
 TRISAレジスタ・・・・RA各端子の入出力の設定
             0を書き込むと出力端子になる
             1を書き込むと入力端子になる
    例 一括設定
        TRISA=0b00000000(RA7~RA0が出力端子に)
       単独の設定      
        TRISA3=0  (RA3を出力端子に)
      (16F627Aの場合RA5は入力専用なので,必ず入力に)
  CMCONレジスタ・・・・・・汎用端子の役割設定
       CMCOM=0x07 (下位3ビットを1に設定することで
                   1,2,17,18端子を入出力端子
                   に設定)
 
  今日は,

  

 
この本で,ここまで復習。
 プログラムを覚え初めの頃,
    A=A+1
 という表記が納得いきませんでした。数学や算数では,成り立ちません。
 この場合,「=」はイコール(等しい)ではなくて,代入するという
 意味です。ちなみに等しいかどうかの判別は,「==」イコール
 を二つ並べます。プログラム覚え立ての頃,ここではまりました。
 IF(A=1){処理1}
 こんな風に書いて思った結果がでませんでした。これだと,Aに1が
 代入されてしまいます。正しくは,
 IF(A==1){処理1}
 でした。

---デジタル回転計 K3NRーNB1A-C1---

 某オクのアラートに設定しておいたomronの
 デジタル回転/パルスメーターの長期保存品の新品を無事
 3500円で落札できました。8年以上前に製造中止になった
 型ですが,お値打ちでした。
 早速,手持ちのomronのフォットセンサーと組み合わせ,
 段ボールで一カ所だけ切り欠きをいれたエンコーダー?を
 電動ドライバーにつけて,試運転をしました。

 
 プリスケラ-の設定がいいのかどうかわかりませんが,
 とりあえず,電動ドライバーの回転に合わせて,数字が変化
 します。
 よくわかりませんが,エンコーダーのスリットを多くすれば,
 数字も安定するんでしょうか?。
 mokkinさんのHPでは,60のスリットを作ってるようです。
 sable2015でエンコーダーを作成して,実際にフライス盤
 に取り付けて市販の回転計で,精度を測ってみようと思います。
 もともと工業用に製作されたもので,いろんなことができます。
 単なる回転計として使うには,もったいないようです。

---THE解決 リレーの不具合---

 スマホでyahooのサイトを眺めていたら,表題の文字が飛び
 込んできた。早速omronの該当のHPにアクセスして,申し込
 んでみた。企業対象の文字も目に入ったのでだめかなと思って
 諦めていると,昨日,小冊子が送られてきた。

 

 商品のカタログと一緒に,「THE解決」というリレーの不具合について
 詳細が書かれている冊子が気にいった。
 この冊子お勧めかも。

---サーボテスター (2)---

 サーボテスターの波形をオシロで見て見ました。今まで,
 どんな信号でラジコンのサーボをコントロールしているか
 分かりませんでしたが,オシロで見て見て,すっきりしました。

 
 左にボリュームを回すと振幅が狭くなり,右に回すと
 広くなります。
 特別な信号でコントロールしてるのかと思いましたが,
 なんと,単に,パルス幅の変化でコントロールしてることが
 わかりました。PWMを使ったコントロールでした。
 ゆくゆくは,スピンドルモーターもMACHでコントロールしようと
 思ってましたが,一歩近づきました。
 MACHのスピンドル設定には,よく見ると,PWM制御の項目
 があります。多分,ここから出されるPWMの信号をを使えば,
 DCモーターの制御も出来るような気がしました。
 ラジコンのサーボの信号のPWMのは,
 ここ
 に詳しくかかれてました。

---デジタル温度計キット(2)---

 組み立て終わったので,電池につないで見ました。
 ところが,LCDに「1」しか表示されません。イモハンダが原因
 かと思いハンダ部分を全部再加熱して見ましたが,同じです。
 組み立てマニュアルを見ると,VR3周辺を点検すべしとあります。
 よく見てもおかしいところはないので,再度,組み立てマニュアル
 と熱電対のマニュアルを見てみると,ありました。
 熱電対マニュアルでは,
              VR3--1MΩ
              RT---470KΩ
 に変更するとあるのに,本体のマニュアルでは,
              VR3---470KΩ
              RT---1MΩ
 と反対の表記でした。熱電対のマニュアル通りに組み立てたので,
 本体のマニュアルのように変更したら,動きました。
 マニュアルの間違いでした。
 氷水とお湯で,おおざっぱに更正しました。
 うまく動いています。

 

 後で温度計と比べながら,正確な更正をしてみます。
 マニュアルが間違っていたのでは,動きませんね。

---デジタル温度計キット (1)---

 焼き入れをしましたが,正確な温度が分かればと思い,
 秋月電子の温度計のキットを購入,組み立てました。

 

 9Vの電池仕様です。
 ケースが加工中なので,まだスイッチは入れていませんが,
 いくつかの抵抗とコンデンサーをつけて,後は,ICと液晶を
 つけて完成です。
 ちょっと面倒と言えば,ICソケットを加工しなければいけないので,
 そのところだけが,ちょっと緊張しました。
 完成後,更正をしなければなりませんが,楽しみです。
 熱電対(温度プローブ)の取説には,-200度から1250度まで
 測定できるとあります。

---半田ごてタイマーが組み上がりました---

  あれこれやってましたが,やっと,半田ごてタイマーが組み
  上がりました。昨日だいたいできたのですが,RA0の端子
  とRA7の端子が思った動作をしてくれず,あれこれ,やって
  ましたが,原因が分かりました。RA0はイモ半田で,導通し
  ていませんでした。RA7は,ショートしていいて,常に5Vが
  でている状態でした。当初の予定では,自己保持リレーで,
  自分自身お電源も切る予定でしたが,あれこれやりました
  が,うまく行きませんでした。とりあえず完成ということで,
  後日,2回路のリレーを使って,再挑戦したいと思います。
  今までのタイマーと違って,残り時間が液晶表示で,分か
  こと,任意の時間が設定できること,残り時間がなくなると,
  一分だけ延長され,その間にスタートボタンを押すと,設定
  した時間だけ,繰り返せます。一分が過ぎると,半田ごての
  電源を切って,0の表示に戻ります。

  

  
  青の液晶表示がおしゃれだと思ってます。今のところ,
  一番右のスイッチは,ただの飾りです。

---予定変更 16F84A~16F627A ---

 HPにのっていた99タイマーをちょっと改良して,半田ごてタイ
 マーを作る予定でいましたが,16F84Aは端子が,どうしても2
 本たりないで,上位互換である,16F627Aに変更して,作る
 ことにしました。もう少し調べれば,16F627Aよりもメモリーが
 が多くて,安いPICがあったのですが,失敗しました。これも,
 身銭を切ったお勉強です。
 テスト基盤,

 

 でのプログラムの作成もやっと完成しそうです。今まで使って
 いた半田ごてタイマーと違うところは,使える時間を99分まで
 の間で設定できることです。
 (時間の設定)→(カウントダウン)→
  (ブザー)→(一分以内にスタートボタンを押す)
    →(最初の設定時間に戻る)→(カウントダウン)
 を繰り返します。一分以内にボタンを押さないと,本体
 も含めて電源が切れるようになります。
 
 当初 アセンブラー(HPにあったもの)をちょっと改良
 するつもりでしたが,プログラムの半分ぐらいは,意味
 が分かったのですが,面倒なので,フリーのCコンパイ
 ラーで,くみなおしました。プログラムの大きさが心配
 でしたが,PICの容量の85%ぐらいでおさまりました。

---タイマーを作っています。---

 PICを使ったタイマーを作ってます。やっと7セグメントLEDの
 表示部分だけが出来ました。テスト点灯で,一カ所だけ,光ら
 せています。

 

 このタイマーのハードにSSRを組み込んで,半田ごてタイマー
 にしようと思います。
 ハードの追加は,PIC16F84の開いている端子にSSRを接続
 するだけなので,それほど難しくはありませんが,プログラム
 の変更が大変だろうなあ。

---PICプログラミング---

 友人の影響で,PICのプログラムをいじり始めました。
 アセンブラーとCコンバイラーがどちらも無料であるので,
 DLしてあれこれ始めました。
 最初にCであれこれやりましたが,まあ,比較的すんなりいき
 ましたが,アセンブラーではまりました。
 なんと,
 LIST
 と
  LIST
 の違いで,コンパイルエラーとなりました。どかが違うかというと,
 LISTの前に空白があるかないかの違いでした。