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

 スピンドルをPWMでコントロールすべく,いろいろやって
 ました。
 MACH上に,回転数数を表示するのに,以前,
   EESX911R
 というオムロンのフォトインタラプタ―を使いましたが
 〇月にある、
  CNZ1023
 を使おうと思いました。使えれば、CNZ1023の方が
 一個20円と格安なので、コスパ最高なのですが。
 結論から言うと、オシロでは、きれいな波形が確認で
 きるのですが、残念ながら、私の力では、MACHに
 取り込めませんでした。
 諸兄のHPを参考に、
 プルダウンの抵抗やらいろいろ変化させてみましたが、
 だめでした。もしかしたら、前回のように、フォトカプラー
 等で、処理しないとだめなんでしょうかね。
 
 ということで、前回使った
  EESX911R
 で、回転数を取り込んで表示さて、入力した数値との
 比較を行いました。
 結果、クローズドループのコントロールになるかなと
 思いましたが、だめでした。
 結果は次のようでした。

   回転数入力 ポート2 10番ピン
   PWM出力  ポート2 14番ピン
   カーネル       2500khz
   PWM基本周蓮   1000Hz
   MACH SRO 20パーセント
     (これが一番数値が近かった)
   入力     表示 RPM
   1000      1339
   2000      2339
   3000      3178
   4000      3932
   5000      4623
   6000      5250
   7000      5778
   8000      6218
   9000      6222

 MACHの、フィードバック、クローズをコントロール、の
 項目にチェックをいれても大きな差はありませんでした。
 ただ、またまた未知数なのですが、P、I、D の設定の
 項目もあり、ここはデフォでしたので、もしかして、設定
 によっては、うまくいくのかな、と思ったりもしました。
 ありきたりの実験の様子です。

 

 MACHからのPWMの基本周波数は変換してませんので、
 後日、変換した後どうなるか、見てみたいと思います。
 なかなか思うようにできないですね。

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

 MACHからのPWM制御で,PWMコントローラを通して,
 モーターを回してみましたが,入力値と,回転数がかなり
 離れています。
 MACHの問題なのか,PWMのコントローラーの問題か,
 それとも,別の問題なのか分からないので,
 PWM発生器から,DUTY比を変えて,回転数との関係
 を見てみました。

 

 PWMの基本周波数は,2khzにしました。
 モーターの最高回転数は,9400rpmです。
 
   DUTY比       回転数
   10%        3466rpm
   20%        5700rpm
   30%        7058rpm
   40%        7800rpm
   50%        8200rpm
   60%        8600rpm
   70%        8800rpm
   80%        9000rpm
   90%        9400rpm
  100%        回転せず

 PWMのDUTY比と回転数は,比例しないようです。
 正確なコントロールをするには,やはりループバック
 でコントロールする必要があるのでしょうかね。
 回転数をMACHに入れて,ループバックでのコントロール
 をしてみたいと思います。

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

 前回の記事書いたのもう3年もまえなんですねえ。
 やるつもりでしばらく(ずっと)中断してました。
 機会があって,またその続きをしました。
 今回は,実際のスピンドルモーターをMACHから,
 コントロールしてみました。といっても,私の実験環境
 でですけど。

 

 次の環境で確認しました。

 MACH3→Smooth Stepper→◯ECさん基盤
          ↓        ↓ 
      スピンドルモーター  ステッピングモーター
 MACH3からのPWM信号は,
        ◯ECさん基盤→汎用出力 14番
        Smooth Stepper→ポート2の 1,14,17

 のそれぞれで確認でき,写真赤丸の
 PWMコントローラーを介してモーターをコントロールで
 きました。
 という訳で,今回は,MACHへの数値の入力と実際の
 回転数について調べました。

 kenerl Speed 25000Hz
 Pwm Base Freq. 1000
 Pully Selection Min Speed 0
       Max Speed 10000
       Ratio 1

 の設定です。ちなみに,モーターをPWMコントローラー
 を介さないで回すと,9949rpmで,約10000rpm
 位ですね。

  入力数値         実際の回転数
     500           2488
    1000           4300
    2000           6540
    3000           7668
    4000           8254
    5000           8610
    6000           8813
    7000           8997
    8000           9105
    9000           9200
   10000           回転せず

   小さい数字の入力だと
     100→約1000
     200→約2000
   で入力のほぼ10倍になってました。
   回転数をMachにフィードバックしていませんので,
   フィードバックするように
     Use Spindle FeedBack in Sync Mode
   チェックを入れるともっと正確になるんでしょうかね。
   諸兄のHPにあった,基本周波数と分解能の問題
   のような気もしますが。
   多分,基本周波数を上げて,分解能をあげると
 
   もっと細かい制御ができるのかなと思います。
   後日,基本周波数を変更して,確かめてみようか
   と思います。 

