Category Archives: CNC

スイッチングBECの製作

最近ラジコン/ドローンの投稿が多くなっていますがまたまたラジコン/ドローンネタです。

息子が通販で激安のESCを見つけてきました。スチレンペーパーの飛行機を作ったりするので多めに買ってストックしておくと便利です。

※ラジコン用語で ESCとはElectricSpeedControllerの略で要するにブラシレスモーターのドライバーです。ラジコン受信機やドローンのフライトコントローラーからの信号に合わせてモーターの出力を制御します。

見ると税別880円で20AのESCが4個入っています。但しBECが内蔵されていません。

※ ラジコン用語でBECとはBatteryEliminateCircuitの略で要はレギュレータです。独特な用語に思えますがプロペラを回すためのバッテリー電圧(7.4Vや11.1V)から受信機やサーボを動かす為の5V電圧を作り出す事で5Vのバッテリーを載せなくて済むという意味からバッテリー除外(eliminate)という事らしいです。

1個あたり220円。消費税と送料を入れても安いじゃないですか。BECだけ別に準備すれば安くESCが手に入るので早速購入しました。

4個入りを私が2セット、息子が3セットで、合計20個のESCを購入!
さすがにこんなに使うか?

そしてBECをどうするかですが、Aliexpressで見ると降圧DCDCコンバーターが80円くらいで売られているのでこれを買うのが簡単です。しかし最近はコロナウィルスの影響かAliexpressで買っても中々発送されないんですよね。という事で作ってみようかと思った次第です。

どんなのを作るか考えるに、負荷の電流が少なければ単純に3端子レギュレータ(シリーズレギュレータ)でも良いですが、飛行機に載せるとサーボを動かすのでそれなりに電流を流したいです。また発熱が多くて放熱板を取付けたりすると重くなってしまいます。となるとスイッチングレギュレータですよね。

部品箱には300円で大量に入っていたスイッチングレギュレータIC、LM2576があります。当初これを使おうかと考えたのですが結構古いのでスイッチング周波数が52KHzと低いんですよね。するとインダクターが100μHくらいのを付ける必要があり、コンデンサもそれなりに大きいのを使う必要があります。

そこで先日フライトコントローラーを修理した時に買ったMP2359のデーターシートを見ると、こちらはスイッチング1.5MHzで動作するとの事。これだとインダクターは4.7μH程度、またコンデンサーも小さくて済みます。

10個入り140円。2個使ったのであと8個残っている。

という事でMP2359を使ってみる事にしました。
いつもの様にKicadで回路図を書きます・・・

ほぼデーターシート記載のリファレンス回路図通りですがインダクタは部品箱にあった10μH(電流2.3A)の品に、その他もあり合わせの部品に合わせています。 MP2359はFB端子が0.81Vを保つ様に制御されるので6.8Kと1.2Kの抵抗分割だと計算上5.4Vの出力で若干高め狙いです。実際には抵抗の精度が5%なので動作後に実測する事にします。

Kicadでパターンを書き、久々にCNCで基板を削りました。

上がMP2359
下が切削後の基板

MP2359を搭載する部分は細かいのでショートさせてしまいそうです。そこで危なそうな部分にサンハヤトのレジスト補修材を塗って保護しました。

このレジスト補修材、何故か近所のホームセンターHANDSMANで売ってるんですよ。
1年に何個売れるんでしょう?

そして部品を載せました。基板の上の方にある大きな抵抗みたいなのが10μHのインダクタです。入口の10μFは回路図では電界コンでしたが部品箱に積層セラミックがあったのでそっちにしました。

もっと小型化できるなー。

裏側に表面実装部品を載せています。MP2359の取り付けに失敗してリードを折り、1個無駄にしましたが何とか完成。

こっち側に表面実装部品のMP2359とショットキーダイオードが載っています。

電源を入れるとほぼ思った電圧が出ているのでサーボ(4グラムタイプ)を動かしてみます。動画で・・・

動作は問題なさそうですが抵抗やコンデンサをチップ型にしてもう少し小型化したいところです。また幾つも作るなら基板も発注したくなりますが・・・しかしお金をかけるなら結局は上記の80円のDCDCコンバータを買う方が安いかもしれません。

