トピック関連記事
48時間以内の記事は New Mark で表示されます
大晦日のご挨拶

今年もいよいよ終わりですね。
大変お世話になりました。

今年は例年になく、あっという間に終わったって感じがします。
お陰様で、病気や怪我もなく過ごせました。

今日は、最後の大掃除、適当にやって、後は好きな事でもやります。

それから、モーターのPWM制御ですが、写真がそれです。一応、完成としました。
以前のものは、秋月のPWMキットと、SEC基板からの信号を受けるボードの2枚が必要で、大きなものでしたが、
PICにより、便利になり且つ、小さくなりました。
これも、皆様方のお陰です。
来年も宜しくお願いします。

TR 2018/12/31(Mon) 08:13 No.1406
Re: 大晦日のご挨拶
私の疑似手パの方は、一応、完成目前です。
あと残るのは
・若干のコードの書き換え
・表示シール
・USBケーブル(1.5mのケーブルだとちょっと短かったので3mのを発注)
位になりました。

動作確認をしたのですけど、例えば1クリックあたり1mmや0.1mmだと
速く回すとバッファに溜まった分が、ダイヤル停止後もマシンが動きます

この辺りがやりにくいように感じました。
というか、1mmのレンジは逆に誤動作に繋がりやすいので付けない方が賢明でした。
MABOさんの手パはその辺りはどうなっているのでしょうか?

私はその位置(1mmのレンジを予定していたスライドスイッチ位置)は疑似パワーオフ=操作不可にしようかと思っています。


それと、ダイヤルを回すと↑→などのキーを送っているのですけど、STEP指定は送っていません。
デフォルトでSTEPにしているからです。
でも、途中で、PC画面上でCONTに切り替えた場合に、切り替えた事を、疑似手パが判っていないのでCONTモードに
なってしまっています。
そのあたりの、例えば
・前回動作から1秒以上経過していてダイヤルが回ったらSTEP指定のコードを入れる&誤動作防止の為に
 1クリック目は回さない
 つまり、前回から1秒経過していたら、最初のクリックはSTEP指定を入れて、経過していなければ動かすキーコードをいれる
という対処にしようと思います。
ていうか、その部分のコードは既に書き換えました。疑似パワーオフの方は全体を見なければならないのでまだです。

もう一つ残念な点は、おもちゃエンコーダなので、ダイヤルを付けると径が大きくてクリック感が少なくなります。
そうなると、回りやすくなってしまい、誤動作に繋がりやすいと思います。
なので、自分で割りを入れて、停止位置を作るかもしれません。でも、それは後に置いといて、取りあえずそのまま使おうと思います。


いやー、実は新PCの方なのですけど、使っていたら何故かMACHが立ちあがらなくなってしまって、
「MACH3を起動すると同時にPCが再起動する」、という現象に見舞われました。
PCとしては何の異常も感じられずサクサク動きます。
で、パラレルドライバやMACHの再インストール等をしてなんとかMACHを起動させるところまで行っても、
何故か軸は動かない(けれども、リミットスイッチ等は反応している)という状況でした。
で、パラレルドライバ?を違う設定に変えたら、またPCの再起動になったり…と、堂々巡りです。
結局、OSのリカバリーから始めて、前のPCに付いていたグラフィックボードを取り付けたら安定しました。

その後に、手パの基板切削やダイヤル部の加工などを、テストを兼ねてしていたのですけど、その間は何も問題無しです。


プログラム上で一番困難だったのは、文字コード→キーコード変換でした。
送った2バイトのコードはMACH3に付いているSCREEN4で、ホットキー入力の時に確認できるのですけど、
実際に、マイコンから送られるコードが、ちょくちょくそれと一致しないんですよね。
特にCtrl+Altを使うと全然違うキーコードが生成されたりします。
ALTだけでも、例えばMACH3の停止(STOP)はALT+Sキーですけど、
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press('s');
とSが小文字の方じゃないと駄目だったりです。
マイコンからは、コードを書いてマイコンに書き込んで、SCREEN4のその画面で試して同じ数字になるかを確認、
みたいなことをしないと何番を実際に送っているのか判らないので大変でした。
また、WINDOWSやMACH3自体に使われているショートカットキーがはっきりしないので、どのキーに割り当てていいのか?という部分が
思いのほか手間取りました。

探せばどこかに一覧表みたいなものがあるのでしょうか?

まぁ、思わぬ所に落とし穴はあるものです。

猛牛ロック   2018/12/31(Mon) 10:06 No.1407
Re: 大晦日のご挨拶
完成まじかまで来てよかったですね。
猛牛ロックさんならできるのでしょうけど、凄いですよ。

ちょっとだけ教えてください。

No.1386で、
>実際は前の数行の内の50→50.0と「.0」を付けてほしい、と言う事です。
と言っていますが、どうして0を付けないといけないのでしょうか?
宜しくお願いします。


