X



トップページ電気・電子
1002コメント434KB

Arduino初心者熱烈大歓迎質問スレ part25

■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2019/09/13(金) 16:15:22.98ID:MfBQFDi7
http://www.arduino.cc/

【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
 詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね

前スレ
Arduino初心者熱烈大歓迎質問スレ part23
https://rio2016.5ch.net/test/read.cgi/denki/1541233445/
Arduino初心者熱烈大歓迎質問スレ part24
https://rio2016.5ch.net/test/read.cgi/denki/1554776918/

過去スレ
Arduino初心者熱烈大歓迎質問スレ part22
https://rio2016.5ch.net/test/read.cgi/denki/1534549073/
Arduino初心者熱烈大歓迎質問スレ part21
https://rio2016.5ch.net/test/read.cgi/denki/1527252804/
Arduino初心者熱烈大歓迎質問スレ part20
https://rio2016.5ch.net/test/read.cgi/denki/1514503488/
Arduino初心者熱烈大歓迎質問スレ part19
http://rio2016.2ch.net/test/read.cgi/denki/1500745528/
Arduino初心者熱烈大歓迎質問スレ part18
http://rio2016.2ch.net/test/read.cgi/denki/1485192244/
Arduino初心者熱烈大歓迎質問スレ part17
http://rio2016.2ch.net/test/read.cgi/denki/1471967293/
Arduino初心者熱烈大歓迎質問スレ part16
http://wc2014.2ch.net/test/read.cgi/denki/1451909868/
Arduino初心者熱烈大歓迎質問スレ part15
http://rio2016.2ch.net/test/read.cgi/denki/1451893274/
0204774ワット発電中さん
垢版 |
2019/10/29(火) 21:28:38.05ID:NBwis+GD
餅突け。
まずは、>>1 を欲嫁。
何をやろうとして何をしてその質問に至ったのか、具体的に、出来れば図表、蛾を添えて詳しく。
0207774ワット発電中さん
垢版 |
2019/10/29(火) 21:45:15.15ID:9TPSHNP5
>>202
>クロック周波数が最大16MHzしかないので水晶振動器を使いたい
そう思った理由を書いてみ
クロックを変更せずに解決できる予感がする
0208774ワット発電中さん
垢版 |
2019/10/29(火) 21:49:08.29ID:sxE0xkCz
クロックを変更するとブートローダも改造しないとスケッチが転送できなくなるんじゃなかったっけ?
0209774ワット発電中さん
垢版 |
2019/10/29(火) 22:24:41.44ID:hhe2aqM3
アドバイスありがとうございます。

目的は30Mhzでデータのサンプリングです。アルデュイーノでは最大クロック周波数が16Mhzなので、外部から早い周波数の信号が必要ですよね?

そこで、水晶が良いのではないかと思った次第です。

ちなみに、自分は電子工作初心者です。
本職は設備のメカ設計をしております。
0210774ワット発電中さん
垢版 |
2019/10/29(火) 22:39:49.05ID:hhe2aqM3
プログラミングについても教えて頂けるとありがたいです。

