差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
gimmickkouza:electronic_basic:7:1_troubleshootingbasic [2024/06/02 18:37] – 作成 lutamestagimmickkouza:electronic_basic:7:1_troubleshootingbasic [2024/06/21 18:35] (現在) lutamesta
行 3: 行 3:
 電子工作で制作物のトラブルが起きた時は、問題の切り分けが肝心です。 電子工作で制作物のトラブルが起きた時は、問題の切り分けが肝心です。
 その問題の原因が何かによって、対処法はまるで違います。 その問題の原因が何かによって、対処法はまるで違います。
 +  
 ==== 原因別・よくあるトラブルの例 ==== ==== 原因別・よくあるトラブルの例 ====
 === 電気的原因によるもの === === 電気的原因によるもの ===
行 14: 行 14:
   * 配線ミス → 配線が間違っている、抜けている   * 配線ミス → 配線が間違っている、抜けている
   * 接触不良 → ワイヤやコネクタの接触不良や断線、コネクタの圧着不良、はんだ付けの失敗など   * 接触不良 → ワイヤやコネクタの接触不良や断線、コネクタの圧着不良、はんだ付けの失敗など
-  * 配線が長すぎる → メートル単位に及ぶ配線はNG。特にI2Cは20cm程度の長さでも通信不良を起こすことがあ+  * 配線が長すぎる → メートル単位のような配線はNG。特にI2CやSPIは20cm程度の長さでも通信不良を起こすことがあり、かなり短くしないといけない
   * 逆接 → 極性のある部品(LEDやCRDなど)を逆に接続している   * 逆接 → 極性のある部品(LEDやCRDなど)を逆に接続している
   * ノイズ → 電気的ノイズが部品の動作に悪影響を及ぼす   * ノイズ → 電気的ノイズが部品の動作に悪影響を及ぼす
-  * UARTの接続が逆+  * UARTの接続 → RX-RX/TX-TXになっていないか。基本的に互い違いに接続する。RXはTXに、TXはRXに接続 
 +/*<alert type="danger">UARTの接続が逆、ここはTX/RXと書いたほうがやさしい</alert>*/
  
 === プログラムのミスによるもの === === プログラムのミスによるもの ===
行 28: 行 29:
  
   * ピン番号の指定間違え → ピン番号を変数化している場合に番号を間違えたり、部品の初期化時に別の変数を入れている   * ピン番号の指定間違え → ピン番号を変数化している場合に番号を間違えたり、部品の初期化時に別の変数を入れている
 +
 +  * 変数の型の宣言間違え
 +  →入れたい値が入らない変数を宣言している
 +   例えば1億までの数字を扱おうとしているのにint型で変数を宣言してしまっている
 +   小数点のある数値を扱おうとしているのにlong型で変数を宣言してしまっている  等
  
   * 変数の指定間違え → ある変数を入れるべき部分に型が同じ別の変数を入れてしまっている   * 変数の指定間違え → ある変数を入れるべき部分に型が同じ別の変数を入れてしまっている
行 38: 行 44:
  
   * そもそもマイコンへのプログラムの書き込みに失敗している   * そもそもマイコンへのプログラムの書き込みに失敗している
 +
 +/*<alert type="danger">変数宣言時の型違いとかもトラブルとしてよくあります。intなのにlongにしたとか</alert>*/
  
 === その他の原因によるもの === === その他の原因によるもの ===
行 45: 行 53:
   * モータ系の部品で、トルク以上の力や重さが動作部にかかっていて動きが相殺されている   * モータ系の部品で、トルク以上の力や重さが動作部にかかっていて動きが相殺されている
   * 通信系の部品で、電波の状況がよくない、電波を遮るものがある   * 通信系の部品で、電波の状況がよくない、電波を遮るものがある
 +  
 ==== トラブル対応の基本のおさらい ==== ==== トラブル対応の基本のおさらい ====
 **作った電子回路が動かない・或いは動作がおかしい場合、まずはすぐに電源を切りましょう。** **作った電子回路が動かない・或いは動作がおかしい場合、まずはすぐに電源を切りましょう。**
 動作不良の原因にすぐに思い当たる点がない場合は、電気的原因 → プログラムの順番でミスを探るのがベターです。 動作不良の原因にすぐに思い当たる点がない場合は、電気的原因 → プログラムの順番でミスを探るのがベターです。
 +  
 +  
 +===== 回路のデバッグについて =====
 +<panel type="info" title="まつはちさんからのアドバイス">
 +この項は私が回路デバッグをする際に実行していることです。
 +初心者向けではない部分もありますが、ご参考までに。
 +  
 +==== 回路のデバッグでやるべきことリスト ====
 +  * 導通チェックをする
 +    * テスターでピーと鳴るか
 +    * 抵抗値を測るのもあり。導通してなければ不定になる
 +  * 電圧を測る
 +  * パーツの極性を確認する
 +  * パーツを外すと状況が変わるか見る。1個ずつ外す、逆に最初に1個から始めて1個ずつ追加していく
 +  * 発熱の場合はどこで発熱してるかを見る
 +  * 素子のスペックを洗い出し、電流や電圧が許容範囲内か再度確認する
 +    * ドロップアウト電圧にも注意してください
 +  * 電子顕微鏡で、挙動が怪しい部分のはんだ状態を観察する
 +    * ショートや、オーバーヒート、いもはんだを確認する
 +  * 電子顕微鏡で怪しいところを観察する
 +  * オシロスコープで波形を見る
 +    * 異常発熱時など、オシロに負荷かかりそうな場合はできる限りのことをやってからにする
 +  
 +==== テスターについてのメモ ====
 +  * ちょっとだけピッとなるのはコンデンサの影響。導通してるわけではないです
 +  * 電流は、流れてる線をぶった切って直列につないで測る
 +  
 +==== まつはちさんによるテスターの使用例動画 ====
 +{{youtube>1VCpHvv3z_A?large}}
  
-==== プログラムのチェックに使える小技集 ====+</panel> 
 +/*<alert type="danger">ここに回路デバッグの仕方を入れた方がデバッグの順番として適切だと思うので、ここに私の回路のやつ入れた方がいいと思います ちょっとレイアウト悩みますが…回路→プログラムの順なので</alert>*/ 
 +   
 +   
 +===== プログラムのデバッグについて ===== 
 +==== コンパイルでエラーチェック ====
 プログラミングの構文的なミスはコンパイルをすることである程度チェックすることができます。 プログラミングの構文的なミスはコンパイルをすることである程度チェックすることができます。
-構文的なミス、例えば「変数を宣言しない使おうとした」、「あるライブラリの関数を使おうとしたが、ライブラリがイクルードされていない」、「あるライブラリ使おうとしたがそもインストールされていない」、「; を付け忘れている」、「{ }括りがおしい」いったものです。 +コンパイルArduinoIDEは検証ボタンを押すか、もしくはツールバーの スケッチ → 検証・コンパイル ら実行するこきます。 
-(詳細は次項のエーメッセージ集ご確認くだい)+また、プログArduinoに書き込むときにも実行れます。
      
-し、コンパイラのチェックは万能ではありません。+コンパイルをかけてエラーメッセージが出た場合は、[[gimmickkouza:electronic_basic:7:2_arduino_errormessage|]]のページを読みエラーの原因を探ってください。 
 +[[gimmickkouza:electronic_basic:7:2_arduino_errormessage|]]のページにはないエラーメッセージが出現た場合はメッセージをコピペして検索し、対処法を探るのが最も基本的な対応です。 
 +ちなみにメッセージ全文をコピペするのではなく、どういうエラーであるかを直接指摘している部分を探し出してコピペして検索するといい感じにHitしやすいです。 
 +     
 +==== プログラムのチェックに使える小技集 ==== 
 +コンパイラは非常に便利で心強い存在ですが、そのチェックは必ずしも万能ではありません。
 特に__「プログラムの動作的には至極正しいが、自分の意図通りのプログラムを書けていない」場合、コンパイラがそれを見抜くことは基本的にはできません。__ 特に__「プログラムの動作的には至極正しいが、自分の意図通りのプログラムを書けていない」場合、コンパイラがそれを見抜くことは基本的にはできません。__
      
行 120: 行 167:
  
 ちなみにAIにプログラムを書いてもらうこともできます。 ちなみにAIにプログラムを書いてもらうこともできます。
-こちらもそのままでは使えないことも多いですが、**プログラムを書き始める時の"たたき台"として使ったり、有名ライブラリの使い方を訊いてみる**といった用途で非常に便利です。+こちらもそのままでは使えないことも多いですが、**プログラムを書き始める時の"たたき台"として使ったり、有名ライブラリの使い方を訊いてみる**といった用途などで非常に便利です。