まあこれでESC大量&BECの目途が付きましたが、どんな機体をつくりましょう?

いろいろやりかけ

最近、色んな事がやりかけのままです。

FPV LAPタイマー

前投稿に書いた様に受信機を壊したので、新たにモジュールだけ注文して既に届いています。ところが到着を待っている間に熱が冷めたというか、なんとなくそのままになっています。更にはGithubにこんなのが上がっているのを発見してしまったので、こちらでいいかと思っています。

まだ開けていない・・・

どどーんFPV化

私のどどーんもFPV化しました(※FPVとはドローンに搭載したカメラから送られてくる画像を見ながら飛ばすアレです)。このVTX(※画像の送信機です)は約1年前に購入していたのに無線免許の変更申請が面倒でそのままにしていました、しかし最近意を決して申請し、既に免許が届いています。でFPVしてみたのですが、画面を見ていたらどこを飛んでいるのかわかりません、そのうち畑のどこかに墜落して一時は行方不明になりかけました。機体発見用のブザーは載せていたのですが無理に取付けていたので時々外れており、この肝心な時にも外れて鳴らないという失態。結局FPVの電波を頼りにFOXハンティングして見つけ出しました。その後何度も墜落しているうちにFPVモジュールから煙がでて終わってしまいました。仕方なくFPVモジュールを再発注。

壊れる前の写真

FPV用ゴーグル

いつまでも息子のゴーグルを借りる訳に行かないので自分用を購入しました。本格的な人はFatSharkを使っている様ですが高いので、これにくらべてだいぶ安いEachineのEV100を購入。しかし息子の海女さんゴーグルと比べても視野角が狭く、画像が小さく見えます。ちょっとミスったかも。

Eachine EV100
息子の海女さんゴーグル

ゴーグルを買ったらブリキのロボットが付いてきました。何故か2台も。

オマケのロボット

TWEプロポ

MONOワイヤレスのTWE-Liteをプロポ代りにしてマルチコプターを飛ばす計画、こんなコントローラを作ったけど全く制御できなかった事を前回書きました。

加速度センサーでロール、ピッチを制御しようと思ったけど無理でした。

もうこの方式は止めて普通のスティック式にしようと思います。トイドローンの送信機からジョイスティックを取出して使う計画です。

息子から奪ったトイドローン用送信機

そして基板を作成中。

頂き物のCNC。以前の木製に比べ見ていて安心。

ぽんさんから頂いた旋盤

11.11にAliexpressから四つ爪チャックを購入しています。これでセンター出しを完璧にやれる予定(腕さえあれば)。

ソーラー鹿威し

水量安定化の為こういうのを作りましたが、外が寒くなってきてそのままです。

その他

ほかにも色々手を付けたり計画倒れだったりしていますが、そのうち紹介させてください。

旋盤とCNCフライス~その5~

Arduino UNO(Grbl)とORIGINALMIND製BlackⅡ1520(TRIO)を接続する為の基板を切削したいのですが、その前に基板切削用刃物を BlackⅡのスピンドルに 取付ける必要があります。
刃物は前CNCの時からORIGINALMIND製の土佐昌典VCを使用していますが、この刃物の軸は3.175mmで、現在の4mmと6mmのチャックには取付けられません。

4mm用と6mm用のチャック


そこで鉄棒を削って3.175mmのチャックを作ってみましたが・・・


刃物を付けて木材に先端を軽く当てながら回してみると、木材が微妙に上下してしまいます。ブレているのです。


もう一度削りなおすのも大変なので現有の4mmのチャックに取付ける変換アダプタ的なものを真鍮で作ってみました。


今度は殆どブレがありません。が、よく考えると穴あけに使うドリルは軸径が2.34mmなのでこっちはどうしましょう?

最近ダイソーで見かけなくなった0.8mmのドリル。
ストレートシャンクだとチャックが滑る事があるのですが、こちらは軸が2.34mmと太くなっているのがいいのです。


結局今まで木製CNCでも使っていたミニルーター用のマウントを3Dプリントして取付ける事にしました。


製作する基板の回路図はこれ。殆ど配線だけで電気的に何かする部品はプルアップ抵抗ぐらいです。しかも当面必要な部品だけ取付けており、ほぼコネクタ類だけです。

実際に切削する前にハイトマップを作ります。単線の切れっ端をセンサー代りにしてワニ口でArduinoのA5端子に接続し、基板の銅箔はGNDに落とします。そしてGrblコントロールソフトCandleの右ペインにある”heightmap”メニューから”Create”を押し、諸々のパラメータを入力後「Probe」ボタンを押すと指定ポイントの高さ測定を順次実施していきます。


ではいよいよ切削開始・・・


そして組立て完了。
XHコネクタが2本あるのは非常停止スイッチとZプローブ用。その他後で接続したくなる事を考えて色々と取付けパターンを設けています。 


ところで非常停止スイッチの保有がありません。そこで旋盤についているこれをヒントに・・・


マイクロスイッチで作ってみました。
普段はこの状態で・・・


スイッチを押されるとラッチがかかって押し込んだままになります。解除する時は横のレバーを押し下げます。
本当はGrblの動作だと一瞬押されればその後放しても停止状態を維持するのですが、まあそこは気分の問題です。


2.5mm厚MDFをレーザーカットしたケースに基板をケースに収め、非常停止スイッチはこのケースに取付けました。USBコネクタの横に2.5Φのプラグが刺さっているのはZプローブの配線をここから取り出す為です。


最終的にはこんな感じで納まりました。


今までのCNCは・・・良く働いてくれましたが引退ですかねー。

お疲れ様。

旋盤とCNCフライス~その4~

引き続き、頂き物のCNCを稼働させようとしています。
前回は古いPC上で動くLinuxCNCを使って試験動作をしてみました。
このPCは随分前にメインPCとして使っていたPentium4-2.8GHz搭載のマザーが載っており、基板切削CNCやレーザー加工機の制御に現役で稼働しています。この頃のPCは普通にパラレルポートが付いていたのでLinuxCNCでの使用に問題はありません。

このPCの後にメインとして使ったのはCore-i5のマザーボードでした。このボードのパラレルポートは直接背面には出てはいないのですが、ボード上にピンヘッダがあり、ケーブルを挿す事で使用できます。本来ならこのボードが現役を退いた後にCNC制御マシンにしたかったのですが、以前このブログにも書いた通りコイツは壊れてしまいました。

CNC制御にはMach3/4やGrblも候補に上がりますが、費用や慣れの問題もあるので、やっぱりLinuxCNCで行きたいと考えました。という事で、HARD OFFで物色するとPentium4 3GHzのPCが¥2900で売られていたので購入しました。

P4-3GHz
HARD OFFで購入。なかなか絶妙な値段です。

LinuxCNCはバージョン2.7のLiveCDからインストールしました。なおLinuxCNCにはそのPCが向いているかどうかの指標としてレイテンシ・テストがあります。LinuxCNCはステッパーの回転パルスをリアルタイムに生成する為、一定間隔で処理を実行する必要があるのですが、レイテンシが大きいと間に合わなくなるのです。LinuxCNC付属のレイテンシ・テストを実行するとMAXジッターという値が表示されます。ドキュメントによるとこの値が50μSあたりまでならまあまあ良し、100μSを超えるマシンは制御には向かない様な事が書いてあります。
早速このPCで実行したところ直ぐに200μSを超えてしまいました。現用のPentium4-2.8GHzが最大でも55μS程度なので不安視していなかったのですが、ビデオカードを交換してみたりBIOSの設定を変えたりとやっても改善しません。

PC代¥2900円が無駄になるは悔しいので何とかしたいところです。そこで次善の策として考えてたのがこのPCでGrblのコントローラーを動かすという方法です。Grblならリアルタイムの部分はArduinoがやってくれるのでPC側はジッターを気にする必要がありません。BlackIIの制御基板(TRIO)にはサンケン電気のステッパードライバが載っておりこれは活用したいので、Arduino+CNCシールドではなく、ArduinoをTRIOにつないで制御してみたいと思います。
ステッピングモーターの制御信号がDIRとSTEPという基本は変わらないので何とかなると思っています。

そこで実験。

Grbl-TRIO

