2020年04月02日

EXCEL VBAでGIPOを制御する方法4つ

計測器の自動制御をEXCEL VBAを使用して行う際、リレーの切り替えなどでGPIOを制御したくなることがあります。

そんなとき使える方法を4つ試してみました。
動作環境は Windows10 64Bit + Excel 2010 32bit です。

@.COMポートのRTS, DTR線を使う
シリアルポートにはRTS/CTS, DTR/DSR というフロー制御を行うラインがあり、
これを汎用のGPIOとして使うことができます。
他にも方法はあるかもしれませんが、activecell さんが作成された EasyComm を使用すると簡単です。
Comポートを開いたあと
ec.RTSCTS = True
ec.DTRDSR = True

等とすれば、RTS, DTR線をH/Lすることができます。

A.FTDI の FT232R(など)で Bit-Bang Mode を使う
FTDIの FT232Rなどのチップは、 Bit-Bang Mode というものがあり、信号線を独立して制御することができます。
サンプルプログラムは、西日本常盤商行の Bit-Bang Testサンプルにあります。
専用のGIPOピンがあるわけではなく、Bit7~0 がそれぞれ、 7:RI, 6:DCD, 5:CSR, 4:DTR, 3:CTS, 2:RTS, 1:RXD, 0:TXD に対応します。
秋月電子のAE-UM232R はもちろんOKで、Aliexpressで買った格安モジュールでも動作しました。

B.秋月電子で売っている USBIO-2.0 を使う
秋月電子で売っている USB接続デジタル入出力モジュール USB−IO2.0(AKI)もEXCEL VBAから扱うことが可能です。

バケさんの電子工作 で公開されている vbausbio.dll を C:\Windows\SysWOW64 コピーして、
uio_find で接続と初期化をした後、
Dim OutDat(7) As Byte
OutDat(0) = 1
OutDat(1) = 1
OutDat(2) = 2
OutDat(3) = 0
uio2_out(OutDat(0))

とやれば、GIPOに値を書き込むことができます。
入出力の設定は「USB-IO2.0制御サンプル」で先にしておくのが無難です。

C.SILICON LABS の CP2112 を使う
SILICON LABS の HID USB - SMBus/I2C ブリッジ CP2112 も Excel VBAから制御できます。
サンハヤトの Sample_MMCP2112_MMTXS03 からGPIO4を操作する部分を抜き出し、割と忠実にExcel VBAに移植してみたので、gistにあげておきます。

下準備として、SLABHIDDevice.dll と SLABHIDtoSMBus.dll を C:\Windows\SysWOW64 にコピーし、SLABCP2112.bas をインポートして、オブジェクト名を [CP2112_DLL] にする必要があります。
動作確認は MM-CP2112A を使用しました。

CP2112 vba.png

感想:なんやかんや言っても Excel VBAは まだ現役ですよね。
posted by MON at 00:00| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2020年04月01日

フォルムのCNCフライス盤キットを復活させた話。

CNC0_MILL.jpg

フォルムのプロクソン マイクロフライステーブル + CNCセットを
2008年の年末で組み立てて、円を描くところまで動作確認を行いましたが
引っ越しやライフイベントが重なり、段ボール箱の中で眠っていました。

2020年の新年会でそんな話をしたところ、使いたいという後輩がいたので、譲る前に動作確認を兼ねて動かしたメモです。

CNCコントロールは、Mach3で行いました。
Windows Vista/7 (32bit)でもパッチを当てれば使えるらしいですが、Windows XP/2000の方が確実な気がします。
制御にはパラレルポート付きのパソコンが必要です。IRQの指定があるので、USB-プリンタ変換ケーブルはたぶん駄目で、PCI-パラレル変換なら行けるかもです。
Thinkpad R60 + アドバンスド・ミニ・ドック (2504) + Windows XP (32bit) は動作OKでした。
ドッキングステーションのパラレルポートと制御基板(アキラシステムのCNC基板3号機)をDsub25ピンオス-オスのケーブルで接続します。
制御基板は1/8マイクロステップに設定されていて、モーター(多摩川精機 TS3617N278)は 1回転あたり200ステップなので、Motor Tuning -> Steps per には1600を指定します。

CNC1_MOTOR_TUNING.PNG

円を描くWizardに対して文字を彫刻するWizardの軸は反転している(?)ので、モーターの Home -> Reversed のYの項目にチェックが必要です。

CNC2_HOMING.PNG

アルファベットの文字を彫るにはWizard -> Write(Text Engraving)を使用するのが便利です。

CNC3_WRITE_WIZARD.PNG

フォントは下記の種類から選ぶことが出来ます。

CNC4_WRITE_FONT.PNG

GCodeを生成するには、CMCに接続した状態で「Write」ボタンを押下します。
このとき、左上の座標は全てゼロにしていないと、開始位置がずれるので注意です。

描画後の終了位置を確認するには、Last Wizardでもう一度開くとX座標の欄に終了時のポジションが表示されます。
問題なければ「Return to Mach3」ボタンで戻ります。ワークから外れていたら文字の大きさやフォントを調整して再度「Write」します。
Gコードが生成されたら、テーブルを手動で動かして原点を合わせ、Resetボタンを押下してフライス盤と接続し、Cycle Startとすれば彫刻がスタートします。Z軸が上がったら忘れずにミルを回転させましょう。

CNC5_NURI.jpg

ホムセンの木材コーナーのイメージに引っ張られてペンキを買ってしまったのですが、アクリル絵の具で十分でした。むしろ屋外用のペンキは粘度が高くて切削時にカスが残るので使いにくい…いっぱいあるのに…
ワークの広さが横120mmは良いとしても、縦が40mmしかないので、制作物はかなり限られます。当時はY軸80mm拡張も販売されていたようですが……


トータルでかかった費用:13万円くらい。
posted by MON at 00:00| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2020年03月02日

14セグメントLEDを使った名札を作る。

浅草橋で去年10月に開催されていた「メーカーズフリマ2019」で、Maenohさんが作製された 8桁14セグLED基板を購入しました。

14seg_tokugawa.gif
(徳川15代将軍を順番に表示していく、全く役に立たないプログラム…)

I2Cの方が配線が楽なので、HT16K33(28ピン)を入手。制御は Arduino Pro mini にしました。
手持ちのタカチのプラケース (SW-130) に入れてみると、ぴったりサイズ。単4電池を2本入れるとギリギリです。低頭ネジでないと干渉してフタが入らないくらいです。
14seg_2.jpg
秋月の5Vの超小型昇圧DCDCとトグルスイッチをつけて、ケースに超音波カッターで窓を開けてハードウェアは完成。
ソフトウェアは基板の作成元が公開されていたものをそのまま使いました。

かかった費用は2000円くらいでした。
説明書などはありませんでしたが、作者が情報を公開されており、問題なく動きました。
posted by MON at 00:13| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2020年02月22日

KKMoon/Feeltech FY6800 信号発生器でFM変調をかける話

gr-ad2の検証用にkHz帯のFM信号が必要で、SGを購入しました。

FY6800.jpg

選んだのは KKMoon の FY6800 という製品で最高周波数は60MHzです。
Amazon.co.jpで 13,299円でした(2020年1月22日)。Aliexpressでは90USDくらいです。
200円安くFY6700も販売されていますが、性能差は無いようです。
違いはボタンが一つ多いことで、海外のレビューサイトの「僅かに使いやすい」という言葉を信じてFY6800にしました。

軽く確認してみると…
・周波数ズレはおよそ-13ppm(しかも電源投入後どんどん下がっていく)ありました。
・1kHzの歪み率は0.1%以下でした。これはDDS内蔵のSineテーブルに依るので実際はもっと低いと思われます。
・設定/表示は Peak to Peak なので、RMSにするには 2.82 で除算する必要があります。
・USBでPCから制御可能です。アプリケーションは FeelTechのサイト の FY6800 User Guide からDL可能です。CmsEasy_file_ide.zip というファイルに格納されています。

FM変調でソースをCH2にする場合の手順は下記のとおりです。
・Modulation Mode でFMを選択
・SourceをCH2にする
・SGモードでCH2を有効にする(CH2から信号が出る状態にする)
・Modulation Mode に戻って BIASを任意の変調度に設定する。
 このとき、CH2で設定した振幅はどの値でも影響ありません。
 BIASを1kHzとした場合、p-p で1kHzの変調度となります。
 通常、モジュレーションアナライザの表示は (p-p)/2 なので、2倍にすることを忘れないようにします。

変調度はBIASをアクティブにしてダイヤルを回すだけで変えられますが、変調周波数は一度、信号発生モードでCH2の周波数を変更してから Modulation Modeに戻ってくる必要があります。
連続して変えたい場合、これは結構な手間です。FY6800 PC Softwareをインストールしてみましたが、同様の操作が必要でした。そこで、FM変調を操作することに特化したアプリを作ってみました。

FY6800_FM_SET.png

Mod Freqの NumericUpDownコントロールで数値を変えると、自動でコマンドを送出、変調周波数を変えてくれます。

ちなみに、ModulationをFMにするコマンドはFY6800 Serial communication protocol.docには記載がありませんが、「WPF5」です。
FM変調は、背面の「VCO IN」端子から信号を入力することでも可能ですが、入力範囲が0-5Vなので、バイアスを掛ける必要があります。また、こちらは振幅に応じて変調度が変わりますので、別途モジュレーションアナライザで変調度を確認する必要があります。

ちなみに、「FY6800_Labview.vi」はこのDDSをコントロールするドライバではなく、操作パネルでした。
FY6800__Labviewp.png

FY6800__Labviewd.png
posted by MON at 22:10| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
【今是昨非】http://nomulabo.com/