google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

デジタルノギスのデーターをArduinoで読んでみた

 Arduinoのプログラムの勉強を兼ねて、格安のデジタルノギスに付いているインターフェイスの信号を読み出すプログラムを作ってみました。

 ちなみにネットを調べるとDROという名前で先人の方の作例がいろいろ出てきますが、PICを使ったものばかりでArduinoでやった例は見つかりませんでした。

 ノギスからは1.5Vの電圧信号でクロックとデーターが出てくるのでArduinoで受信できるようにトランジスタでインターフェイス

▼接続回路
デジタルノギスの読み取りインターフェイス
 なんだかいつもよりサイズがでかい。なんでだ、

 Arduino側でプルアップしているので単にコレクタをデジタルI/Oに接続するだけです。
 R1とR2の抵抗はあまり低くするとノギスからシンクする電流が増えて電池寿命に影響。はたまた、高すぎるとノイズに弱くなるので悩ましいところですが、こんなもんでしょう。この回路を通ると論理が反転します。

▼信号波形
デジタルノギスの出力波形
 新しく買った古いオシロ(*^_^*)なので写真の撮り方がへたくそですみません。

 上がクロック、下がデータで、約230mS周期でこんな波形が出てます。データーの間隔は150μSくらいなのでArduinoでも間に合いそうです。

 データのフォーマットは、先人の方が解析した資料によると、
・先頭から20ビットがデータで先頭側がLSB
・21ビット目が符号で、1なら負の数値を示す
・22ビットから24ビット目まではよく判りませんが、24ビット目はインチ/mmの表示に使われているらしいです。ただ、この個体は切り替えスイッチが無いので確認できてません。

 読み込みソフトは、

 データの読み込みはクロックのエッジで行うので、エッジトリガの割り込みを使った方が正確なタイミングで取り込むことができると思います。しかし、寸法測定するようなプログラムなら同時にメカの制御もやる可能性が高く、そちらの方で割り込みが必要になる可能性が高い。ということで割り込みは使わないでやってみました。

 ソフトの動きとしては値の取得は関数呼び出しで行い、戻り値として測定結果を10μ単位の値で返す仕様です。150mmのノギスなので戻り値はおよそ±15000の範囲、ならば変数はintで大丈夫です。

 スケッチはこちら(拡張子はTXTになってます)
 勉強中の新米が作っているので変なところはご容赦を。

 動作確認用に液晶シールドとシリアルポートに測定結果をたれ流すように作ってあります。

▼動作中
デジタルノギスのデータをArduinoで読めた
 うまくいってます。液晶の表示はノギスとフォーマットが一致するようゼロサプレスなどをやってます。

 ノギスのデータやクロックピンをプルアップすると高速モードに切り替わるらしいのですが、今回は試してません。

 ということで、読み込みソフトはそんなに苦労しなくて出来ました。Arduinoにほぼリアルタイムで10μmの精度の位置データが取り込めると何か応用がありそうです。

 ただ、このノギスのデータが時々5mm飛ぶのが残念。こんな不良品を掴まなければアマゾンすげーと書いたんだけどなー。

【2016/2/23追記】
 二軸用のスケッチを書いてみました。20160223XYcaliper.txt
 簡単に二軸化するため、効率の悪いプログラムになっています。また、コンパイラは通ってますが、デバッグ用の環境が無いので動作確認までやってません。そういうことで、不具合があったらすみません。なお、digitalの8,9にも上の回路図の回路が必要で、これがY軸になります。

【2019/9/29追記】
ノギス読み取り
関連記事

tag : デジタルノギス 格安 Arduino DRO 読み込み 関数 インターフェイス

コメントの投稿

管理者にだけ表示を許可する

こんにちは

ノギスはミツトヨをアナログチックに使ってますe-263
最近はバーニヤが読めない若い衆が増えて辟易
アマゾンは世界中からガラクタを収集してくれます
世界中・・・ガラクタはほぼ隣国ですけど
私の専門は元々熱可塑性プラスチックなのですが、隣国
の成型技術はお話しになりません。
だって、すぐ壊れちゃうんだもん
Q.C. PASSEDのシールが虚しい

