アナログ信号の読み取り方法とPWM信号の生成方法を学びます。
Author: Karl Söderby、Last revision: 2024/02/05
この章では、アナログ・デジタル変換(Analog-to-digital converter: ADC)を用いたアナログ信号の読み取り方法と、パルス幅変調(pulse width modulation: PWM)を用いたアナログ信号の出力方法を学びます。
アナログ信号は、気圧や温度、他の物理量といった、現実世界の現象を表現するのに使われます。アナログ信号はデジタル信号とは異なります。アナログ信号は無限の値をとりうるのに対し、デジタル信号は有限の値をとります。
この章では、以下の事柄を学びます。
- アナログ信号の読み取り方法
- LEDの明るさを調整するための、PWMを使った疑似アナログ信号の生成方法
アナログ信号
アナログ信号は連続した信号で、変化する量や特性を表現するために使われます。離散した状態を持つデジタル信号とは異なり、アナログ信号は、一定範囲内で、無数の値をとります。
音声や光、温度などの物理的な特性を表現するのに使われます。これらの特性を測定するのに、センサーを使います。センサーは、これらの値を電圧に変換することで、Arduinoによって測定できるようになります。
ArduinoのADCは、アナログ信号をデジタル信号に変換し、人間が信号を理解できるようにします。
アナログ信号を読み取った値は、一定の範囲内です。このコースでは、0-65535(16ビット)の範囲で、0-5Vを表現します。33000を読み取ると、その信号は約2.5Vであることを意味します。
パルス幅変調(pulse width modulation: PWM)
PWMは、特定の電圧をピンに出力する技術です。モーターの速度や、LEDの明るさを調整するのに有用です。
PWMはどのように動作するのでしょうか? PWMは、オンとオフを高速で繰り返すデジタル信号で、アナログ信号(波形)を疑似します。信号がオンの比率であるデューティ比を調整することができます。
簡単に説明すると、デューティ比が50%であれば、半分の容量ということです。
演習1: アナログ信号を読み取る
この演習では、ポテンショメーターを使いアナログ信号を読み取ります。ポテンショメーターには、内部抵抗を増減させるつまみがついていて、Arduinoで読み取る電圧を調整します。
Nano ESP32ボードにポテンショメーターを接続するには、以下の図に従ってください。
コードエディタを起動し、以下のスクリプトをmain.py
にコピー・ペーストします。そして、“Run"ボタンをクリックし、実行します。
import machine
import time
adc_pin = machine.Pin(1) # This is the A0 pin on the Arduino
adc = machine.ADC(adc_pin)
while True:
reading = adc.read_u16()
print("Analog Value: ",reading)
time.sleep_ms(500)
ポテンショメーターのつまみを動かせば、端末の値が増減します。
アナログ信号の読み取りができました。
演習2: 調光器
次の演習では、回路にLEDを追加し、前の演習のポテンショメーターで制御します。
LEDを回路に追加するには、以下の図に従ってください。
コードエディタを起動し、以下のスクリプトをmain.py
にコピー・ペーストします。そして、“Run"ボタンをクリックし、実行します。
import machine
import time
from machine import Pin, PWM, ADC
adc_pin = machine.Pin(1)
adc = machine.ADC(adc_pin)
pwm = PWM(Pin(9))
pwm.freq(1000)
while True:
raw = adc.read_u16()
pwm.duty_u16(raw)
time.sleep_ms(20)
つまみを回し、つまみの位置によってLEDの明るさが変わるのを見てみましょう。
最近の家によくある、調光器を作成しました。
まとめ
演習では、アナログ信号の読み取り方とPWMを使いLEDなどの出力デバイスを制御する方補を学びました。
この演習で取り上げた概念は、アナログ信号を取り扱うときの基礎で、様々なプロジェクトやアプリケーションに適用可能です。
次の章: シリアルプロトコル
オリジナルのページ
https://docs.arduino.cc/micropython/micropython-course/course/analog/
最終更新日
April 14, 2024