D-SUB25ピンのコネクタはジャンクのマザーから取り外した物です(なので紫色)。TRIOをイネーブル状態にする信号はSN74HC00を使った非安定マルチバイブレータでチャージポンプ信号を入れて動作させましたが、これではGrblが準備できたらONになるという本来の動きはできないので、最終的にはTRIOのJP1をオープンにする事で、単にLに下がればイネーブルとなる制御にしようと思います。

この段階で色々とマニュアルに記載が見当たらない細かいところも試してみました。以下ここまでで分かった事の備忘録

  • TRIOのSPINDLE入力はLが回転、Hが停止。
  • BlackIIのリミットスイッチ(フォトインタラプタ)は普段はLでセンサーをさえぎるとHになる。
  • ArduinoのA0ピン(GrblではReset/Abort端子。内部プルアップされている。)は動作中にLに落とすと動作がキャンセルされて停止する。続きの動作はできず、HOMINGからやり直す必要あり。たぶん非常停止に使える。
  • CNCシールドのE-STOP端子は回路図を辿るとArduinoのリセットに繋がっている。
  • A0端子で止めてもReset端子で止めても動作は変わらないように見える。
  • Arduinoの A1ピン(GrblではFeed Hold端子。内部プルアップされている。)はLに落とすとスピンドルは回ったままステッピングモーターだけが停止する。コントロールソフト(Candleを使用)のステータスにはHOLDと表示され、Pauseボタンを押すと動作が再開する。
  • ArduinoのA2ピンはGrblではCycleStart/Resume端子であるが、これをLに落としても特に何事も起こらなかった。この用途は何でしょう?
  • ArduinoのA5ピン( GrblではZ-probe/Heightmap)もプルアップされていて、高さ検出の際にこれがLになったら刃物がワークに接触したと認識する。
  • Z-probeはCandle右上ボタン群の下向き矢印みたいなボタンを押すと始まる。
  • Height-mapはCandle右部分のheightmapメニューからCreateを押すと採取用設定が現れる。
  • TRIOにはEMG信号という出力があり、スピンドルに過電流が流れたりするとL→Hに変化する。

一番上の 「TRIOのSPINDLE制御入力はLだと回転」というのがGrblの標準とは異なるのでconfig.hの下の行のコメント記号を外しました。

< // #define INVERT_SPINDLE_ENABLE_PIN
---
> #define INVERT_SPINDLE_ENABLE_PIN

またスピンドルの回転数をPWMで制御する事はTRIOのマニュアルを見る限り書かれておらず、当面はON/OFFだけで実行します。この為以下をコメントアウト。

< #define VARIABLE_SPINDLE
---
> // #define VARIABLE_SPINDLE

なおこのコメントをを外すとGrblは旧版との互換性の為、スピンドルイネーブル端子とZ-LIMIT端子の機能が入替わる(HかLかを切り替えるだけでなく、端子の割り当てまで一緒に変更してしまう)。入替わる前提で使ってもいいが将来的な互換性を考えると端子割り当ては標準のままにしたかったので、cpu_map.hの以下を変更しました。

   68c68,69
   <     #define Z_LIMIT_BIT    3
   ---
   >     //#define Z_LIMIT_BIT    3
   >     #define Z_LIMIT_BIT          4
   87c88,89
   <     #define SPINDLE_ENABLE_BIT    4 
  ---
   >     // #define SPINDLE_ENABLE_BIT    4
   >     #define SPINDLE_ENABLE_BIT    3

ところでGrblのヘッダ類を書き換える場合は~/Arduino/libraries/grblの下にあるファイルを変更しなければなりません。最初普通に~/Arduino/grbl-master下のファイルを変更してコンパイルしても変更が反映されなかったので要注意です。

次に非常停止をスイッチをどうするか、以下を候補に考えています。

  • ArduinoのReset端子をLに下げる。
  • ArduinoのA0端子(Reset/Abort)をLに下げる。
  • TRIOのイネーブル信号(チャージポンプ又はH/L)を使ってOFFにする。

なお非常停止は極力ノーマリONのスイッチにすべきです。ノーマリOFFを使ってしまうと接点が劣化していた場合に非常停止を押しても止まらないという事態が予想されます。Grbl標準はReset端子を使うにしてもA0端子を使うにしてもノーマリOFFが標準なのでA0端子の機能を逆転させる事にします。

