Arduino初心者熱烈大歓迎質問スレ part20
■ このスレッドは過去ログ倉庫に格納されています
http://www.arduino.cc/ 【質問者心得】 ・スレに一応目を通してから質問しましょう ・回答者はエスパーではありません。状況が分かるように詳しく書きましょう 詳しく書いてくれないと、答える方も困ってしまいます。答えようがないのです 【回答者心得】 ・すぐにググレカスと言う前に「○○でググれカス」って言うような大人の余裕を見せつけてやりましょう ・節度ある初心者さんには、特に優しくね 【分裂騒ぎ】 おさまった模様。くわしくはぐぐれ。 前スレ Arduino初心者熱烈大歓迎質問スレ part19 [無断転載禁止]©2ch.net http://rio2016.2ch.net/test/read.cgi/denki/1500745528/ 過去スレ Arduino初心者熱烈大歓迎質問スレ part18 [無断転載禁止]©2ch.net http://rio2016.2ch.net/test/read.cgi/denki/1485192244/ Arduino初心者熱烈大歓迎質問スレ part15 http://rio2016.2ch.net/test/read.cgi/denki/1451893274/ Arduino初心者熱烈大歓迎質問スレ part17 http://rio2016.2ch.net/test/read.cgi/denki/1471967293/ Arduino初心者熱烈大歓迎質問スレ part16 http://wc2014.2ch.net/test/read.cgi/denki/1451909868/ 関連スレ 【Arduino】フィジカル・コンピューティング4【OSC】 http://wc2014.2ch.net/test/read.cgi/denki/1407830304/ 学研マイコン Japanino ジャパニーノで遊ぶスレ 3 http://kamome.2ch.net/test/read.cgi/denki/1286354827/ シリアルを受信してPCに送信するならLeonardでもできそうだがどうなんだろう ソフトシリアルで実現することに労力使う意味があるとは思えないけど ↓こんなところも参考にしてみたら ttps://garretlab.web.fc2.com/arduino_reference/libraries/standard_libraries/SoftwareSerial/index.html 今更かもしれないけど… デバッグ側が通信内容を垂れ流すだけで良いのであれば、デバッグ側をsoftwareSerialにしてしまえば解決するような。 あいたHardwareSerialをデバイス側かホスト側に割り当てれば、SoftwareSerialの待ち受けは1つで良いし。 デバイスorホストがPCでない場合、ArduinoのオンボードUSBシリアルが使えなくなるから割と面倒ではあるけど レーザーモジュール関連を眺めてると皆受光側は汎用のCdSを使われていますが、 レーザーの波長にしか反応しない明るい所でも使える専用の受光モジュール的な物は 存在しないのでしょうか? >>258 レーザー受光用にCdSなんぞ使わんのじゃないか? Photo Diodeだろう nanoでon500ms,1hzの方形波のon時間 を測りたい。方形波はrtc3231から 出力。インプットキャプチャで 立ち上がりと立ち下がりで割り込み、 その時のタマー1のicr1と、 タイマー1のカウンタが オーバーフローした回数から 時間を計算。この流れでおかしな ところがありますか? ロジアナで方形波と、立ち上がりと 立ち下がりをキャプチャできている ことは確認しました。 参考サイトがあればうれしいです 何言ってるか微妙に分からんからスケッチ貼っちゃうといい。 個人的には0.5秒サイクルならもっと適当でもいいと思うけど、まぁ現状測れてるんなら #include <DS3232RTC.h> //http://github.com/JChristensen/DS3232RTC #include <Streaming.h> //http://arduiniana.org/libraries/streaming/ #include <Time.h> //https://github.com/PaulStoffregen/Time #include <TimeLib.h> //https://github.com/PaulStoffregen/Time #include <Wire.h> //http://arduino.cc/en/Reference/Wire #define echoPin 8 // Echo Pin volatile unsigned long timer1_overflow_count = 0;//volatile 割りこみ関数、メイン関数間で共有する時使用 volatile unsigned long pulse_count = 0; volatile bool tgle_catch = true; volatile bool wait = true; ISR(TIMER1_OVF_vect)//timer1がオーバーフローした際に呼ばれる。オーバーフローまで4ms弱ある { timer1_overflow_count++; } ISR(TIMER1_CAPT_vect) { cli();//割りこみ禁止 pulse_count = ICR1; if(tgle_catch){ digitalWrite(10, HIGH);TCCR1B = 0b00000001;//timer1 インプットキャプチャ立ち 下がり でON 分周比1 カウント開始 }else{ digitalWrite(9, HIGH);TCCR1B = 0b01000001;//timer1 インプットキャプチャ立ち上がりでON 分周比1 カウント開始 }tgle_catch = !tgle_catch; wait = false; sei();//割りこみ許可 } Arduino uno同士をi2c接続しています(master, slave) この場合、slave側からはi2c接続のOLEDであるとか、多chモータドライバの類は 制御できないと考えて良いですか? masterのメモリ残量がきついのでOLEDの処理だけでもslaveに移せたらうれしいのですが >>265 上手くプログラミングできるかどうかは分からないけど 元のmaster側がi2cにアクセスしない時間を保証できるなら slave側はその間にmasterに設定し直してi2cアクセスするようにすれば 可能だと思う(終わったらslaveに戻す) >>260 コードは見てないけど、不具合がないならいんじゃないかね。 廃車したカーバッテリーをArduinoにつないで ソーラーパネルで充電しながら常夜灯など簡単な器具を使う場合 ソーラーでの充電が十分ならチャージを切断し、 電力が下がりすぎればバッテリーが壊れるので利用を停止 こんなものを作りたいんだけど Arduinoでは自分が使っている電圧を調べることできる? また、Arduinoで同じような事をやってる人のHPなど知ってる人がいたら教えて欲しい >>270 ありがとう ただ、偉い複雑だね 元々、逆流防止のダイオード一個だけの簡単なものを考えてて ただ、過放電でバッテリーを壊したくないから監視するだけの シンプルな設計でやりたいんだけど良い方法無いかな? リンクはありがたいけど初心者には複雑すぎて理解できない>< 12Vのバッテリーを昼充電して夜ちょっと使いたい arduinoが動作しなくなる前に負荷を遮断するのなら 電源をDCジャックから入力、その電圧がVin端子にも出るから Vin端子から抵抗で分圧してアナログ端子に入れて測れるよ、必要なのは抵抗2本だけ バッテリーから動作電源と測定の電源に分けて入力しても同じだけどw 「arduino 電圧測定 分圧抵抗」 とかで検索してヒントになるかな 電圧表示にLCDとか使うとリンク先のように複雑になるけど 電圧に応じてLEDを点灯させる程度ならスケッチもさほど複雑にならなさそう >>268 不具合があったけど 自己解決しました。 まだ誤差が59μsあるんだけど コンパイルにo3の最適化しても だめだったので、あと発振子を変えてみるつもりですがマイコンの限界かなと思ったり。 >>272 ありがとう 12Vだから電圧は抵抗分圧で落とす必要があるわけか それならシンプルで簡単に制御できそう ただ、Arduinoで電圧測定をしている説明を見ると、必ず電池でArduinoを起動させて、別の電池の電圧を測ってる 何となくイメージなんだけど、起動している電源からそのままアナログ端子に差し込むと感覚的に壊れそうなイメージがあって不安だった 一般にこんな事は起こらないの? どうやってチャージのon/offをするつもりなん? >>275 チャージの方はソーラーパネルに逆流防止のダイオードを付けるだけ 5Wの補充電用の物だから多分過充電にはならないと思う 不安がでそうだと 消費側同様、とりあずはリレーかな 他はフォトカプラやSSRか まだあまりしっかりとは考えてない >>267 そんな事も可能なんですか、私の知識では無理そうですが覚えておきます ありがとうございます >>269 >>274 開発途中までは思わぬトラブル回避で別電源を用意して試験して ある程度めどがついたら充電対象のバッテリに依存するように設計変更したらよろしいのではないでしょうか >>273 UNOとかNanoはセラミック発振子だろそれでクリスタルRTCを測ってもね、 しかし年末に購入した中華DS3231も4個中2個が周波数が32.780KHzと RTCとして使い物にならず他1個も不良でまともそうなのは1個だけだった。 UNOのクロック測ったら-25KHzで2009は+1.7KHzでした。 >>279 DS3231使ってるけど、そんな精度低いもんかな。 32kHz出力は使ったこと無いんだけど。 RTCとして使えないってことは、時計も盛大にずれるって事? >>279 >>282 DS3231が内部で温度とともに校正値を変化させているとはいっても 32.780kHz は異常。 366ppmって、並みの水晶でもでかすぎる。 考えられるふたつのこと。 32.780kHz を測った測定器の誤差が大きい。 中華DS3231が実は怪しいもの(偽造、テストに通らなくて廃棄されたもの)。 >>280 >流石にセラロックはねーって これを見て最初、 「セラロックでRTCを評価するなんて、さすがに無いよなあ」という同意なのか 「UNOにセラロックが使われていることは、さすがに無いだろ」という反論なのか分からなかった。 よく見たらリンク先が回路図だったから、前者だったのだと安心した。 ともかく、 システムクロックを動かしてるオシレータは、水晶であってもRTCの水晶ほどにはシビアに合わさない。 それを使ってRTC精度を測るのはナンセンスですね。 で、>>279 さんは、どんな測定器で周波数を測定したんでしょ? >>258 検出器の前に干渉フィルターを置けば? レーザーの発光線幅よりも、フィルターの通過帯域の半値幅は遥かに広くて10 nm以上ありますが、他の波長はカットできますよ。 >>282 中華DS3231の話でテストしているわけでもないのでたまに不良品に当たるわけです。 発振周波数が12Hzもずれてると1日で30秒も進みますそんなRTC使いますか? >>283 4個中2個は32.768KHz残りの2個が32.780KHzと12Hzずれたものがあったので 一応HPのユニバーサルカウンタでも確認しています。 購入した中華DS3231は1個245円ですのではなからバッタ物と認識していますが ググッてもそんな悪評が見つからないのでここまで当りを引くとは思いませんでした。 >>286 確認に使ったのはルビで自家校正したHP53131A、校正したのは2年ぐらい前かな。 >>288 良品(と思われるもの)はちゃんとした周波数に見えてるのですね。 http://www.avrfreaks.net/forum/does-frequent-reading-slows-down-ds3231-rtc ↑DS3231を頻繁に読むとスピードが遅くなるか? というスレなのですけど、 中華品だからじゃないのか、という疑いも書かれています。 Digikeyでの価格と中華モジュール価格の差がとても大きいし注意は必要かもしれないですね。 >>289 >良品(と思われるもの)はちゃんとした周波数に見えてるのですね。 はい、半分の2個は32.768KHzを出力しています。 使用しているモジュールは以下と同じものです。 https://ht-deko.com/arduino/rtc_ds3231.html そういえばAliのRTC どこで買ったか忘れたけど一次電池のボタン電池が付属してたけどこれに勝手に充電されてた 一歩間違えると過充電爆発するんじゃないかと不安になり、チャージ回路のパターンを切断したわ もし買う予定ならお気を付けあれ 精度については良く覚えてないけど100円ショップの時計程度だと思う ただ、どうしても精度が欲しいならGPSや電波時計からモジュールを取り出して使った方が良いんじゃないかな nano、センサー、モーターはバッテリーとDCDCコンバータで動かしながら nanoにマイクロusb刺してデータを表示させたいんだけどできますか? usbのハブがあるけどpcが壊れないか不安です。 >>293 GNDを共通にして大丈夫かどうか、とか、電圧次第ですけど、 心配だったら「USBアイソレータ」をひとつ持っておくと良いのではないかと思います。 俺は自作しましたが、基板だけの安い既製品もあります。 https://strawberry-linux.com/catalog/items?code=12284 PWM出力を0の時にPWMが最大出力にさせるにはどうすれば良いですか? アナログ入力からの/4で、その数値が低い時にPWM出力を大きくしたいのです vs-codeで質問ですが、サンプル含めて既にある ino を開くのはいいんですが 新規に ino を作るときはどうしたらいいのでしょうか。 setup と loop だけの話ですが、スケルトンを作ってくれないのか、と >>295 そんなのLチカサンプル開いて、 setup()とloopの中身削除して名前を付けてセーブでいいんじゃないの? void setup() {} void loop() {} ↑これをIMEの単語登録に「スケルトン」で登録! まるきり新規なら、まず好きな名前で空のフォルダつくって、その中に「フォルダ名.ino」を 置けばプロジェクトの出来上がり。 >>296 アナログ入力値a、pwm出力bとすると b={(1023-a)/1023}*255 みたいなんでいけない? アナログ入力の比率は自分で考えて下さい >>302 それっていつも0しか出ないような気が、、、 4で割るだけでいいのに。 >>302 なるほど元発言の一行目は無視すればよいのか ゼロのときに最大にしたい、ってなんだ?と思ってたけどようやく理解できました >>302 map関数使った方がスマートじゃない? PWM出力ポート=map(アナログ入力ポート,0,1023,255,0) こんな感じだったかな これで10bitも同時に8bitに変換できて、尚且つ下限と上限入れ替えてるから入力0の時,出力255 ちなみに処理速度が速いのと、使用メモリが一番少ないのはビット演算 賢いコンパイラだと、2のべきによる整数割り算はシフトにしてくれる お試し版とか、無料版とかのモードだとその辺の最適化が無効になっていることもあるが >>305 とかこの手の人が読みやすい綺麗なコード書く人なんだろうなとは思う 昔はいろいろバイナリ、シフトとか考えて書いたけど、最近はやらなくなってしまったわぁ。 なるべく数式通りに、見てすぐわかるように冗長でもいいから、float使いまくって そのまんま書いちゃう。 それだけ演算能力が上がったって事やね Arduinoは低性能だけど。 nanoサイズでもっと高性能なのを出せばいいのに STM32やESP32がIDEに対応してから地味にシェア食われていってるやん。 結局は多くの人がIDE目的ってことやな STM32F103C8T6でもnanoよりloop一周の時間が10倍は速かったよ ESP32は240MHzでデュアルコア どれだけ速くなることやら >>315 >Arduinoは低性能だけど。 これは、「AVRのArduinoは低性能だ」って意味なのかな? ADCH取得するだけで1/4になってるのにfloatにして割らなくても。 CPUタイムもスタックもスタティックも余りまくってて、ヒープ使いまくりのclassとかの状況で 細かいこと気にしても意味ないからねー >>312 それもあるけど 質問の一行目の意味を即理解してるのが凄いと思った 俺はコード読んで反転させたかったのかと理解した 暗号化されているかのような仕様書を理解してみんなに説明するプロジェクトリーダーっている。 だからこそリーダーなんだろうな >>297 MSの拡張入れてある? だったら、空フォルダを開いてF1->Initializeでいけるんじゃね? >>311 割り算が単なるシフトにコンパイルされるには条件(unsigned)がある。 その条件を満たさないと単純シフトにできないよ。 esp32て100kHzの正弦波を全波整流して200kHzのゼロ検出とピーク電圧を計測するのに使ったな 俺の腕ではnanoさんだと厳しくて性能でゴリ押しした 圧倒的な性能でゼロ検出してからのifループで入力電圧最大値を変数にひたすら入れていき 再びゼロが来た時に最大値を記録した変数を渡し変数リセットなんていうクソコードでも 取りこぼさずやってくれた >>326 nanoで200kHz短波はanalogReadに掛かる時間的にも どの道厳しいよ そもそもどんな用途? >>327 少し前に流行ったZVSの誘導加熱のアナログロジックを マイコン制御で電流と周波数を任意に設定できるようにしたら面白そうと思っただけの用途 設計段階からもう趣旨変わって フルブリッジ になってゲートドライバのデッドタイムに頼らず、あくまでマイコンだけでやってみようとなって それに必要だったのがCTで拾った正弦波の上に書いたやつ それで目標だった100kHzは難なく実現して その後に更に趣旨変わって高周波化になぜか突き進んで30MHzちょっとまでいって 銅を熱することに成功して満足して終わった。 esp32はまだ性能を持て余していたけど、 その先はシーリングライトが勝手に消えたりテレビが誤動作起したりポルターガイスト現象起き始めて、 電波法的にヤバそうだからやめた。 思っていたより壮大で思わず笑ってしまった おそらく一次側にノイズフィルタをきちんと入れれば大丈夫だと思う >>329 大電流がいたので車の鉛蓄電池でやりました ただの30Aのノイズ発生装置と化した スチール缶にリッツ線巻いて熱湯出来たのに喜んでいたのが スチール缶自体が熱で変形・溶ける能力になった時点でなんだかダメな領域に踏み込んでいる気がした 誘導コイルが水冷になった時点でもう目標の面影もなかった よく考えたらこれ卒論ネタでやった奴だから特定されるやつだった。 書き方が面白いから卒論だけじゃなしに本にしたらいいと思う。読ませる文章は好きだ。 30AのMHzオーダーなスイッチングはかなりの試行錯誤があったはずだから,それも含めて。 パナソニックのIHに使われてる3倍共振回路が何なのか ジャンク仕入れて解析したりそこから得た何かを利用した色々アウトなものがあるので fetや手配線による周波数的な限界が来たらもう1セットフルブリッジ を増やすというゴリ押し回路 最後はfet20個になりました 30A・・・ 3Dプリンタのヒートベッド用ヒーターみたいだ 朝から読みふけってしまったじゃないかw 3倍共振インバータは蓋を開けてみれば あ、ふーんで終わる代物だったでしょう 本来の職務であるWLANを自らの手で作り出した電磁波によって阻害されるESPたん >>324 算術シフトと割り算は結果が異なるから そのままは使えない。 -1 / 2 = 0 割り算 -1 >> 1 = -1 シフト 次はIGBTをドライブしてテスラコイルのスイッチングだ 変調して音を奏でるんだ 曲は「雷電」 上の書き込みで気になってESP32買ってみたけど これは確かに凄いな 今後も安定した供給が見込めるのなら設備に組み込みたいぐらいだ esp32は安いルータでかなりのシェアを持っているから もし次期モデルが来たとしても、ピンアサインやパッケージと言うか小基板はそのままにするはずだよ PWMがほぼ全ポートにあるのは丁度ドローンブームだっただけで ルータには不要だから削られる可能性はあるけれど esp32は中国政府のバックドアがありそうで怖い 低価格、高性能かつ無線lanありだから 、俺が中国政府の関係者なら補助金をメーカーに出してでも拡販したい バックドアがついてるからどうした、あるいは今までもどこかの政府が用意したバックドアつきのものを利用してきただろと言われればそれまでなんだけど ただCPU2つがアドレス空間を共有しているから 簡単に割り振りできるのが何よりも便利ではある ATmega328がnanoサイズでクロック向上デュアルコア化されたら 多少高くてもら欲しいぐらい。 海外のforumでも昔から性能の向上を要望され続けているけど 2年前ライバルからの買収で多くのエンジニアが退職されて 新規開発が今もなお厳しい状況なんだとか。 Arduinoを始めたばかりの超初心者です。初めて質問します。 ライントレーサーを作ろうとしていて、ダイセン製ギヤードモーター2つをArduinoMEGA(互換機)とArduino純正モーターシールドで動かそうとしています。 USBで電源供給すると安定してプログラム通りにモーターが動きますが、エネループ1.2V×5本=6VをArduinoの「Vin」につないで動かすと、モーターの動作が不安定になります。 普通の乾電池1.5V×5本=7.5Vで動かしても同じく不安定です。 モーターの動作が不安定になる原因が特定できていません。 例えば電源を「Vin」ではなく「5V」につないで試したいのですが、 6Vの電源を「5V」につないで流すとArduinoは壊れますか? 「5V」は5V以下の電源をつなぐものですか? モーターの代わりにLEDでやってみれば 動作が安定するようだったらノイズだろうから モーターの両端にコンデンサーいれる レギュレーターもコンデンサーも使っていませんでした。 「5V」に繋ぐにはレギュレーターで降圧させる必要があるんですね。 ? Vin はレギュレーター通ってCPUに接続されてるけど・・・ 単にパワー不足じゃ 3端子レギュは7〜12Vの電圧がいるけど 電池直列だと内部抵抗も大きくなるので電圧降下大きいはず 一回動作させてる時の電圧測ってみれば? >モーターの代わりにLEDでやってみれば >動作が安定するようだったらノイズだろうから モーターの方がでかい電流が流れます。 ノイズじゃなくてもレギュレータがもたないのかもしれません。 ダイセンのギヤードモーターの起動時のでんりゅうがどれぐらいなのかわからないですが それが、マイコンボードの5Vから供給されるのであれば、レギュレータにはきついかもしれません。 外部に十分大きい電流駆動能力のある5Vレギュレータを用意して、マイコン基板の5Vから供給してみては? (マイコン基板の電源と、モータードライブの電源を分けるのも方法だと思います) レギュレーターは内蔵されていて「Vin」に通っているんですね。 すみません。初心者すぎてよく分かっていないのですが、ネットや本で乾電池1.5V*4本=6Vの電圧を 「5V」のところに挿している回路図をよく見ますが、「Vin」に挿すのと「5V」に挿すので動作の安定性に 差はありますか? >>350 >ネットや本で乾電池1.5V*4本=6Vの電圧を 乱暴な気もしますが… Megaで使っているマイコンの電源電圧の絶対最大定格(それ以上かけると壊れないことを保障できない)は6V。 動かないことはない、ってことでしょうね。 電池の電圧は電流を引くと落ちます。モーターが回るとボルト単位で落ちるかもしれませんが、マイコンはなんとかそれでも動作するかも。 レギュレータは、過大な電流を引くと、極端に電圧が落ちる場合があります。 重複しますが、整理すると 「電池の電圧6V」をVINに繋ぐと、マイコンには安定した5Vが供給されるが、過大な電流では電圧が極端に落ちるかも。 「電池の電圧6V」を5Vに繋ぐと、マイコンにかかる電圧は不安定になるけど、案外電流の変動には強い場合も。 なお、電池の電圧1.5Vは公称値でして、消耗や電流で変動します。 設計するときは用途によりますが、1本あたり 1.6V〜0.9V で変化しても大丈夫なように考えることが多いと思います。 ArduinoMegaの回路図 ttps://www.arduino.cc/en/uploads/Main/arduino-mega2560_R3-sch.pdf Arduino純正モーターシールドの回路図 ttps://www.arduino.cc/en/uploads/Main/arduino_MotorShield_Rev3-schematic.pdf モーターの電源は、モーターシールド上のネジ端子のVin(LSP5)か (VIN-CONNECTが切断されてない場合は)Arduino本体のVINから供給されてるから 5Vのレギュレータどうこうは関係ないんじゃないかな もっとも、それだとUSBからの電源供給でモーターが回るのが不思議なんだけど 誰か説明して Arduinoのレギュレータ入口側は7V位ないと足りないんじゃないかな。 作りたいのはライントレーサで、USBを電源にしたら動くんでしょ? それならUSBモバイルバッテリを電源にすれば良い。 倒立振子をそうやって作ったよ。 https://i.imgur.com/WjLmdfs.jpg >>352 >もっとも、それだとUSBからの電源供給でモーターが回るのが不思議なんだけど ほんとうだ。 NCP1117(レギュレータ)の5V出力からVINに逆流しているのかも。 >The NCP1117 family has two internal low impedance >diode paths that normally do not require protection when >used in the typical regulator applications. 一応逆流をさせるためにプロテクションダイオードは内蔵されているらしい。 でも大きい電流を賄えないから、そういう場合は外付けダイオードの追加が推奨されている。 もし、このパスでモータードライブシールドに電源が供給されているのだとすると、 現状、USB電源で駆動して、モーターをドライブしているのは、かなり危ういことになるけど 実際のところはどうなってるんだろう。 電池ではなくて、VINにしっかりした7V以上の電源を繋いで動作実験した方がいいかも。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる