---モグラ取り器の作成 (2)---

 昨日に引き続き,モグラ取り器の制作ですが,今日は,弁をつけて
 モグラ取り出し口をつけて完成です。

 

 弁を水糸でつけました。
 根本の方に切り込みを入れて,とります。

 

 これをガムテープで塞いで完成です。

 

 明日にでも,釣具屋さんに行って,ミミズを購入し,中に
 入れて,仕掛けてみようと思います。

---モグラ取り器の作成 (1)---

 庭が以前からモグラの被害にあってました。
 そこで,いくつものモグラ取り器を仕掛けてきました。
 唯一,筒状のモグラ取り器に2~3匹捕獲することができました。
 過去記事
 
 ただ,この捕獲器は,土中に埋めるせいか,錆がかなり
 でてきました。
 一説によると,モグラは,においには敏感で,人工的な物
 の臭いがあると,警戒するとの記事も見かけました。
 そこで,YouTubeにもでていた,竹製の捕獲器を制作する
 ことにしました。
 知人の家から,太めのの竹と,細目の竹をもらってきて加工
 します。
 太めの竹です。孟宗竹かな。

 

 これを6等分ぐらいにします。

 

 これを電動カンナで,厚さ4~5mm程度の板状に加工します。

 

 糸鋸でだいたいの形を切り出し,グラインダーで整形します。

 

 中くらいの竹と加工した弁です。

 

水糸?で竹の中に半固定します。
 後,モグラの取り出し口をつけると完成です。

PWM信号発生器のシリアル通信

 過日,いろいろ試すのに◯mazonkから,PWM信号発生器を購入し,
 便利に使ってました。

 

 商品の説明にもシリアル通信ができると記述があり,基盤の裏
 にも TXD RXD の記述があるので,外部からコントロール
 できるのかなと思ってました。
 手持ちのシリアル通信のアダプターに接続し,PCから,あれこれ
 やってみました。
 最初「テラターム」でやりましたが, FAIL の文字が帰ってくる
 だけで,通信はできているようでしたが,うまくいかないようでした。
 「シリアル通信ソフト」というソフト名のプログラムをベクターから
 DLして,試してみると,あっけなく通信ができました。
 (起動にあたっては,管理者権限で起動しないとだめでした。)
 難しいプロトコルが必要かとおもいましたが,簡単なコマンドで,
 制御できるようです。

 

 写真は, ”read” のコマンドで,設定の状態を読んでいます。

   F055 → 周波数
   D090 → DUTY%

 と,表示されている数値を読み取ることができました。
 ちなみに,設定するには,

  周波数 001→999     F*** (ex F090 →90Hz)
  周波数 1.00→9.99   F*.**(ex F1.45 →1.45KHz)
  周波数 10.00→99.9  F**.*(ex F10.45 →10.45KHz)
  周波数 1.0.0→1.5.0 F*.*.*(ex F1.4.6 →146KHz)
  DUTY  1→100       D***(ex D090 →90%)
  read    設定データの読み取り

 でした。まだ,やっていませんが,PICからもコントロールでき
 そうなので,これを使った方が,手軽にPWMの信号のコントロール
 できるかもですね。

---SPINDLEのPWM制御 (その2) (8)

ーーMACH パラレルポートでのPIDコントロールーー
 パラレルポートでの,PIDコントロールについて,調べました。
 Smooth Stepper では,うまくいかなかったのですが,
 パラレルポートでは,うまくいきました。
  kernel Speed 100Hz
  Moter Control
    Use Spindle Motor Output と PWM Controlにチェック
  Special Function
    Closed Loop Spindle Control にチェック
    P→1.6 I→1.0 D→1.0
  PWMBase Freq 100
  Index 入力 ポート 1の11ピン
  PWM 出力 ポート 1の14ピン
 の設定で試してみました。
 入力した回転数に,MACHの方で,追従していく様子が確認
 できました。
 MACHは,やはり優れ物です。
 PIDの設定を最適化すれば,応答速度等,よくなるような気が
 します。
 最初デフォルトの
   P→0.25 I→1.0 D→0.3
 でやりましたが,入力回転数に追従する時間が多少かかり
 ました。Pを1.6に増やしたら,かなり追従までの時間が
 短くなりました。一端上がって,下がります。
 念のため外部の回転計でも回転数を計測しましたが,
 MACHの表示とほぼ同じでした。
 パラレルポートでは,確認できましたが,Smooth Stepperで
 実施するには,なにか設定があるのでしょうかね。

 

 私が確かめたのは,写真のような実験環境です。

 

 パラレルポートにジェンダーコネクターをつなぎ,ジェンダー
 コネクターから引き出した線に各信号線を結線しであります。
 今回使ったPWMのコントローラーは,◯華製のもので,
 PIDコントロールしないと,MACHからのPWM信号よりかなり
 高めの回転をします。
    2019年6月18日の記事
 で確認した,IRF740等のFETを使うと,きっと,応答速度
 もよくなるのかと思います。

