工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino Nanoで抵抗器を効率仕分け:シンプルで時間短縮な自作オームメーター

必要な部品と材料

必要な工具

使用ソフトウェア

プロジェクト概要

プロジェクト完成後に抵抗器が山のように余り、カラーコードを確認して仕分けするのが面倒……そんな「ずぼら」なあなたのための、究極の「ずぼらオームメーター」を作ります。既知の抵抗器をいくつか用意し、Arduinoとディスプレイを組み合わせるだけで、未知の抵抗値を瞬時に測定・表示できる装置です。

原理:電圧分割と自動レンジ切替

電圧分割回路の式 Vout = Vin × R2 / (R1 + R2) を利用します。基準抵抗(R1)と未知抵抗(R2)を直列につなぎ、中点電圧をArduinoのアナログピンで読み取ります。基準抵抗と未知抵抗の値が近いほど測定精度が高まるため、複数の基準抵抗(100Ω〜1MΩ)をデジタルピンで切り替え、読み取り値が最も適切な範囲(約350〜800)に入るものを自動選択します。

回路図

Arduino Nanoで抵抗器を効率仕分け:シンプルで時間短縮な自作オームメーター

I2C OLEDの場合、Arduino NanoのA4(SDA)、A5(SCL)に接続します。

スケッチのポイント

実装例:ブレッドボード上の試作

Arduino Nanoで抵抗器を効率仕分け:シンプルで時間短縮な自作オームメーター

ケースへの組み込み

3Dプリントしたケースに基板とディスプレイを収め、抵抗器を挿すだけで測定できるよう小さな穴を設けました。基準抵抗は省スペース化のため基板上ではんだ付けしています。

Arduino Nanoで抵抗器を効率仕分け:シンプルで時間短縮な自作オームメーター

使い方

仕分けしたい抵抗器をケースの穴に差し込むだけで、OLEDに抵抗値が表示されます。作業机の上をスッキリ片付けられます。

完全なスケッチ

Adafruit_SSD1306ライブラリを使用しています。ライブラリマネージャからインストールしてください。ビットマップ画像はお好みで差し替え可能です。

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// ビットマップデータ(省略)

int R1 = 100, R2 = 1000, R3 = 10000;
long R4 = 100000, R5 = 1000000;
long Rn;
int D2=2, D3=3, D4=4, D5=5, D6=6;
float raw=0, Vout=0, Ru=0;
int Analogohm = A0;

void setup() {
  Serial.begin(9600);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); }
  display.clearDisplay();
  display.drawBitmap(0,0, myLOGO, 128, 64, WHITE);
  display.display();
  delay(2000);
}

void loop() {
  // 1MΩ基準で測定
  pinMode(D2, OUTPUT); pinMode(D3, INPUT); pinMode(D4, INPUT); pinMode(D5, INPUT); pinMode(D6, INPUT);
  digitalWrite(D2, HIGH);
  raw = analogRead(Analogohm);
  Rn = R5;
  if (raw < 350 || raw > 800) {
    // 100kΩへ
    digitalWrite(D2, LOW); pinMode(D2, INPUT);
    pinMode(D3, OUTPUT); digitalWrite(D3, HIGH);
    raw = analogRead(Analogohm);
    Rn = R4;
    if (raw < 350 || raw > 800) {
      // 10kΩへ
      digitalWrite(D3, LOW); pinMode(D3, INPUT);
      pinMode(D4, OUTPUT); digitalWrite(D4, HIGH);
      raw = analogRead(Analogohm);
      Rn = R3;
      if (raw < 350 || raw > 800) {
        // 1kΩへ
        digitalWrite(D4, LOW); pinMode(D4, INPUT);
        pinMode(D5, OUTPUT); digitalWrite(D5, HIGH);
        raw = analogRead(Analogohm);
        Rn = R2;
        if (raw < 350 || raw > 800) {
          // 100Ωへ
          digitalWrite(D5, LOW); pinMode(D5, INPUT);
          pinMode(D6, OUTPUT); digitalWrite(D6, HIGH);
          raw = analogRead(Analogohm);
          Rn = R1;
        }
      }
    }
  }
  Vout = 5.0 * (raw / 1024.0);
  Ru = (Rn * Vout) / (5.0 - Vout);
  // 標準値へ丸め
  if (Ru < 70) Ru = 10 * round(Ru/10);
  else if (Ru < 700) Ru = 100 * round(Ru/100);
  else if (Ru < 7000) Ru = 1000 * round(Ru/1000);
  else if (Ru < 70000) Ru = 10000 * round(Ru/10000);
  else if (Ru < 700000) Ru = 100000 * round(Ru/100000);
  else Ru = 1000000 * round(Ru/1000000);
  Resistance(Ru);
  delay(1000);
}

void Resistance(long Ru) {
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println(F("Resistor value:"));
  display.setCursor(20,25);
  display.setTextSize(2);
  display.print(Ru);
  display.print(F(" Ohm"));
  display.drawBitmap(0,0, myBitmap, 128, 64, WHITE);
  display.display();
  delay(2000);
}

設計ファイル

製造プロセス

  1. スマート渇きアラート植物アラーム – 最適な水やりタイミングを知らせるDIYセンサー
  2. イタリア語ワードクロック自作:Arduino Nano、NeoPixel、LCD、RTCで時刻を文字で表示
  3. Arduino MKR Fox 1200で作る信頼性の高いSigfox kWhメーター
  4. Bluetooth対応温度モニター:Arduino NanoとHC-06でスマホ監視
  5. 非接触ジェスチャー錠: APDS-9960とArduinoでセキュアアクセス
  6. Arduino Nanoコンパニオンキット – 電子工作に必須の部品とツールを搭載した多機能IC型デバイス
  7. Arduino Micro/Leonardo用 USB-MIDIアダプタキット – 完全パーツリストと実装ガイド
  8. Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保
  9. RGB 32バンド オーディオスペクトラムビジュアライザー - Arduino LEDマトリックスプロジェクト
  10. Arduino UNOで作る精密反応速度テスター
  11. ゼロオーム抵抗器のメリットと実用例:ジャンパー線の代替として