Skip to content

필사 모드: モーターとリレー、誘導性負荷を扱う — GPIOでモーターを回してはいけない理由

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.

はじめに — モーターが回るたびにボードが再起動します

小型ギアモーターをArduinoのD9につなぎ、反対側をGNDにつなぎます。digitalWrite(9, HIGH)を書きます。

モーターがほんの少し震えます。そしてシリアルモニターに起動メッセージが再び表示されます。プログラムが最初から始まります。またモーターをオンにします。また再起動します。

ここでほとんどの人がコードを見ます。ウォッチドッグか、スタックオーバーフローか、ライブラリの衝突か。コードには何の問題もありません。

問題はひとつの数字です。Arduinoのピン1本が安全に出せる電流は20mAで、そのモーターが要求する電流は200mAです。10倍です。

この記事ではその10倍がどこへ行くのか、何を焼くのか、そして正しくやる方法は何かを扱います。モーターとリレーとソレノイドは全部コイルが入った誘導性負荷で、誘導性負荷には抵抗やLEDにはない危険がもうひとつあります。

ピンが出せる電流とモーターが要求する電流

まず2つの数字を並べてみます。

負荷通常運転電流起動または拘束時のピークGPIO直結の可否
LED1個15mAなし可能
ブザー(受動型)30mAなしArduinoは危険、パイは不可
SG90サーボモーター120mA700mA不可
小型DCギアモーター(TTモーター)150〜250mA800mA〜1.5A不可
リレーモジュール1チャンネル70mAなし不可
5Vソレノイドロック600mA1.2A不可
WS2812B LED30個1個あたり60mA、合計1.8Aなし不可
12V冷却ファン150mA(12V側)400mA不可(電圧も違う)

ボード側の限界はこうです。

ボードピンあたりの推奨値ピンあたりの絶対最大GPIO合計5Vレール供給限界
Arduino Uno R320mA40mA200mA約450mA
ラズベリーパイ40ピン16mA16mA50mA約1000mA
ESP32 DevKit v112mA40mA120mA約500mA

表の中でGPIO直結が可能な行は最初のひとつだけです。

ここから物理の話に移ります。200mAを要求するモーターを20mAのピンにつなぐと、正確に何が起きるでしょうか。

ピンの出力段はごく小さなMOSFETの対です。HIGHを書くと上側のMOSFETがオンになりピンを5Vにつなぎますが、このMOSFETは完璧なスイッチではなく抵抗を持ちます。ATmega328Pの場合、およそ25オームです。

モーターのコイル抵抗が5オームだとすると、回路全体の抵抗は30オームです。

流れる電流 = 5V / 30オーム = 0.167A = 167mA

167mAがその小さなMOSFETを通過します。MOSFETで消費される電力は、

P = I² × R = 0.167² × 25 = 0.028 × 25 = 0.70W

0.7Wです。このMOSFETは20mA基準で設計されていて、そのときの消費電力は、

P = 0.02² × 25 = 0.00001 W = 0.01mW

設計値の7万倍です。シリコンの小片ひとつに0.7Wが入ると、接合温度がミリ秒単位で数百度まで上がります。結果は2つのうちどちらかです。ゲート酸化膜が絶縁を失いピンが永久にHIGHかLOWに固定されるか、金属配線が溶けてピンが切れてしまうかです。

そして再起動の原因は少し違います。167mAが急に抜けると5Vレールが瞬間的に崩れます。その話は最後の節で詳しくします。

ここで原則をひとつ立てておきます。GPIOピンは電力を供給する場所ではなく命令を出す場所です。 電力は常に電源から直接来るべきで、ピンはその電力を通過させるスイッチを開閉する役割だけを持ちます。

外部電源と共通グラウンド — 接地を束ねないと

モーターに別電源を付けることにしたとします。6Vバッテリーパックを用意し、モーターをそこにつなぎ、スイッチング用トランジスタをArduinoが制御します。

ここで初心者がほぼ必ず忘れる配線がひとつあります。バッテリーのマイナスとArduinoのGNDをつなぐ線です。

なぜ必要かは、前回の記事で見た電圧の定義に戻ると明確になります。電圧は2点間の差です。Arduinoが「5Vを出力した」というとき、その5VはArduinoのGNDを基準にした値です。バッテリー側の回路はバッテリーのマイナスを基準に電圧を見ます。2つの基準点がつながっていないと、2つの回路の間に共通の目盛りがありません。

MOSFETのゲートを例にすると、MOSFETがオンになる条件はゲートとソースの間の電圧が閾値電圧を超えることです。ゲートはArduinoから来て、ソースはバッテリー側のGNDにあります。2つのGNDが離れていると、ゲートとソースの間の電圧がいくつなのか定義されません。定義されていない値でスイッチが開いたり閉じたりするので、症状は「ときどき動いてときどき動かない」になります。

実際に観察される現象はもっと奇怪です。2つの回路は完全に分離されているのではなく、浮遊容量でごく弱く結合されています。だからモーターが回るときに生まれる電気ノイズが、その結合を通してArduino側の基準電位を揺らします。手を触れると動作が変わり、オシロスコープのプローブをつなぐと急に正常になります。プローブの接地線が2つの回路を束ねたからです。

規則は単純です。別電源を使う回路のGNDは必ず一点で合流しなければなりません。 プラスは分けてもよいですが、マイナスは共有します。

ここに実務のコツをひとつ付け加えると、GNDを束ねる線はモーター電流が通る太い線とは別に取るのがよいです。モーター電流が流れるGND線にも抵抗があって電圧降下が生じるからです。細いジャンパー線20センチメートルの抵抗はおよそ0.05オームで、ここに1Aが流れると、

0.05オーム × 1A = 0.05V

50ミリボルトが2つの回路の基準点の間に生まれます。ロジック信号には大きな問題ではありませんが、アナログセンサーを同時に読んでいるなら測定値がその分揺れます。モーターのGNDは電源へ太く短く戻し、ロジックのGNDは別経路で電源の同じ地点に集めるのが原則です。

トランジスタとMOSFETでスイッチングする

ピンが命令だけを出し、電流は電源から来るようにするにはスイッチが必要です。半導体スイッチには2種類あり、選ぶ基準は明確です。

BJT — 電流で制御します

バイポーラトランジスタはベースに流し込む電流に比例してコレクタ電流を通過させます。スイッチとして使うときは完全にオンになる飽和領域で動作させる必要があり、そのためにはベース電流を十分に与える必要があります。

リレーモジュールひとつをオンにするとします。コイル電流は70mAです。2N3904のような小信号トランジスタを使い、飽和を確実にするため電流増幅率をデータシートの値ではなく保守的に10と見積もります。

必要なベース電流 = 70mA / 10 = 7mA

ベース抵抗は、ピン電圧からベースとエミッタの間の電圧降下0.7Vを引いた値をこの電流で割ります。

ベース抵抗 = (5V - 0.7V) / 0.007A = 614オーム

ここで丸める方向がLED抵抗と逆である点が重要です。LEDでは電流が少ないほうが安全なので上に丸めました。ベース抵抗は電流が足りないとトランジスタが半分しかオンにならず自分自身で電力を消費して熱くなるので、下に丸める必要があります。E24で614オームの下は560オームです。

実際のベース電流 = (5V - 0.7V) / 560オーム = 0.0077A = 7.7mA

7.7mAで、ピンの上限20mA以内です。安全です。

BJTが完全にオンになっても、コレクタとエミッタの間には約0.2Vが残ります。これが飽和電圧で、70mAでの損失は、

0.2V × 0.07A = 0.014W = 14mW

無視できます。

MOSFET — 電圧で制御します

電流が大きくなるとBJTは不利になります。200mAをスイッチングするにはベース電流が20mA必要で、これはArduinoのピンの上限そのものです。500mAなら50mAが必要でそもそも不可能です。

MOSFETはゲートに電圧をかけるだけでオンになります。ゲートは絶縁されているので定常状態では電流がほとんど流れません。だから大きな電流を小さなピンで制御できます。

ここで決定的に重要なのがロジックレベルMOSFETを選ばなければならないという点です。一般的なMOSFETはゲートに10Vをかけて初めて完全にオンになるよう設計されています。有名なIRF540Nがそうです。5Vだけかけると半分しかオンにならず抵抗が大きく残り、その抵抗で熱が出ます。1Aを流すとき抵抗が0.5オームだとすると、

P = 1² × 0.5 = 0.5W

0.5WがMOSFETで熱として出ます。放熱板なしでは熱くなります。

ロジックレベルMOSFETはゲートに4.5Vだけかければ完全にオンになるように作られています。IRLZ44Nが代表的で、この部品のオン抵抗はゲート5Vで0.028オームです。

P = 1² × 0.028 = 0.028W = 28mW

18倍の差です。部品名でIRFとIRLZの違いがこれです。

ところが3.3Vボードならもう一段注意が必要です。IRLZ44Nもゲート3.3Vでは規格が保証されません。ラズベリーパイやESP32ではゲート閾値が2.5V以下と明記された部品を選ぶ必要があります。AO3400やIRLML2502がこの用途によく使われます。

ゲート抵抗とプルダウン抵抗

MOSFET回路には抵抗を2つ一緒に入れます。

ゲート抵抗はピンとゲートの間に直列に入ります。MOSFETのゲートはコンデンサなので、オンになる瞬間そのコンデンサを充電する大きな瞬間電流が流れます。抵抗がないとこの電流を制限するのはピンの内部抵抗だけです。220オームを入れると、

最大瞬間ゲート電流 = 5V / 220オーム = 0.0227A = 22.7mA

22.7mAです。持続時間が数十ナノ秒なのでArduinoは耐えますが、パイなら余裕がありません。3.3Vに470オームなら、

3.3V / 470オーム = 0.007A = 7mA

7mAで安全です。ゲート抵抗を大きくしすぎるとスイッチングが遅くなり、その間MOSFETが中間状態にとどまって熱が出るので、100オームから470オームの間が実用的な範囲です。

プルダウン抵抗はゲートとGNDの間に10キロオーム程度で入れます。理由は前回の記事のフローティング入力と同じです。ボードが起動している間、そしてリセット中は、GPIOピンが入力状態の高インピーダンスになります。その間ゲートはどこにもつながっていない状態になり、周囲のノイズで電圧が上がるとMOSFETがオンになります。つまり電源を入れた瞬間にモーターが一瞬回ります。プルダウン抵抗がその間ゲートを0Vに保ちます。

この抵抗ひとつを忘れると「電源を入れるたびにモーターが一度ピクッと動く」という症状が出て、ロボットならその一度のピクつきが腕を折ることもあります。

フライバックダイオード — 誘導性キックバックの物理

ここまでやるとスイッチング回路は完成したように見えます。ところがリレーを数回オンオフすると、MOSFETが死にます。計算上は電流も電圧も余裕が十分なのに死にます。

原因はコイルです。

なぜ数千ボルトが生まれるのか

インダクタの根本的な性質は電流の変化に逆らうことです。数式ではこうです。

V = L × (di / dt)

Lはインダクタンス、di/dtは電流の時間変化率です。この式が言っているのは、電流を速く変えようとするほどインダクタがより大きな電圧を作って反対するということです。

リレーコイルのインダクタンスが100ミリヘンリーで70mAが流れているとします。MOSFETがオフになるのにかかる時間はおよそ1マイクロ秒です。

V = 0.1H × (0.07A / 0.000001秒)
  = 0.1 × 70000
  = 7000V

7000ボルトです。計算上の値で、実際には空気の絶縁破壊や部品の降伏でもっと低い値で止まりますが、数百ボルトから数千ボルトに達するのは事実です。

この電圧の方向が重要です。コイルは流れていた電流をそのまま流し続けようとするので、電流が切れた側の電位を押し上げます。つまりMOSFETのドレイン電圧が電源電圧をはるかに超えて跳ね上がります。IRLZ44Nのドレインとソースの間の最大定格は55Vです。数百ボルトがかかると降伏が起き、その降伏エネルギーを繰り返し吸収すると部品が死にます。

エネルギーの大きさも計算しておくと感覚がつかめます。

E = 0.5 × L × I² = 0.5 × 0.1 × 0.07² = 0.000245J = 245マイクロジュール

245マイクロジュールは大きく見えませんが、これが1マイクロ秒以内に放出されると瞬間電力は、

0.000245J / 0.000001秒 = 245W

245ワットです。非常に短いですが毎回繰り返されます。

ダイオードがしていること

解決策はそのエネルギーが行ける道を作ってあげることです。コイルと並列にダイオードをひとつ付けます。向きは普段は導通しない方向、つまりカソード(帯が描かれた側)をプラス電源に、アノードをMOSFETのドレイン側につなぎます。

普段はダイオードが逆方向なので何もしません。MOSFETがオフになりコイルが電圧を押し上げる瞬間、ドレイン電圧が電源電圧よりダイオードの順方向電圧分高くなるとダイオードが導通します。すると、コイルの電流がダイオードを通してコイル自身に循環します。行き場ができたので、電圧がそれ以上上がる理由がなくなります。

このときドレインの最大電圧は、

電源電圧 + ダイオード順方向電圧 = 5V + 0.7V = 5.7V

7000Vが5.7Vになります。部品ひとつが作る差にしては劇的です。

循環する電流はコイルの抵抗で熱として消費されながら徐々に減っていきます。245マイクロジュールが数ミリ秒かけて静かに消えます。

ダイオードの選び方と副作用

どのダイオードを使うかには基準があります。

電流定格はコイル電流以上でなければなりません。70mAなら1N4148の200mAでも足りますが、余裕を見て1Aの1N4007を使うことが多いです。

逆電圧定格は電源電圧より十分大きくなければなりません。1N4007は1000Vなので、どんな低電圧回路にも十分です。

回復速度が重要になる場合もあります。PWMでモーター速度を制御すると毎秒数千回オンオフを繰り返しますが、1N4007のような一般的な整流ダイオードは逆方向に戻るのに数マイクロ秒かかり、その間損失が発生します。このときは1N5819のようなショットキーダイオードを使います。順方向電圧も0.3Vと低いのでクランプ電圧もより低くなります。

副作用も知っておく必要があります。ダイオードを付けるとリレーが落ちる時間が長くなります。コイル電流がゆっくり減っていくからです。通常は数ミリ秒程度ですが、接点が遅く離れるとアークがより長く続き、接点寿命が縮まります。これが問題になる回路では、ダイオードに抵抗やツェナーダイオードを直列に入れてクランプ電圧を少し上げる方式で折り合いをつけます。

そして最後に、リレーモジュールやモーターDriverボードを完成品として買うと、このダイオードがすでに基板に入っている場合が多いです。自分でトランジスタでコイルをスイッチングするときだけ気をつければよいです。ただし基板にあるかないかは目で確認しておくほうが安全です。

モータードライバICとHブリッジ

ここまでの回路はモーターのオンオフしかできません。方向を変えるには電流の方向を逆にする必要があり、そのためにはスイッチが4つ必要です。この構造をHブリッジと呼びます。形がアルファベットのHに似ているからです。

      +V                +V
       │                 │
     [S1]              [S2]
       │                 │
       ├──── モーター ────┤
       │                 │
     [S3]              [S4]
       │                 │
      GND               GND

  S1とS4をオンにすると左から右へ、
  S2とS3をオンにすると右から左へ流れます。
  S1とS3を同時にオンにすると電源とGNDが短絡します。

最後の行がHブリッジを自分で作らない理由です。同じ側の上下のスイッチが同時にオンになると電源が短絡し、これを貫通電流と呼びます。MOSFETはオンになる速度とオフになる速度が違うので、片方をオフにしてもう片方をオンにする間に、ごく短い間両方がオンになる瞬間が生まれることがあります。だから実際の設計ではデッドタイムを入れる必要があり、これをソフトウェアで正確に合わせるのは危険です。

だから実務ではドライバICを使います。

部品チャンネルチャンネルあたり電流方式特徴
L293D2600mABJT古い標準、電圧降下約2Vと大きい
L298N22ABJTよくあるモジュール、電圧降下約2V、放熱板が必要
DRV883321.5AMOSFET電圧降下小さい、小型ロボット向き
TB6612FNG21.2AMOSFETL298N代替、効率良好
A4988/DRV8825ステッパー1軸1〜2AMOSFETステッパー専用、電流調整可能

L298Nモジュールがもっともよく使われますが、知っておくべき点があります。内部がBJTなので各方向に約1Vずつ、合わせて2V近く落ちます。6V電源でモーターに実際に届くのは4Vです。3分の1がドライバで熱として消えます。3V系の小型モーターを使うときはこの損失が致命的で、DRV8833かTB6612FNGのほうが良い選択です。

リレーモジュールとオプトカプラ絶縁

家庭用交流機器や12V照明のように、マイコンと電気的に完全に分離する必要がある負荷にはリレーを使います。

リレーはコイルに電流を流して電磁石を作り、その力で機械接点を動かす部品です。接点とコイルの間には物理的な空間があり、電気的に完全に分離されます。接点側に220Vがあってもコイル側は5Vの世界のままです。

市販のリレーモジュールにはたいていオプトカプラがもうひとつ入っています。これは絶縁をもう一段追加する部品で、中にLEDとフォトトランジスタが向かい合って入っています。信号を光に変えて渡すので、2つの回路の間には電気的なつながりがまったくありません。

ここで実務上重要なのがモジュール上のジャンパーです。ほとんどのリレーモジュールにはVCC、GND、JD-VCCと表示されたピンとその間をつなぐジャンパーがあります。このジャンパーが挿さっていると、リレーコイルもマイコンの5Vから電源を受け取ります。オプトカプラがあっても電源が共有されると絶縁の意味がなくなります。

実用的な問題もあります。リレーコイルは70mAを使います。4チャンネルモジュールで4つが同時にオンになると、

70mA × 4 = 280mA

280mAです。Arduinoの5Vレールの上限450mAにかなりの負担で、リレーがオンになる瞬間の電流変化が5Vレールを揺らしボードを不安定にします。

正しくやるにはジャンパーを外してJD-VCCに別の5V電源をつなぎます。そうするとコイル電流は別電源から来て、マイコンはオプトカプラのLEDに数ミリアンペアだけ供給します。このとき2つの電源のGNDは束ねてはいけません。束ねると絶縁が失われます。先ほどGNDを必ず束ねるようにと言った原則の唯一の例外で、理由はオプトカプラが基準点を共有せずに信号を伝えるからです。

もうひとつ、多くのリレーモジュールはアクティブローです。INピンにLOWを与えないとリレーが動作しません。だからボードが起動している間ピンがフローティングだと、リレーが一瞬動作してから離れることが起きます。照明ならちらつく程度ですが、ヒーターやモーターなら問題になります。前回の記事のプルアップ抵抗がここでもまた出てきます。

デカップリングコンデンサとブラウンアウト — コードの問題ではありません

最後にこの記事の冒頭に戻ります。モーターをオンにするたびにボードが再起動する現象です。

スイッチング回路をきちんと作り、別電源まで付けてもこの症状が残ることがよくあります。原因は電源配線の抵抗です。

すべての電線には抵抗があります。USBケーブル1メートルの電源線抵抗はおよそ0.2オーム、ブレッドボードの接触抵抗が接点あたり0.01オームから0.05オーム、ジャンパー線が0.05オーム程度です。全部合わせるとおよそ0.3オームになります。

モーターが起動するときに流れる電流を1.5Aとすると、

電圧降下 = 1.5A × 0.3オーム = 0.45V

5.1Vで入ってきた電源がボードの立場では4.65Vになります。

ラズベリーパイは5Vレールが4.63V以下に落ちると低電圧警告を出し、さらに落ちるとSDカードアクセスが失敗するか再起動します。ArduinoのATmega328Pにはブラウンアウト検出回路があり、デフォルト設定で2.7V以下に落ちると強制的にリセットします。5Vレギュレータに4.65Vが入るとその出力はそれより低くなり、起動電流が大きいほどその閾値を超えます。

症状がコードのように見える理由がこれです。リセットはコードが実行されている最中に起き、シリアルには起動メッセージが出ます。完全にソフトウェアの問題に見えます。

コンデンサができることとできないこと

対応は2層です。

100ナノファラドのセラミックコンデンサを各ICの電源ピンのすぐそばに付けます。これはナノ秒からマイクロ秒単位の速い電流変動を供給します。チップ内部のトランジスタがスイッチングするとき瞬間的に必要な電流を電源から引っ張ろうとすると、配線のインダクタンスのせいで間に合いません。すぐそばの小さなコンデンサがその瞬間を埋めます。

470マイクロファラドの電解コンデンサをモーター電源の近くに付けます。これはミリ秒単位の大きな変動を緩和します。どれだけ役立つか計算してみます。1Aの追加電流を100マイクロ秒の間供給しながら電圧降下を0.2Vに抑えるために必要な容量は、

C = I × Δt / ΔV = 1A × 0.0001秒 / 0.2V = 0.0005F = 500マイクロファラド

500マイクロファラドです。470マイクロファラドならほぼ合っています。

ところがモーターの起動時間は100マイクロ秒ではなく数ミリ秒です。5ミリ秒で計算し直すと、

C = 1A × 0.005秒 / 0.2V = 0.025F = 25000マイクロファラド

25000マイクロファラドです。ブレッドボードに挿せる部品ではありません。

この計算が教えてくれることは明確です。コンデンサは短いスパイクを整える部品であって、不足した電源の代わりになる部品ではありません。ブラウンアウトが続くなら、コンデンサを大きくするのではなく電源そのものを変える必要があります。

実際の解決順序

この症状が出たとき確認すべき順序はこうです。

第一に、モーター電源とロジック電源が分離されているか見ます。同じUSBから両方取っているなら、これが原因です。

第二に、電線を太く短くします。ブレッドボードを経由する電源経路は接触抵抗が積み重なるので、電流が大きい経路は直接はんだ付けするか太い線で直結します。

第三に、コンデンサを付けます。モーター端子の両側に100ナノファラド、モーター電源入力に470マイクロファラドを置きます。モーター端子のセラミックコンデンサはブラシから発生する高周波ノイズを抑える役割もあります。

第四に、ソフトスタートを入れます。PWMで速度を徐々に上げると起動電流のピークが下がります。これはコードだけでできる唯一の緩和策です。

// MOSFETゲートをPWMで駆動してモーターを徐々に起動します。
// 配線: D9 -> 220オーム -> MOSFETゲート、ゲートとGNDの間に10kプルダウン
//       モーターは別電源、コイルと並列に1N5819フライバックダイオード
//       2つの電源のGNDは一点で接続

const int MOTOR_PWM_PIN = 9;
const int RAMP_STEP_MS = 12;     // 1段階ごとに待つ時間
const int TARGET_DUTY = 200;     // 0から255。最終速度

void setup() {
  pinMode(MOTOR_PWM_PIN, OUTPUT);
  analogWrite(MOTOR_PWM_PIN, 0);
  delay(500);                    // 電源が安定するまで待ちます
}

void softStart() {
  // 0から目標まで約2.4秒かけて上げます。
  // いきなり255を書くと起動電流がそのまま流れてレールが崩れます。
  for (int duty = 0; duty <= TARGET_DUTY; duty++) {
    analogWrite(MOTOR_PWM_PIN, duty);
    delay(RAMP_STEP_MS);
  }
}

void softStop() {
  for (int duty = TARGET_DUTY; duty >= 0; duty--) {
    analogWrite(MOTOR_PWM_PIN, duty);
    delay(RAMP_STEP_MS);
  }
}

void loop() {
  softStart();
  delay(3000);
  softStop();
  delay(2000);
}

ただしこのコードを根本的な解決策と誤解してはいけません。ソフトスタートは起動電流のピークを下げるだけで、モーターが負荷にぶつかって拘束されると、依然として拘束電流が流れます。電源がその電流に耐えられなければ、同じ症状がまた出ます。

配線を組み終えて電流予算が合っているか確認したければ、このサイトの配線検証ツールに部品を載せてみてください。サーボモーターやLEDストリップのように別電源が必要な部品には、ピーク電流と一緒に別供給を勧める案内が出て、5Vレールの合計がボードの供給限界を超えるかも計算してくれます。

締めくくり — ピンは命令を出し、電力は電源から来ます

この記事で扱った事故は表面的には互いに違って見えます。ピンが焼けること、ボードが再起動すること、MOSFETが死ぬこと、リレーが起動時に一瞬動作すること。

しかしすべて同じ誤解から生まれます。GPIOピンを電源のように扱ったことです。

ピンはスイッチを開閉する信号線です。その信号が制御するスイッチが、電源から負荷への大きな電流を通過させます。この構造を守れば、電流の大きさはピンとまったく関係なくなります。1Aを流そうが10Aを流そうが、ピンがすることはゲートを数ミリアンペアで充電することだけです。

そして誘導性負荷にはもうひとつ加わります。コイルは電流が切れる瞬間を嫌い、その不満を数千ボルトで表現します。そのエネルギーが行ける道をダイオードであらかじめ作っておけば、5.7Vで静かになります。ダイオードひとつを忘れることと入れることの差は1000倍です。

これまで5回にわたって扱った内容は結局3つの数字に収束します。この部品に何ボルトがかかるか、何ミリアンペアが流れるか、そしてこのピンが耐えられる値はいくつか。回路で静かにハードウェアを壊す間違いはほとんど全部この3つのうちどれかを確認しなかったことから生まれます。部品をつなぐ前にこの3つの数字を紙に書いてみる習慣が、回路図を10枚読むより役立ちます。

현재 단락 (1/193)

小型ギアモーターをArduinoのD9につなぎ、反対側をGNDにつなぎます。`digitalWrite(9, HIGH)`を書きます。

작성 글자: 0원문 글자: 11,618작성 단락: 0/193