今までは、そこまでサンプリング周波数の高いプログラムを作ったことがなく、delay関数を使って希望のタイミングでサンプリングをしていました。
しかし、高周波サンプリングをする場合、delay以外の命令実行に時間が掛かるとお聞きし、希望の周波数ではサンプリングするのは難しいと聞きました。なので他の命令の有無に関わらず、正確にサンプリングを行えるような関数があれば教えて頂きたいです。
0213774ワット発電中さん
垢版 |
2019/10/29(火) 22:50:10.20ID:GwCQLjXk
>>210
本当に「正確」にきっちりとやりたいのなら単体DACを備えたシステムを組む必要があるよ。
ちんけなワンチップマイコンひとつでやろうというのは無理。
0214774ワット発電中さん
垢版 |
2019/10/29(火) 22:56:14.38ID:9TPSHNP5
>>210
どのArduinoか知らないけど、ポピュラーな所で328Pだとして最大動作クロックは20MHz
無理だということはお分かりいただけますかな?
専用のADCチップをお使いください
0215774ワット発電中さん
垢版 |
2019/10/29(火) 23:01:18.49ID:HM/zcLyr
さっきEnergiaを覗いてきたんだけどさ もう一年以上もVer.UPされてないね
やっぱARM系は STM32duinoの方が人気があるってことなのかな
0216774ワット発電中さん
垢版 |
2019/10/29(火) 23:03:42.97ID:EilDmMbU
30MHzって電波をサンプリングするの?
何がしたいか全然分からん
まあ俺も初心者だし何も分からんけど
0217774ワット発電中さん
垢版 |
2019/10/29(火) 23:11:01.13ID:2YbHWyle
デバイスのデータシート読んでね
使える最大周波数は決まってるから
その調子だとDCモーターをGPIOに直付しそうだなw
0218774ワット発電中さん
垢版 |
2019/10/29(火) 23:14:00.46ID:9TPSHNP5
>>215
ああ、あの食パンにいろいろはさんでパックにしたやつな
昔前澤の女が宣伝してたやつ
0219774ワット発電中さん
垢版 |
2019/10/29(火) 23:16:00.68ID:2YbHWyle
30MHzサンプリングはマイコンじゃむりだなRF系のデバイスかFPGAが必要
金があるならADCのDSK買えばpcには取り込めるかななにがしたいかしらんけど
0221774ワット発電中さん
垢版 |
2019/10/29(火) 23:20:29.09ID:KdfuN14C
何を観測するか知らんけど、30MHzサンプリングだとデジタルオシロの領域だなぁ
対象が電圧だと仮定して、観測した結果を使ってアクションを起こすのでなければ、デジオシをレンタルしたほうが早そうな?
0222774ワット発電中さん
垢版 |
2019/10/29(火) 23:51:56.57ID:Ktnub9vc
色々と助言頂きありがとうございました。

今さらですが、用途は超高速モーターの回転数サンプリングです。

外注で回転数の表示はしてくださっていますが、出来れば自社で作った基盤でもサンプリングしてみたい、といのが事の発端です。
0223774ワット発電中さん
垢版 |
2019/10/29(火) 23:53:44.77ID:Ktnub9vc
モーター回転数のサンプリングデータで予知保全 とかもしたいので
0224774ワット発電中さん
垢版 |
2019/10/29(火) 23:58:24.10ID:L9e4hMpF
>>210
実現したいサンプリング周波数の為にはクロックは30MHzが必要とも取れたんですが、
 1.観測するのが1/0のデジタルかアナログか
 2.周波数 = 観測する信号 or サンプリング or cpuクロック
がわからないと

arduinoで作ったがもう少しパワーが欲しいと言う話なら、stm32duinoはどうでしょうか、こっちはmax 72MHz
0225774ワット発電中さん
垢版 |
2019/10/30(水) 00:06:00.09ID:zanfxN5P
>>224
1.観測するのが1/0のデジタルかアナログか
 2.周波数 = 観測する信号 or サンプリング or cpuクロック

1.デジタル信号です。
2.モーターの軸を10vに帯電させ一回転ごとに軸と銅線(ブラシ)が接触するように考えております。多分、矩形波のような信号になるのかな?

今持っているのがアルデュイーノunoなので、
出来ればそれでテストしたいです。

水晶使っても無理ですかね?
0228774ワット発電中さん
垢版 |
2019/10/30(水) 00:33:29.11ID:bs0eVpQK
サンプリングじゃなくて割り込み使えば、クリスタル変えなくてもいけます。「avr 周波数カウンタ」で探せば良いかと。
それともモーターからはキレイな矩形波が期待出来ないから、サンプリング周波数を上げてデジタルフィルタ的な事をやろうとしてるのか
0229774ワット発電中さん
垢版 |
2019/10/30(水) 00:36:33.48ID:659mipk1
デジタルならArduinoUNOでも簡単な外付け部品で30MBit/Sでのサンプリングも夢じゃないかも
つまり
・外部に30Mhzのクロックを用意
・クロックを8ビットのシフトレジスタに直結
・外部のクロックを1/2にしてArduinoを15MHzで駆動
・命令4サイクル分でIOポートからSRAMに蓄積
0230774ワット発電中さん
垢版 |
2019/10/30(水) 01:05:32.36ID:bs0eVpQK
>>225
接触子では難しいんじゃ無い?光学エンコーダかマグネットローター+ホール素子でしょ。機構屋さんだよね?
そもそも既に回転数の表示が出来てると言う事は、モーター内にセンサが有るのでは?
0231774ワット発電中さん
垢版 |
2019/10/30(水) 01:15:43.29ID:S1fTjzxC
>>225
回転数ならパルスでデジタルだから、今までと話が全く変わるぞ。
例えば120000rpmとしてもパルスはたかだか2kHzで、マイコンにとってはあくびが出るような話なんだけど…。
そのあたり、何が測定したいのか自分で認識できてる?
あんたみたいに情報を小出しにしてるとラチあかんわ。
0233774ワット発電中さん
垢版 |
2019/10/30(水) 02:45:31.66ID:+mZw+0M9
2kHzとかそんな話だとガックシだなw

もーちょい ってレベルじゃなく、もっと詳しく書いてほしかったな。
回転数の情報も出てこないしなぁ
0234774ワット発電中さん
垢版 |
2019/10/30(水) 02:49:24.74ID:QNMv4tAm
モーターごときの回転数で30MHzってのがいったいどっから降ってきたのか
また永遠の謎で終わるんだろうなあ、毎度のことだが
0235774ワット発電中さん
垢版 |
2019/10/30(水) 03:29:38.44ID:gLW75v2B
【質問者心得】
・スレに一応目を通してから質問しましょう
・回答者はエスパーではありません。状況が分かるように詳しく書きましょう
 詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです
【回答者心得】
・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう
・節度ある初心者さんには、特に優しくね
0236774ワット発電中さん
垢版 |
2019/10/30(水) 04:26:52.36ID:aXKOGMSY
>>234
1回転ごとに検出して30MHzって
そんなモーターが存在するの?
信じがたいんだが
0237774ワット発電中さん
垢版 |
2019/10/30(水) 04:57:01.65ID:VoCOzAjQ
1000カウント10000rpmで167KHz。
0238774ワット発電中さん
垢版 |
2019/10/30(水) 05:00:48.89ID:VoCOzAjQ
予防保全でモーターの振動を測定してるのはだいぶ昔に某大手メーカーで見たことあるけど。
回転数じゃなくて振動を測定したいんじゃないのかな。
0239774ワット発電中さん
垢版 |
2019/10/30(水) 05:02:41.86ID:VoCOzAjQ
回転のムラを測定したいなら30MHzというのも納得いく。
0241774ワット発電中さん
垢版 |
2019/10/30(水) 05:03:44.97ID:VoCOzAjQ
>>240
そうなの?
0242774ワット発電中さん
垢版 |
2019/10/30(水) 05:05:38.25ID:VoCOzAjQ
もう一度計算してみたけど、やっぱり167KHzになるな。
0244774ワット発電中さん
垢版 |
2019/10/30(水) 05:07:13.55ID:U8WnQOh9
>一回転ごとに軸と銅線(ブラシ)が接触するよう

こんなことまじめに書いてるお方なんだから、動くもの作れるわけない
終了
0245774ワット発電中さん
垢版 |
2019/10/30(水) 05:09:05.87ID:VoCOzAjQ
減速機歯面の欠けとかを検出して故障前に保全したいって話じゃないのかな。
0246774ワット発電中さん
垢版 |
2019/10/30(水) 05:10:17.64ID:VoCOzAjQ
僕はむしろ、保全現場の人がArduinoに目を付けたのは頼もしく思うけど。
0247774ワット発電中さん
垢版 |
2019/10/30(水) 05:44:46.09ID:euOVTapr
決まって後出し三昧、その挙句質問者はトンズラ
なのに必ず、ただ勝手な想像で話を膨らまして遊ぶだけの奴が登場して語り始める

毎度毎度楽しそうだなと思う
0249774ワット発電中さん
垢版 |
2019/10/30(水) 06:08:21.41ID:AV6O/NK+
だからそう言ってるじゃん、楽しそうだなと
何が不満なの?
0252774ワット発電中さん
垢版 |
2019/10/30(水) 06:27:33.71ID:VoCOzAjQ
質問スレには技術者しかいないのが欠点だろうな。
営業板から人を派遣してもらえないだろうか。
0253774ワット発電中さん
垢版 |
2019/10/30(水) 07:39:36.84ID:bE/mIYu6
>>225
モータ回転数のカウントは今は専用ICでやるのが普通
http://www.zenic.co.jp/products/ic/zen2024f.php
また、高速回転する軸を接触式のエンコーダ(?)でパルス検出するのは論外
パルスはノイズだらけになるし、磨耗で直ぐに故障してしまう
通常は磁気や光学などの非接触式エンコーダを使う
0254774ワット発電中さん
垢版 |
2019/10/30(水) 08:11:07.76ID:V5DMwSbp
>>239
昨日、質問をさせてもらったものです。

おっしゃる通り回転数ムラもみれればと考えております。回転数を1/10000の精度で見るために、10ns周期でサンプリング出来ればと構想してます。
0255774ワット発電中さん
垢版 |
2019/10/30(水) 08:18:01.43ID:hqq8Rjei
ずぶのど素人だけど
回転数はシーケンサーでできると思うよ
保全目的なら
回転数
振動
音の周波数
とか関係してくるだろうから
どうしてもArduinoなら
それぞれのセンサー取り付けて
表示のLCDつけて
データシート通りにプログラムすればいいだけ
難しくない大丈夫
0257774ワット発電中さん
垢版 |
2019/10/30(水) 09:58:20.62ID:6XYaP4An
>>254
サンプリング とか 見る とかいうことばがあいまい
最低限として1回転毎の時間を得たい
 その解像度を10nsにしたい ということと仮定して得た時間のデータをどうしたい? Logを取りたいのかメータ表示で良いのか 規格を超えたときに信号を出すのか?
 
回転ムラを得たいとして
1/10000というのが 例えば10000回転の時間をチェックできればよいのか、
1/10000回転を個々にデータ取得したいのか そのデータを保存するのか、メータ表示か、規格を、、以下略。
0258774ワット発電中さん
垢版 |
2019/10/30(水) 12:34:36.71ID:T4+tHkNw
>>257

1/10000回転を個々にデータ取得したいです。
0259774ワット発電中さん
垢版 |
2019/10/30(水) 12:36:06.53ID:T4+tHkNw
>>258
あと、logをとりたいです。表示は無くても問題ありません。
0260774ワット発電中さん
垢版 |
2019/10/30(水) 12:37:34.88ID:b/cDPsKA
1回転に1パルスじゃ1/10000回転の個々のデータ見れんだろ
それは1回転の時間を10000で割っただけのものに過ぎん
0261774ワット発電中さん
垢版 |
2019/10/30(水) 12:43:53.68ID:g0ytg8J7
中古のカウンターからGPIB経由でデータ取りにいかせたら?。
横川のTC110あたりで十分。
0262774ワット発電中さん
垢版 |
2019/10/30(水) 13:57:59.05ID:f/B1yQXr
回転パルスでリセットするカウンタ作って(ここはハードでやる)それの値を取り込めばいいだろうそうすればレート=回転数だ
0263774ワット発電中さん
垢版 |
2019/10/30(水) 14:03:14.35ID:f/B1yQXr
制度が10nならカウンタのクロックは100MHzだからちょっとしたものだな CPLD+Atmegaでできるかな 回転検出にはホール素子でも使うかな カウンタの桁あふれに注意だな
0264774ワット発電中さん
垢版 |
2019/10/30(水) 14:06:53.81ID:f/B1yQXr
ログ取るなら記憶部もそれなりのものがいる RAMじゃないと間に合わないかな そのさいずは とかいろいろ考えることはあるな
0265774ワット発電中さん
垢版 |
2019/10/30(水) 14:27:39.90ID:JGoqsMjO
>>262
だな

1回転の時間計測したいのに
ADCで電圧から得ようとしている
間違った手段を練っても目的に届かないよ

ログ採りたいとか言ってるけど
1秒間に1万データ全て残す必要は無くて
最大値と最小値と移動平均を0.5秒毎に更新みたいなもんでいいんじゃね
0266774ワット発電中さん
垢版 |
2019/10/30(水) 14:33:37.68ID:RtmZqnqw
>>254
コイツ、完全にカマッテチャンだろ
>目的は30Mhzでデータのサンプリングです。
>10ns周期でサンプリング
とか、適当に吹いてるだけw
0267774ワット発電中さん
垢版 |
2019/10/30(水) 16:39:42.92ID:ibOUt6Y5
>>254
そろそろマジレスすると
モーターの回転数を取得する方法だけど
手段はいくつもあるので参考までに

attachInterrupt()を使いモーター1回転毎に割り込みを使う(1回転1パルス前提)
モーター用のカウンターを用意
最初にモーター用のカウンターをリセットする
現在のタイマーを取得する micros()関数でμs単位で取得できる(分解性能は4μs)
モーター400回のカウントする
400回に達成したらmicros()を使い前回のタイマーからに経過時間を計算する
60,000,000 / 計算した時間(μs) * 400 = RPM

回転数の分解精度を上げる場合はカウント数を増やす
質問者の言う所の10nsの分解精度があるはず
また別の手段としてコンペアモジュールを使い400や任意の回数をカウントさせて割り込みを行う手段も有る
(あと、arduinoではLチカしかやった事ないので間違ってたらごめん)
0268774ワット発電中さん
垢版 |
2019/10/30(水) 17:08:25.51ID:ockfGgwM
>>267
方法としてはポピュラーなものだけど
>10nsの分解精度があるはず
ってのがよくわからないので説明よろしくお願い
質問者ではないですが
0269774ワット発電中さん
垢版 |
2019/10/30(水) 19:43:42.53ID:aXKOGMSY
>>202
この程度の理解度しかないから
ほんとの1から教えないと分からないよ多分
0270774ワット発電中さん
垢版 |
2019/10/30(水) 19:46:07.28ID:U8WnQOh9
こういうひとはいくら教えたって馬耳東風だ
自分勝手に妄想して言い散らすだけ
0271774ワット発電中さん
垢版 |
2019/10/30(水) 19:53:43.54ID:+BGgVN+2
横から質問です。
外部割込みって、周波数の大きいものはどの程度までカウント可能ですか?
あまり速いとHighとLowの区別がつけられなくなると思うんですがその限界は?
0272774ワット発電中さん
垢版 |
2019/10/30(水) 19:55:33.19ID:+BGgVN+2
連投すみません。
割込みルーチンの処理速度以上に拾っても何もできないから無意味なので
そっちがボトルネックってことでいいんでしょうか?
0273774ワット発電中さん
垢版 |
2019/10/30(水) 20:46:35.98ID:xiSWuvQG
arduino ideのコンパイルが毎回遅くて困っているのですが、皆さんは何か工夫して早くしているんですか?
0274774ワット発電中さん
垢版 |
2019/10/30(水) 21:42:41.15ID:N9MBQejJ
>>271
目的が周波数やパルス幅の計測ならプログラムでカウントする事は一般的に行わないです。
タイマーにそういう計測機能が各種あるからそれを使って、
計測が終わったらタイマーに割り込みを発生してもらって、CPUは計測値だけ頂くのです。
AVRのカウンタークロックは最大で1/1システムクロックだから、16MHzなら16MHzです。

ボトルネックは仰る部分にもなりうるのですが、要求仕様によりけりです。
デジタルオシロ(安い奴)のように画面に表示してる部分の前後に表示されていない部分(取りこぼし)がある、
みたいな仕様を許容するなら逃げようはあります。
希に起こる特異な現象を確実に拾い上げる、みたいな用途では問題になりえます。
0275774ワット発電中さん
垢版 |
2019/10/30(水) 21:53:39.67ID:N9MBQejJ
>>273
内蔵しているgccのスピードなので根本的にはしょうが無いように思いますが、
ライブラリからなんからいちいちフルビルドするのをやめさせるという方向で設定する方法はあるようです。
"arduino gcc 高速化"でググってみるとよいでしょう。
0276267
垢版 |
2019/10/31(木) 02:13:38.65ID:TuwdFCoT
>>268

おそらく質問者は回転数(分or秒)を求める手段として1回転の時間を測りそれを元に計算しようと試みたと思われる
1回転の時間がms単位では回転数の計算に使えない
例>1ms単位なら計算で出せる回転数は1000,500,333,250,200,166・・・回転/秒の刻みでしか計算できない
もっと細かな単位(ns)なら細かな回転数を計算出来ると思ったよう思われる

質問者の
>おっしゃる通り回転数ムラもみれればと考えております。回転数を1/10000の精度で見るために、10ns周期でサンプリング出来ればと構想してます。
この書き込みを翻訳すると
回転数を確認するために1回転の回るのに掛かる時間を1/100000秒単位で測りたい
(1/100000秒は10μsで10000nsなんだけど・・・・)

質問者の言う10nsってのが1回転当たりの時間の刻みの可能性が高いのでそれを求める手段を考えてみた

10nsの分解精度とは・・・
ArduinoUNOには起動後から常に動いてるカウンターが有りmicros()関数でμs単位で取得できる
ただしこれは4μs単位で動くらしく(ネット調べ)1μsでは取得できないらしい?
4μsを10nsを直すには1/400にすれば良い事になる
つまりモーター400回転時間のμsを400で割れば1回転の時間が10ns刻みで計算出来る事になる
0277267
垢版 |
2019/10/31(木) 02:16:07.11ID:TuwdFCoT
>>271
割り込みだと割り込み後の処理によって計測可能な速度が大きく左右されるので具体的な速度は出せません。
UNOだとして単純にカウンターの変数に1足す(インクリメント)するのと数値の比較なら30サイクルから100サイクル程度じゃないでしょうか?
アセンブラで詰めればもっと早くなるとは思いますが
16Mhzで100サイクル必要なら最大160KHz程度になりますがもっと少ない可能性があります
今回の質問のようなモーターの周期なら十分に対応可能な速度で動くと思われます

また他の人も回答してますがUNOにはハードウェアでパルスなどの入力をカウントする機能が備わってます
そちらを使用すればより高い周波数のパルスをカウント出来ます
0278774ワット発電中さん
垢版 |
2019/10/31(木) 02:29:34.06ID:TuwdFCoT
>>274

Each half period of the external clock applied must be longer than one system clock cycle to ensure correct sampling.
The external clock must be guaranteed to have less than half the system clock frequency (fExtClk < fclk_I/O/2) given a 50/50% duty cycle.
Since the edge detector uses sampling, the maximum frequency of an external clock it can detect is half the sampling frequency (nyquist sampling theorem).
However, due to variation of the system clock frequency and duty cycle caused by oscillator source (crystal, resonator, and capacitors) tolerances, it is recommended that maximum frequency of an external clock source is less than fclk_I/O/2.5.
An external clock source can not be prescaled.

AVR未経験なので間違いの可能性が高いですが、上記の説明を読むと
理想なパルスが入力出来たとしても6.4MHz程のようです
実際の状況ではより低くなると思われます
カウンターに非同期モードが有れば16MHzより高速なパルスをカウント出来る可能性も有ります(未確認)
0280774ワット発電中さん
垢版 |
2019/10/31(木) 04:57:18.73ID:AO6KcRfm
400回の合計を1/400にしたら平均しか出ないんじゃないの?
モーターの安定性って早くなったり遅くなったり回転ムラだから

そもそもモーターって
一般モーター 8000rpm (133rps) 1周7.5ms
高速モーター 16000rpm (267rps) 1周3.75ms
超高速モーター 300000rpm (5000rps) 1周0.2ms(=200us=200000ns)
仕様として0.5%のふらつき検出でいいような気がするんだけど
0281774ワット発電中さん
垢版 |
2019/10/31(木) 09:30:06.52ID:Ak3Gz7fN
4μ毎にしかパルス測れないものを
400回測って1/400しても意味ねーだろ
0282774ワット発電中さん
垢版 |
2019/10/31(木) 10:37:03.50ID:JlWbrZ/d
時間軸の分解能は下がるだろう。量子化の分解能はちょっと上がるかな
0284774ワット発電中さん
垢版 |
2019/10/31(木) 11:01:37.46ID:Ak3Gz7fN
>>282
アホか
1回に1パルスしか得られないんだぞ?
1回に〇〇パルスという数値が得られるわけでも何でもない
0287774ワット発電中さん
垢版 |
2019/10/31(木) 16:51:34.10ID:NWYGaj7L
モーターからセンサで拾った信号なんてノイズ乗りまくりだぞ、パルス化で位相雑音になってジッタ出るのに10nsの精度なんてあり得ない。仮に精度が出たとして、負荷に繋がってるモーターだよ、その精度で何を見るんだよ。

からかわれてんだよ。
0289774ワット発電中さん
垢版 |
2019/10/31(木) 21:44:24.03ID:MHuKJjbS
純正Esp32 Wroom 32d DevKitCです
Aduino IDEからだと書き込めるけどVSCodeだと、
Connecting......で失敗してしまいます
VSCodeでもほかのArduinoだと書き込めます
あと、コンパイルの前で

2019-10-31T12:38:52.604Z WARN p.a.h.BoardCloudResolver:64
[cc.arduino.packages.discoverers.serial.SerialDiscovery]
Fail to get the Vid Pid information from the builder response code=404

こんなのが出てかなり時間がかかります
この2つどうやったら治せますか?
0290774ワット発電中さん
垢版 |
2019/10/31(木) 22:11:15.36ID:IwNZvvRX
質問者です。
様々な助言ありがとうございます。

理想は20000rpmのモータの回転ばらつきを
0.01%の精度で見れればベストです。つまり20001rpmと20000rpmが
識別できればいいのですが…
その場合隣り合うパルス間隔が
20001rpm=333.35rps(pps)→2.99985ms/pulse=2999850ns/pulse
20000rpm=333.33rps(pps)→3.00000ms/pulse=3000000ns/pulse
この違いを識別しなければならないと考え
10ns単位でlongの変数へカウントさせ
299985が入っていれば20001rpm
300000が入っていれば20000rpm
というアルゴリズムでできればと思っております(100nsでもいけるのかな?)

現実的かどうかは素人なのでわからないですが…
低価格でそれなり分解能(せめて±0.1%)で測れるのであれば
この方法にこだわりはありません。
0292774ワット発電中さん
垢版 |
2019/10/31(木) 22:41:18.06ID:WlBCa0Yc
なんでもいいからやってみなよ
やらなきゃ何にも始まらないよ
はじめの方でdelayがどうこう言ってたけど
そのスケッチ見せてみなよ
0293774ワット発電中さん
垢版 |
2019/10/31(木) 22:51:21.69ID:PCUvynwo
>>290
奇麗な波形がえられれば20000rpmなんてせいぜい3ms周期だからCPUのスピードから
したらどうということはない。
20000prmを1rpmの精度だったら0.01%ではなくて0.005%で150nsだよね。
16MHzクロック(62.5ns)で16ビットカウンタを自走させて1回転ごとの割り込み
でカウンタを読み取れば充分のような気がするけどね。
14640rpm以下になるとカウンタがオーバーフローするから回転数によって
クロックを下げる必要があるけど。