もう一つ、TRIOからEMG(エマージェンシー)信号というのが出てきます。これはスピンドルモーターに過電流が流れた場合等にHになる信号なので、何とかGrblに伝えたいと思います。

という事でTRIOのEMG信号と非常停止スイッチを両方生かす為、次の様に配線する事にしました。Grblの設定でA0信号はHとLの意味を反転させ、正常時がL、異常時がHと認識する様に変更しています。
これでTRIOから出るEMG信号も非常停止スイッチも反映させる事ができます。

なおA0信号のHとLの意味を反転させるにはconfig.hに以下を追加します。

> #define INVERT_CONTROL_PIN_MASK ((1<<CONTROL_RESET_BIT))

以上で回路が決まりました。次に基板を作っていくのですが、折角なのでこのCNCを用いて基板を切削してみようと思っています。その為にはスピンドルに基板切削用刃物を取付ける方法を考えねばなりません。
・・・という事で次に続きます。

旋盤とCNCフライス~その3~

ぽんさんに頂いた旋盤に続きCNCフライスも稼働させたいと思います。
このCNCはスピンドルの横に1Wのレーザーが取付けられていますが安全のため一旦取り外していずれ活用したいと思います。

ORIGINALMIND製BLACKⅡ1520

コントローラーはORIGINALMIND製のTRIOが筐体の下に収まっています。
TRIOはORIGINALMIND社のWebページで見かけますが実物を見るのは初めてです。ステッピングモーターのドライバには昔欲しかったけど手に入らなかったサンケンのSLA7078が載っています。


基本的にTRIOはPCのパラレルポート(プリンターポート)から接続しますが、最近のPCにはパラレルポートはありません。そこで USBからパラレルに変換する為のCNCdrive製UC100も一緒に頂きました。
因みにCNCをコントロールする場合、USBからパラレルポートに変換するアダプタとして普通に売られている物ではうまく動きません。USBは大量のデーターを送るには優れていますがリアルタイム性は今一つなのでモーター駆動パルスのタイミングが間に合わないのです。しかしこのUC100というインターフェースは内部にDSPを備えておりタイミング精度が必要な処理は内部で行ってしまうそうです。但しMach専用でLinxCNCは対象外です。

Machは基板切削CNCを作成した当初、お試し版( NCコードの行数制限あり )を使用しましたがそれ以降使っていません。
最終的にどうするか未定ですが、まずは使い慣れたLinuxCNCで(古いPCのパラレルポートで)動作を確認してみる事にします。

・・・と簡単に考えていたらハマりました。原因はTRIOに入れるイネーブル信号という物。当初マニュアル無しで動かそうとしていたのでORIGINALMIND社のピンアサイン表にあったM-ENBという信号がイネーブル信号であろうという事までは検討がついたのですが、単にHかLを入れてやればいいものだろうと思っていました。ところが全く動作しないので色々調べてみるとH/Lを繰り返す矩形波を入れ続ける必要があったのです。HかLだとPCの電源投入直後にたまたまそのレベルが出て不用意な動作をしてしまう危険があるので「たまたま」では出てこない信号を入れてやる事がPC側が準備できた証という訳です。
なおこの信号はチャージポンプと言うそうです。 LinuxCNCのマニュアルにもチャージポンプの事が書かれていましたが関係ないものかと思っていました(だってチャージポンプっていったらデバイス内で電圧を2倍とかに上げてFLASHの書込み電圧などを作るやつを思い浮かべますもん。それがLinuxCNCで要る理由は思い浮かびませんが。)
という事でLinuxCNCから「チャージポンプ」信号を出してTRIOのM-ENB入力(17pin)に入れてやる事で動作し始めました。

後日ぽんさんにTRIOのマニュアルを見せて頂き、TRIOは5~10KHzの信号をイネーブルと判断するという事が判りました(実際にLinuxCNCから何KHzが出ているのかは確かめていませんが)。
また基板上のジャンパー1をオープンにする事で単にLを入れるとイネーブルになる方式にも変更できる様です。

ここまででステッピングモーターは動作する様になったのですが、スピンドルを駆動するプーリーベルトが切れてしまいました。