振り子--スイング

 ポケモンgo等のゲームで,歩く距離を稼げるのうたい文句
 で,ちょっと前にAmazonで購入しました。

 

 最近,システム側で,この装置の検出を組み込んだみたいで,
 以前のようには,距離を稼げなくなりました。
 そこで,ダメ元で,ちょっと分解してみました。中には,
 コイルが。

 

 振り子の裏側はトランジスタとおぼしき半導体が。

 

 という簡単な構造でした。
 ネットでくぐると,多分下記のような,回路ではないかと
 想像できました。

 

 この動作原理はちょっとわかりませんが,
 簡単な構造だったんですね。
 分かる方なら,ちょっとの改造で,規則的な振り子の運動
 を,不規則なものに改造できるんでしょうね。
 ちなみに,システムに感知されないように,不規則な動き
 ができるようになったものが,発売になってます。

自作デジポット(デジタルポテンショメーター)---(3)

ーーーグレイコード(3)ーーー
 A相とB相の信号を使えば,回転方向を検出できることは,
 理解できました。
 これをプログラムで実現するには,いくつか方法がある
 ようです。
 自作のMPG関連では,B相の立ち上がりを検出し,それを
 DFFのICにいれて,回転方向を検出してました。
 今回は,別な方法でやってみようかなと思います。
 基本的な考え方は,◯月の取説にあったように,前回と
 今回の2回のサンプリングをして,その組み合わせの全部
 から回転方向を決める方法です。
 エンコーダーから,出力されるグレイコードをバイナリ変換
 して,前回と今回の2回のサンプリングの差を取って,+1
 の場合は時計方向,-1の場合は逆時計方向としてもいい
 のですが,バイナリ変換するのにビット操作が必要なので,
 私にはちょっと苦手かなと思います。
 それで,組み合わせを全部拾い出し,それをインデックスに
 して,回転方向を決めるのが私には分かり易いかなと思い
 ました。
 前回グレイコード(2)記事の表から,前回と今回の
 サンプリングの可能性を考えて見ます。
 可能性は,次のようになります。
  
  時計回転
  前回→今回
  00 →00 動かない(0)
  00 →01 時計回転(+1)
  00 →11 一つ先に移動(エラー)
  01 →01 動かない(0)
  01 →11 時計回転(+1)
  01 →10 一つ先に移動(エラー)
  11 →11 動かない(0)
  11 →10 時計回転(+1)
  11 →00 一つ先に移動(エラー)
  10 →10 動かない(0)
  10 →00 時計回転(+1)
  10 →01 一つ先に移動(エラー)
  逆時計回転
  前回→今回
  00 →00 動かない(0)
  00 →10 逆時計回転(-1)
  00 →11 一つ先に移動(エラー)
 
  10 →10 動かない(0)
  10 →11 逆時計回転(-1)
  10 →01 一つ先に移動(エラー)
  11 →11 動かない(0)
  11 →01 逆時計回転(-1)
  11 →00 一つ先に移動(エラー)
  01 →01 動かない(0)
  01 →00 逆時計回転(-1)
  01 →10 一つ先に移動(エラー)
 全部で16通りありますので,前回を2ビットシフトして,
 今回と合計すると,その数値がインデックスの数値として
 使えることになります。エラーを100とすると,
  m[(前回<<2)+今回]=数値
  m[0000]=0
  m[0001]=1
  m[0011]=100
  m[0101]=0
  m[0111]=1
  m[0110]=100
  m[1111]=0
  m[1110]=1
  m[1100]=100
  m[1010]=0
  m[1000]=1
  m[1001]=100
  m[0010]=-1
  m[1011]=-1
  m[1101]=-1
  m[0100]=-1
 のようになり,[ ]内を16進数に直すと,
  m[0]=0
  m[1]=1
  m[3]=100
  m[5]=0
  m[7]=1
  m[6]=100
  m[F]=0
  m[E]=1
  m[C]=100
  m[A]=0
  m[8]=1
  m[9]=100
  m[2]=-1
  m[B]=-1
  m[D]=-1
  m[4]=-1
 のようにすることができます。この配列を使えば,
 回転方向の検出ができることになります。

自作デジポット(デジタルポテンショメーター)---(2)

ーーーグレイコード(2)ーーー
 グレイコードをWikipediaでは,
 グレイコード(英: Gray code、交番二進符号
 (こうばんにしんふごう、英:Reflected Binary Codeなどとも)
 とは、数値の符号化法のひとつで、前後に隣接する符号間
 のハミング距離が必ず1であるという特性を持つ
 よような事が書いてあります。なんの事やらと思いましたが,
 どうやら,連続する2進数の符号の変化が,一つだけする
 表記の仕方のようでした。
 ですから,通常の表記とは,違ってるようです。下記がその
 対比表です。

 

 通常の2進数では,
   3→4の変化で 0011→0100
 のように3箇所変化してますが,
 グレイコードでは,
   3→4の変化で 0010→0110
 のように,1カ所しか変化していません。
 この性質が,エンコード等のデータの変化を取り出すのに
 エラーが少なくなるとのような記載もありました。
 エンコーダーの出力をみてみると,その出力は,まさに,
 グレイコードでした。

 

 エンコーダーの出力を Hightを 1 Lowを 0 として,
 B相を1ビット目,A相を0ビット目とした,2進数の出力と
 見てみると,見事にグレイコードの出力になってました。
 なぜ,回転の出力をA相,B相の出力に分けてあるのか,
 なんとなく理解できました。