追記
ネットで「浮動小数点」で検索したら、ありました。
コンピューターの世界のことのようですね。
桁数あふれを起こさないように、小数点以下第1位の0を付けて計算させた訳ですね。
TR   2018/12/31(Mon) 11:50 No.1408
Re: 大晦日のご挨拶
これにはintが何ビットなのか、つまり何ビットを標準にしているコンパイラなのか?という問題があります。
ウィンドウズのCコンパイラなら大抵は32bitですけど、8ビットマイコンのコンパイラは大抵は、16bitがint=基準となる
整数の型です。XC8もintは16bitです。

で、計算する過程は標準で16bitまでの計算になります。つまり計算用に16bitのメモリが用意されます。
例えば
unsigned char a=256*256/512;
とした場合、通常の計算なら128ですけど、256*256の計算ですでに0x10000(65536)なので、0x「1」0000の
1はメモリ範囲外になるので消えて0になります。つまり0/512でaが0になります。
※ただしこの式の場合は、マイコンには計算式は入らす、コンパイル過程で、すでに「256*256/512」を計算して
元々unsigned char a=128;と書かれているプログラムとして、コンパイルされると思います。256が変数として考えてください。

long a=
とした場合は最初から32bitが計算用のメモリとしてあてがわれます。

計算順序は四則演算はおおよそ普通の計算と同じです。
()カッコが付いている部分が優先され、次に*/%が優先され、次に+-で最後は=です。
そして、x/%+-は左から右に計算されます。=は右から左です。

num=(num-50)*(1023-500)/(1023-50)+500;
は、ちょっと変形(計算)すると
num=(num-50)*523/973+500;
なので、最初の(num-50)*523の段階で、numが175程度の段階で桁が溢れます。

あとは暗黙の型変換、というものを理解する必要があります。
charとintとの計算ではintとして計算されます。
intとlongではlongとして計算されます。
charやintやlongとfloatの計算ではfloatとして計算されます。
つまり範囲の広い方で計算されます。

なので、50ならばintとして16bitの整数ですけど、50.0と「.0」を付けるとそれはfloat型の浮動小数のメモリに配置されます。
で、(num-50.0)はfloatとして計算され、次に*523もまたfloat×intなのでfloatとして計算され、…となり、桁あふれにはなりません。
そして、最期の「num=」の時にそのfloat値がintとして変換されて代入されます。
猛牛ロック   2018/12/31(Mon) 13:17 No.1409
Re: 大晦日のご挨拶
猛牛ロックさん早速にありがとうございます。

しかし、猛牛ロックさんが今回作った品は、お値段によると思いますが、
興味のある人に売れるんじゃないですか?
USB対応のようですが、自分のスムースステッパーに差し込んで使えるかな〜。
今の手パは、配線が凄いんです。
それと、作品は、自作の基板ですか?
いいですね〜。
自分はユニバーサルですよ。
流石です。
USB接続OKなら、すっきりとしますね。きっと。
TR   2018/12/31(Mon) 14:53 No.1410
Re: 大晦日のご挨拶
猛牛ロックさん,TRさん,こんばんは。

===================
今年もおしせまりましたね。

いろいろありがとうございました。

勉強になりました。

来年もよろしくお願いいたします。
=================


*************************
猛牛ロックさん,

>というか、1mmのレンジは逆に誤動作に繋がりやすいので付けない方が賢明でした。
>MABOさんの手パはその辺りはどうなっているのでしょうか?

これ,すみません。私の環境では,確認していません。

というか,CNC等,を含めて,工房が実家の方にあるので,

このところ,いじってないのです。

という訳で,なんともいえないので,申し訳ありません。

それと,

>結局、OSのリカバリーから始めて、前のPCに付いていたグラフィックボードを取り付けたら安定しました。

は,原因はグラフィックボードだったんでしょうかね。

私も,念のためCNC用のPCには,ONボードのグラフィック外して,安いグラフィックボード挿してます。

もう一つ,

>マイコンからは、コードを書いてマイコンに書き込んで、SCREEN4のその画面で試して同じ数字になるかを確認、
みたいなことをしないと何番を実際に送っているのか判らないので大変でした。

察するに,猛牛ロックさんでも,ご苦労なさるんですから,難しいのかなあと思ってます。

ちなみに,くぐってみると,

http://blog-imgs-70-origin.fc2.com/g/a/r/garagejb/mkp13.jpg
http://blog-imgs-70-origin.fc2.com/g/a/r/garagejb/mkp14.jpg
https://blogs.yahoo.co.jp/borog_602/19815995.html

がヒットしました。
****************************


////////////////////////////////////////////////////////
TRさん,完成おめでとうございます。

ご自分で考えられて,それ,実用にしてしまうのですから,

いつも感心させられます。

私は,いつも,発想はいいのですが,途中挫折,

なんていうパターンが多いので,困ります。
mabo   2018/12/31(Mon) 19:50 No.1411

処理 記事No 暗証キー

- JoyfulNote v6.02 -
++ Edited by Hamel ++