Arduino初心者熱烈大歓迎質問スレ part25
■ このスレッドは過去ログ倉庫に格納されています
1970/1/1からの秒数のまま計算するんじゃない? 今の時間の2秒前のUnix時間を作ってそこから >>101 みたいに変換する感じですかね?調べてみます >>105 JST変換するとき9時間足すのを 8時間59分58秒足す感じで DCモータ2軸制御のためにArduinoシールドを探しています。 動かしたいモータはマブチのRS-280RA-2865で、特性は URLのような感じになります。 https://i.imgur.com/wbAO6r0.jpg モータは起動時には最大出力で回り、以降はバランスをとるためにほぼ0rpmあたりになる予定です。 ざっと見た感じ、AdafruitのServoShieldしか見つかりませんでしたが、 これでも十分動作できそうですか? 電源電圧何ボルトなの? 静止時に流れる電流に耐えられれば使える 3ボルトで4.7Aとはまあ結構流れちゃうねぇ。 >>108 マイコンボードはSTM32の予定です。 電源電圧を複数用意するのは面倒なので5Vを3Vに降圧しようと考えています。 >>101 imaNoJikanに終端文字の\0が入る領域が足りてないが大丈夫か? Nano Everyの出荷始まってるけど話題ないの? Pro Miniで充分だから? 10倍の価値があり、総務省様のお眼鏡にかなえば そのうち話題になるやろ、どっかでw 照度を調べたいのでフォトトランジスタNJL7502Lを買ってみました CdSセルに比べてちょっと向きを変えただけで大きく値が変わってしまって難しいです 必要な抵抗値とArduinoでの計算式が知りたいです 10kΩの抵抗を付けてAnalogReadを1024で割って3.3をかけたらいいんですか? >>116 https://www.njr.co.jp/products/semicon/PDF/NJL7502L_J.pdf 半値角が±20度しかない(データーシート4頁のDirectivity参照)。 これはレンズによるものだから、CdSに近づけたいならレンズを削り取る。 照度換算は、10kΩ負荷で5V系ならanalogReadの値に1.48を掛けるんだな。 感度が33μA@100Lx。10kΩ負荷では0.33V@100Lxよって3.3mV/Lx。 float Lux = analogRead(ch) * 5.0/1024 / 0.0033; なお、15kΩ負荷にすればanalogReadの値が即Lux値になるから小数計算不要で高速化。 >>117 どうもありがとうございます! NJL7302L-F3だと±55度だそうなのでこっちの方が使いやすいですか?色が黒なので赤外線用っぽく感じたので。 直列で10kΩ+1kΩ+1kΩ+1kΩ+1kΩ+1kΩと繋ぐと15kΩになりますか? >>118 これでやると蛍光灯の室内で130前後でiPhoneのライト当てると986くらい 16bitのADC使った方がいいんでしょうか? NJL7502L ピ−ク感度波長 560nm 赤外線 850-940nm 560nmは緑ー黄緑 うーん全く分からない… 廊下持っていくと照明ついてるのに0にしかならない >>118 >直列で10kΩ+1kΩ+1kΩ+1kΩ+1kΩ+1kΩ… OKだよw でも10kΩを2つ並列にしたら5kΩになるから、これと10kΩを直列にしたら全部で3個で済むよw >>119 16bit必要かどうかは、何をどう計りたいか、という君の要求仕様による。 7.5kΩを負荷にしたらanalogRead()*2がLux値になるから2047Luxまでいける。最小分解能はもちろん2Luxになる。 晴天時野外とかは数万Lux有ったりするけど、人間用の室内照明で1000Lux越えるのは珍しい。といった条件を総合して考える。 >>123 >ACD 部屋の電気を消すだけで数値は必ずゼロになってしまうから気になりました 実際には真っ暗じゃないです ProMicroを使用してPB,PD,PF合計額18個のピンでdigitalReadをfor文で18回繰り返してるんですが、 もしかして一度、もしくはポート毎の3回とかでバイナリ値で取れたりしますか? >>124 人の目は慣れると1ルクス以下でも見えるからな 計測するなら対数変換するかレンジ切替とかした方がいいんじゃないかな >>125 >>126 入力を拾うのはPINxレジスタの方だね PORTxは出力を設定する方 マイコンのポートとArduinoのピン番号の対応をぐぐれば同じポートのピンはまとめて取れる 半年前に作ったプログラムと回路が難しすぎて、どのように動作しているのか理解出来ない ど素人です。お手柔らかにお願いします。 VCCから5Vを取り出して大体0.5Vにしたいので分圧しました 10kΩと1kΩ直列にしてグランドにつないでみました VCC→10kΩ→0.5V取出→1kΩ→グランド 0.5V取り出したら分岐して6個のセンサーを付けて センサーからそれぞれA0〜A6につなげた場合 A0〜A6各それぞれの入力インピーダンスは10kΩということでいいのでしょうか? >>131 違う というか色々繋ぎ方にも疑問があるのでセンサーの型式と回路図(ちゃんとした記号を使った奴じゃなくてもいい)をあげてほしい >>131 それで分圧した場合、0.454v位のはず また、0.5v-センサ-アナログ入力ってなにか違う気がする たとえばこんな感じゃない? (ただし分岐しない前提) 抵抗----0.5v----アナログ入力 | センサ | グランド アナログ入力の電圧はArduinoの1.1Vを使います 交流なので本当はまんなかの0.55Vが理想なのですが 多少はズレても一定であればプログラムでなんとかなりそうなので0.45Vくらいとします 「10kΩと1kΩで分圧したインピーダンス」は、テブナンの定理と言って約909Ωです 単に0.5Vの電源を作りたいって場合は、オペアンプを使った手法(単電源で仮想GNDを作るときによく使う) >>137 クランプ式電流センサを使用して交流の電源(おそらく100vや200vの商用電源) の消費電力(流れてる電流)を測定したいって事かな? 基本的な考えはOKだと思いますが、VCCの電圧とArduino内蔵のFVR?(内蔵基準電圧)を使うと測定値が安定しないと思います 今回のような場合、AREFを使って外部のリファレンス電圧を参照した方がよいと思います 例えばVCC-R8K-R1K-R1K-GRDの様な分圧用抵抗を用意する(R8KはR3.3K+4.7K or R1.2K+6.8K等) R8K-R1Kこの間からAREF用の電圧(1.0V)を得る R1K-R1Kこの間から0.5Vの電圧を得る センサが1:2000+R1Kだとして0.7A位まで測定できるかな・・ この回路で同様のセンサーを複数繋いでも問題は(測定結果の誤差など)無いはずです (クランプ式センサー使ったことがなく、Arduinoも昨日始めたばかりなので間違えてたらごめん!) >>137 あと、測定するものが電熱器みたいのならその回路でも大丈夫だけど、 電流が絶えず細かく変化する相手(電熱器以外の殆ど)ならサンプルレートを考慮しながら クランプセンサの抵抗と並列にコンデンサを繋いで測定する電圧の変化を安定させたほうが無難だとおもう Arduinoがどの位の性能か把握してなく可能か不明だが、1秒当たり数千回×センサーの数のサンプルが必要なのでは? 遅くなりましたが皆さんありがとうございます >>138 テブナン定理大変勉強になりました オペアンプこれから勉強してみます >>139 確かに安定しないのです ソフトウェアローパスフィルター入れて無理矢理安定させてる感じです 教えていただいた回路試してみます 楽しみです >>140 測定するものはAC100〜220V50Hzで電流は1mAから1A程度までで常に変動しています 交流なのですがコンデンサ入れた方が良いのですか? 50Hzなのでサンプリングレートは特に問題ないと思っています そうですね今暗算したところその程度の回数は必要ですね 回数はまだカウントしたことはないですが 以前計算してみたところ全然余裕で逆に制限を入れるか検討していたところです 回数は実際見た方がいいので確認しようとは思っています >>141 >交流なのですがコンデンサ入れた方が良いのですか? コンデンサを使用するのは手段の一つだと思います、回路次第で他にも手段が有るので・・・ サンプル速度にもよりますがサンプルの間で電流が激しく変動するなら何らかのフィルターが必要だと思います サンプル速度を上げてなるべく小さなコンデンサを使うことで誤差を少なくできるかと また、クランプ式の電流センサーのコイルがある程度フィルターとしても機能してるので必要ない可能性も・・ センサーの抵抗にコンデンサはあれだったので(強引)以下のようなRCフィルターはいかがでしょうか? センサ ーー抵抗ー+ーAD入力 ←(コイルの出力とAD入力の間にまず抵抗を加える) | コンデンサ ←コンデンサで細かな変動を減らす | 分圧の0.5V 追伸 >A0〜A6各それぞれの入力インピーダンスは10kΩということでいいのでしょうか? 今回のような回路の場合、分圧の抵抗から電流が流れないので 分圧抵抗は入力インピーダンスには関係ないはずです 後は・・まあもっと詳しい人が教えてくれるかと・・・ ↑図面っぽおいのがブラウザによってズレてるので・・・ コンデンサの位置は抵抗とマイコンの間です 交流のまま取り込む訳だから毎秒数百回サンプリングしてソフトで全波整流 してローパスフィルター掛ければいいんじゃね? Pythonの場合、何もしない関数やif文の場合、中に「pass」と書いておけばいいんですけどArduinoだとどう書いたらいいですか? ブロック内に何も書かなければなにもしない if (true) { } else { } void func1() { } 回路の質問をした者です 大変参考になりました ありがとうございます また質問させていただきます 本当の素人質問で申し訳ないのですが、 5vをつないで回路を作るときと5vをつながずに回路をつくるときの違いがわかりません ぜひ教えてほしいです >>150 参考にした回路図があるんだろうから画像かなんかで見せて >>150 Arduino UNOとかマイコンの出力には5Vが出ているが LED1個か2個点灯させる程度のドライブ能力しかない もっとたくさんのLEDやモーターなどを使いたい時は トランジスタやFETをスイッチさせて、 外部から供給した5Vを制御する回路が必要となる 基準は40mA超えるかどうか >>153 質問者の意図に合ってるかは分からないが、推理力に感心した。 すみません ほんとの素人なので質問もうまくできないんです 質問を変えさせてください https://i.imgur.com/KKLfe2H.jpg この画像の回路図ってどうなってるのですか? これ絵には書いてないけどArduinoにはACアダプタかUSBが刺さってる前提の回路だね このままだと電源がないから何の反応もないよ >>155 あーうー、13番ポートとGNDの間にLEDがぶっささってるが、5Vが無いと言う意味か? 13番ポートには5Vか0Vのどっちかが出力されるから、5VはArduinoの中から来るんだよ。 (ちなみにポートにLEDを直接繋ぐのは関心しないのだが、これはそのうち。) 次に、図の上の方にある回路に5V(とGND)が供給されている=5Vが必要なのはなぜかという事だ(ろう)が、 これは7番ポートが入力だからだよ。Arduinoが入力だから、5V(かGND=0V)は回路側で用意する必要があるから、 Arduinoの電源ポートからもらって来来る必要があるんだよ。 >>156 なるほど!!!! OUTPUTに指定したピンは電圧の源みたいに考えて大丈夫ってことですよね? >>155 あなたの持っている「Arduinoを始めよう」をちゃんと読めばそこにすべて書いてある。 自分が読んで理解した内容を踏まえて質問するべき。 あえてどこからの引用か隠して質問する意図は何? >>158 そのとおり!でも、20mA、最大40mA程度しか流すことができない。 そこで>>153 さんの言ってることが役に立ってくる! >>155 質問の内容が判ったかも 図面のLEDはあくまでボード上の内蔵LEDの代わりに表記してると思われるのでスルーします。 質問は押しボタンスイッチの接続の方法が主に3種類あってそれぞれの違いを知りたいって事だと思います。 1・ 5v(vcc) ― sw ―ポート 加えて sw―ポートの間に抵抗を繋いでGNDに接続 2・ GNDーーswーーポート swとポートの間にに抵抗を繋いで5v(vcc)に接続 3・ GND ― sw ― ポート 上から 1、入門者向きボタンを押したら入力がHIになる 2、ボタンを押したらLOWになる 3、内蔵のプルアップ機能を使用する 2で使用してる抵抗と同等のものがチップに内蔵してるのでそれを使用する(ボタンを押したらLOWになる) >>157 ありがとうございます!これのレスのおかげでかなり理解がすすみました!! >>159 すみません 引用を言い忘れていました 別に他意はないです 本を読んでもわからなかったので質問させていただきました >>160 なるほど! もっと理解が進んだときに役に立出られるように覚えておきます >>161 難しいですが、ちょっと考えてみます わかりづらい質問を何回もして申し訳ないのですが、 LEDの方とスイッチの方の回路は別々と考えてもいいってことですよね?スケッチで指示しているから、ボタンを押したときにLEDが付くという認識でいいでしょうか あとOUTPUTに指定したポートから出て最後にINPUTのポートに戻るような回路はダメなのですか? OUTPUTが出力でINPUTが入力という理解ならば大丈夫なように思えるのですが、調べてみたらI/Oポート同士を繋げたらショートすると書いてあったので混乱してます >>166 別にどうつなごうと勝手にすればいいが、+出力とGND出力をつないだらショートして 大変なことになるだろうことは想像できるでしょ 自分で出力したものを自分で入力するなんてのは無駄だから普通はやらないってだけ。 5Vと12V、二つのACアダプタのGNDをつないで、回路の5Vと12Vの入力に使ったら、爆発するのかな? 抵抗なしでLED繋ぐ奴多いな、UNOぶっこわれるのに 壊れ方は爆発とかしなくて、出力状態に関わらずLEDが点灯してしまうとか 別のピンオフにすると壊れたポートもオンになるとか 指でGNDに触れると出力状態が変わるとか そんな感じの壊れ方になる場合が多いよ >>167 >自分で出力したものを自分で入力するなんてのは無駄 普通にやるだろ センサー入力を止めたい 外部ICでデコードする シリアル制御線がループバックになってる 等 >>166 Q)あとOUTPUTに指定したポートから出て最後にINPUTのポートに戻るような回路はダメなのですか? A)OK Q)OUTPUTが出力でINPUTが入力という理解ならば大丈夫なように思えるのですが、 A)OK Q)調べてみたらI/Oポート同士を繋げたらショートすると書いてあったので混乱してます A)場合による INPUTに設定したI/Oポート同士を繋げた=OK INPUTに設定したI/OポートとOUTPUTに設定したI/Oポートを繋げた=OK OUTPUTに設定したI/Oポート同士を繋げて、両方のピンが0Vになってる=セーフ 〃、両方のピンが5Vになってる=セーフ 〃、片方が0V,もう片方が5Vになってる=アウト 元の文は”I/Oポート同士を繋げたらショートする場合があるので注意”ではないだろうか Hi/Loとハイインピーダンス組み合わせてIOピンより多いLED制御するトリッキーな回路思い出した 俺はラダー抵抗によるDA回路が頭に浮かんでしまうな >>171 なるほど! I/Oポート同士を繋げたら絶対にショートするわけではないのですね! とてもわかりやすい解説ありがとうございます! >>174 なんでかっていうと 短絡(ショート)とは、電位差のある2つ以上の点を、非常に小さい抵抗値の導体で接続することをいいます。 だからね。 >>166 もしかしてINPUTを電流が帰ってくる所だと思ってないか? OUTPUTから電気が出てきて、INPUTに入っていく分けじゃないぞ D0→抵抗→LED→D1 のときD0とD1はどっちもOUTPUTだぞ(D0がHIGH、D1がLOWで点灯) 5V→抵抗→LED→D2 のときD0もOUTPUTだし(D2がLOWで点灯) D3→抵抗→LED→GND のときD1もOUTPUTだぞ(D3がHIGHで点灯) マイコンの入力と出力だからな >>178 2,3行目のD0,D1はD2,D3の書き間違え 読み替えといて >>170 なんか誤解してるようだけど、出力ポートをそのまま入力ポートにつなぐなんてのはめったにやらん というかやらん。 >>175 ショートのことをよくわかってませんでした ありがとうございます! >>178 すみません たしかになんかごちゃごちゃに考えてました INPUTに指定したピンをdigitalReadなどで情報を読み取り、OUTPUTでその情報を受けてなにかの結果を出すということですよね? でもこのINPUTピンの使い方がよくわかりません >>155 にあげさせてもらった回路もどのような電気回路で電圧を読み取るのかわからないです あと D0→スイッチ→抵抗→LED→D1 としたときはINPUT OUTPUT の関係はどうなるのですか? そもそも足し算や引き算を理解できていないような状態で 掛け算や割り算を理解しようとしているようなもんだから ここで質問したところで回路を理解するには自ずと限界がある 遠回りのようでも電子回路の基礎知識を身につけた方がいい >>180 キーマトリクスで使うだろ 4ピンでスキャン出力して4ピンで入力 4x4=16ボタンの状態を知る 元の質問は Q> OUTPUTに指定したポートから出て最後にINPUTのポートに戻るような回路回路はダメなのですか? A> 自分で出力したものを自分で入力するなんてのは無駄 "最後に"とわざわざ書いてるのは "なんらかの回路を経て最終的に"という意味なんだと思われ まあ、キースキャンのようなアクティブにセンス信号出す場合には使うよ >>181 > D0→スイッチ→抵抗→LED→D1 これはかなりの変化球というか何がやりたいのかわからん 先にスイッチやLEDの定版回路や定石を理解すべき キャッチャーまで球届かない奴が いきなりフォークボール投げたいといってるようなもん スイッチ押したら光る回路なら Vcc→抵抗→スイッチ→LED→GND マイコンいらんねん >>182 わかりました!高校までの電磁気の感じとはちょっと違うみたいなのでしっかり学びたいと思います >>185 たしかにマイコンをただの電池みたいに考えてました https://i.imgur.com/KKLfe2H.jpg UNOに電源供給されてないのは 本当に電池だと思ってたんだなw UNOで上に載せるボードとUNO本体に個別に電力を供給したいんだけど、 12Vの組み込み電源から1本線を描くように直列にプラグとコネクタを設置して電気を供給しても大丈夫? 電源の電流容量は余裕あると思う。 以前フォトトランジスタについて質問したものです 明るさセンサーのTSL2591をUnoで試してるんですが、 https://cdn-learn.adafruit.com/assets/assets/000/017/912/original/sensors_luxtext.png サンプルスケッチのこの画像だとResolutionが1.00luxとなってるけど自分のシリアルモニタだと0.0010luxとなってます それが原因なのか分からないけど、部屋のluxの値も60luxくらいととても低いです Resolutionとは何の解像度を指してるんでしょうか? サンプルスケッチです https://learn.adafruit.com/adafruit-tsl2591/wiring-and-test >>188 それを個別に供給したと言うのならそうなんだろうね >>191 スケッチはアイダフルトのサンプルそのままです スマホのライトを近づけると2600luxくらいまで行くんですけどそれ以上近づけると-1.00luxっていう値になってしまいます センサのスペックは /* Dynamic Range: 600M:1 */ /* Maximum Lux: 88K */ らしいんですが… >>189 電車内でスマホからだけど resolutionは分解性能のことだと思う 計測可能な最大値を変える事で低い値の分解性能が上がるはず この辺の設定で変わるのでは? TSL2591_GAIN_LOW: Sets the gain to 1x (bright light) TSL2591_GAIN_MEDIUM: Sets the gain to 25x (general purpose) TSL2591_GAIN_HIGH: Sets the gain to 428x (low light) TSL2591_GAIN_MAX: Sets the gain to 9876x (extremely low light) 変なとこで改行しちまった(´・ω・`) TSL2591_GAIN_LOW TSL2591_GAIN_MEDIUM TSL2591_GAIN_HIGH TSL2591_GAIN_MAX >>193 Resolutionの数字はライブラリの中で決め打ちされてました https://github.com/adafruit/Adafruit_TSL2591_Library/commit/640ef967163a4543f172dc425e30fa08b02ca01a ループ内のsimpleRead()を使った時はゲインやトリムを変える事で数字は変わりましたが、 luxの値を表示するadvancedRead()だと全く変化はなかったです >>195 さっき電車からレスした者です >部屋のluxの値も60luxくらいととても低いです センサーの向きや状態にもよるけど部屋の明るさなら十分あり得る値かと思います >スマホのライトを近づけると2600luxくらいまで行くんですけどそれ以上近づけると-1.00luxっていう値になってしまいます センサーモジュール内のADコンバーター(またはカウンター等)が最大値でオーバーフローしてます // Check for overflow conditions first if ((ch0 == 0xFFFF) | (ch1 == 0xFFFF)) { // Signal an overflow return -1; } 以下の部分を変更して感度を調整すれば88000luxまで測定出来ると思います //tsl.setGain(TSL2591_GAIN_LOW); // 1x gain (bright light) tsl.setGain(TSL2591_GAIN_MED); // 25x gain ↓ tsl.setGain(TSL2591_GAIN_LOW); // 1x gain (bright light) //tsl.setGain(TSL2591_GAIN_MED); // 25x gain [ 1733721 ms ] IR: 322 Full: 2053 Visible: 1731 Lux: 79.397003 蛍光灯をつけた室内だとこんなかんじで、4項目の数値が出てます。 IRは赤外線、Visibleは可視光線、Luxは明るさだと思うんですが、Fullは何を表しているんでしょうか? それぞれの単位って分かりますか? >>196 ゲインを変更してスマホライトをつけたり部屋を暗くしたり試してみました。 ゲインをLowにするとLuxの最小値は1.360000、これ以下だとinfかnanになるから薄暗い場所の数値は見れない。 ゲインをMidにするとLuxの最小値は0.027200辺り、最大値は2600辺り、これを上回ると全て-1.000000。 市販の照度計もこんな感じで、室内の場合、屋外などの明るい場所の場合ってその都度設定を変える感じなんでしょうか? センサーを真上に向けて手に持って蛍光灯の真下に立って測ると300くらいになりました。 CdSセルだと確実に光源に向けたりしなくても、真っ暗な部屋、薄暗い部屋、パソコンのモニタの光だけの部屋、蛍光灯を付けた部屋、直射日光の当たる明るい部屋などがだいたい判断出来ました。ルクスは分からないにしても、もしかしてCdSセルって優秀なんでしょうか? >>197 抜けてました ゲインをLowにしてスマホライトを当てたら50000くらいまでは出ました >>197 IRは赤外線、Visibleは可視光線、Luxは明るさだと思うんですが、Fullは何を表しているんでしょうか? FULLはFULLSPECTRUMって意味だと思う 赤外線と可視線の両方を足した明るさの値と思われる(単位はLuxでない) そもそもFULLからIRを引いた数字をVisibleと表示してるため あとそれぞれの単位は以下の式で使用されてるので単純な明るさの単位ではないと思う >cpl = (atime * again) / TSL2591_LUX_DF; >lux = ( ((float)ch0 - (float)ch1 )) * (1.0F - ((float)ch1/(float)ch0) ) / cpl; >市販の照度計もこんな感じで、室内の場合、屋外などの明るい場所の場合ってその都度設定を変える感じなんでしょうか? 自動的にゲインが調整されると思います 必要があれば、測定値に応じてゲインを自動的に調整出来る様にプログラムすればいいと思いますが・・・ >もしかしてCdSセルって優秀なんでしょうか? 今回の明るさセンサーの場合、光度が直線的に出力されるが(出力というより取得か) アナログ回路等で電圧に変換しADコンバータで読み取ったCdsの場合、明るさの測定値が曲線的に出力されるためだと思われます >>199 LEDの光ってスペクトル分布が独特だから、センサーとの相性とかあるかもしれない 古いタイプの照度計だとLEDの照度が正確に測れないものもあるし、、、 簡易なものは知らないけど測定器としての照度計はテスターのようにレンジ切替がついてるよ アルデュイーノを使って電子工作をしていますが、クロック周波数が最大16MHzしかないので水晶振動器を使いたいと思っております。 し かし、配線の仕方やプログラムの作り方がわかりません。 またプログラムはサンプリング周波数にあったdelay をループの中に突っ込んでいますが、正確な周波数で命令を実行するのはこのやり方でいいのでしょうか? またアルデュイーノは最小のdelay設定がマイクロ秒までしか設定できないですがマイクロ秒まで設定できるようにできるのでしょうか? 長文失礼しました。 >>202 落ち着いて読み返して再質問しろ 用語の使い方が支離滅裂で何言ってんだかぜんぜんわからん ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる