WROOM32では、0~7つのユニットがあり、カウント機能があります。
各ユニットにはチャンネルが2つあり、組み合わせることで、4相のエンコーダーの
回転数測定が行えます。単体で使用した場合も、カウンタ機能やパルス幅の計測なども
行えます
ENCODコマンド
ENCODコマンドでは以下の内容の測定が行えます。
- 4相エンコーダー(A相、B相のロータリエンコーダ)モード:0
- パルス数カウント(指定カウント間の出力HIGH)モード:1
- パルスON幅及び周期測定 モード:2
ENCODコマンドは、コマンドと共に特殊設定のレジスタD8300以降を必ず
使用します。初期設定等を忘れないようにしてください。
また、ENCOD命令はパルス命令です。再起動は、一度指令をOFFにしてから行ってください。
コマンドの基本的な使い方は、以下の通りです。
ENCODコマンドの指定デバイスの10の位がユニット番号です。
このユニット番号と特殊設定のレジスタを確認し、動作内容が決定します。
これに加えて、D83x0番台のレジスタを使用します。
xはユニット番号です。
ユニットのモード設定レジスタの値が動作を決定します。
モード設定レジスタが0なら、4相エンコーダーモードです。
1なら、高速カウンタモード。2ならパルスON幅および周期測定モードです。
4相エンコーダー
A相およびB相を持つロータリエンコーダ(チャッタがない)を対象として
回転数を測定するモードです。
使用するA相のIO番号、B相のIO番号を必ず指定します。
Unitのモードは初期値が0のため、設定しなくても使用できます。
従来の連枝では、エンコーダー命令をOFFにするとカウント値がリセットされましたが、
カウントを停止するだけです。カウント値のリセットについては、現在検討中です。
(参考)各相の周波数が5MHzでも問題なくカウントできていました。
10MHzになるとカウント値が正しくカウントされていませんでした。
使用例1.ロータリエンコーダのパルスカウント
A相をDIO4、B相をDIO5として、Y19がONの間パルスをカウントするラダー回路です。
カウント値はD8304に入ります。これを使用するために、MOV命令でD0に読み出しています。
以下の表内のHは、将来のための予備です。現在は使用していません。
ご注意ください。
ワードデバイス | 説明 |
---|---|
D8300 | Unit0 モード[ENCO,HSAM,DSAM] |
D8301 | A相のIO番号 |
D8302 | B相のIO番号 |
D8303 | 出力のIO番号 |
D8304 | 設定パルスL[高速カウンタ測定値] |
D8305 | 設定パルスH[高速カウンタ測定値] |
D8306 | 現在カウント数L[周期値L] |
D8307 | 現在カウント数H[周期値H] |
D8308 | デューティ値L |
D8309 | デューティ値H |
D8310 | Unit1 モード[ENCO,HSAM,DSAM] |
D8311 | A相のIO番号 |
D8312 | B相のIO番号 |
D8313 | 出力のIO番号 |
D8314 | 設定パルスL[高速カウンタ測定値] |
D8315 | 設定パルスH[高速カウンタ測定値] |
D8316 | 現在カウント数L[周期値L] |
D8317 | 現在カウント数H[周期値H] |
D8318 | デューティ値L |
D8319 | デューティ値H |
途中省略 | |
D8370 | Unit7 モード[ENCO,HSAM,DSAM] |
D8371 | A相のIO番号 |
D8372 | B相のIO番号 |
D8373 | 出力のIO番号 |
D8374 | 設定パルスL[高速カウンタ測定値] |
D8375 | 設定パルスH[高速カウンタ測定値] |
D8376 | 現在カウント数L[周期値L] |
D8377 | 現在カウント数H[周期値H] |
D8378 | デューティ値L |
D8379 | デューティ値H |
パルス数カウント(高速カウンタ)
指定したパルス数が発生するまで、指定したデバイスをONにします。
D83x0を1に設定します。これにより、パルス数カウント動作となります。
D83x1に入力を監視するデバイスを指定します。D83x3に監視中にONするデバイスを指定します。
D83x4にパルス数を指定します。この回数のパルスが入力されると、D83x3のデバイスをOFFにします。
D83x4を読み出すと、現在のカウント値が格納されます。
D83x6を読み出すと、監視開始からカウント終了までの時間がusで格納されます。
指定した出力デバイスのリレーは内部のプログラムではリレーとしては使用できません。
あくまで、出力ピンのHIGH、LOWの変更だけです。
パルスON幅及び周期測定
D83x0を2に設定します。これにより、パルスON幅及び周期測定となります。
D83x4を読み出すと、現在のカウント値が格納されます。
D83x6を読み出すと、監視開始後の立ち上がりから次の立ち上がりまでの時間がusで格納されます。
D83x8を読み出すと、監視開始後の立ち上がりから次の立下りまでの時間がusで格納されます。
※監視開始後の立ち上がりから計測します。立下りが最初に来た場合は、正しく測定できません。
今後、この現象につきましては、解決したいと思っております。
※内部のタイマーの経過時間で測定しているため、HIGH時間および周期がus以下の場合
正しく測定できません。ご了承ください。
現在までの測定可能内容です。ただし、高速カウンタの動作を見る限り
さらにいろいろな測定が可能なようです。
ご希望により、さらに機能は追加が可能と考えております。