このページはISAのMOZボード廃止して
STM32F103ボードに変更する
過程を
紹介していきます。

<その1>



2025年
2月4日
現在稼働しているシステムは四半世紀なので制御ボードがISAです。ISAコネクタの載っているマザー(FA用では新品が買えますが高いです)も年々入手難になっているので、ここでシステムの改修をしたいと思います。変更点は、ホストOSをFreeBSDからWindowsへ、PCはデスクトップからノートへ、制御ボードは自作MOZボードからSTM32+uCNCへ、制御アプリも自作のXアプリからWindowsで動くgcode senderに変更すれば良さそうです。ステッピングモータドライバユニット以降はそのまま使います。因みに、改修後はガレージのレーザ加工機とほぼ同じ構成になります。レーザ加工機はアルドウィーノMEGAですが、今回はSTM32です。Speeduinoと似てます。下は現在のシステム全体構成です。MOZボードにZ80が載っていて3軸ステッピングモータを動かしています。また、サウンドブラスタボードは壊れて外しているので、ジョイスティック/ロータリーエンコーダは使えないです。
旋盤の方の制御方法も要検討です。


下はMOZボードのブロック図です。FIFOを介してZ80にコマンドを送り、ステータスを受け取ります。Z80で動いているのは3DDDA(デジタル差分分析)プログラムです。ホストのOSはFreeBSDなので、FIFOを制御するデバイスドライバを介して制御しています。


下はMOZボードISAコネクタ付近です。8255FIFOが見えています。


2月5日
今回、ステッピングモータ制御のファームウェアはuCNCを使います。uCNCはアルドウィーノUNOで動くGRBLが元ですが、今は32bitコントローラを使います。ebayで32bitのステッピングモータ制御ボードを検索すると STM32少なく、下のESP32が圧倒的に多いようです。ESP32の方がwifi接続が簡単だからでしょうか?


下はSTM32の制御ボードですが、これしか見つからないです。さらに日本に送れないかもとのこと。今回はステッピングモータドラ イバ外付けで、ボードに載っている必要は無いのでSTM32ボードに接続するI/Fボード自作した方が良さそうです。因みに、STM32F103は Cortex−M3、ESP32はXtensa(懐かしい響きです)です。


2月6日
ヤフーショッピングでSTM32F103C8T6bluepillボードを購入しました。5個で2400円で、安いです。


bluepillボードが到着したので、早速、マーキングを確認します。STM32F103はクローンコントローラがたくさん存在します。載っているものはSTMのロゴがあり本物みたいに見えます。互換コントローラのAPM32F103を良くききますが、このサイトによるとAPMはARMのライセンスは取ってないみたいです。


uCNCの開発環境を確認しておきます。PlatformIOで開発できます。プラットフォームはArduinoでテージのSpeeduinoSTM32と同じです。


2月7日
2010年にも一度、ISAを廃止しようとしました。ステッピングモータをARMのLinuxマシンで制御する計画でした。たった1ページしかなく、途中でとん挫してます。ホストPCとソケット通信でデータを送受信する予定だったと思います。


2月8日
uCNCのソースをPlatformIOでビルドしてみます。ボードをbluepillに設定してビルドすると、Git無いのでインストールしろというエラーで止まります。必要なファイルをGitでネットから入手する仕組みのようです。


指定のサイトからGitインストール後、無事、ビルドできました。


できたオブジェクトの場所を開いてみます。53KBと思ったより、小さいです。ちなみに、STM32F103C8T6のフラッシュ容量64KBです。


2月9日
プログラムのビルドができたので、STLINKでボードにダウンロードしようとしたところ、 CPUID違うというエラーでストップします。嫌な予感がします。


ネットで検索するとPlatformIOのコミュニティで同じ不具合報告されてい て、対処方法もありました。ちょっと昔なので設定ファイルのディレクトリ構成が変わっていて、難儀しましたが、無事解決しました。


クローンの紹介ペー ジで確認すると、載っているのは中国製クローンCS32F103C8T6のようです。マーキングはSTMなんですが、流石に、5枚で2400円はクロー ンだったようです。クローンでもちゃんと動けば良いですが〜因みに、このフラッシュ容量は128KBのようです。


2月10日
uCNCのファームが怪しいbluepill互換ボードに書けたので、早速Universal g−code Senderをインストールして接続してみます。緊急停止ボタンドアスイッチなどの入力ポートが通常状態でないとアラームが出てアイドル状態にならないので、臨時にジャンパ線で通常状態にすると無事、アイドル状態になりました。uCNCのWikiサイトのFAQに対処方法が載っていました。



uCNCはほぼGRBL互換なので、ファーム選択GRBLを指定すれば良いようです。ジョグパネルで各軸の送りができているので、実際にモータを繋げれば動いてるのでは?と思います。今のところ、クローンのコントローラでも問題ないです。



2月11日
X軸だけドライバを繋げてステッピングモータを動かしてみました。接続したのはSTEPDIRの2本だけです。HeeksCNCが出力するGコードの先頭に工具登録工具設定コードが有って、そのままではエラーで停止します。この行をコメントにすると問題なく動きました。クリックすると約1.7MB動画をダウンロードします。



下の赤枠がエラーの出る行で、これをコメントにする必要がありました。



2月15日
Universal g−code Sende(UGS)に画像ファイルから輪郭抽出してGコードを出力する機能あるので試してみます。読み込める
画像のフォーマットはJPEGPNGです。今回はステンシルフォントを使って、以下のPNG画像を作りました。


UGSはデザインウインド簡単な図形文字が入力できますが、デザインウインドのメニューから赤枠輪郭抽出のダイアログが起動できます。


ダイアログから画像ファイルを選択して読み込み、スライダ閾値直線カーブなど各パラメータを調整して画像鮮明になるようにします。


抽出後はパスツール切削方法を選びます。今回は赤枠レーザ加工用(輪郭線に沿って移動)を選択しました。その後、生成されたGコードエクスポートします。


いつも、Gコードの確認で使っているNCVCに読み込んで確認します。正しく変換できています。UGSの輪郭抽出スライダでリアルタイムに調整できるのも良いです。切削順結構分散しています。 動画をキャプチャしました。クリックすると約1.2MBの動画をダウンロードします。


今使っている輪郭抽出FreeBSDで動くautotraceです。autotraceはDXFに変換できるので、重宝しています。画像は予め、2値化しておく必要があります。パラメータの調整はCUIのため、変換後に都度確認が必要です。下はラズベリーパイのロゴマークです。


autotraceBMPDXFに変換するには以下のコマンドを使います。変換後にQcadに読み込み、不要なレイヤを削除する処置も必要です。1つの閉区間レイヤになるため複雑な図だと厄介です。
$ autotrace -corner-surround 1 -input-format BMP -output-format DXF rpi2_log .bmp > rpi2_log.dxf



2月18日
上と同じラズベリーパイロゴマークの画像をUniversal g−code Senderで輪郭抽出してみます


パス1内側データの輪郭、パス0外側データの輪郭です。双方とも良好です。


GコードをエクスポートしてNCVCで確認すると、正しく表示されません


どこで異常なのかトレースしてみます。赤枠の行に小数点無いデータがありました。Gコードの永遠の課題、電卓型/従来型問題が発生です。


Gコードの座標は電卓型従来型があって小数点の扱いが異なります。今で、HeeksCNCとUGSからGコードを生成して、NCVCで表示すると、この問題が出ます。Gコード内にどちらが使われているかを指示するコマンドは無いです。


NCVCの作者のページスクリプトがありました。小数点を強制的に付けるperlのプログラムです。


早速、cygwin変換してみます。


今度は正しく表示されました。大分前にもこの問題が発生しました。厄介です。この時はZ軸の値に強制的に小数点を付けるプログラムを作製して対応しました。



2月21日
STM32のI/Fボードの作製を開始します。ピンコネクタを購入してユニバーサル基板に半田付けしました。ステッピングモータドライバのフォトカプラのドライバには手持ちのデジトラRN1210を使います。このユニバーサル基板は高校生の時にバイト先のプリント基板工場のゴミ箱から拾ってきた基板です(笑)。



ヤフーショッピングで購入した40ピンのピンヘッダとコネクタ。10個セットで600円です。40ピンを20ピンに分割することはできないので、ちょっと無駄が出ます。


赤枠STMボード側緑枠がステッピングモータドライバのフォトカプラです。R1Q1デジトラです。


2月23日
STM32のI/Fボードの続きです。ユニバーサル基板に少し部品載せました。デジトラと外と繋ぐ50Pのピンヘッダです。
緊急停止ボタンドアスイッチなどの入力ポートはショートピンでGNDに落とせるようにしておきます。フォトカプラの電流制限は240Ωを使いテストを行いました。