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/ >>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以上の電源を繋いで動作実験した方がいいかも。 USBから電源取るときはレギュレータを通らないのでは? うっかり「5Vのレギュレータどうこうは関係ない」って書いちゃったけど
上のほうで書かれてるような「レギュレータがモーターの電流流せない」とかじゃなくて
モーターに電流流れたとき、VINの電圧(電池の電圧)が
レギュレータの最低入力電圧以下に下がっちゃうってことなんだろうな
・全温度範囲での最大ドロップアウト電圧1.2 V (800 mA時)
新品電池 5本直列時ならいけてもよさそうな気はするんだけど・・・ 皆さん答えてくださってありがとうございます!明日試してみます。 逆流って言っても本来ブリッジ用のパターンはんだ付けしてなきゃVINからも入らない気がするんだけどな。これ普通にドライバのVSS(5V)だけから供給した結果ドロップダウンに耐えきれず不安定になってるんじゃ
とりあえず使い方的にはLSP05にモーター用の電源別で入れたげるか、arduino側と共通にしたいならはんだブリッジ接続してVINに12V入れるのが安全 というか>>352の時点で洗い出しされてたか、すまん。
多分USB供給量>モーター消費>レギュ供給量の絶妙なバランスなんだろうなぁ >>342
エネループは大電流取り出しに向いていない(せいぜいDCモータ1つまで)
東京マルイ No.153 ニッケル水素ミニSバッテリーを使うのが入手性その他の点一番楽だった。
配線はもちろん太い電線を使ってください。 自分が工作した範囲内で書くと上記のバッテリから自作の電源回路を通じて
DCギヤードモータ2個とRCサーボ4個までは同時制御できた(その他センサ、Arduino Uno等も含む)
ノイズや電圧降下に関する問題はもちろんあるので地道に対応した。 Arduinoをバッテリ駆動するときのお勧めはMT3608
入力電圧の幅が広く、出力は3.3Vにも5Vにも使えるし、
電流も取れる。入力はエネループ2本でok 5pcs MT3608 2A Max DC-DC Step Up Power Module Booster Power Module
http://s.aliexpress.com/b2EbaE77?fromSns=Copy to Clipboard
(from AliExpress Android) ESP32でやっちゃえば5V要らずでIOたくさん無線もできて安くてぱわふりゃーで、、、、 最近あっちこっちでESP32厨がうるさいんだけど元PIC厨? >>359
>ブリッジ用のパターンはんだ付けしてなきゃVINからも入らない
現物持ってないし、質問者がどうしてるのかも分からないけど
VIN-CONNECTのパターンはデフォでは接続されてて、分けたいときは
カットしろってことらしい
ttps://store.arduino.cc/usa/arduino-motor-shield-rev3
>This is possible by cutting the "Vin Connect" jumper placed on the back side of the shield. Ali、色々扱ってるけど国内で若干高くても(数倍とかは流石に高すぎるし)同じレベルの品揃えで扱える所ってないのかな? aitendoに行って何が欲しいか尋ねれば中国人のお姉ちゃんがタブレットで丁寧に説明してくれるで 超が付く初心者で申し訳ないです。
arduinoで複数の時計やGPSのモジュール繋いでLCDに投影したいんだけど、プログラムとかが全然分からないのでお勧めの書籍を教えてください。
簡単な電子機器の修理をしてたのでハードやアクションは分かるのですが、プログラムは素寒貧で学生時代にロボット動かすのに少しだけC言語に触った程度なので初心者向けだとありがたいです。
お願いします。 >>371
そんな目的なら幾らでもネットに作例があるから たとえば
http://iot.keicode.com/arduino/arduino-gps.php
とか、ggればすぐに出てくるが
一般的な話は書店で立ち読みして合いそうなのを選べば? 大抵モジュールのライブラリーにスケッチ例があるから
それをつなぎ合わせて、はい完成 Arduinoで全整流の最高電圧を測定する方法って
上の方で見かけた手法が効率いいの?
max関数でおそらく最大値を一周期分記録し続けているんだと思うけど
ほぼそれだけでATmega328だとリソース取られるよね
だからデュアルコアのesp32使ったのかな 直にレジスタを制御しないと1周期分のデータ取得すらかなり厳しいと思うよ。 俺が以前に試した時は
60Hzを全整流した120Hzなら4周期分ぐらいサンプリング取ってやっとバラつき収まったか?ぐらいだった
ピークを運良く拾ってくれるようなやり方よりも
LPFなりで平滑化してからの方がいいも思う 連続的で安定した波形でレスポンスを求めないなら、
入力波形が100Hzだとしたら、99Hzで101回とか、99.9Hzで1001回サンプリングするのはどう? ピークホールド回路付ければぁ?
あとは、いちいち全部取って平均じゃなくてその場でEMA取ってしまえば変数は一個でいい。 複雑に組みすぎなんじゃね
120Hzのピーク値なんてwhileで捕まえて
決めた時間内にmax関数で最大値を変数へ更新し続けるだけで十分
ad精度を少し落としてサンプリング数を増やすと結果的に安定する事もある
どうしても簡易的なデジタルのみでやりたいのなら
この辺のチューニングでやりくりするしか無い
analogReadもビットでポートを直に指定するだけで一度の呼び出しで40クロックはいるのが4クロックぐらいまでは減るから
ループ速度が重要な所はArduinoのオーバーヘッドをいかに軽減するかに力を入れるといいよ
atmega 328pはそんなに低性能じゃないから、
性能を引き出す事にチャレンジするのもまた新しい楽しみや知恵の蓄積に繋がるはず そもそもなんでデフォでポート指定は内部的にそんな遠回しな処理になってるんだろう
初期のコンパイラ仕様がしょぼくて後々互換的な問題が出て来たのか? その通り。
性能よりもアーキテクチャごとの互換性重視なので初期に制定されたコンパイル仕様は
不具合でもない限り変更は為されない。
性能が欲しければ直叩きできるように救済処置はきちんと取られている。 Arduino初心者です。
質問させてください。
arduinoを使用してロガーをつくりたいのですがフラッシュメモリやグローバル変数が足らなくなってしまいうまく動きません。
なのでスケッチ内でメモリを一番消費しているSDライブラリから使わない機能を無くしたライブラリ作ればメモリを節約できると考えました。
そこでSDライブラリ内のSD.cppのmkdir()やremove()を消してコンパイルしてみたのですが使用しているグローバル変数もフラッシュメモリの量も変わりませんでした。
自分で検索しても限界を感じたのでSDライブラリのメモリ節約方法または純正SDライブラリよりメモリを使用せずにSDを教えて欲しいです。
ちなみに使いたい関数はbgin,exist,open,close,plint,plintlnだけです。 >>382
C++も触ったことが無いので自分の力でライブラリを制作するのはできなそうです。 >>383
どのライブラリを使ってるの?
FAT16専用のこれ↓とか試した?
Smaller FAT16 only library for Arduino
https://github.com/greiman/Fat16 >>384
IDEに元々入っているライブラリを使ってました。
そのライブラリは見つけてませんでした。試してみます。ありがとうございます。 >>382
こういうこと書くと、猛烈な反撃あちこちからくらうのが目に見えてるんだけど
製品千・万台作って売るからコスト最優先とか、あるいはUNOでこれだけのことやって
オレスゲーと自慢したいんじゃなかったら、あっさりMEGAとか使うっていうのも
選択肢じゃない?
ここ見てると、シリアル複数チャンネル使うのに、ソフトシリアルで苦労してるとか
一体どういう意味があるのか?って疑問わいてくる
中華ArduinoだってUNOしかないってわけじゃないんだし >>386
Unoってそんな立ち位置のお試し版スレスレの商品だよね本来
メモリやGPIO足りない使い方の人はMega買ってねみたいな認識で正しいと思う ■ このスレッドは過去ログ倉庫に格納されています