最近興味があるもの、reで始まりがち説。ReoNa、Renishaw、REGO-FIX。残念ながらリゼロは見てないのだが。レオナ! レニショー! レゴフィックス!! 並べて叫ぶと驚きの語呂の良さ。
そういえば、TRUSCOブランドのERナットって売ってるみたい。希望小売が4千円なのでムラキより2千円安いし、ERレンチでなく六角ナット風なので、しめて5千円ほど安くなる。ちなみに、モノタロウでの取り扱いは無いけど、Amazonマケプレでは売ってる。送料込みで5400円くらい。ちょっと高くなるけど、それでもレンチ1本分安い。ASKULだと税込み3600円くらいなので、マケプレはかなり割高感がある。取り寄せなのでそれなりに時間がかかりそうだし。amazon出品で扱ってくれないかなぁ。
***
STM32G0でソフトUARTやろうと思って、いつものDMAでGPIOを叩くやつを実装。したのだけど、動かない。どうやら、G0のGPIOはAPB/AHBとは別経路で、Cortex-M0+コアに直結されているのが理由らしい。ということで、このマイコンでDMAからGPIOを直接叩くのは不可能なようだ。
タイマ割り込みで処理するようなコードを書いてみたんだけど、なぜか文字化けが激しい。クロックエラーかな? と思ったんだが、HSI(内蔵RC発振回路)の誤差は室温で1%未満程度らしいので、軽くUART流すくらいなら十分なはず。どうやら、今度は割り込み優先度が原因だったようだ。別のタイマが高頻度に割り込みをかけるので、そっちに引きずられるらしい。
ソフトシリアルとか久しぶりに使うので注意点とか全く覚えてない。。。
とりあえず、エンコーダをタイマ割り込みで読み込んで、簡単に文字列化して、タイマ割り込みでソフトシリアルから吐く、という動きは、できるようになった。1回転100クリックのエンコーダを1回転させて、出てきた数字を加算すればちゃんと400と出てくるので、取りこぼしもなく受け取れてるし、吐き出せてる。
かなり素早くグリグリ回してもちゃんと0に戻るので、かなり優秀。エンコーダの信号をオシロで見てもチャタは見えないし。回路でノイズフィルタしなくて済むので楽。
普通の(ある程度の規模の)STM32を使うなら、エンコーダもシリアルも専用のペリフェラルで処理できるので、こんな苦労しなくて済むんだが。
ちなみに、別の用途で使う1MHzをオシロで集計してみたら、Mean999.00kHzくらいだった。0.1%くらいの誤差。かなり優秀。しばらく放置したり、指で触ったりすると結構動くので特性は悪そうだけど。
外部発振子なしで、UART通信は可能ですか?:Q&Aで学ぶマイコン講座(7)(1/3 ページ) - EDN Japan
***
SIGLENTのSDS1202X-E、UARTとかを表示できるけど、コイツのデコーダ(ソフトウェア実装)はタイミング要求がちょっと厳しい。ソフトシリアルの信号を見ると、それなりの確率でデコードエラーになる。
SDS1202X-Eはトリガにシリアルバスを使えるけど、トリガはハードウェアデコーダで行われる。これは許容誤差大きめらしく、ソフトウェアデコーダではエラーになる信号にもトリガできる。デコードエラーになってる部分でトリガするのは見てて気持ち悪いけど。
***
とりあえず、スイッチ短押しで0.1mm/0.01mm単位の切り替えと、長押しでXYZの切り替え、エンコーダ回したら$J=にフォーマットして流す、という機能は実装。Grblと組み合わせて無事動作。時々Candleのコマンドと衝突してエラー吐くけど。
Candleは25Hz弱で位置確認コマンドと1Hzくらいでモーダル確認コマンドを出していて、ジョグハンドル側はCandleの最後のコマンドから数ミリ秒後にジョグコマンドを出すようにしている。通常は位置確認コマンドの直後にジョグコマンドを出していて衝突しないのだけど、たまにモーダル確認コマンドと衝突する。確率の問題なのでどうしよもない。8pinマイコンでサクッと実装するならこのあたりが限界。
ある程度の規模のマイコンを使えば、PC側のポートとGrbl側のポートを分けて、衝突しないようにバッファリングしたりもできるようになる。少し規模大きめのSTMならUSB Deviceを作れるからUSB CDCでPCに直結できるようになるし、SDカードをホストしてスタンドアロンで使えるようにしてもいいし。
デバイスのCDCとホストのHIDを組み合わせて、簡単なGコードはその場で入力できたりすると、ワークオフセットとかちょっとした操作を行えるけど、フルキーボードを使うとなると結構場所が必要になる。Grblで使うくらいのコマンドならGコードとMコードがあれば十分なので、テンキーでもいいのかもしれないけど。ま、そのあたりは今後考えよう。
今は単機能ジョグハンドルをもう少しマトモなものにするのが優先。ブレッドボードの試作品じゃ使い物にならないので、せめてユニ基板で持ち運べるようにして、できれば3Dプリンタでガワ作って。
ピンもROMもほぼ使い切ったけど、SWDに2本割り当ててるから3分の1は実質未使用だし、ROMもsprintf関連で6割位使ってるので、カリカリに切り詰めたらまだ半分以上余裕がある。たぶんクロック数もほとんど使ってないんじゃないかなぁ。8pinマイコンといえども32bitコアなので、かなりいろいろなことができそう。ペリフェラルの組み合わせはかなり厳しいけど。
0 件のコメント:
コメントを投稿