Robotics ロボット工学

Arduino実験の考察|LED・センサ・PWM・サーボ制御と誤差原因

Arduinoの実験は、マイコンボードを用いてLED、スイッチ、可変抵抗、センサ、サーボモーターなどを制御し、入力・処理・出力という電子制御の基本を確認する学生実験です。

Arduinoでは、デジタル信号のHIGH・LOW、アナログ入力、PWM出力、シリアル通信などを比較的簡単なプログラムで扱うことができます。そのため、単純な回路実験からセンサ計測、モーター制御、ロボット制御まで発展させやすいことが特徴です。

この記事では、大学・高等学校などの学生実験でArduinoを使用することを想定し、Arduinoの基本構造、デジタル入出力、アナログ入力、PWM、シリアルモニタ、LED・可変抵抗・サーボモーターの実験例、結果のまとめ方、誤配線や電源による問題、誤差原因、改善点、考察の書き方などを整理します。

注意:
この記事は、大学・高等学校などの物理・電気・情報実験で得られた結果を考察するための参考資料です。実際の使用ボード、電源電圧、I/O電圧、ピン配置、接続可能な電流、センサ・モーターの定格などはボードごとに異なります。必ず使用するArduinoボードの公式資料、所属学校の実験書、担当教員、TAなどの指示に従ってください。

  1. Arduinoとは何か
  2. Arduino実験で見るべき結果
    1. 結果に書く主な項目
  3. Arduino UNO R3の基本
  4. デジタル入出力とは何か
  5. pinModeの役割
  6. digitalWriteとは何か
  7. digitalReadとは何か
  8. LED点滅実験
  9. LEDには電流制限抵抗が必要
  10. LED点滅の参考条件
  11. 点滅周期を変える
  12. アナログ入力とは何か
  13. analogReadとは何か
  14. 可変抵抗を使ったアナログ入力実験
  15. 分圧回路との関係
  16. ADCとは何か
  17. 分解能とは何か
  18. アナログ入力値から電圧を求める
  19. 基準電圧の影響
  20. シリアルモニタとは何か
  21. Serial.beginの役割
  22. Serial.printとSerial.println
  23. PWMとは何か
  24. analogWriteとは何か
  25. デューティ比とは何か
  26. PWMでLEDの明るさを変える
  27. 可変抵抗でLEDの明るさを制御する
  28. map関数を使う場合
  29. サーボモーターをArduinoで制御する
  30. サーボモーターの電源に注意する
  31. スイッチ入力実験
  32. フローティング入力とは何か
  33. プルアップ抵抗・プルダウン抵抗
  34. INPUT_PULLUPを使う場合
  35. チャタリングとは何か
  36. チャタリング対策
  37. delayの特徴
  38. millisを使う考え方
  39. センサを接続する
  40. センサ値と物理量は同じではない
  41. 校正とは何か
  42. 参考実験1:LED点滅
  43. 参考実験2:可変抵抗の値を読む
  44. 参考実験3:可変抵抗でLEDを調光する
  45. 参考実験4:サーボモーターの角度制御
  46. 参考測定結果
  47. 結果の書き方の例
  48. 入力値が安定しない場合
  49. 平均化によるノイズ低減
  50. Arduinoがリセットされる場合
  51. モーターをArduinoピンから直接駆動しない
  52. 誘導性負荷の逆起電力
  53. 5 Vと3.3 Vを混同しない
  54. GNDを共通にする
  55. ブレッドボードの配線ミス
  56. 短絡に注意する
  57. プログラムが書き込めない場合
  58. プログラムは動くが回路が動かない場合
  59. デバッグとは何か
  60. 問題を小さく分ける
  61. 主な誤差・実験上の問題
  62. うまくいかなかった場合の考察例
  63. 改善点の書き方
    1. 配線を改善する方法
    2. 測定を改善する方法
    3. 電源条件を改善する方法
  64. 浅い考察とよい考察の違い
    1. 浅い考察の例
    2. よりよい考察の例
  65. アナログ入力についての考察例
  66. PWMについての考察例
  67. スイッチ入力についての考察例
  68. フローティング入力についての考察例
  69. サーボモーターについての考察例
  70. LED回路との関係
  71. オームの法則との関係
  72. コンデンサとの関係
  73. 電磁石・モーターとの関係
  74. サーボモーターとの関係
  75. ロボット制御への発展
  76. データロガーへの発展
  77. レポートで使える表現例
  78. Arduino実験の考察で確認するポイント
  79. まとめ