芝生の手入れ--芝刈り機のメンテ

 暖かくなってきたので,芝生の手入れを始めました。
 少し刈り高を短くするのに,今まで刈り高を高くするアダプター
 を芝刈り機から外して,使ってみました。
 アダプターなしだと,5mm~25mmでので調整ができます
 ので,10mmのセットで,刈ってみました。
 結果,

 

 のように,設定より深く刈り込んでしまったようです。
 過負荷の表示で,モーターが止まってしまいます。
 刃が切れないので,ロータリー刃と固定刃の間に芝を
 沢山巻き込んでしまって,止まってしまうようでした。多分,
 本来だと,この巻き込んだ部分で,切ることができるのだと
 思います。
 ロータリー刃を固定刃を手で触ってみると,全然抵抗が
 なく,刃先が丸まってるのが分かります。
 まあ,この芝刈り機の購入が2011年の4月ですから,
 8年あまり,使ったことになります。
 
 思い切って,ロータリー刃と固定刃を交換することにして,
 早速ポチりました。
 送料節約のため同じところにしたかったのですが,
 固定刃を固定する,5M×8の六角皿ネジと固定刃の
 両方取り扱ってるのが,◯タロウだけでしたので,
     固定刃→→◯タロウ
 にしました。
 ロータリー刃も◯タロウでと思いましたが,残念ながら,
 ◯タロウでは,取り扱いが終了してました。(メーカーで,
 芝刈り機本体の製造も中止になるのかと邪推してます)
 そこて,
    ロータリー刃→→◯天
 にしました。
 本体からロータリー刃と固定刃を取り外すのに苦労しました。
 長年,油も差さずに使ってたので,固定に使われている
 ネジがさびて,固着してしまっていました。自分だけでは,
 外せず,自動車やさんの友人にもお手伝いしてもらいました。
 まあ,あとどれくらい使えるかはわかりませんが,
 後々のメンテを考え,全部ステンレスにすることにしました。
 M6×20のステンレスのキャップボルトは,HCで入手でき
 ましたが,
 その他の物はHCではありませんでしたので,
   M5×8の六角皿ネジ→→◯タロウ
   M6×45の細目キャップボルト→→◯ルガ
 で,購入しました。M6×45のネジは,送料等入れると,
 一本300円オーバーの値段になってしまいました。
 2本あればよかったのですが,余分に購入しました。
 ここは,最低購入金額が500円なので,中途半端な本数の
 購入になりました。
 まあ,あまったネジは,◯オクにでもだしましょうかね。

 

 この一番左のネジがくせもので,細目ネジかなと検討はつけ
 ていたのですが,念のためメーカーに問い合わせてみましたが,
 M6×45以上の情報だ資料に記載がないので,公開でき
 ないとのことでした。
 初めからそうすればよかったのですが,ピッチケージピッチを
 計ってみると,0.75で,やはり細目のピッチでした。
 ネジ関係がそろいましたので,後は,ロータリー刃と固定刃
 の到着待ちです。

おもちゃの作成(5)---I2C LCD ACM1602

 制作のついてでに,手元にあるI2CインターフェースのLCD
 をケースに入れて動作を確認しました。
 PICのプログラムを組んでももかったのですが,デバック等
 多少手こずりそうだったので,諸兄のHPにあったaruduino
 をパクりで,動作を確認しました。

 

 諸兄の作られたaruduinoのACM1602用のライブラリーも
 そのまま使わせていただきました。あっけなく完動いたしまし
 た。
 諸兄の配線図では,ACM1602とaruduinoを直接つないで
 いるようでしたが,念のため,間にレベル変換の基板をいれ
 て,接続しました。これ必要ないのかもですね。

 

 諸兄の配線図では,A4とA5を3.3Vにプルアップして,LCD
 に直接つないでいるようでした。このへんの詳細がちょっと
 分かりません。
 とりあえず動きましたので,これから,ボチボチPICの方も,
 プログラム見ていきたいと思います。

 
 
 
 
 

おもちゃの作成(4)---おもちゃの正体

 おもちゃの作成を初めて何日か過ぎました。
 やっと,だいたい完成です。
 おもちゃは,なんのことはない,ポケモンgoプラス
 という,ポケモンをボタン一つで捕獲できる器具を,自動で,
 動作できるようにしたものです。

 

 このポケモンgoプラスの中身を,諸兄のHPを参考に,
 スイッチと振動モーターの結線を引き出し,フォットセンサー
 で読み取った光に応じて,フォットカプラーにて,引き出し
 た線を短絡させるという動作を,自動で行うようにしたものです。

 

 諸兄のHPのように短絡させただけで,自動化できるのですが,
 ちょっと,面白みがないので,手に入った光センサーと組み合わ
 せて作りました。
 ちょっと,大きいのですが,プラスチックの箱にいれて,遊んで
 みる予定です。

 