とりあえずハンズマンで買ってきたOリング( 若干太いのが気になりますが )で代用します。

モーター側は良いのですが、Oリングが太いのでスピンドル軸側のプーリー溝には完全には嵌っていません。

ちょっといい加減なところもありますが動作し始めたので適当なデータで木を削ってみます。

切り口がササクレましたが削れています。ササクレは条件を詰めれば良くなると思います。

まずは最低限の動作が確認できました。

この後ですが・・・現在LinuxCNCを動かしているマシンはレーザー加工機と基板切削CNCを受け持っており、新しいCNCを設置したい場所とは部屋の反対側になってケーブルが届きません。基板切削CNCを撤去して代りに今回のBlackⅡ1520を置くというのもアリかと思いますが、まだ基板を削れる状態にはなっていないのです(スピンドルが基板切削用刃物のサイズに合っていないのをどうするか・・)。
コントローラもLinuxCNCで行くか、Machにするか、またはGrblにしてしまうか思案中です。

旋盤とCNCフライス~その2~

先日頂いた旋盤とCNCフライスを乗せるため、作業台を製作しました。

15mmの合板にニスを塗って天板とし、裏に2X4材を貼り付けて補強します。


脚は90mm角の角材。台を少し高めにしたいので800mmの長さで取り付けました。そして機器を設置。


裏から見るとこんな感じ。2×4材は木工用ボンドとシンプソン金具で固定しました。


このままだと少し暗いので壁にLED照明を取付けました。


この場所は今まで板材置き場でした。大きな板材はこのまま旋盤の裏に立てて保管する事とし、その他の板は入り口横に移動です。


では早速、旋盤を動かしてみます。今まで一度も旋盤を使った事がないのでこの本を教科書に慎重にやります。2~3年前に買って一通り読んだのですが、かなり忘れています。


旋盤作業をするといっても取敢えずはオマケに頂いたアルミの丸棒を一皮むいてみるだけです。

恐る恐る・・・削れています。感動。

この後は以前から旋盤を使える様になったら作りたいと思っていたものを作ろうと思います。何かというと、ゴムボート用電動ポンプBST12のファン取付け軸です。前回投稿から4年も過ぎましたが諦めずにまだ持っていました。詳細は新たな投稿で報告したいと思います。

旋盤とCNCフライス

ぽんさんのご家庭の事情により工作機械を手放さなければならなくなったとの事で、卓上旋盤とCNCフライスが要らないかと声をかけて頂きました。 地理的に近い工作仲間であるぽんさんが工作から離れられるのは悲しいのですが、勿論旋盤とCNCは頂きに上がりました。

旋盤はこれ・・・

METALWORKER 型番わかりませんが400Wのもの

そしてCNCフライスはこれ・・・

ORIGINALMINDのBLACKⅡ1520

これらを頂きに上がった時、ぽんさんは家庭の事情が許すというラズパイ工作をされていました。これなら騒音や油類を出さないのでOKだそうです。現在ぽん工房は更新されていませんが、いずれラズパイ工作の成果をアップされるのを楽しみにしています。

なお旋盤は前から欲しかったのですが、実は使った事がありません。
勉強しながら、大切に使わせていただきます。
またCNCフライスはORIGINALMIND製の素晴らしいものです。今まで基板の切削に使っていた木製CNCとは比べ物にならないと思われ、早期に稼働させたいと思います。
・・・という事で現在これらを設置する作業台を製作中です。

リニアガイドで2代目ラダーペダル制作

11.11のセールでAliExpressに色々と発注した内、一番楽しみにしていたものが届きました。 レール長150mmのリニアガイド。一本798円(送料別)です。

リニアガイド

リニアガイド×2本

リニアガイドってマジな装置で使う高価なものだと思っていましたがAliExpressだとお手頃価格のものが沢山出ています。これが問題なく使えるなら今後はCNC系の工作での悩みが減ります。

開けてみると・・・レール表面には細かい傷が入っていますが動かした感じでは問題なさそうです。日本製の新品を触った事がないので微妙なところは言えませんが、自作機器のレベルでは問題ないのではないでしょうか。

リニアガイド2

