2015-08-25 Tue
実際にプログラムのコーディングをして、PICに書き込んで動かしてみました。
PICを始められた方が最初に取り組むLEDを点灯させる
プログラムと大きな違いはありません。
一応、プログラムで、チャタリング防止のルーチンをいれて
いますが、タクトスイッチだけだと、タイミングによって影響
を受けます。画像の右側の基盤には、シュミットトリガーを
組み込んだタクトスイッチがセットしてあります。
シュミットトリガーを組み込んだものは、誤動作も少なく動作
しました。
シュミットトリガーを組み込んだスイッチでは、4つのLEDを
順次点滅させています。スイッチを押すたびに、隣のLED
に移ります。
左の基盤に組み込んであるタクトスイッチは、3つのLED
を順次点滅させます。後半の画像ですが、チャタリング
をうまく吸収できなかった画像になり、一瞬光っただけで
となりに移ってしまいました。
一応動作したプログラムをアップします。
MPG.C
メインでは、割込等の初期設定だけで、TIMER0の割込の
ルーチンで、ほとんど処理してます。
かなり冗長な部分が多いですが、一応うごいたものです。
今回、動かすにあたって、画像には入っていませんが、
基板のタクトスイッチで点灯させるLEDが、電源投入して
1,2秒するとおかしな動きをします。
シュミットトリガーを入れたスイッチの方は、問題がなく、
接続を反対にすると、症状がうつりますので、基板の
ハードの問題のような気がします。
2015-08-24 Mon
ロータリースイッチの機能をPICに分担させるのに、ちょっと工夫します。
ロータリスイッチの場合隣り合った数字の移動しかできません。
4接点だと4までの隣同士の数字にしか移動できません。
1←→2←→3←→4
1→→4はできません。
スイッチ一つをPICに分担させると、ダブルクリック等の技を
(「長押し」も可のアドバイス受けました。)
検出しないと逆戻りをさせることはできませんので、次のよう
にします。
スイッチが1回押されるとカウンターを1加算するようにします。
一方参照テーブルは、
1←→2←→3←→4←→3←→2
のように、6個作っておきます。
このテーブルにカウンターを次のように割り当てます。
1←→2←→3←→4←→3←→2
↓ ↓ ↓ ↓ ↓ ↓
1 2 3 4 5 6
こうすることで、カウンターを加算することで、常に隣の数字
に移動ができます。カウンターが6になったら、
ます。
(1ではだめでした。割込処理を抜けるとき0にします。
if(counter==6){counter=0;}は、swtch文の後です。
割込処理のキーチェックで必ず、1加算されます。)
これをCのプログラムにすると、
みたいな感じになります。実際には、「待ち時間を作る」、
「スイッチが押されたフラグのSWをクリアーする」等の
細かい指示が必要です。
また、もう一つスイッチを使うなら、2→→1、等の逆戻り
もできますが、一つだけの予定なので、このままいきま
す。
2015-08-24 Mon
低価格の手パ(手動パルスジェネレータ=MPG)を購入しようと思いましたが、手持ちのジェネレーターがあるので、切り替え器
と組み合わせて、ケースにいれてみようと思います。
ロータリースイッチを使おうと思いましたが、忘却防止のため、
手持ちのPIC(16F88)を使って、切り替え器を作ります。
軸の切り替えに一応4(X,Y、Z、4)出力。スピード?の切り替え
に3(1倍、10倍、100倍)出力。これだけで、
ロータリースイッチ使うと、同じ数だけ
跳ね返りスイッチ2個をそれぞれの切り替えにわりあて、
出力は、プログラムで処理します。
それぞれの出力にLEDの表示もしますので、PICから直接
ドライブすると出力電流がオーバーしそうなので、今回、
トランジスタアレイ(ダーリントンドライバー)を使うことにし
ました。
(選定を間違ったようです。正解はTD62003でしょうか)
思いますが、大は小を兼ねる?でやって見ます。
細かい数値の意味の読み取りができないので、困ります
が、まあ、トライアンドエラーで、いつもの通りやって見ます。
PIC→TD62004APG→フォットカプラー→SS
|
→LED
の構成で考えます。
このTD62004APGは、優れもので、内部に抵抗があります
ので、PICの出力を直接接続できるようです。
7チャンネルなので、今回の目的にちょうどです。
昨日、今回は他にもほしいものがあったので、○ツに注文
しました。肝心のカプラー忘れました。
それと、多芯ケーブルをどうしましょうかね。
7芯+電源+グランド等で、9芯のものが最低でも必要です。
○タロウのロボットケーブルは、30Vの10芯2mで、
2600円程度します。ケーブルが一番高いです。
PICのプログラムは、一定時間ごとに割込をかけて、二つ
のスイッチの判定をして、それに応じて、出力を順次切り
替えればいいので、それほど難しくはないかなと思います。
さて、また、PICの復習からでしょうか。
2015-08-21 Fri
あれこれ探していて、こんなページを見つけました。ここには、VBのスクリプトだと思いますが、
の記述があります。ここに括弧書きで倍率の表示があります。
Slect step value 1→→1.00(100倍)
Slect step value 2→→0.1 (10倍)
Slect step value 3→→0.01(1倍)
でいいのでしょうか?
「手パ(手動パルスジェネレーター)の接続 (5)」で
取り上げた諸兄の設定には、
#6 5 267:Select Step value 3 2-1
#7 6 266:Select Step value 2 2-2
の設定があります。3が1倍、2が10倍ということなので
しょうか。
詳細の記述があるHPがなかなか見つかりません。
2015-08-20 Thu
手動パルスジェネレイター(以下手パ)の設定について、将来、接続するために、いろいろ調べています。
前回までのコラムで、ハードの接続、MACHの設定と自分
なりにまとめてきましたが、どうしてもとけない疑問があり
ました。
それは、各軸を移動するにあたってのスピード?だと思い
ますが、「X1、X10、X100」のMACH側の設定方法です。
OEM Buttonsの一覧表を眺めても、「X1、X10、X100」の
記載はありません。関係しそうなのが、
ぐらいしか、私の英語力では、みつかりませんでした。
やっと、ヒントの書いてあるHPをみつけました。
このHPに、「X1、X10、X100」のための設定と思われる画像が
ありました。
この項目と関係するとなると、OEM_Buttonsの表に、関係の
ありそうな項目があります。
ちょうど、10の項目あります。
もしかして、直接指定するのではなく、設定した表の項目を
指定するように、するのでしょうか。
もちょっと調べて見ようと思います。
2015-08-19 Wed
実際にうごかしてみました。プルアップでよかったのか疑問でしたが、プルアップの回路でよかったようです。
ブレッドボードで仮組で動作させてみました。
オシロで確認しました。DIRの信号は、パルス状にしか、
オシロ上では確認できないので、LEDをいれてみました。
CW(時計方向)では、LEDが点灯しますが、
CCW(反時計方向)では、LEDが消灯します。
ユニバーサル基板に組んでみます。
あまり体裁はよくありませんが、実際に組み込んでみたもの
です。
これをステッピングモーターに接続して回してみます。
ゆっくりですが、手パの動作に従って、CW、CCWと追従して
回ります。
それにしても、先達は、すごいです。
2015-08-19 Wed
○ECさんの回路を参考に、回路図を書きました。○ECさんの回路では、4013のDフリップフロップのICを使っ
てますが、○月では、SN74HC74のICの取り扱いしかないの
で、これを使います。
真理表を見てみると、
のようにSET・RESETとPRE・CLRの条件が反対になってます。
SN74HC74は負論理?のようです。
ある方に紹介いただいたサイトには、
負論理のもうひとつの意味は、前図74HC74の-Qのよう
に、1と0の論理レベルが反対になっていることを表す場
合です。
この場合にはLowで1、Highで0の意味であることを表して
います。
記述があります。この辺をよく考えないで、PRE・CLRをプル
アップする回路にしてしまいました。
Highで思った動作になるのですが、Highが0だと、なにも考
えずにグランドに落とせば良かったのでしょうか。
まあ、これも勉強です。下記のような回路で、出力をオシロで
みてみたいと思います。
(ICはHC74HC74の間違いでした。)
どうなることやら。
回路図では、プルアップの抵抗をいれていませんが、
実際の配線では、プルアップ抵抗念のためにいれておき
ました。
2015-08-16 Sun
今年は、異常と思えるくらい暑い日が続きました。まだ続くで
しょうが、今日、幾分、涼しい風が吹いてきます。
あれほど成長が早かった庭の芝生もやや成長が鈍ってきた
ように思います。
昨日、また、芝刈りをしました。4cmの刈り高でやってますが、
刈り取った芝の量が前回より少なくなってるような気がします。
水まきが朝晩必要だとマニュアルには書いてありましたので、
頻繁に水まきをしていました。キノコが生えてるの気がついて
きをつけてましたが、芝生の一番生育のいい場所に前回とは
違うきのこが生えてました。
水はけが悪くなってるんでしょうか。
広がらないように早速細かいものまで回収して、水やりをちょっと
控えてます。
部分的に、まだまだ、いい具合に密集してないところがありますが
今年は、昨年に比べると、管理がうまくいきました。
2015-08-14 Fri
いつの間にか、ステッピングモーターが増えてしまいました。それそれ目論見があって集めましたが、テスト方法に手間
取ってました。
ある方の掲示板を見てたら、以前にアドバイスを受けたこと
のある方の記事が目にとまりました。
その方は、手動パルスジェネレーターをDフリップフロップ
回路を介して、直接ドライバーに接続してるようでした。
Dフリップフロップは、初めての言葉で戸惑いましたが、
いろいろ調べて見ると、私にもできそうなので、早速部品
を調達して、トライしてみることにしました。
通常、手動パルスジェネレーターからは、A相、B相の信号
が出力されます。
このままでは、ドライバーに入力できません。ドライバーにも
よりますが、1パルス入力方式の信号に変換する必要が
あります。
この変換にDフリップフロップの回路が使えるようです。
A相の信号は、そのままドライバーのパルスに入力します。
B相の立ち上がりのタイミングで、そのときのA相の信号のHL
を判別してその信号を出力する役割をDフリップフロップの
回路に分担させます。
CW(時計方向回転)のB相の立ち上がり時のA相は、必ずH
になります。CCW(半時計回り)のB相の立ち上がり時の
A相は必ずLになります。
実際には、B相の信号をクロック入力に入れます。A相の
信号は、ドライバーへの接続とデーター入力の両方に入れ
ます。こうすると、CWの時は、出力がHに、CCWの時は、
出力が、Lになります。
Dフリップフロックを使うことによって、A相B相の信号を
1パルス(PULSE/SIG CK/DIR)方式に変換できること
になります。
幸い、回路図は、○ECさんのHPにありますので、これを
参考に部品が届きしだいトライしてみようと思います。
DフリップフロップのICは、○ルツには、
TC4013BP
という○ECさんの回路図と同じものがありますが、○月には、
(SN74HC74の間違いでした。)
というICしかありません。
この二つは、同じ動作をするようですが、ピン配置・真理等が
違うようで、ICを差し替えればいいというような互換性はない
ようです。
他の部品も必要だったので、○月に注文しました。
○ECさんの回路図には、カレントダウンの回路も組み込まれ
ていますが、とりあえず必要ないので、信号変換の部分だけ、
まねをします。
TOP PAGE △