Arduinoとは何か

Arduinoは、マイクロコントローラを搭載した開発ボードと、プログラム開発環境を組み合わせた電子工作・制御学習向けのプラットフォームです。

代表的なArduino UNO R3では、ATmega328Pを搭載し、デジタル入出力、アナログ入力、PWM出力、USB通信などを利用できます。

パソコンで作成したプログラムを書き込み、外部のセンサから情報を読み取ったり、LEDやモーターへ信号を出力したりできます。

Arduino実験で見るべき結果

結果に書く主な項目

  • 使用したArduinoボード
  • 使用したピン番号
  • 入力機器・出力機器
  • 電源電圧
  • プログラムの動作内容
  • デジタル入力値
  • アナログ入力値
  • PWM出力値
  • シリアルモニタに表示された値
  • LEDの点灯・消灯や明るさ
  • サーボモーターの角度
  • センサ入力と出力の対応
  • 理論値・設定値と実測結果の差

Arduino実験では、プログラムが正しく動いたかだけでなく、「入力値がどのように処理され、どの出力へ変換されたか」を記録すると考察しやすくなります。

Arduino UNO R3の基本

Arduino UNO R3は、学生実験や電子工作で広く利用される代表的なArduinoボードです。

デジタル入出力ピン、アナログ入力ピン、USB端子、電源端子、リセットボタンなどを備えています。

ただし、ArduinoにはUNO R4、Nano、Megaなど複数の種類があり、ピン数や電圧、機能が異なるため、実験では使用するボードを明記します。

デジタル入出力とは何か

デジタル信号では、基本的にHIGHとLOWの2状態を扱います。

出力として使う場合はLEDのON・OFF、リレーの制御などに利用できます。

入力として使う場合は、スイッチが押されているかどうかなどを読み取ることができます。

pinModeの役割

Arduinoでは、デジタルピンを入力として使うか、出力として使うかを設定します。

例えばLEDを接続したピンではOUTPUT、スイッチ入力ではINPUTまたはINPUT_PULLUPなどを設定します。

ピンの役割を正しく設定していないと、期待した動作にならない場合があります。

digitalWriteとは何か

デジタル出力ピンへHIGHまたはLOWを出力するために使用します。

LED回路では、HIGHで点灯、LOWで消灯する構成が基本になります。

ただし、LEDの接続向きや回路構成によっては論理が逆になる場合があります。

digitalReadとは何か

デジタル入力ピンの状態を読み取り、HIGHまたはLOWとして取得します。

スイッチ、デジタルセンサなどの入力状態を読み取る場合に使用します。

LED点滅実験

Arduinoの最も基本的な出力実験として、LEDを一定時間ごとに点灯・消灯させる実験があります。

この実験では、デジタル出力、プログラムの繰り返し処理、時間待ちなどの基本を確認できます。

LEDには電流制限抵抗が必要

Arduinoの出力ピンへLEDを接続する場合も、LEDへ過大な電流が流れないよう電流制限抵抗を使用します。

抵抗値は電源電圧、LEDの順方向電圧、目標電流などから決めます。

LED回路実験で学んだオームの法則をそのまま利用できます。

LED点滅の参考条件

項目 参考例
出力 デジタル出力ピン
負荷 LED+電流制限抵抗
制御 HIGH・LOWを一定時間ごとに切り替える
観察 点灯時間、消灯時間、周期

点滅周期を変える

点灯時間と消灯時間を変更すると、LEDの点滅周期を変えることができます。

例えば点灯0.5秒、消灯0.5秒なら、1周期は約1秒になります。

プログラムで指定した時間と実際の点滅周期を動画などから比較する実験にもできます。

アナログ入力とは何か

アナログ入力では、入力された電圧をA/D変換器によって数値へ変換して読み取ります。

可変抵抗、光センサ、温度センサなど、連続的に変化する電圧を測定する場合に利用できます。

analogReadとは何か

analogReadを使用すると、指定したアナログ入力ピンの電圧に対応した数値を取得できます。

取得できる数値範囲や分解能はボードによって異なるため、使用するArduinoの仕様を確認します。

可変抵抗を使ったアナログ入力実験

可変抵抗の両端を電源とGNDへ接続し、中央端子をアナログ入力へ接続すると、つまみ位置によって入力電圧を変化させることができます。

この電圧をanalogReadで読み取り、シリアルモニタへ表示すると、つまみ位置と数値の対応を観察できます。

分圧回路との関係

可変抵抗を電圧分圧器として使うと、中央端子から0 Vから電源電圧付近まで連続的な電圧を取り出せます。

この実験は、抵抗の直列回路や分圧の理解ともつながります。

ADCとは何か

ADCはAnalog-to-Digital Converterの略で、アナログ電圧をデジタル値へ変換する回路です。

連続的な電圧を有限個の数値へ変換するため、測定値には分解能があります。

分解能とは何か

ADCの分解能が高いほど、入力電圧をより細かい段階に分けて読み取ることができます。

ただし、実際の測定精度はADCのビット数だけでなく、基準電圧、電源ノイズ、センサ誤差などにも影響されます。

アナログ入力値から電圧を求める

ADCの最大値をNmax、読み取り値をN、基準電圧をVrefとすると、入力電圧は概算で、

Vin ≒ Vref × N ÷ Nmax

として求めることができます。

ただし、実際の変換式や最大値はボードの分解能によって異なります。

基準電圧の影響

アナログ入力の数値は、どの電圧を基準としてA/D変換するかによって変わります。

基準電圧が実際の想定値と異なると、読み取り値から計算した電圧にも誤差が生じます。

シリアルモニタとは何か

Arduinoとパソコンの間でデータを送受信し、測定値や動作状態を確認するためにシリアル通信を使用できます。

シリアルモニタへセンサ値や変数を表示すると、回路がどのように動作しているかを確認しやすくなります。

Serial.beginの役割

シリアル通信を開始するときは通信速度を設定します。

Arduino側とパソコン側の通信速度が一致していないと、文字化けなどが発生します。

Serial.printとSerial.println

Serial.printを使うと値を連続して表示でき、Serial.printlnを使うと表示後に改行できます。

複数の測定項目を表示する場合は、区切り文字を入れてCSV形式のように記録すると、後で表計算ソフトなどへ取り込みやすくなります。

PWMとは何か

PWMはPulse Width Modulationの略で、高速にON・OFFを繰り返し、そのON時間の割合を変える方法です。

ArduinoではPWM対応ピンを利用して、LEDの明るさやDCモーターの平均的な駆動量などを制御できます。

analogWriteとは何か

analogWriteは、対応するピンへPWM信号を出力するために使用されます。

名前にanalogとありますが、UNO R3などでは通常、連続的な直流電圧そのものを出しているのではなく、デジタル信号を高速にON・OFFしています。

デューティ比とは何か

PWMの1周期に対してHIGHとなっている時間の割合をデューティ比と呼びます。

デューティ比を大きくすると平均的な出力が大きくなり、LEDではより明るく見える傾向があります。

PWMでLEDの明るさを変える

PWM出力値を段階的に変更すると、LEDの見かけの明るさを変化させることができます。

ただし、人の目の明るさ感覚はPWM値に単純比例しないため、数値を半分にしても見た目の明るさが正確に半分になるとは限りません。

可変抵抗でLEDの明るさを制御する

可変抵抗のアナログ入力値を読み取り、その値をPWM出力範囲へ変換すると、つまみ位置に応じてLEDの明るさを変えることができます。

この実験では「入力 → 数値処理 → 出力」というマイコン制御の基本的な流れを確認できます。

map関数を使う場合

入力値の範囲と出力値の範囲が異なる場合、値を別の範囲へ対応させる処理が必要です。

map関数を使うと、アナログ入力値をPWM値や角度値などへ変換できます。

ただし、入力範囲外の値が入る可能性がある場合は、必要に応じて範囲制限も考えます。

サーボモーターをArduinoで制御する

Arduinoからサーボモーターへ制御信号を出力することで、目標角度を指定できます。

サーボモーター実験で学んだパルス幅と角度、位置フィードバックの関係を、Arduinoからの制御によって確認できます。

サーボモーターの電源に注意する

サーボモーターは動作開始時や負荷時に比較的大きな電流を必要とする場合があります。

Arduino本体の電源端子だけから給電すると、電圧低下やリセットが起こる場合があります。

必要に応じて適切な外部電源を用い、Arduino側とサーボ側のGNDを共通にします。

スイッチ入力実験

押しボタンスイッチをデジタル入力へ接続し、押したときにLEDを点灯させる実験は、入力と出力の基本を確認するのに適しています。

ただし、入力端子を何にも接続していない状態では値が不安定になることがあります。

フローティング入力とは何か

入力ピンがHIGHにもLOWにも明確に接続されていない状態をフローティングと呼びます。

周囲の電気ノイズの影響で値が不規則に変化することがあります。

プルアップ抵抗・プルダウン抵抗

スイッチが開いているときの入力状態を明確にするため、抵抗でHIGHまたはLOWへ固定します。

Arduinoでは内部プルアップ抵抗を利用できるボードもあり、外付け抵抗を減らせる場合があります。

INPUT_PULLUPを使う場合

内部プルアップを使うと、スイッチが開いているときHIGH、押したときLOWになる回路が一般的です。

そのため、「押したときHIGH」と思い込むとプログラムの判定を逆に書いてしまう場合があります。

チャタリングとは何か

機械式スイッチは、押した瞬間に接点が一度だけ切り替わるとは限らず、短時間にON・OFFを繰り返すことがあります。

この現象をチャタリングと呼びます。

1回押しただけなのに複数回入力されたように見える場合は、チャタリングの影響を考えます。

チャタリング対策

プログラムで一定時間入力を無視する方法や、複数回読み取って安定した値だけを採用する方法があります。

回路的にコンデンサなどを用いて抑制する方法もあります。

delayの特徴

delayを使用すると、指定時間だけプログラムの進行を停止できます。

LED点滅など単純な実験では便利ですが、停止中は他の処理が進まないため、複数の入力や出力を同時に扱う場合は不便になることがあります。

millisを使う考え方

プログラム開始からの経過時間を利用して処理時刻を判断すると、プログラム全体を止めずに一定時間ごとの処理を行えます。

センサ計測とLED点滅など複数の処理を並行して行う場合に利用できます。

センサを接続する

Arduinoへ温度、光、距離、圧力などのセンサを接続すると、物理量を電気信号として読み取ることができます。

センサによってアナログ電圧を出すもの、デジタル通信を使うものなど方式が異なります。

センサ値と物理量は同じではない

analogReadなどで得た数値は、そのまま温度や照度を表しているとは限りません。

センサの特性式や校正式を使って、電圧やデジタル値から物理量へ変換する必要があります。

校正とは何か

センサ出力と既知の物理量を比較し、対応関係を求める作業を校正と呼びます。

例えば既知温度でセンサ値を記録し、その関係から未知温度を求めることができます。

参考実験1:LED点滅

項目 内容
入力 なし
処理 一定時間ごとにHIGH・LOWを切り替える
出力 LED
考察 周期、点灯時間、デジタル出力

参考実験2:可変抵抗の値を読む

項目 内容
入力 可変抵抗の電圧
処理 A/D変換
出力 シリアルモニタへ数値表示
考察 入力電圧とデジタル値の関係

参考実験3:可変抵抗でLEDを調光する

項目 内容
入力 可変抵抗
処理 入力値をPWM出力値へ変換
出力 LEDの明るさ
考察 入力・処理・出力の関係

参考実験4:サーボモーターの角度制御

項目 内容
入力 プログラムで指定した角度
処理 サーボ制御信号を生成
出力 サーボモーターの角度
考察 目標角度と実測角度、バックラッシュ

参考測定結果

条件 入力値 出力結果の例
可変抵抗最小 低いADC値 LEDが暗い
可変抵抗中央 中間ADC値 LEDが中程度の明るさ
可変抵抗最大 高いADC値 LEDが明るい
サーボ90°指定 目標90° 約90°付近で停止

結果の書き方の例

可変抵抗をアナログ入力へ接続し、読み取り値をシリアルモニタへ表示した。つまみを回すと入力値は連続的に変化し、中央付近では最大値のおよそ半分に相当する値が得られた。

次に、この入力値をPWM出力範囲へ変換してLEDへ出力したところ、可変抵抗を回すにつれてLEDの見かけの明るさが変化した。このことから、Arduinoがアナログ入力をデジタル値として読み取り、その値を処理して別の出力へ変換できることを確認した。

入力値が安定しない場合

アナログ入力値が数値的に少し変動することは珍しくありません。

電源ノイズ、接触抵抗、センサノイズ、ADC分解能などが影響します。

値が大きく変動する場合は、配線やGND接続も確認します。

平均化によるノイズ低減

複数回測定した値の平均を求めると、ランダムな変動を小さくできる場合があります。

ただし、平均回数を増やすと応答が遅くなるため、測定目的とのバランスが必要です。

Arduinoがリセットされる場合

モーターやサーボなどを動かした瞬間にArduinoが再起動する場合、電源電圧が低下している可能性があります。

大きな負荷をArduino本体の電源から直接駆動していないか確認します。

モーターをArduinoピンから直接駆動しない

DCモーターなどはArduinoのI/Oピンで直接駆動できる電流を超える場合があります。

トランジスタ、MOSFET、モータードライバなどを用いて、Arduinoは制御信号だけを出す構成にします。

誘導性負荷の逆起電力

モーター、リレー、コイルなどの誘導性負荷では、電流を急に切ったときに大きな電圧が発生する場合があります。

この逆起電力がArduinoやトランジスタを損傷する可能性があるため、回路に応じてフライバックダイオードなどを使用します。

5 Vと3.3 Vを混同しない

ArduinoボードによってI/O電圧が異なります。

5 V系のセンサや信号を3.3 V系ボードへそのまま入力すると、定格を超える可能性があります。

使用するボードと外部機器の電圧仕様を確認します。

GNDを共通にする

Arduinoと外部電源、センサ、モータードライバなどを組み合わせる場合、信号の基準となるGNDを共通にする必要があります。

GNDが共通になっていないと、信号を正しく認識できない場合があります。

ブレッドボードの配線ミス

ブレッドボードは内部で複数の穴が接続されているため、見た目だけでは回路の接続状態がわかりにくい場合があります。

LEDが点灯しない、センサ値が変化しない場合は、部品だけでなくブレッドボード内部の接続も確認します。

短絡に注意する

5 VとGNDを直接接続すると短絡状態となります。

大きな電流が流れ、Arduino、USBポート、電源などを損傷する可能性があります。

配線変更は電源を外した状態で行う方が安全です。

プログラムが書き込めない場合

  • USBケーブルが通信対応でない
  • 使用ボードの種類が正しく選択されていない
  • シリアルポートが正しく選択されていない
  • USB接続が不安定である
  • 別のソフトがシリアルポートを使用している
  • ボードやUSB変換回路に問題がある

プログラムは動くが回路が動かない場合

プログラムに問題がなくても、LEDの極性、抵抗値、GND、電源、ピン番号などが誤っていれば回路は動作しません。

ソフトウェアとハードウェアの両方を分けて確認することが重要です。

デバッグとは何か

プログラムや回路の問題を段階的に確認して原因を特定する作業をデバッグと呼びます。

Arduinoではシリアルモニタへ変数値を表示し、「入力は正しく読めているか」「条件分岐は正しいか」などを確認できます。

問題を小さく分ける

複雑な回路が動かない場合は、LEDだけ、センサだけ、サーボだけというように機能を分けて確認します。

すべてを同時に接続した状態で原因を探すより、問題を切り分けやすくなります。

主な誤差・実験上の問題

原因 結果への影響 改善方法
ADC分解能 入力値が段階的になる 分解能を考慮して解析する
基準電圧の誤差 換算電圧がずれる 実際の電源・基準電圧を測定する
電源ノイズ 入力値が変動する 配線・電源を見直し平均化する
接触不良 値が不安定になる ブレッドボードや配線を確認する
フローティング入力 HIGH・LOWが不規則になる プルアップ・プルダウンを使用する
電源容量不足 リセット・誤動作が起こる 負荷に適した外部電源を使う

うまくいかなかった場合の考察例

可変抵抗のつまみを固定していてもアナログ入力値が数カウント程度変動した。入力回路には電源ノイズやADCの量子化誤差が含まれるため、完全に一定の値にならなかったと考えられる。

また、サーボモーターを接続した状態では値の変動が大きくなった。サーボ動作時の大きな電流変化によって電源電圧やGND電位が変動し、アナログ入力にも影響した可能性がある。

改善点の書き方

配線を改善する方法

  • 電源を切った状態で配線する
  • ピン番号を回路図と照合する
  • GNDを共通にする
  • ブレッドボード内部の接続を確認する
  • 不要に長い配線を避ける

測定を改善する方法

  • 入力値を複数回測定して平均する
  • 基準電圧を実測する
  • 同じ条件で複数回測定する
  • シリアルモニタで生データを記録する
  • 必要に応じてCSV形式で保存してグラフ化する

電源条件を改善する方法

  • モーターやサーボへ適切な外部電源を使用する
  • 負荷に必要な電流容量を確認する
  • 3.3 V系と5 V系を区別する
  • 電源ノイズが大きい場合は回路構成を見直す
  • 誘導性負荷には適切な保護回路を使用する

浅い考察とよい考察の違い

浅い考察の例

Arduinoで可変抵抗を読むとLEDの明るさを変えられた。

よりよい考察の例

可変抵抗の中央端子電圧をArduinoのアナログ入力で読み取り、その値をPWM出力値へ変換してLEDへ出力した。可変抵抗のつまみ位置を変えるとADC値が変化し、それに応じてPWMのデューティ比も変化したため、LEDの見かけの明るさが変化したと考えられる。この実験から、Arduinoでは外部のアナログ量をデジタル値へ変換し、プログラムで処理した後に別の出力へ反映できることが確認できた。

アナログ入力についての考察例

入力電圧を一定にしてもanalogReadの値にはわずかな変動が見られた。これは電源ノイズ、ADCの分解能、接触状態などの影響によるものと考えられる。複数回測定して平均すると値のばらつきが小さくなったことから、ランダムなノイズ成分が含まれていたと考えられる。

PWMについての考察例

PWM出力値を増加させるとLEDが明るく見えた。PWMでは出力電圧そのものを連続的に変化させるのではなく、高速なON・OFFの時間割合を変化させているため、LEDが受ける平均的な電力が変化したと考えられる。

スイッチ入力についての考察例

プルアップ設定を使用した場合、スイッチを押していないときHIGH、押したときLOWが読み取られた。内部プルアップ抵抗によって入力端子が通常HIGHへ保持され、スイッチを押すことでGNDへ接続されたためである。

フローティング入力についての考察例

入力ピンを何にも接続しない状態ではdigitalReadの値が不規則に変化した。入力端子の電位が明確に固定されていなかったため、周囲の電気ノイズなどを拾ってHIGH・LOWが変化したと考えられる。

サーボモーターについての考察例

Arduinoからサーボモーターへ角度指令を与えると、出力軸は指定角度付近で停止した。ただし、目標値と実測値には数度の差があり、サーボ内部のギアのバックラッシュや位置検出器の精度が影響したと考えられる。

LED回路との関係

ArduinoでLEDを点灯させる場合も、LEDそのものの電気特性は通常のLED回路と同じです。

順方向電圧、電流制限抵抗、極性などを理解していないと、Arduinoのプログラムが正しくても回路は正常に動作しません。

オームの法則との関係

Arduinoの外部回路でも抵抗、LED、センサなどには電圧と電流が関係します。

抵抗値の選定や電流計算では、オームの法則を利用します。

マイコンを使う実験でも、基本的な電気回路の理解が必要です。

コンデンサとの関係

Arduinoの電源回路やセンサ回路では、ノイズ低減や電源安定化のためにコンデンサが使われます。

コンデンサ実験で学んだ充放電や電圧変動を抑える性質が、マイコン回路でも利用されています。

電磁石・モーターとの関係

Arduinoを用いると、トランジスタやドライバ回路を介して電磁石やモーターを制御できます。

Arduino自体が大電流を供給するのではなく、制御信号を出し、外部の駆動回路が負荷へ電流を供給する構成が基本です。

サーボモーターとの関係

サーボモーターは、Arduinoから角度指令を出せる代表的なアクチュエータです。

Arduinoでセンサ入力を読み、条件に応じてサーボ角度を変えると、簡単な自動制御システムを作ることができます。

ロボット制御への発展

Arduinoに複数のセンサとモーターを接続すると、周囲の状態を読み取り、その結果に応じて動作するロボットへ発展させることができます。

例えば距離センサで障害物を検出し、モーターの回転方向を変えるといった制御が可能です。

データロガーへの発展

センサ値を一定時間ごとに読み取り、シリアル通信や記録媒体へ保存すると、簡易データロガーとして利用できます。

温度、照度、電圧などの時間変化を測定し、グラフ化する学生実験にも発展できます。

レポートで使える表現例

  • Arduinoのデジタル出力を用いてLEDの点灯・消灯を制御した。
  • 可変抵抗の電圧をアナログ入力で読み取り、デジタル値として取得した。
  • アナログ入力値の変化に応じてPWM出力を変化させた。
  • PWM出力の増加に伴ってLEDの見かけの明るさが増加した。
  • シリアルモニタを用いて入力値の時間変化を確認した。
  • フローティング状態ではデジタル入力値が不安定になった。
  • 内部プルアップを使用するとスイッチ入力を安定して読み取れた。
  • アナログ入力値にはADC分解能や電源ノイズによるばらつきが見られた。
  • モーターやサーボの駆動時には電源電圧の低下が誤動作の原因となる場合がある。
  • Arduinoは入力、演算、出力を組み合わせることで簡単な自動制御を行える。
  • マイコン制御でもLED、抵抗、コンデンサ、モーターなどの基本的な回路知識が必要である。

Arduino実験の考察で確認するポイント

  • 使用したArduinoボードを明記したか
  • デジタル入力・出力を区別したか
  • アナログ入力とA/D変換の関係を説明したか
  • PWMが高速なON・OFFであることを説明したか
  • 入力値と出力値の対応を記録したか
  • シリアルモニタを使って測定値を確認したか
  • フローティング入力とプルアップの違いを理解したか
  • ADC分解能や基準電圧を誤差要因として考察したか
  • 電源容量不足によるリセットや誤動作を考慮したか
  • モーターなどをI/Oピンから直接駆動しない理由を説明したか
  • 3.3 V系と5 V系の違いを確認したか
  • LED、サーボ、センサなど既存の回路実験との関係を説明したか

まとめ

Arduino実験では、センサやスイッチなどから入力を読み取り、プログラムで処理し、LED、サーボモーターなどへ出力することで、電子制御の基本である「入力・処理・出力」の流れを確認できます。

デジタル入出力ではHIGH・LOWの2状態を扱い、アナログ入力では連続的な電圧をA/D変換によって数値化します。また、PWMを利用するとLEDの明るさやモーターの駆動量などを段階的に制御できます。

一方、Arduinoを使用しても電気回路の基本が不要になるわけではありません。LEDの電流制限抵抗、モーターの駆動電流、コンデンサによる電源安定化、GNDの共通化など、これまでの回路実験で学んだ内容がそのまま重要になります。

レポートでは、単に「Arduinoで動かした」と記述するのではなく、「どの入力をどのように読み取ったか」「プログラムでどのような処理を行ったか」「どの出力へ変換したか」「測定値が不安定になった原因や電源・配線による問題は何か」を実験結果と結びつけて考察することが重要です。