それよりも
>モーターの軸を10vに帯電させ一回転ごとに軸と銅線(ブラシ)が接触するように考えております。
このやりかたで奇麗なパルスが得られるとは思えない。
チャタリングのようなものが盛大にでてフィルタ入れたら何を測ってるのか
分からなくなりそう。
まずはセンサーの再検討が必要と思う。
0294774ワット発電中さん
垢版 |
2019/10/31(木) 23:07:16.91ID:lTpOfYvh
>>291
Arduinoでやるならがそれがいいとこだね
>>293
「充分のような気がする」の根拠が知りたいなあw
0295774ワット発電中さん
垢版 |
2019/11/01(金) 00:00:36.97ID:dvnsw0L4
>>291
平均値は分母をどのぐらいとるかによりますが
1パルス毎で判断するよりリアルタイム性が薄れる(精度が良くない)
と思います。
簡易的な方法で良いとは思いますが、

おそらく、10nsの案がダメな場合は精度を犠牲に
平均、もしくはメディアンでみることになろうかと思います。
0296774ワット発電中さん
垢版 |
2019/11/01(金) 00:16:13.75ID:HDF3/AtF
ふつーホール素子使うよね
回転の検出ってさ
それか光
非接触でやらないとな
0297774ワット発電中さん
垢版 |
2019/11/01(金) 01:00:42.66ID:dvnsw0L4
>>296
ホール素子か光で試してみます。

そのセンサーで行えばノイズが乗りにくいという認識であってますでしょうか?
0298774ワット発電中さん
垢版 |
2019/11/01(金) 01:30:54.81ID:VWgnSoHs
ブラシよりはるかにマシだがカウンタに入るまではアナログ回路だってことを忘れんように
0299774ワット発電中さん
垢版 |
2019/11/01(金) 03:30:17.56ID:kCUHR9xv
個体のバラつきとか全然考えてないだろ
スペック上2万rpmで買ってきたモーターは
定格電圧で1割くらい平気で違うぞ、
10v流して21000rpmだったり19000rpmだったりする
個体ごとに10.2vにしたり9.7vにしたり調整が必要なわけね
20000rpmで安定回転させるにはpwmで電源制御する必要がある

電源制御で狙い通りの回転数が得られたとして色んな問題が発生する
例えば
毎周回ばらつきがある 3005us 3001us 3011us 3007us ...
数秒周期でうねりのように加減速する
ばらつきを平均化して、うねりをフィードバックでつぶすと
更に安定化できると思う
そこいらが理解できたら、DVDドライブやFDD安定走行用ICのほうがはやいじゃんとか
思えてくるんだとおもわれ
0301774ワット発電中さん
垢版 |
2019/11/01(金) 06:41:04.39ID:bp5QV730
質問者のお題では
>>222
>色々と助言頂きありがとうございました。

>今さらですが、用途は超高速モーターの回転数サンプリングです。

>外注で回転数の表示はしてくださっていますが、出来れば自社で作った基盤でもサンプリングしてみたい、といのが事の発端です。

だから、必要なデータは取れてるというか、やり方が知りたければその外注に聞けよで終了の案件。
0302774ワット発電中さん
垢版 |
2019/11/01(金) 08:53:00.57ID:+WwW+RqQ
>>299
こんなに回転数に拘るモノなんだから、クローズドループで制御してると言うことになる。外注に作らせたものには回転数が表示されると言ってるでしょ。
モータには既にセンサは内蔵されてるから、センサ出力を分岐させる方法か、外注の制御器にリードアウトをつけてもらうのを検討するのがスジ。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況