重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

マイコンでのモーター駆動での現象です。

MPU は通常スリープ動作しており、 8sec 毎にウェイクアップ、昇圧コンバータ(3.3V)を 40msec イネーブルにし、モーターを駆動します。

安定化電源から電圧(1.8V ~ 3V)を供給している場合は、問題なく駆動できています。
単三乾電池2本で駆動した場合、コンバータをイネーブルにしたタイミングでリセットがかかってしまうようで、期待通りの動作をしません。

電源電圧の瞬時降下によるリセットを疑っていまして、電圧降下を調べましたところコンバータ/モーターを駆動している間に、最大 0.5 Vほど降下していました。

対策として電源ラインのコンデンサを大きな容量に変更してみましたが、解消せず困っております。

対策につきましてアドバイスをいただければと思っております。

簡単な仕様です。
・MPU Atmega48
MPUのリセットポートは 10KΩでプルアップされています。
・DCコンバータ NCP1402 を用いた昇圧回路(http://dlnmh9ip6v2uc.cloudfront.net/datasheets/B …
・モータードライバ LB1973(http://www.onsemi.jp/pub_link/Collateral/LB1973M …
・モーター 抵抗 280Ω(http://guy.carpenter.id.au/gaugette/resources/vi …


[MPU(1.8V~3V)] -(ENA)- [NCP1402] -3.3V- [LB1973] --- [モーター]

よろしくお願いいたします。

「マイコンで電源電圧の瞬時降下によるリセッ」の質問画像

A 回答 (6件)

No.1 tance です。


ソフト屋さんでここまでハードを理解している人は少ないと思いますよ。あと少し頑張ってみてください。

モータが負荷なのかコンバータが負荷なのかは調べないと解りませんが、モータだとして、3.3V, 280Ωだと約12mA流れます。(ずいぶん小さなステッピングモータなのですね。エアコンなどのルーバを動かすモータくらいでしょうか)

この電流を40msecの間供給して、たとえば0.1Vしか電圧が低下しないようにしたければ、C = Q / V ですので、
C = 12mA*40msec / 0.1V = 4800uF となります。300uFでは桁がひとつ足りないですね。

CPU電源を抵抗で分離するには、CPUの消費電流で生じる抵抗での電圧降下が許容範囲になければなりません。
仮にCPUの消費が500uAだとして、0.1V低下を許容すると、電源に直列に入れる抵抗は 0.1V / 500uA = 200Ωとなります。
この抵抗の下流側(CPU側)に1000uFオーダーのコンデンサをつけるとモータ側の電源変動が伝わりにくくなります。

このような電源の大きなコンデンサは、電源を頻繁にON / OFFする回路ではかえって突入電流の問題が生じますので注意してください。(リセット問題、OFF途中誤動作、電池消耗、コンデンサ寿命など)

上記の電源分離抵抗の代わりにショットキダイオードを使えば、他の方も推奨している回路になります。分離は抵抗よりも効きます。(耐圧は低くても良いから順電圧の小さいものを選ぶこと)
    • good
    • 0

乾電池は内部抵抗が大きいので、電流を食う回路と制御回路とは電源を分けるべきです。



ですが、モーターの仕様を見ましたが5V~10Vになっているので3.3Vでは低すぎるのでは?
電圧が低く過ぎてモーターの始動が遅れて電流が流れ過ぎているケースもあるので、まず昇圧を5Vに変更して確認してみてください。

あと電源の根元のコンデンサもそうですが、このDDコンバーターの出力にもコンデンサを入れてください。
    • good
    • 0

別電源にしましょう。

MPU用に電源ICを入れたらどうでしょう。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。
超低ドロップタイプのレギュレーターも検討に入れてみます。MPU の消費電流は低い(数百μ)ですので、適切なものがあれば、と思っています。

お礼日時:2013/04/18 21:02

こんばんは



すでに出てる回答にプラスαとして、モータ駆動にソフトスタートの方法を取り入れてはいかがでしょうか。
モータは起動時に最大の電流を消費します。従って起動時にPWMなどの幅変調、あるいは類したパルスでオン時の比率を徐々に増やして行き最終的に連続的な直流駆動にします。
たぶんパルスは本格的なPWMでなくても数十パルス程度のものでも効果は十分あると思えます。
    • good
    • 0
この回答へのお礼

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

モーター駆動ですが、ステップモーターに数十パルス入力し適切な角度回転させる、というのが今回の制御ですので、ご提案いただいた方法はおそらく適用難しいと思っていますが、今後のために自分の引き出しにアイディアとしてストックしておきたいと思います。

お礼日時:2013/04/16 09:27

こんにちは。


お困りですね。
私も掲載いただいた文章からは必ずしも現象を正確に理解していないのですが、このような場合の常套手段をアドバイスしてみましょう。
ポイントは、「マイコン系統には独立したコンデンサをつなぐとともにダイオードで分離。」

ちょっと文章で書くとわかりにくいですが下記について何とか読んで回路に書き込んでみてください・・・・
・現在の回路のマイコン直近に専用にコンデンサをつなぐ(多分、100μF~1000μFくらい)
・現在は電源を単純に分岐してマイコン用とモータ用に分岐接続しているが、分岐したマイコン用の系統には順方向(一番単純な方向)にダイオードを入れておく。

もうご理解ですよね。
もし、今回の意図外のリセットがモータの立ち上げ時の電圧降下にあるとしたら、電源系統に大きな容量のコンデンサをつなごうとするのは正しい考えでしょう。
しかし、モーターが瞬時ながら大電流を流しているなら、相当に大きな容量のコンデンサでも電圧降下防止には役に立たない。
でも考え方を変えれば、これは、なけなしのコンデンサの電荷をモーターなんぞにもくれているから。
コンデンサに貯めた電荷はマイコンには流れてもモーターに流れないようにすれば良い・・・。

なお、ダイオードを入れることでマイコンの電源電圧はダイオードの順電圧分の降下(通常は0.7V)を生じてしまいますので、これを盛り込んで設計する必要がある点では注意が必要です。

いかがでしょうか。お役に立てば幸いです。
    • good
    • 0
この回答へのお礼

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

ご提案いただいた方法、想像しながら図面を書いてみました。

ダイオード挿入につきましては、駆動電圧範囲を単三2本の 1.6 ~ 3.0V フルに使い切りたいですので難しいと思っております。非常にシンプルなシステムですが、このようなぎりぎりの環境は初めてですので、制約が多く、私の引き出しも少ないですので難儀しています。ノウハウがあるのでしょうね。

しかし電圧降下が少ないダイオードなどもあるのかしら、とまだこちらの方法も捨て切れません。

お礼日時:2013/04/16 09:14

リセットがかかるのが「コンバータをイネーブルにしたとき」と解っているのなら、コンバータの突入電流に耐えるような回路にするしかないと思います。



電源のパスコンを大きくしてみたということですが、十分な容量にしましたか? 十分かどうかはどのように確認しましたか?
追加したコンデンサの値と電源電圧のディップ量との関係を何通りか計り、リセットがかからないディップ量にするために必要なコンデンサの容量を計算してみてください。

コンバータの電源は0.5V下がっても、CPUの電源が下がらない工夫ができれば、バカデカイコンデンサをつけなくても解決するでしょう。そのためにはCPUの電源を別系統にし、デカップリングを行います。このあたりは、他の条件で制約が出てくることが多いので、ここでは「こうすればよい」とは言えませんが、一番単純には抵抗をとおしてCPU電源を与え、CPU電源にも大きなコンデンサを設ける方法が挙げられます。(CPUの消費電流等を考えてこれが可能かどうかの検討から入ります)


電源電圧に余裕があるならショットキダイオードで分離するのも良い方法です。
    • good
    • 0
この回答へのお礼

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

現状、当方で試したこととしましては、300uF 前後の容量のコンデンサ追加です。
これは3.3V/280Ωのモーター駆動 40msec というところでクーロン計算から見積もったのですが、なかなか解決していない状況です。
今後はアドバイスいただいた、抵抗を CPU 電源ラインに入れるという方法を試してみたいと思っています。
CPU はクロックを低く抑えており、消費電流はほぼ数十~数百μAですので、適切な抵抗値を考えてみようと思います。

どちらかというとソフト屋ですのでこのようなケースは現象把握にも骨が折れますが、奥が深いですね。

上記【適切な抵抗値】につきまして、計算定石等はあるのでしょうか?

お礼日時:2013/04/16 09:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!