オールトの雲さん、おはようございます

ミツトヨ、いいですよね。仕事に使うならこれ以外考えられないでしょう。
あと、アマゾンにもガラクタがあるんですね。いい勉強になりました。

ちょうど作りたかったものが

ラジオペンチさん、参考にさせていただきます。

ミツトヨのインプットツールは高いので、自作で作ってみたいなと一昨日思い立ち、とりあえずアマゾンでデジタルノギスを買った後にこのページを発見。

もうできたも同然です。

ああ、ありがたや・・・・。

re:ちょうど作りたかったものが

みつおさん今晩は。
この記事を発見していただいてありがとうございます。

念のために、記事中のスケッチを現在のArduino IDE(1.6.5)でコンパイルだけやってみましたが、エラーは出ませんでした。

ありがとうございます。

こちらの記事を見て何とかarduinoでノギスの出力を取り出せました。
ありがとうございます。

もしよろしければですが、2本のノギスを同時に表示する方法を教えて頂けませんか?
X軸とY軸の様に2行に表示したいのですが・・・

本当によろしければですが、アドバイスをお願い致します。

re:ありがとうございます。

ともさんおはようございます。この記事の内容を試していただいてありがとうございます。

X-Yテーブルで使いたいということですね。それだったら、読み出しと表示を2軸に対して順番にやればいいと思います。

回路をばらしてしまったので、うちではもう試すことが出来ませんが、今あるのがX軸として、Y軸を追加する想定でポイントを書くと、

ピン8と9をYのクロックとデーターピンとして配線。

スケッチは、変数を以下のように定義。
int clockPinX = 6; // Xクロック入力ピン番号(Trで反転)
int dataPinX = 7; // Xデータ入力ピン番号(Trで反転)
int clockPinY = 8; // Yクロック入力ピン番号(Trで反転)
int dataPinY = 9; // Yデータ入力ピン番号(Trで反転)

あとはメインループでX軸、Y軸の処理を順番にやればいいです。プログラムの行数を減らすテクニックはいろいろありますが、ここは単純にX軸用とY軸専用の関数を準備し、以下のように呼ぶのが判り易いと思います。

void loop() {
data = ReadCaliperX(); // ノギスからX軸データを読む
lcddispX(data); // 液晶に書いて
Serial.println(data); // シリアルに書き出し

data = ReadCaliperY(); // ノギスからY軸データを読む
lcddispY(data); // 液晶に書いて
Serial.println(data); // シリアルに書き出し
}

 ここでReadCaliperY()や、lcd.dispY( )の関数は元の関数をコピペで複製して作り、ピン番号などの変更部を修正すれば楽に出来ると思います。液晶にX Yなどと軸の名前を表示させるとかっこいいでしょうね。

がんばってください。判らない点があればコメント下さい。

re:ありがとうございます。

ラジオペンチさんこんばんは。

ご回答ありがとうございます。

void loop() {
data = ReadCaliperX(); // ノギスからX軸データを読む
lcddispX(data); // 液晶に書いて
Serial.println(data); // シリアルに書き出し

data = ReadCaliperY(); // ノギスからY軸データを読む
lcddispY(data); // 液晶に書いて
Serial.println(data); // シリアルに書き出し
}
の部分ですが、”data”にX/Yの指定文の様な物は要らないのでしょうか?
lcddispX(data); の部分でもXやYを入れるとエラーが出ます。

また上記の部分はセットで書いてもX/Y軸は別々の数字を表示できるのでしょうか?

僕は素人で、昔高校でベーシック言語を少し学んだ程度ですので、ハッキリ言って、まだまだ言語や関数を理解できていません。が、周りにも分かる人が居ない為、独学で必死で勉強中です。

よろしければ、もう少しアドバイスを頂きたいです。
お願い致します。

re2:ありがとうございます。

ともさん、おはようございます。

あれこれ説明するよりプログラムを改造する方が早くて、間違いが無いので、二軸用のスケッチをこの記事の後ろの方に追記しました。ダウンロードしてお使い下さい。うまく動くかちょっと心配です。少し修正が必要かも知れません。

URL直書きだと下記です、
http://blog-imgs-88-origin.fc2.com/r/a/d/radiopench/20160223XYcaliper.txt

re2:ありがとうございます。

ラジオペンチさん、おはようございます。
早々のご返信ありがとうございます。
またわざわざスケッチまでアップして頂きありがとうございます。

二軸用のスケッチが何故かループしません!?
リセット後のX軸の値だけは表示されるのですが・・・
因みにまだ1本しかノギスを繋いでいないからかもしれません。
デジタルノギスで改造・研究に使えるのがまだ1本しかない為、早急に買い足します。

それから、X軸が表示されてからリセットされる前に8・9ピンに繋ぎなおすとY軸も追加で表示されました。
ですが、やはりループはしていないようです。

あぁ!ラジオペンチさんの様な頭脳が欲しい。
今からでも小学生くらいからやり直したい!
僕の貧弱な脳みそでは無理なのかな・・・

もう少し頑張ってみます。


re3:ありがとうございます。

ともさん、了解です。

このプログラムはノギスからの信号が来なければずっと待っているので、その動作でうまく行っていると思います。ちなみに、信号が来なければ無視するようにプログラムを作るのはやっかいです。

あと、8,9ピンに繋ぐとY軸側で表示するということは、問題なく動いていると思います。

re3:ありがとうございます。

ラジオペンチさん、こんばんは。

的確なアドバイスを頂き有難う御座います。
よく考えたらブレッドボードで同じdatapinとclockpinを2本に分ければ1本のノギスで仮想2本分入力できる事に気付き、6,7と8,9に入力してみたら、やはり読み込みのタイムラグは有るものの、ちゃんとX,Y軸で表示されました。

素晴らしいです。
完璧です!

ラジオペンチさん有難う御座います。
凄い方ですね!

これで、僕のホビーライフも便利に成るかと・・・

あと分かればで良いんですが、最後に教えて下さい。
ノギス側のハード面は変えずに、arduinoからタクトスイッチで各軸リセット(ZEROボタン)は出来そうでしょうか?

書いて頂いたスケッチを見ると”int n, outData;”の”n”にでーたを保存すると言う事なのかなと思っているのですが、ボタンを押した時の寸法データに同じ数だけマイナスする様な関数を入れれば可能なのかな!?と思っているのですが、そんな簡単な事では無いのでしょうか?

お時間が有る時で大丈夫ですのでアドバイスを頂けたらなって思います。
お願い致します。

re4:ありがとうございます。

ともさん、おはようございます。

現在位置でゼロ表示にする方法ですか。これはいろんなとこ直さないといけません。操作性をどれくらいで妥協するかということもあります。

やり方としては、オフセットの値を記憶する変数を最初に定義し、
int offsetX = 0;

setupの中でピン14(アナログ0)をZEROボタンとして定義
pinMode(14, INPUT_PULLUP);

あとは、このボタンが押されていたら(14ピンがGNDに接続されていたら)offsetXに現在値を記録すればいいので、loopの中でこんな感じにやるのが簡単だと思います。
void loop() {
if(digitalRead(14) == LOW){
offsetX= readCAliperX();
}
data = ReadCaliperX(); // ノギスからデータを読む
lcddispX(data-offsetX); // 液晶に書いて
以下省略

}
これは X軸だけ書いてます。細かい間違いがある可能性があります。
あと、このやり方だと表示がゼロになるまでボタンを押し続けないといけないので操作性が悪いと思います。ちょんとボタンを押すだけで済む方法もありますが、かなり面倒です。

ということで、この先はがんばってください。

re4:ありがとうございます。(追記)

よく考えたら、こっちの方がいいです。