そのまま袋に入って届きましたがコマが落ちない様、出して直ぐに端を結束バンドで止めました。

これで2代目ラダーペダルを作ろうと思っています。バチが当たりそうですがリニアガイドを踏んづけるのです。
先日フライトシミュレータをモーション化した時にも書きましたが今のラダーペダルはペダル位置が高すぎて窮屈なので低くします。また本物はペダルにブレーキの機能があるそうなので、これも実装する予定です。

さて、どんな事になるのでしょう。

基板切削CNC不調

フライトシミュレータのモーション化を進めていますが、次の作業としてラダーペダルフライトヨークを座席と一体にになる様に固定したいところです。この作業には鉄を切ったり貼ったりする予定なのですが先週末は天気が悪くて外での作業が出来ませんでした。

仕方ないので現在ブレッドボードのままであるコントロール回路の基板作成を始めたのです。いつもの様にKi-cadで図面を描き、ガーバーデータを作成してgynostemmaで切削データを作成しました。そして基板切削CNCをスタートさせてしばらくしたところでガタガタという音がし始めました。最初は送りねじの油切れかなとか思っていたらそのうちX軸が回らなくなり、同じところばかり削り始めたので非常停止ボタンを押して止めました。

どうやらX軸のドライバ基板とステッピングモーターをつなぐナイロンコネクタ付近が接触不良みたいです。このあたりをグリグリやるとX軸が回ったり止まったりします。結局配線中の1本が切れかかっているのを見つけたので半田で付け直しました。

そして再スタートしたら今度はY軸がガタガタと言って回らなくなりました。これもコネクタ回りの配線が切れかかっており、半田で付け直しました。

これで一応動作する様になったのですがコネクタ回りをしつこくグリグリやってみるともう一か所怪しいところがあり、これも半田で付け直しました。

ナイロンコネクタは電極をカシメて止めますが、このCNCを作った時はまだカシメ工具を持っておらず、適当な事をした記憶があります。それがいま一気に噴出したのでしょうか?
もしかすると今まで何回か切削を失敗した事があるのもこれが原因だったのかもしれません。

CNC配線

ナイロンコネクタの切れたところを半田で修理

 

このドライバ基板、今では考えられませんが当時市販のステッピングモータドライバが手に入らなかったのでPICマイコンとMOSFETで作りました。ユニポーラのモーターを3個駆動するのでMOSFETを12個並べており配線もぐちゃぐちゃです。色々ぶら下がっており、そりゃ配線切れも起こすってもんです。

CNC制御

CNC制御基板

 

以上の修理で今のところ普通に動作する様になったのですが、いつまた再発するか分かりません。コネクタの配線を全部やり直せばいいのですが、それよりもArduino+CNCシールドに変えようかと検討しています。

ちょっと前にレーザー加工機をArduino制御に変えようと思ってCNCシールドは購入していましたが、非常停止スイッチ、水流センサー、上蓋開閉センサー等の接続を考えていたら面倒になってそのままにしています。なのでこのCNCシールドを流用しようかと考えています。。。

CNC

まずは修理完了

ぼちぼちとやります。

 

フライトシムのモーションシミュレータ化~2~

フライトシミュレータのモーションシミュレータ化、まだくじけずに続けています。

アクチュエータ連結部のガタ減らし

リニアアクチュエータの連結部分の上側が特にガタが大きいので対策しました。この部分もキャスターの車輪を外したものを流用していて、元々の車輪の軸がΦ8でした。しかしリニアアクチュエータの取り付け穴はΦ6です。アクチュエータの穴を広げるか細い軸を用いる必要がありますが穴を広げると強度が落ちそうなので細軸を採用し、M6の半ねじボルト(のねじを切っていない部分)で連結しています。
Φ8の穴にΦ6の軸なので遊びが多くてガタつきます。何かいい方法はないかと物色していたらモノタロウでこんなものを発見。バイクのパーツを取付ける部品らしいです。

MositonSim3-1

キタコ ツバ付カラー

内径がΦ6.2、外形がΦ8.2。これを軸受けに挟み込んでみます。

MotionSim3-2

こんな感じ。外形Φ8.2はちょっと固いけど押し込めば入りました。

これで少しガタが減りました。まぁそもそもキャスター自体のガタもあり、こちらは改善できないんですが。