おもちゃの作成(3)---プロトタイプ?完成

 備忘録で,回路図の掲載です。

 

 冗長なプログラムですが,掲載します。

   main.txt

 あっちこっち,ゴミが残ってますし,一貫した表記では,
 ないですね。その時の気分で,細かい部分が変わってしまいまし
 た。
 そうそう,回路図書いていて,フォットカプラーとタクトスイッチ
 が逆になってること気がつきました。
 回路図が間違いですね。面倒なので,そのままです。
 
 LCDの接続には,全部で8本の結線が必要です。
 I2C方式だと,半分の4本で済みます。
 手元にI2C用のLCDもあるので,LCDのライブラリー
 も諸兄のページを参考に作っておこうかと思います。
 ついでにケースにいれときますかね。

おもちゃの作成(2)---プロトタイプ?完成

 このところ取り組んでいたおもちゃのプロトタイプがほぼ完成
 しました。
 完成の前に,いくつかはまりました。今日は,AD変換の配線
 にはまりました。
 電気の基礎ができてる方は,こんなことはないのでしょうが,
 AD変換がうまくいかなく,もがきました。
 原因は,なんのことはない,AD変換のボリュームは,分圧して
 ることを忘れていました。つまり,-側の配線をしていません
 でした。こんな知識もないのか,とちょっとがっかりしました。
 それと,センシングが微妙で,光源にセンサーが近すぎると
 緑成分と青成分の両方に感応してしまいます。センシングの
 時間を短くすると感度が悪くなるしで,ちょっと,いたちごっご
 でした。
 ただ,それぞれの色を感知するときは,その色の数値が
 他の色の数値より多くなるので,プログラムで処理しまし
 た。
 備忘録のために,回路図,プログラム等,順次掲載しようと
 思います。
 作ったおもちゃはなんのことはない,青と緑のLEDの光を感知
 して,感知した色を点灯させて,外部スイッチ(フォットカプラー)
 をONにするという単純なものです。

 

 外部スイッチをONにする時間と点灯LEDの時間,をどうするか
 迷いましたが,外部スイッチをONにする時間とLEDをONに
 する時間は,0.1秒程度にしました。
 それと,長い時間その色を感知すると,0.1秒点灯の繰り返し
 になりますので,一度,点灯させたら,1秒程度やすませる
 というようなプログラムにしました。
 単純に delay を使ってもよかったのですが,その間,センシング
 も止まるので,割り込みを使って,約1秒の待ち時間をつくって
 みました。

おもちゃの作成---チャージポンプ回路

 おもちゃを作成してますが,作成の過程でモニターするために,
 LCDが必要でした。
 今までは,空中配線でその都度間に合わせていましたが,
 何度も同じことをするので,一つ,ケースに組み込んだ物をつくって
 おくことにしました。
 できれば,3V(乾電池)から5Vで動作させたいので,以前作った。

 ローコストLCDシリアル通信モニターを参考に
 LCDのバックライト用にチャージポンプ回路を組み込むことにしました。
 諸兄の回路をパクらせていただきましたが,制作の過程で,
 なかなかうまくいかず,二つ同じような物をつくりました。

 

 よく調べてみたら,最初のも正常にうごいてました。
 二つ作ることになったのは,PWM信号がうまくでてるのか,オシロ
 で確認しましたが,信号をうまく取り出せなかったからです。
 それで,もう一つ作ることになりました。よく調べて見たら,
 二つとも正常に動作してました。
 当たり前なのかもしれませんが,チャージポンプ回路からでている
 負電源をオシロで確認しようとあれこれやりましたが,確認できま
 せんでした。これ,きっとあたりまえなんでしょうね。テスターで
 確認すると,だいたい理論値通りの数値がでていたので,
 よしとしました。
 諸兄は,UART関係やら設定やらチャージポンプのための発信等
 を一つのICでしてましたが,発信だけが必要なので,小さくピン数が少ない
 12F1840で専用発信回路を組みました。
 といっても,諸兄のパクリです。

 まだ,完全な動作確認はしていませんが,バックライトは,
 (本日,既存の回路に組み込んでみたら,
  きちんと表示されましたので,誤配線等はなかったようです。)

 3Vで動作したので,大丈夫かなと思います。
 全面と中身です。

---PIC どつぼにまたはまりました。

 おもちゃを作るのに,またPICをいじってます。
 ただ,その過程で,またまた,どつぼにはまりました。
 どちらもLCDでの表示のプログラムなのですが・・・・・・・。
 一つは,何のことはないのですが,x軸,y軸,の表記を逆にしていま
 した。これでは,正しく表記できないですよね。
   lcd_setCursor(8, 0);
 とやるところを
  lcd_setCursor(0, 8);
 とやっていました。
 もう一つもLCDの表示なのですが,LCDの表示が,1桁の表示から
 4桁の表示になると,以後,一桁の表示にならなくなるというもので
 した。
 センサーがだめなのか,LCDの表示のプログラムがまずいのか
 あれこれなやみましたが,原因がやっとわかりました。
 G:45→G:4095
 となった後,2桁の表示にすると,
  G:3695
 のように表示され,前回表示の95の部分が残ってしまうという
 ことでした。
 左詰めにする簡単な関数を作って解決しました。