通常のピンをグランドピンのように動作させることは可能ですか?

それで、私がしようとしているのは、モーターを制御し、余分な部品を必要とせずに両方向に回転させることです。

したがって、hmpがオン(プラスポール)で、hmm(マイナスポール)が地面のように動作した場合、モーターは右に曲がり始めるはずです。

しかし、hmpがこのケースでは地面として作用し、hmmがプラスポールのように作用するならば、それは逆の方向に向かうはずです。

私はそれがおそらく動作しないことを知っています。私はただ実験しているだけです。

int Hmp=12;//the plus pole
int Hmm=11;//the minus pole

while (HR=0 || Sr > Sl+300) { 
  pinMode(Hmp, OUTPUT);
  digitalWrite(Hmp, HIGH);
  pinMode(Hmm, INPUT);
}

while (HR=1 || Sl > Sr+300) {
  pinMode(Hmp, INPUT);
  pinMode(Hmm, OUTPUT);
  digitalWrite(Hmm, HIGH); 
}
4
@ dannyf - いいえ、それはうまくいかず、ユーザーはすでにうまくいきませんでしたと述べています。これは、パワーFETのハーフブリッジとトポロジ的に類似しているが、出力ドライバがチップ上にあるため、モータを動かすことができないためです。あなたは捨てられた不完全な投稿を投稿するという非常に悪い習慣を築きました。その結果、このような誤解を招くようなことがありましたが、少なくとも今回は幸いにも回答フォームを乱用していませんでした。
追加された 著者 rossp,
「おそらくうまくいかないことは分かっている」それが動作します。ローサイドスイッチングと呼ばれます。ほとんどの双方向モータは、例えば、このように駆動される。
追加された 著者 dannyf,

5 答え

いいえ、それはうまくいきません - さらに悪いことに、あなたはArduinoを揚げる危険があります - 次の理由から:

  1. Arduinoのデータピンは、動作するのに十分な電流を供給することはできません。

  2. モーターの誘導キックバックによりArduinoピンが鳴る可能性があります。

あなたがしたいことをする正しい方法は、 Arduinoデータピンによって制御されるHブリッジを使用するです。 Arduino用のモータードライバPCBモジュールがたくさんあります(それらのほとんどは非効率なL298ドライバICに基づいていますが、TB6612FNGドライバICなどに基づくものを無視して見てください)。この機能を実装する。

10
追加された
L298とL293は、非常に陳腐化した高損失デバイスで、これを避けるのが最善です。特にバッテリ駆動アプリケーションでは、バッテリパックの1つのセルは、モータを回すのではなく、それらのドライバチップの損失を供給することに大きくなります。これらは実際にはデフォルトで言及を停止する必要があります。代わりにFETソリューションを使用します。たとえば、TB6612FNGはより優れたモーターシールドでL29xを置き換えます。
追加された 著者 rossp,
あなたのコメント、@ChrisStrattonありがとう。私はあなたに同意し、私はそれに応じて答えを更新します。
追加された 著者 Arperum,

I just tried what you suggest, and it works fine, with only one (big) caveat: you can only power this way very low power motors. I did this to drive the linear motor that moves an HDD head assembly. This motor works perfectly fine with less than 18 mA.

Arduinoのピンを HIGH LOW の間で切り替えることに注意してください。 INPUT を通過しません。ピンを INPUT に設定すると、 モーターの誘導キックバックは、ピンの保護ダイオードを介して行われます。オン 一方、このモーターのインダクタンスは恐らく小さいです...

For anything that can draw more than 40 mA, I would use an H-bridge. For something between 20 and 40 mA, I may take the risk of driving it directly if it's for an experiment where I am not too much concerned about the risk of loosing my Arduino.

3
追加された
>私はちょうどあなたが提案したことを試して、それはうまく動作します...それは働いた誰も驚かないはずです。一般的なGPIOピンの構造はhブリッジまたはローサイドスイッチであるためです。だから、それは働かなければならない。それはちょうど基本的なエレクトロニクスです。
追加された 著者 dannyf,
> 1つの(大きな)警告のみで...それはまったく驚きではありません。負荷を駆動するときはいつでも、その限界を理解する必要があります。この場合、制限は駆動電流と駆動電圧の点で厳しいものです。
追加された 著者 dannyf,
大きな利点は、これらのピンには一般にクランプダイオードが付いていることです。誘導性負荷の場合、それらはフリーホイーリングダイオードとして機能します。
追加された 著者 dannyf,

両方のピンをOUTPUTモードにする必要があります。あなたは "正の"ピンをHIGHに、 "負の"ピンをLOWにdigitalWrite()します。

しかし、この場合は良い考えではありません:

  1. モータの消費電力が40mAのデジタル出力ピン電流を超えています。
  2. 逆起電力。モーターを停止するたびに、ピンに短い電流パルスが戻ってきます。悪い。

モータを制御する適切な方法は次のとおりです。

Arduino controlled motor

これは一方向のみを制御します。方向を変更するには、Hブリッジが必要です。 Hブリッジは、モータを両方向に駆動できる電子回路です。

3
追加された
これはまた不適当です - Arduinoからモータに電源を供給してはいけません。あなたが描いたバイポーラ・トランジスタは、現代のFETと比較してモーター制御の仕事が貧弱であり、2.2Kのベース抵抗を使用すると、事態をさらに制限する可能性が高くなります。バイポーラトランジスタを使用する場合、効果的に「デュアルステージ」ダーリントンが標準です。
追加された 著者 rossp,
いいえ、リレーはこれを行う良い方法ではありません。すでに説明したように、FETドライバを使用する必要があります。
追加された 著者 rossp,
おそらく次回は前に待っていると投稿するかもしれません。私は質問のレビューページから回答を投稿しようとしていましたが、最初に処理しなければならなかった実際の話題の周りのすべての騒音を考えれば、実際の質問はこれ以上気にするほど面白くはありません。
追加された 著者 rossp,
@Chris。あなたが正しいです。適切な方法は、適切な電源に接続されたリレーを駆動するためにオプトアイソレータを使用することです。貴重な洞察をいただきありがとうございます。
追加された 著者 user31481,
@Chris。この質問に対するあなたの適切な答えを待っています。
追加された 著者 user31481,
大丈夫です。ありがとうございます。 :)
追加された 著者 Brent,

私はそれがうまくいくとは思わない。

MOSFET Hを実装するPololu Pololu DRV8838 のような安価なモジュールを使用する方がよいでしょう。 -ブリッジ。

(注:私はPololuとは何ら関連していません。)

2
追加された

通常のピンをグランドピンのように動作させることは可能ですか?

答えは「はい」です:私は現在、点滅しているLEDを見ています.2つのGPIOの間に跨っています。それらのうちの1つは(コードを介して)接地されているため、他のGPIOピンで点滅させることができます。

明らかにGPIOピンに適用される通常の制限がここに当てはまります。

0
追加された
これは悪い、悪いアドバイスです。あなたが見ているLEDは、おそらく最大30mAを引き出します。小さなDCモータでもその倍の量が消費され、GPIOピンよりもはるかに多くの電流が消費されます。
追加された 著者 M Katz,