コンデンサとは?種類、104の表記、RC時定数
コンデンサとは何か、何をするのかを解説します。pF・nF・µFの単位、セラミックと電解の違い、104の表記、τ = R·C、100 nFのパスコン、Arduinoでの充電の実験を紹介します。
コンデンサは、決して触れ合わない2枚の導体の板の間に電荷をためておき、必要なときにすばやく放出する、基本的な回路部品です。小さいけれどとても速いエネルギーのタンクと考えるとよいでしょう。電圧が下がると電荷を供給し、急なスパイクを吸収し、充電されると直流(DC)は通しませんが、交流(AC)やノイズは通します。Arduino Unoにもたくさんのコンデンサが載っていて、電源ラインを安定させ、ボタンのチャタリングを抑え、タイミングを決め、PWM信号をなめらかな電圧に変えています。
このガイドでは、コンデンサのしくみ、pF、nF、µFの単位、セラミック・電解・タンタルの違い、極性と耐圧の読み方、104のような表記の意味、RC時定数(τ = R·C)、コンデンサの直列・並列の接続方法を学びます。最後に、Arduino、ESP32、Raspberry Pi Picoで、コンデンサの充電カーブを描いて静電容量を測る実験を行います。

コンデンサとは?そのしくみ
どのコンデンサの中にも、誘電体という絶縁層で隔てられた2つの導体の面があります。足の間に電圧をかけると、片方の板に電子がたまり、もう片方の板からは電子が引き離されます。板の間に電界ができ、エネルギーはその電界にたくわえられます。たまる電荷はQ = C · Vで表され、Cはファラッド単位の静電容量、Vはボルト単位の電圧です。たくわえられるエネルギーはE = ½ · C · V²で、たとえば16 Vに充電した1000 µFのコンデンサには0.128ジュールがたまります。電流と電圧はI = C · ΔV/Δtの関係にあります。コンデンサは電圧の急な変化に逆らうので、それがまさにリップルをならす理由です。
コンデンサは水のタンクにたとえられます。空のときはすばやく満たされ、たまるにつれて流れが遅くなり、最後には止まります。そのため直流の回路では、充電が終わるとコンデンサに電流は流れません。一方、周波数が上がるほど、コンデンサは電流を妨げにくくなります。この妨げを容量性リアクタンスと呼び、Xc = 1 / (2π · f · C)で計算します。100 nFのコンデンサは1 kHzでは約1.6 kΩですが、10 MHzではわずか0.16 Ωです。つまり高周波のノイズにとってはほぼショートで、これがパスコン(デカップリングコンデンサ)の秘密のすべてです。
静電容量の単位:pF、nF、µF
| 単位 | 記号 | ファラッドで表すと | 主な用途 |
|---|---|---|---|
| ピコファラッド | pF | 10⁻¹² F | 水晶振動子の横の22 pF、RF回路 |
| ナノファラッド | nF | 10⁻⁹ F | 100 nFのパスコン、10 nFのノイズフィルタ |
| マイクロファラッド | µF | 10⁻⁶ F | 10〜1000 µFの電源用・モーター用コンデンサ |
| ファラッド | F | 1 F | スーパーキャパシタ、バックアップ用のエネルギー |
ファラッドはとても大きな単位なので、電子工作ではほとんどの場合その小さな単位を使います。換算のルールは簡単で、1段ごとに1000倍です。1 µF = 1000 nF = 1,000,000 pFなので、0.1 µF、100 nF、100,000 pFは同じ値です。µの記号が使えないときは代わりにuと書き(10uF)、古い回路図ではマイクロファラッドをMFDと書いていることもあります。Arduinoのプロジェクトで最もよく見かける値は、22 pF、100 nF(0.1 µF)、10 µF、100 µF、1000 µFです。
コンデンサの種類:セラミック、電解、タンタルなど
| 種類 | 静電容量の範囲 | 極性は? | 使われる場所 |
|---|---|---|---|
| セラミック(MLCC、ディスク型) | 1 pF〜100 µF | なし | パスコン、水晶振動子、高周波のフィルタ |
| アルミ電解 | 0.1 µF〜数万µF | あり | 電源の平滑、モーター、サーボ、LEDテープ |
| タンタル | 0.1 µF〜数百µF | あり | 小さなボードの安定した電源 |
| フィルム(ポリエステル、ポリプロピレン) | 約1 nF〜10 µF | なし | オーディオ、タイミング、商用電源のフィルタ |
| スーパーキャパシタ | 0.1 F〜数百F | あり | 時計(RTC)のバックアップ、短時間のエネルギー |
- セラミック:小さく、安く、極性がありません。内部抵抗(ESR)がとても低いので、速いノイズの除去に最も向いています。安定性は誘電体によって決まります。C0G(NP0)はとても安定、X7Rは良好ですが、Y5Vは温度やかかる電圧によって値が半分以下に下がることがあります。
- アルミ電解:小さな体積で大きな静電容量が得られますが、極性があり、中の液体が少しずつ乾いていきます。本体には85 °Cか105 °Cの上限と、その温度での寿命(例:2000時間)が書かれています。おおまかに、10 °C低くなるごとに寿命は2倍になります。
- タンタル:同じ値の電解コンデンサより小さく安定していますが、逆電圧や突入電流に弱く、壊れるとショートして燃えることがあります。使う電圧の2倍以上の耐圧のものを選びましょう。
- フィルム:極性がなく、安定していて損失が少ないため、オーディオ回路、精密なタイミング、230 Vの商用電源のフィルタ(X2クラス)に使われます(日本の商用電源は100V(50/60Hz)です)。欠点は、大きな値ではかさばることです。
- スーパーキャパシタ:ファラッド単位の静電容量がありますが、1セルあたり約2.7 Vまでしか耐えられません。電池ほど多くのエネルギーはためられない代わりに、数秒で充放電でき、数十万回のサイクルに耐えます。
極性(+/−)と耐圧の読み方
- リード型の電解コンデンサ:長い足がプラス(+)、短い足がマイナス(−)です。外装の明るい色の帯にはマイナスの記号が並び、マイナス側を示します。足が切りそろえてある場合は、帯で判断しましょう。
- SMDの電解コンデンサ(缶型):上面の黒や色付きの半月形がマイナス側を示します。
- タンタル:注意してください。ルールが逆で、タンタルコンデンサの帯や線はプラスの足を示します。
- セラミックとフィルム:極性がないので、どちら向きにつけてもかまいません。
- 回路図では:極性のないコンデンサは平行な2本の直線で描かれます。極性のあるものは、片方の板が曲線や塗りつぶしで描かれ、+の記号がプラス側を示します。
本体の耐圧(例:16 V、25 V、50 V)は、コンデンサが連続して耐えられる最高の直流電圧で、決して超えてはいけません。安全なルールは、回路の最高電圧の1.5〜2倍以上の耐圧を選ぶことです。5 VのArduinoの回路では10 Vか16 V、12 VのACアダプターでは25 V、24 Vでは35 Vか50 Vを使います。必要より高い耐圧を使っても問題はなく、部品が大きく少し高くなるだけです。
コンデンサの表記の読み方:104の意味は?
スペースを節約するため、セラミックとフィルムのコンデンサは値を3桁の数字で表します。単位は常にピコファラッドで、最初の2桁が数値、3桁目が後ろに付けるゼロの数です。つまり104 = 10のあとにゼロが4つ = 100,000 pF = 100 nF = 0.1 µFです。2桁の表記はそのままpFの値で(22 = 22 pF)、最後の桁が0ならゼロは付けません(220 = 22 pF)。文字を使う表記では、文字が単位と小数点を兼ねます。4n7 = 4.7 nF、2p2 = 2.2 pFです。すばやく読み解くにはコンデンサの表記ツールを使いましょう。
| 表記 | 計算 | 値 |
|---|---|---|
| 22 / 220 | 22 × 1 pF | 22 pF |
| 101 | 10 × 10 pF | 100 pF |
| 102 | 10 × 100 pF | 1 nF |
| 103 | 10 × 1,000 pF | 10 nF |
| 104 | 10 × 10,000 pF | 100 nF(0.1 µF) |
| 105 | 10 × 100,000 pF | 1 µF |
| 223 | 22 × 1,000 pF | 22 nF |
| 474 | 47 × 10,000 pF | 470 nF(0.47 µF) |
| 4n7 | 文字が小数点の役割をする | 4.7 nF |
表記のあとの文字は許容差を表します。J = ±5%、K = ±10%、M = ±20%、Z = +80% / −20%です。フィルムコンデンサでは前に電圧の記号が付くこともあり、たとえば2A104Jは100 V(2A)、100 nF(104)、±5%(J)という意味です。よく使われる電圧の記号は、1C = 16 V、1H = 50 V、2A = 100 V、2J = 630 Vです。電解コンデンサは記号を使わず、値がそのまま印刷されています(470 µF 16 V)。一方、SMDのセラミックコンデンサにはふつう何も表示がないので、値はパッケージか測定でしかわかりません。
充電、放電、RC時定数(τ = R·C)
抵抗を通してコンデンサを充電すると、電圧は一瞬で跳ね上がるのではなく、指数関数のカーブに沿って上がります:Vc = Vs · (1 − e^(−t/RC))(Vsは電源電圧、tは経過時間)。放電するときも同じ速さで下がります:Vc = V0 · e^(−t/RC)。R·Cの積を時定数と呼び、τ(タウ)と書きます。オームとファラッドを掛けると秒になります。たとえば10 kΩの抵抗と100 µFのコンデンサなら、τ = 10,000 × 0.0001 = 1秒です。1 kΩと100 nFなら、τはわずか0.1ミリ秒です。
| 経過時間 | 充電で達する電圧 | 放電で残る電圧 |
|---|---|---|
| 1 τ | 63.2% | 36.8% |
| 2 τ | 86.5% | 13.5% |
| 3 τ | 95.0% | 5.0% |
| 4 τ | 98.2% | 1.8% |
| 5 τ | 99.3% | 0.7% |
実際には、約5τでコンデンサは完全に充電または放電したとみなします。10 kΩと100 µFの例なら5秒です。この性質は、タイマー、ボタンのチャタリング対策回路、ゆっくり消えるランプ、555のICの基本になっています。抵抗の値をおさらいするには抵抗とは?を、RとCの値でカーブがどう変わるかを見るにはRC時定数ツールを試しましょう。電圧、電流、抵抗の関係はオームの法則で詳しく解説しています。
フィルタとパスコン:なぜすべてのICの横に100 nFがあるのか?
マイコンなどのICは、クロックの立ち上がりのたびに、数ナノ秒の短い電流パルスを流します。電源が遠くにあると、配線のインダクタンスがこの急な要求に追いつけず、電源ラインに小さな電圧の落ち込みやノイズが生まれ、でたらめなリセット、不安定なアナログの読み取り、フリーズの原因になります。解決策は、各ICのVCCとGNDピンの間に、できるだけ近くに100 nFのセラミックコンデンサを置くことです。ICのすぐ横の小さなエネルギーのタンクとして働き、高周波のノイズをGNDに逃がします。これをデカップリングコンデンサ、またはバイパスコンデンサ(パスコン)と呼びます。ゆっくりした大きな負荷の変化には、電源の入口に10〜1000 µFの電解コンデンサ(バルクコンデンサ)を追加します。

- すべてのICに100 nF:VCCとGNDの間に、短い足で、ICの電源ピンにできるだけ近く置きます。
- 7805などのリニアレギュレーター:メーカーは入力に0.33 µF、出力に0.1 µFをすすめていますが、実際には出力にも10〜100 µFを追加することがよくあります。詳しくは7805電圧レギュレーターをご覧ください。
- サーボモーター:サーボの電源に、サーボの近くで100〜470 µFを入れると、サーボが動いたときにArduinoがリセットするのを防げます(サーボモーターとは?)。
- WS2812B LEDテープ:ACアダプターの+と−の端子の間に、耐圧6.3 V以上の500〜1000 µFのコンデンサを入れることがすすめられています(WS2812B NeoPixel)。
- DCモーター:モーターの端子に直接100 nFのセラミックをはんだ付けすると、ブラシが出す電気的なノイズが大きく減ります(L298NでDCモーター)。
- 無線モジュール:送信中は電流が急に跳ね上がります。nRF24L01の電源ピンの間に10 µF、ESP32の3.3 VとGNDの間に100〜470 µFを入れると、接続の切断やブラウンアウトによるリセットが減ります。
抵抗とコンデンサを直列につなぐとローパスフィルタになります。ある周波数より低い周波数を通し、それより高い周波数を弱めます。カットオフ周波数はfc = 1 / (2π · R · C)です。Arduino UnoのPWM出力は490 Hz(5番と6番では980 Hz)の方形波ですが、10 kΩと10 µFのフィルタ(fc ≈ 1.6 Hz)を通すと、ほぼ平らな直流電圧になり、簡単なアナログ出力が得られます。その代わり応答に時間がかかり、τ = 0.1秒では新しい値に落ち着くまで約0.5秒かかります。詳しくはPWMとは?をご覧ください。整流した電源も同じように大きな平滑コンデンサでならし、残るリップルはおよそΔV ≈ I / (f · C)です。負荷1 A、100 Hzの全波整流、4700 µFなら約2.1 Vです。
コンデンサの直列接続と並列接続
コンデンサの式は抵抗の式とちょうど逆です。並列では静電容量が足し算になり、C = C1 + C2 + …ですが、耐圧は最も低い部品の値になります。直列では合計が最も小さいコンデンサよりもさらに小さくなり、1/C = 1/C1 + 1/C2 + …です。同じ値のコンデンサ2個を直列にすると静電容量は半分になり、計算上は耐圧が足し算になります。しかし漏れ電流が異なるため電圧が均等に分かれないので、各コンデンサに同じ値のバランス抵抗(例:100 kΩ)を並列に入れます。必要な値が手元になければ、2個のコンデンサで作れます。計算には直列 / 並列のCツールを、抵抗の場合は抵抗の直列・並列の計算をご覧ください。
| 接続 | 例 | 合計の静電容量 | 耐圧 |
|---|---|---|---|
| 並列 | 100 µF 16 V + 220 µF 25 V | 320 µF | 16 V(最も低い値) |
| 直列 | 100 µF 16 V + 100 µF 16 V | 50 µF | 最大32 V(バランス抵抗付き) |
| 直列 | 10 µF + 22 µF | 約6.9 µF | 電圧は静電容量に反比例して分かれる |
| 並列 | 10 µF + 100 nF | 10.1 µF | 耐圧が最も低い部品の値 |
Arduinoで充電カーブの実験:静電容量を測る
理論を自分の目で確かめる一番の方法は、充電中のコンデンサの電圧を測ることです。Arduinoのデジタルピンの1本が10 kΩの抵抗を通してコンデンサを充電し、アナログ入力がコンデンサの電圧を読みます。電源電圧の63.2%に達するまでの時間が1τなので、そこからC = τ / Rで静電容量を計算します。必要なものは、Arduino Uno、100 µFの電解コンデンサ、10 kΩの抵抗、ブレッドボード、ジャンパーワイヤー数本です。
| 接続 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| 10 kΩの抵抗の片端(充電用ピン) | D8 | GPIO 25 | GP15 |
| 抵抗とコンデンサの+の足の接続点 | A0 | GPIO 34(ADC1) | GP26(ADC0) |
| コンデンサの−の足 | GND | GND | GND |
| ADCの分解能と基準電圧 | 10ビット、5 V | 12ビット、約3.3 V | 12ビット、3.3 V |
| 63.2%のしきい値 | 647(生の値) | 2086 mV | 2.086 V |
- コンデンサをブレッドボードに差します。+の足を1つの列に、−の足をGNDのレールにします。
- 10 kΩの抵抗の片端をD8に、もう片端をコンデンサの+の足がある列につなぎます。
- 同じ列からA0に線を引き、ArduinoのGNDをブレッドボードのGNDのレールにつなぎます。
- 下のコードを書き込み、シリアルモニタを115200ボーで開きます。
- コードはまずコンデンサを放電し、それから充電します。20 msごとに経過時間と電圧を表示し、最後に測定したτと静電容量を表示します。
- カーブをグラフで見るには、コードのPLOTをtrueにしてもう一度書き込み、「ツール」>「シリアルプロッタ」を開きます。
1// Kondansatör şarj eğrisi ve kapasite ölçümü / Capacitor charge curve and capacitance meter
2const int CHARGE_PIN = 8; // 10 kΩ direnç bu pinden beslenir / the 10 kΩ resistor is driven from this pin
3const int SENSE_PIN = A0; // kondansatörün + bacağı / capacitor + leg
4const float R_OHM = 10000.0; // şarj direnci (ohm) / charge resistor (ohms)
5const float VREF = 5.0; // Uno ADC referansı / Uno ADC reference
6const bool PLOT = false; // true: Seri Çizici için yalnız gerilim / true: voltage only for the Serial Plotter
7
8void setup() {
9 Serial.begin(115200);
10 pinMode(CHARGE_PIN, OUTPUT);
11}
12
13void loop() {
14 // 1) Boşalt: pin LOW, kondansatör direnç üzerinden boşalır / discharge through the resistor
15 digitalWrite(CHARGE_PIN, LOW);
16 while (analogRead(SENSE_PIN) > 4) { } // ~20 mV altı; ADC ofsetine pay bırak / below ~20 mV, leaves room for ADC offset
17 delay(1000); // kalan yükü de boşalt / drain what is left
18
19 // 2) Şarj et, eğriyi yazdır, τ'yu yakala / charge, print the curve, catch τ
20 unsigned long t0 = millis();
21 unsigned long lastPrint = 0;
22 unsigned long tauMs = 0;
23 digitalWrite(CHARGE_PIN, HIGH);
24 while (true) {
25 int raw = analogRead(SENSE_PIN);
26 unsigned long t = millis() - t0;
27 if (tauMs == 0 && raw >= 647) tauMs = t; // 1023 x 0,632 = 647 → bir τ / one τ
28 if (t - lastPrint >= 20) { // 20 ms'de bir yazdır / print every 20 ms
29 lastPrint = t;
30 float v = raw * VREF / 1023.0;
31 if (!PLOT) {
32 Serial.print(t);
33 Serial.print('\t');
34 }
35 Serial.println(v, 3);
36 }
37 if (raw >= 1010 || t > 60000) break; // ~%99 dolu ya da zaman aşımı / ~99% full or timeout
38 }
39
40 // 3) Sonuç: C = τ / R / result: C = τ / R
41 if (!PLOT) {
42 float uF = (tauMs / 1000.0) / R_OHM * 1000000.0;
43 Serial.print(F("tau = "));
44 Serial.print(tauMs);
45 Serial.print(F(" ms C = "));
46 Serial.print(uF, 1);
47 Serial.println(F(" uF"));
48 }
49 delay(3000);
50}コードのしくみはこうです。ピンをLOWにすると、コンデンサは同じ10 kΩの抵抗を通して放電します。ピンがHIGHになった瞬間にmillis()で時間を測り始め、アナログの値が647(1023の63.2%)に達したら、その経過時間をτとして保存します。値が1010(約99%)になったら、充電完了とみなします。100 µFと10 kΩなら、約1000 msと100 µFが表示されるはずです。電解コンデンサの許容差はふつう±20%なので、80〜120 µFの結果なら正常です。タイミングについて詳しくはmillisとdelayをご覧ください。
ESP32とRaspberry Pi Picoで同じ実験
ESP32ではピンが3.3 Vで動き、ADCは12ビット(0〜4095)です。ESP32のADCは範囲の両端付近で直線的でないため、生の値ではなく、キャリブレーション済みのミリボルトを返すanalogReadMilliVolts()を使います。測定用のピンには、Wi-Fiの影響を受けないADC1グループのGPIO 34を選びました。ADCは約3.1 Vを超えると確実に測れないので、充電の終わりは電圧ではなく時間で判断します。τが求まったら、5τ後に測定を止めます。基本についてはESP32とは?をご覧ください。
1// ESP32 ile kondansatör şarj eğrisi / Capacitor charge curve with ESP32
2const int CHARGE_PIN = 25; // 10 kΩ direnç bu pinden beslenir / the 10 kΩ resistor is driven from this pin
3const int SENSE_PIN = 34; // ADC1, yalnız giriş / ADC1, input only
4const float R_OHM = 10000.0; // şarj direnci (ohm) / charge resistor (ohms)
5
6void setup() {
7 Serial.begin(115200);
8 pinMode(CHARGE_PIN, OUTPUT);
9}
10
11void loop() {
12 digitalWrite(CHARGE_PIN, LOW); // boşalt / discharge
13 unsigned long d0 = millis();
14 // ADC ~150 mV altını okuyamaz, 200 mV'a inmesini bekle / the ADC cannot read below ~150 mV, wait for 200 mV
15 while (analogReadMilliVolts(SENSE_PIN) > 200 && millis() - d0 < 60000) { }
16 delay(millis() - d0 + 1000); // aynı süre kadar daha bekle / wait as long again
17
18 unsigned long t0 = millis();
19 unsigned long tauMs = 0;
20 digitalWrite(CHARGE_PIN, HIGH); // şarj et / charge
21 while (true) {
22 unsigned long t = millis() - t0;
23 uint32_t mv = analogReadMilliVolts(SENSE_PIN); // kalibre edilmiş mV / calibrated mV
24 if (tauMs == 0 && mv >= 2086) tauMs = t; // 3300 mV x 0,632 → bir τ / one τ
25 Serial.println(mv); // Seri Çizici için / for the Serial Plotter
26 if ((tauMs > 0 && t >= 5 * tauMs) || t > 60000) break; // 5τ ≈ %99 dolu / 5τ ≈ 99% full
27 delay(20);
28 }
29 Serial.printf("tau = %lu ms C = %.1f uF\n", tauMs, tauMs / 1000.0 / R_OHM * 1000000.0);
30 delay(3000);
31}Raspberry Pi Picoなら、同じ実験がMicroPythonの数行でできます。Picoのアナログ入力はGP26、GP27、GP28で、read_u16()は12ビットの測定値を0〜65535の範囲に拡大して返します。コードは各行に経過時間と電圧を表示するので、出力を表計算ソフトにコピーして自分でカーブを描けます。PicoにMicroPythonを入れる方法がわからなければ、Raspberry Pi Picoとは?から始めましょう。
1# Pico ile kondansatör şarj eğrisi / Capacitor charge curve with Pico
2from machine import Pin, ADC
3import time
4
5charge = Pin(15, Pin.OUT) # 10 kΩ direnç bu pinden beslenir / resistor driven from this pin
6adc = ADC(26) # GP26 = ADC0, kondansatörün + bacağı / capacitor + leg
7R = 10000 # şarj direnci (ohm) / charge resistor (ohms)
8
9def volts():
10 return adc.read_u16() * 3.3 / 65535
11
12charge.value(0) # önce boşalt / discharge first
13d0 = time.ticks_ms()
14while volts() > 0.1 and time.ticks_diff(time.ticks_ms(), d0) < 60000:
15 pass # ADC sıfırda birkaç on mV gösterebilir / the ADC may read a few tens of mV at 0 V
16time.sleep_ms(time.ticks_diff(time.ticks_ms(), d0) + 1000) # aynı süre kadar daha bekle / wait as long again
17
18t0 = time.ticks_ms()
19charge.value(1) # şarjı başlat / start charging
20tau = None
21while True:
22 t = time.ticks_diff(time.ticks_ms(), t0)
23 v = volts()
24 if tau is None and v >= 3.3 * 0.632: # 2,086 V → bir τ / one τ
25 tau = t
26 print(t, round(v, 3))
27 if (tau is not None and t >= 5 * tau) or t > 60000:
28 break
29 time.sleep_ms(20)
30
31if tau is not None:
32 print("tau =", tau, "ms C =", round(tau / 1000 / R * 1e6, 1), "uF")コンデンサを使ったプロジェクトのアイデア
- ハードウェアのチャタリング対策:ボタンに100 nF〜1 µFを並列に入れると、10 kΩのプルアップとあわせてτ = 1〜10 msのフィルタになり、チャタリングはコードに届く前に消えます。
- PWMからアナログ電圧:RCフィルタでPWMの出力をなめらかな0〜5 Vの電圧に変え、テスターで測ります。
- 555で点滅するLED:555タイマーでは、2本の抵抗と1個のコンデンサで周波数が決まります:f ≈ 1.44 / ((R1 + 2·R2) · C)。値は555タイマーツールで計算しましょう。
- ゆっくり消えるランプ:スイッチのあとで、LEDと抵抗の電源の間に1000 µFのコンデンサを入れます。スイッチで電源を切っても、LEDはすぐには消えず、コンデンサが放電するにつれてゆっくり暗くなります。消えるまでの時間は抵抗と静電容量で決まります。
- 静電容量式センサー:静電容量式の土壌水分センサーは、土の中の水で変わる静電容量を測ります。電極がむき出しでないので、腐食しません。
- 簡単な静電容量メーター:上の実験をI2C LCDと組み合わせ、手持ちのコンデンサの値を画面に表示します。
よくある失敗と対処法
- 104を104 µFだと思う:104は100 nFです。3桁の表記は常にピコファラッドです。
- 電解コンデンサを逆につける:コンデンサが熱くなったり、膨らんだり、破裂したりします。帯のある足をGND側につなぎます(タンタルでは帯がプラス)。
- 耐圧が低すぎるものを選ぶ:12 Vのラインに10 Vのコンデンサを使うとすぐに壊れます。少なくとも1.5〜2倍の余裕を持たせましょう。
- パスコンを遠くに置く:ICから10 cm離れた100 nFのコンデンサは、配線のインダクタンスのため効果を失います。足を短くし、電源ピンのすぐ横に置きましょう。
- モーターが動き出すとArduinoがリセットする:電源電圧が一瞬下がっています。モーターは別に給電し、電源に100〜470 µFを追加し、GNDをつなぎましょう(Arduinoがリセットを繰り返すのはなぜ?)。
- ESP32で「Failed to connect to ESP32: Timed out waiting for packet header」(ESP32に接続できない):一部のボードでは自動書き込みの回路のタイミングがずれます。ENとGNDの間に1〜10 µFのコンデンサを入れると、BOOTボタンを押し続けなくてもよくなることがよくあります。
抵抗とLEDの次に覚えるべき最も基本的な部品がコンデンサです。τ = R·Cを理解し、すべてのICの横に100 nFを置く習慣をつければ、回路はずっと安定して動きます。次のステップとして、インダクタとは?でインダクタに進みましょう。BlueGraysアプリには、ボタンで操作するLED、LDRでの明るさの測定、PWMでのLEDのフェード、WS2812Bのプロジェクトが、回路図とコード付きでステップごとに用意されているので、コンデンサについて学んだことをすぐに本物の回路で試せます。
よくある質問
コンデンサは何をしますか?
コンデンサは電荷を短い時間たくわえ、必要なときにすばやく放出します。電子回路では、電源電圧の平滑、ノイズの除去、タイミングの設定、直流を止めて交流の信号を通すこと、ボタンのチャタリングの防止に使われます。ほとんどの電子基板には数十個のコンデンサが載っています。
コンデンサと電池の違いは何ですか?
電池はエネルギーを化学的にたくわえ、長い間ほぼ一定の電圧を出し、はるかに多くのエネルギーをためられます。コンデンサはエネルギーを電界にたくわえ、ミリ秒単位で充放電できますが、放電するにつれて電圧が下がり続けます。そのため、コンデンサは長時間の電源ではなく、急な要求に応える速いバッファです。
104のコンデンサは何nFですか?
104という表記は、10のあとにゼロが4つで、100,000 pFという意味です。これは100 nF、つまり0.1 µFに等しく、ArduinoやICで最も一般的なパスコンの値です。
電解コンデンサのプラスとマイナスの足はどう見分けますか?
新しい電解コンデンサでは、長い足がプラス(+)、短い足がマイナス(−)です。本体にあるマイナスの記号が並んだ明るい色の帯もマイナス側を示します。タンタルコンデンサではルールが逆で、帯がプラスの足を示します。
コンデンサを逆につなぐとどうなりますか?
極性のないセラミックやフィルムのコンデンサは何も起きません。電解コンデンサやタンタルコンデンサを逆につなぐと、大きな漏れ電流が流れ、熱くなって膨らみ、破裂することがあり、タンタルは発火することもあります。逆につないだコンデンサに気づいたら、すぐに電源を切って部品を交換しましょう。
耐圧の高いコンデンサを使ってもいいですか?
はい、同じ静電容量で耐圧の高いコンデンサはいつでも使えます。たとえば16 Vの代わりに25 Vや50 Vを使えます。違うのは本体が大きく、少し高くなることだけです。逆は危険で、回路の電圧より耐圧の低いコンデンサはすぐに壊れます。
この記事を読んだ後に作れるプロジェクト
全プロジェクトを見る
ボタンでLEDを点灯(押している間のみ)
呼び鈴のように、押している間は点灯し、離すと消灯します。Arduinoはボタンの状態を常に読み取り、押されている間はLEDを点灯させ、指を離した瞬間に消灯させます。このシンプルな回路で、ボードが外部からの操作を検知する仕組みを学べます。

ボタンでLEDの点灯・消灯を切り替え
部屋の照明スイッチのように、ボタンを1回押すと点灯し、もう1回押すと消灯します。Arduinoはボタンが押されるたびにLEDの状態を反転させます。ボタン内部の小さな接点の振動で誤動作しないよう、短い待ち時間も設けます。1つのボタンでオン・オフを切り替える、シンプルな仕組みです。

LDRで光の強さを測定
部屋の明るさを数値で見てみませんか?光に反応する小さな部品、LDRで周囲の光を測定し、Arduinoが0.5秒ごとにその値をコンピューターの画面に表示します。手で覆うと数値が変わる様子を確認できます。自動で点灯する常夜灯などのプロジェクトへの第一歩です。

Raspberry Pi Picoのボタンのチャタリング対策:IRQとソフトウェアポーリングの比較
ボタンを1回押しただけで、コードでは3~4回と数えられますか?原因はチャタリングです。金属接点がマイクロ秒単位で振動します!シリアルモニタで、2つのカウント方法を並べて比較します。未処理のポーリングは振動も検出して多く数え、IRQとソフトウェアによるチャタリング対策は正確に数えます。接点が振動する仕組み、ソフトウェアによる対策(ticks_diff() > 50ms)、Pin.irq()による割り込みの登録、IRQ_FALLINGトリガー、ISRハンドラー、globalとISRの安全な扱い方を学びます。IRQでLEDを切り替え、動作を目で確認できます。シリアルモニタには押すたびに両方のカウントが表示されます。

Raspberry Pi PicoのPWMでLEDをフェード(呼吸のような明滅)
LEDを単に点滅させるだけでなく、呼吸するように明滅させます!Raspberry Pi PicoのPWM(パルス幅変調)を使い、スリープ中のMacBookのランプのように、明るさをゆっくり上げてからゆっくり下げます。machine.PWMクラス、duty_u16()(0–65535の16ビットの明るさ)、PWM周波数(freq(1000)で1秒間に1000回オン・オフし、ちらつきを感じさせない)、range()による段階的なループ(増加と減少)、デジタルピンからのアナログのような出力を学びます。PWMはRGBの混色やモーターなどに使われる、組み込み開発の基本技術です。

ESP32のPWMでLEDをフェード
LEDの明るさを0から最大へ、最大から0へと滑らかに変化させます。Arduinoと同じようにanalogWrite()でPWMを制御します。ESP32 Arduino Core 3.0+では同じ構文がそのまま使えます。ピンの定義とpinMode、analogWriteだけで実現できます。

WS2812B LEDテープの使い方
1つずつ自由に色を変えられるスマートLEDテープを使ってみます。Arduinoが最初の5個のLEDを赤く点灯し、1秒後に残りの5個を青く点灯します。その後すべて消灯し、最初から繰り返します。1本の配線で何十個ものLEDを個別の色にするための第一歩です。このようなテープは、装飾用のライトや部屋の照明にも使われています。

LCDディスプレイ付きデジタル電圧計
自作の測定器で、電池や電源アダプターが出力する電圧を調べます。2つの抵抗で作る分圧回路が、高い電圧をボードで読み取れるレベルまで下げます。Arduinoが元の電圧を計算し、2行のLCDディスプレイにボルト単位で表示します。この回路では約55ボルトまでの直流電圧を測定できます。コンセントの商用電源には絶対に接続しないでください。
ほかの記事
BlueGraysアプリ
この回路をスマホでステップごとに作る
回路図、コード、部品リストを1つの画面で確認できます。Arduino、ESP32、Picoのプロジェクトを200件以上用意しています。