モータードライバー

そしてラダーペダルやフライトヨーク、PCモニターの取付け方法も考えねばなりませんが、これらは置いといて電気的なところを進めます。

モータードライバーは瞬間最大で4.5A流せるTB6643KQを用います。リニアアクチュエータは定格4Aという事になっていますが、実測すると(私が座った状態で)1Aちょっとしか流れてなかったので余裕だと思います。

MotionSim3-3

TB6643KQ。秋月電子で購入。

これを用いてドライバー基板を作っていきます。

MotionSim3-4

基板を削って・・・

MotionSim3-5

実装しました。

MotionSim3-6

放熱を兼ねて金属部分にねじ止めします。

フィードバック系

今回使用するリニアアクチュエータはDCモータに電流を流すだけの制御です。端まで行くとストップする仕組みは内蔵していますが、RCサーボやステッピングモータの様にオープンループで制御する訳にはいかず、何らかの方法で動作量を検出してフィードバックしなければなりません。 大体こういう時はボリューム(可変抵抗)を使いますが、今回の構造でボリュームを取付けるのは結構面倒に思えます。そこでこれを使ってみることにしました。

MotionSim-6

GY-521(6軸ジャイロMPU6050搭載)

だいぶ前にAliExpressで140円くらいで買ったジャイロ3軸+加速度3軸のセンサーです。座席に貼付けて加速度から傾きを検出しようという魂胆です(ジャイロは使いません)。

このセンサー、マイコンとはI2Cで接続します。センサー自体は3.3V系なので電源には降圧レギュレータが入っていて5V電源を接続できますが信号は3.3Vのままです。マイコンにはArduinoを使おうと考えていますがUNOだと5V系です。ProMiniなら3.3V版を保有していますが今回の用途はPCと常に通信するためFT232RL等のUSBシリアル変換回路を外付けする必要があり面倒です。

ところでArduinoのI2Cの使い方を調べていると5V系Arduinoを3.3VのI2Cデバイスに接続する場合はレベル変換回路を入れろとあちこちに書いてあります。でも本当にレベル変換が必要なのでしょうか?
I2Cはバス全体をプルアップしておき、各デバイスはオープンドレインでLに落とすことにより通信を行います。ならば3.3Vでプルアップしておけば少なくともデバイスを壊す事はない様に思えます。問題は5V系Arduinoが3.3VをHと認識してくれるかどうかですが、ATmea328Pのマニュアルを見ると入力のVIHは0.6VCCとなってるのでVCC=5Vの場合は3V以上ならHと認識してくれる筈です。H=3.3Vで通信すると0.3Vしか余裕が無いのは気持ち悪いですが実力はもう少し余裕があるでしょうし、実用上はイケるんではないでしょうか(今のところイケてます)。
実際の回路ではGY-521モジュール内で4.7KΩを経由して3.3V電源に接続されています。一方ArduinoUNOもデフォルトでは20K~60KΩで5V電源に接続されている様です。Arduinoのプルアップは切り離しもできる様ですが仮にそのまま動作させた場合、Arduino側を最悪値の20KΩで考えると・・・「3.3V—4.7KΩ—バス—20KΩ—5V」という接続にないります。この時バスには3.7Vが加わる事になりますがMPU6050の入力最大定格はVDD+0.5V(=3.8V)となっており、これもギリギリですが規格内です(それに実際に定格を大きく超えようとするとデバイス内の保護ダイオードが順方向になって電流が流れるので20Kのプルアップではそれ以上電圧を上げる事ができなくなり助かるはずという目論みもあります)。
・・・という事で5V系のUNOを使ってレベル変換無しでやってみようと思います(真似してトラブっても責任負えませんけどね)。

取付け

という事でArduino UNOとセンサーを取り付けたところです。まだブレッドボードなので、うまく行く様ならしっかりした基板に変更しようと思います。

MotionSim-8

Arduiono他一式、仮止めの図。

MotionSim-9

念のための非常停止スイッチ。どこに固定しましょう?

簡単なプログラムでモーターの制御とセンサーの読み出しが確認できたのであとは実際にPCから指定した角度に座席が動くプログラムを作っていきます。