void loop() {
data = ReadCaliperX(); // ノギスからデータを読む
if(digitalRead(14) == LOW){ // 14ピンのスイッチが押されていたら、
offsetX= data;
}
lcddispX(data-offsetX); // 液晶に書いて
以下省略

re4:ありがとうございます。(追記)

ラジオペンチさん

おはようございます。
まず最初に書かせて下さい。

本当に有難う御座います。

ハッキリ言って楽しいです。
自分で書いたスケッチでは無いものの、目の前で小さな部品に命が吹き込まれて行く様な感じで・・・

追記を頂く前のスケッチでも何も問題無く動いていましたが、追記分を見て試してみて、こちらも問題無く作動しています。
何がどのように違うのか、順番が少し変わっただけの様に思いますが、僕の脳ミソのキャパでは分かりません。

もしラジオペンチさんが近くにお住まいなら色々とお話しして教えて頂きたい事も有るのですが、これ以上ご迷惑をお掛けできませんので、今はこれ以上求めません。
色々な方のブログ等を見て来ましたがラジオペンチさんの事を信頼して質問させて頂きました。
やはり間違いでは無かったと思っています。

有難う御座いました。

また今は少し大きな事に挑戦しておりますので、分からない事が出て来ましたら、その時はまたアドバイスを頂けたらなって思います。

re5:ありがとうございます。(追記)

ともさん、おはようございます。うまくいったようで良かったです。

ポイントだけ書いたので判り難かったと思いますが、あの文章を読んでプログラムの修正が出来れば、もう初心者のレベルは脱していると思います。

あと、追記の方がReadCaliperX(); を呼ぶ回数が少ないのでコンマ何秒かは速く動くはずです。

Dueでも

ラジオペンチさん

おはようございます。
いえいえまだまだ始めたばかりで初心者の域を脱しておりません。

先日、「少々大きな事!」と書いていましたが、「4軸+タコメーターを大きなTFT液晶に表示する!」と言う最終目標で挑戦していました。

4軸までは16x2の液晶シールドで表示("mm"を省いて)できたのですが、流石に4軸分となるとタイムラグが酷くなりとても使えるレベルでは無くなりました。

まぁでもこの辺りは予想できたので、先走ってDueを注文していました。

4軸なのでMega2560でまず配線とスケッチを確認し、やはりラグが酷かったので、Dueの84MHzだとかなり改善するかと思っていましたがほとんど変わりませんでした。

もちろん色々調べてMegaでもAVRとかって書き方で高速化するらしいとは知っていたのですが、この辺りはもう今の僕には手の出しようがないレベルで着いていけません。

で、Due様のお力をお借りしようかとやってみた次第です。

これは処理速度とは関係の無いところなのでしょうか?

それから、Due様の場合、ピンの出力がデフォルトでHIGHだという違いが有るのも知っていたのですが、そのせいなのかノギス本体側が0㎜辺りで液晶シールドには-14000位の数値をチラチラ表示します。

これは何なのでしょうか?

またまたご迷惑をお掛け致しますが、お時間のある時にでもコメント頂けましたら幸いです。

因みに、TFTは秋月からDue様対応の評価ボードと、安い4.3インチのを買ってみましたが、全く歯が立たず5時間ほど途方にくれました。(笑)

ただ何とかサンプルスケッチの表示までは出来ました。

40過ぎて始めたので、急がないと脳の細胞が42%程壊死しているので頑張ってみたのですが、まだまだ随分と早過ぎたようです・・・。

re:Dueでも

ともさんこんにちは。

 おやりになりたいことはおぼろげに判りました。でも私、DueやMegaなどは使ったことが無いし、今後もたぶん使わないので、アドバイスは無理です。何しろSMTパッケージのCPUはチップ単体で使うことが難しいので、触る気がしません。

 ということで、一般論のアドバイスだけしか出来ません。

 このケースでの動作速度はノギスから来るデーターの速度で決まっているので、CPUをいくら早くしても効果はありません。ノギスが一つだとたぶん約0.23秒周期でデータ取り込みが出来ます。でも、二つあると、おのおのが独立したタイミングで動いているので、タイミング合わせのために2倍以上(たぶん平均3倍)の時間がかかるはずです。

 それで、考えられる対策は以下の二つだと思います。

1.ノギスからのデーター転送速度を早くする
 この記事にもちょっと書いておきましたが、高速転送モードで使えばたぶんデーターの転送速度は10倍以上速くなるはずです。
 この場合、プログラムの中でタイミング調整やっているところの値は最適値を探す必要があります。また、高速モードに設定するために、ノギスのピンを一時的にプルアップする回路も必要です。
 このあたりをやられた先人の方が何人かいらっしゃったと思います。(PICだったこも知れません)

2.並列に読み出す
 複数のノギスのデーターを同時に読み出すプログラムを作れば、軸の数が増えても処理時間はほとんど増えないはずです。やるとしたら割込みを使うことになると思いますが、かなり難しいプログラムになりそうです。

 ということですみません、アドバイスは無理で、コメントしかお返しできません。

re:Dueでも

ラジオペンチさんこんにちは。

ご返答有難う御座います。

一般論のアドバイスの部分だけで、僕の知らなかった事が沢山有りましたので、良い勉強に成りました。

当記事を見させて頂いて、対策1.ノギスからのデーター転送高速化は試していたのですが、何故か上手くいきませんでした。
pinModeでINPUT_PULLUPを使っているからかもしれませんね、またもう一度試してみます。

あと最後にもう一つ、ノギス4本→arduino4個→arduino1個→TFT液晶と言う形で有れば1つの液晶にノギス4本分の表示は理論上出来そうですか?

7セグ(1行のLCDのも含め)で3軸の物などは、某国製のが安く買えるので興味が有りません。

宜しくお願い致します。

re2:Dueでも

ともさん今晩は。

ノギスの高速転送モードの設定はこの記事の回路だけでは出来ないです。ノギスのデーターやクロックの端子をノギスの電源電圧までプルアップすることが必要で、たぶん別のポートを使って、回路を追加して操作する必要があるはずです。ひょっとしたらうまい手があるのかも知れませんが、

ともかく普通にやると4軸に各4ポート必要なので、合計16ポートが必要。LCDまで使うとUNOではピンが足らなくなりますね。ノギスの高速設定はまとめて出来そうな気がするので、ここはポートが一つか二つで出来る可能性もあると思います。

>ノギス4本→arduino4個→arduino1個→TFT液晶と
これが理論上できるかどうかと言われても困ります。情報理論ならYesですが、そんなことお尋ねじゃないですよね。

私の意見は、Arduino1個で受けるところが厄介だし、ここで苦労してもあまり報われない気がします。どうせなら、Raspberry Piなどで受けてかっこいい液晶表示をやった方が良さそうな気がします。

re2:Dueでも

ラジオペンチさん今晩は。

やはりそうですよね。
物が無い状態でややこしいこと聞かれても困りますよね。
すみません。
反省してます。

ただRaspberry Piって小さいPCのイメージが強く触った事なくて、この様な場合に自分のイメージの物を作れるのか分からなかったんですが、こういう事も出来るんですね!?
一度触って勉強してみます。

色々と教えて下さって有難う御座います。

ラジオペンチさんのおかげで随分と勉強に成りました。
と言いますか、Raspberry Piを使うって発想が無かったんで、良い事に気付かせて頂きました。
有難う御座いました。

これ以上ご迷惑をお掛けする訳にもいないので、ここからはまた自力で頑張ります!

こんばんは

現在、社内のIoT化を進めるためにデジタルノギスのデータ取得を実践しています。ノギスはミツトヨを使用しています。
大変恐縮なのですが、実写の回路図の詳しいものを見せていただけないでしょうか?
よろしくお願いいたします。

こんばんは

続きになるのですが、ミツトヨのデータフォーマットは、
【d1】【d2】【d3】【d4】【d5】【d6】【d7】【d8】【d9】【d10】【d11】【d12】【d13】【d14】
となっており、各データ4ビットではいっております。

【d1】【d2】【d3】【d4】までが、すべてF
【d5】が符号+の場合(0000)-の場合(0001)
【d6】【d7】【d8】【d9】【d10】【d11】【d12】がデータ【d6】がMSD【d12】がLSD
【d13】が小数点
【d14】がmm inchです。
これをどう取得すればよろしいでしょうか?
お手すきの時に教えていただけると幸いです。

re:こんばんは

「実写の回路図の詳しいもの」って何のことでしょうか?
回路図はこの記事に書いたものだけで判るはずです。もし実体配線図のことならありません。

これ以外に Arduino UNO と液晶シールドを使ってますがそっちの回路ならメーカーの資料を探して下さい。

ついでにデーターの取得方法ですが、

先頭の16ビット(d1-4)を読み飛ばして、
次の28ビット(d6-12)を読めばいいのですが、
この28ビットがどういう規則のデーターになっているか確認しておかないとプログラムが書けません。
d6側がMSBと言うのは判りましたが、この28ビットがバイナリーなのかBCDなのかを確認しておく必要があります。
たぶんバイナリーだとは思います。あと、4ビットの中身も先頭がMSBかどう判らないです。
ともかく28ビットなら unsigned long の変数に収まるので1ビットずつ変数にコピーして行けばいいです。やり方はいろいろあって説明のしようが無いです。
あと、もしBCDならバイナリーに変換する処理が必要になります。

ともかくプログラムを書いて実行結果を確認しながら作るしかないと思います。

こんばんは

ご丁寧な解説ありがとうございます。
ここ二日間データフォーマット、説明書と向き合って作成しましたがどうしてもうまくいきませんでした。<https://cycle.eek.jp/content/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%83%8E%E3%82%AE%E3%82%B9>フォーマット、接続ケーブル等はここのものと同じになります。

ご教示いただけると幸いです。
よろしくお願いします。

re:こんばんは

すみません、どんな問題でお困りなのかもう少し具体的にかいていただけませんか。

あと、貼っていただいたリンク先も読めません。

失礼しました

失礼しました。
https://cycle.eek.jp/content/デジタルノギス
上のサイトになります。
具体的には、ラジオペンチ様の回路図通り配線した際に、GNDにつなげると、clockが取れなくなります。

そのためdataとclockの周期が合わず値が毎回バラバラになってしまいます。
お手数ですがよろしくお願いします。

re:失礼しました

ミツトヨのノギスの説明資料のインターフェイスの部分を読みました。

仕様がハード、ソフト共にこの記事の物と大きく違うのでそのままでは動かないです。

ハードでは、
ノギスの出力(DATA,CLOCK)はオープンドレイン出力になっていますが、私の記事の物は(電圧)レベル出力です。
ノギスの入力(REQUEST)は1.5VプルアップのCMOSレベルになっていますが、私の記事の物にこの信号はありません。

ソフトでは、
データーのフォーマットの違いは別にして、
*REQUESTを送るとデーターが送られてくる仕様になっていますが、私の記事の物にはそういう機能は無く、データーが垂れ流しになっています。垂れ流しのデーターの先頭を自動的に検出する処理が入っています。

かなり仕様が違うので、私のこの記事はあまり参考にならないかも知れません。

ありがとうございます。

ご解説ありがとうございます。
もしよければなのですが、教えていただける範囲で結構ですので、やり方をご教授願います。

大変お手数なのですがよろしくお願いします。

re:ありがとうございます。

やり方はこの前のお返事に全部書いたつもりです。使っている単語は一般的なものばかりなので、その意味を調べて理解していただくしかありません。

ということですみません、これ以上のお手伝いすることは無理です。

高速モード

デジタルノギスからデータを読み出す記事はいくつか見つけたのですが、こちらの記事では具体的に回路図やスケッチがあり、大変助かりました。おかげさまでAruduinoとブレッドボードで記事通りの動作が再現出来ております。ありがとうございます。

次の段階として実用性を高めるためにぜひ高速モードを利用したいと考えております。どのような回路を追加すれば実現可能でしょうか? ソフトの方は仕様が分かればコードは書けるのですが、ハードの方がさっぱりで・・・「プルアップする」と聞いても具体的な回路が想像できません。ヒントだけでも頂けましたありがたいです。

re:高速モード

コメダさん、記事を試していただいてありがとうございます。

このハードはばらしてしまったので確認できないのですが、別のポートからノギスのピンに抵抗を接続すれば良いのではないかと思います。
記事の本文に回路図を追加しておきました。

R3とR4でノギスのピンをプルアップ(デジタルでHIGH出力)。
抵抗値はプルアップした時に1.5Vとなる値に設定。(5V-1.5V)/((1.5V-0.6V)/10kΩ)= 38.88k -> 36k

D4,D5はプルアップしたい時だけ(初期化処理の時だけ)出力にアサインし、データー読み取り時は影響が無いようにするために入力にアサイン(pinModeで)

こんな感じではないかと思いますが、実機がないので確認出来ません。まあ、外れているかもしれませんが、ヒントくらいにはなるのでは。

re: 高速モード

丁寧に回路図までありがとうございます。なるほど、見ればデジタル出力に抵抗入れて繋ぐだけ、これなら私にもできそうです! (でも、これが自分では考えられないので、本当に助かりました)

データー読み取り時に入力にアサイン(pinModeで)、というのも言われなければ抜けてました。これで試作に辿り着けそうです。ありがとうございました。

re2: 高速モード

よく考えたらD4, D5は液晶が既に使っているので、別のピン、例えばD8,D9 あたりでやらないといけなかったです。
パラレル液晶はピンをいっぱい使うので、I2Cインターフェイスの液晶とかを使ったほうが幸せになれます。

あと、別のピンを使わないでやる方法があると良いのですが、ちょっと思いつきません。

No title

ありがとうございます、まずは液晶なしでCOMのログで見ています。
回路追加はすぐに出来ましたが・・・意外に苦戦してます。タイミングなのか、アドバイス外の基本のところで間違っているのか・・・(汗)

ノギスの電池を抜いてオシロで見ると、D4,D5→HIGH で、CLOCK線とDATA線が 0→1.35V になるのは確認できました。「DROの実験 10.カウンタリセット・高速モード設定」を見てその波形通りに HIGH/LOW 切り替えてみたのですが、変化無いんですよね・・・。というか、DATA も CLOCK も電池入れた時点で 1.35V かかるので、波形通りにならないんですけど、もしかして基盤違うのかな・・・(汗)

もう手がないので、海外サイトも含めて成功例探してみます。

No title

追申です。
海外サイトで「電源オン2秒後にdataに1.5Vを100ミリ秒間かける」というコード例がありました。
http://www.nerdkits.com/videos/digital_calipers_dro/#hispeedreadoutmode
回路は少し異なりますが、要は1.5Vかければ良いのだろうと、D5オンオフと同じことと思いマネしてみましたがダメでした。

また、高速モード切り替えボタン付きの機種もあるそうで、回路的にはやはりデータ線に1.5Vオンオフするボタンだそうで、図の通りdataとVposの間に1KΩの抵抗をはさんで手動で一瞬ショートさせてみましたが、やはりモード変わらず・・・でした。
http://www.shumatech.com/support/chinese_scales.htm

これだけ情報が揃えば・・・と思ったのですが、まだ何か見落としているのかもしれません(^^;;;

re3:高速モード

この実験やった時のノギスがあるので、配線だけ引き出してプルアップの実験やってみました。Arduinoは使わず、配線をいじってプルアップなどやってみただけです。

結果はコメダさんのやられたのと同じで、プルアップ/プルダウンなど何をやっても高速モードにはなりませんでした。電源を入れる前にプルアップ/プルダウンしておいてもダメでした。

信号波形をオシロで見ながらあれこれやったのですが、データーが出てくる周期は約130msで、何やっても変わりませんでした。

貼っていただいたリンク先を読むと、スイッチでプルアップするだけでいけてるようなので、明らかに挙動が違う感じです。これ基板というかCOBの仕様が違うのかも知れません。

上の文章にも書きましたが、データーの周期は130msでした。高速化やられている方のノギスのノーマル速度は300msくらいのようなのでその辺が違うのかもしれません。

re4: 高速モード

そこまでやって頂いて恐れ入ります。 自分だけですとどこまで行っても素人のミスという疑いが消えませんで・・・確かな方に見て頂いて、また一歩進めます。 対応製品さえ入手すれば・・・とアタマを切り替えて!

既に手元に3つの製品があるのですが、外観はほぼ同じにも関わらず、基盤パターンが違っていたり、動作が微妙に違っいます。小数点以下の表示ケタ数を減らしたモデルもありますし、コストダウンで高速モードが省略されてもおかしくないですね・・・。ちなみにウチのも全て130ms間隔です。

高速化された方の製品に似た製品をいくつか見つけたので入手してみようと思います。本当にありがとうございます!
カレンダー
09 | 2019/10 | 11
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード