最新Arduinoで実習!マイコン・プログラミング入門


PWMとDACを動かしてみる

PWMとより分解能の高いD-Aコンバータを試す

図1 DigiKeyチャンネル「高校生から始めるArduinoマイコン プログラミング実験室(第2回)」公開.PWMは,2値信号のHとLの時間を制御して,アナログ値を作り出す技術.画像クリックで動画を見る.または記事を読むDigiKeyチャンネル

アナログ信号を出力する2つの方法「PWM」と「D-A変換」

ArduinoとPWMの基本

Arduinoは,簡単にプログラムしてさまざまな電子機器を制御できるマイコン・ボードです.

アナログ信号を出力する際にはパルス幅変調(PWM:Pulse Width Modulation)という技術が役立ちます.PWMとは,出力信号のON時間とOFF時間を変化させることで,擬似的にアナログ値を生成する方法です.これにより,LEDの明るさを連続的に変化させたり,モータの速度を制御したりと,アナログ制御が実現できます.

PWMの基本概念と利用方法

PWMは,ディジタル信号のON時間とOFF時間を操作して疑似的にアナログ出力を作り出す技術です.

Arduinoでは `analogWrite()` 関数を使って,この信号を生成します.例えば,PWM出力ピン(ディジタル・ピン3,5,6,9,10,11)において,0から255の値を設定することでデューティ比が決まります.このデューティ比が高いほどON時間が長く,LEDがより明るくなります.デューティ比が0のときは完全にOFF,255のときは常にONであるため,電圧は最大の5Vが出力されます.

PWMとその役割

PWMのしくみ

PWM(Pulse Width Modulation)とは,ディジタル信号のON/OFFの割合を変えることでアナログ的な出力を実現する方法です.

この技術は,電圧を連続的に調整できないディジタル回路でも,擬似的にアナログ信号を出力できるという点で重要です.デューティ比(duty)は,信号がONである時間の割合を表し,例えば50%のデューティ比ならば,出力電圧は約2.5Vです.

PWMとD-A変換

PWM 回路は,電源回路やモータ制御などで広く用いられていますが,PWM回路にはいくつかの課題が存在します.

その1つがスイッチング動作に伴う高周波ノイズの発生です.特に高周波帯域でのノイズは,回路の動作に悪影響を与え,フィルタリングやシールド対策が必要となります.また,スイッチングによるリプル電圧も発生し,出力電圧の安定性に問題が生じることがあります.

PWM回路の分解能は,一般的に制御信号のディジタル解像度に依存します.分解能を高めるためには,PWM信号の周波数やタイマーのビット数を増やす必要がありますが,高い周波数ではスイッチング損失が増加し,効率が低下する可能性があります.このため,PWM回路では高分解能を得るのが難しいとされています.

一方で,D-A変換回路は,高分解能でありながら低ノイズなアナログ信号を生成することが可能です.D-A変換は,ディジタル信号を滑らかなアナログ信号に変換するため,PWMとは異なりスイッチングによるノイズやリプルの影響がありません.

D-A変換回路は広帯域にわたって安定した信号を提供でき,特に高精度なアプリケーションに適しています.オーディオ機器や測定器,通信機器など,精密なアナログ信号が要求される分野で多く採用されています.

D-A変換回路は,直流から高周波帯域に至るまで,低歪みかつ高精度な信号を生成する能力を持っています.このため,アナログ信号の品質を重視する設計では,D-A変換が有効な選択肢となります.〈著:ZEPマガジン〉

動画を見る,または記事を読む

チャプタ・リスト

  • 1:19 LEDの明るさを変化させる
  • 3:43 アナログ信号を生成する技術“PWM”
  • 4:58 PWM信号を出す関数“analogWrite”
  • 5:44 よく使うプログラミングの基本演算子
  • 8:29 アクティブ・ブザーで音を鳴らす
  • 10:15 パッシブ・ブザーでドレミファソラシド
  • 11:26 Arduino R4の新機能「D-A変換」

著者紹介

  • 2009年3月 京都大学大学院情報学研究科博士後期課程修了.日本学術振興会特別研究員(DC2),舞鶴工業高等専門学校助教,京都大学特定助教,奈良先端科学技術大学院大学助教,大阪大学講師
  • 2019年3月 大阪大学大学院工学研究科機械工学専攻准教授.ノイズシェーピング理論に基づく量子化器設計およびその応用に関する研究に従事.博士(情報学).

著書

  1. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【ロバスト制御編】,ZEPエンジニアリング株式会社.
  2. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【PID制御編】,ZEPエンジニアリング株式会社.
  3. [VOD]Pythonで一緒に!ロボット制御のモデルベース設計【状態フィードバック制御編】,ZEPエンジニアリング株式会社.
  4. [VOD/Pi2W KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  5. [VOD/KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.
  6. Pythonによる制御工学入門(改訂2版),オーム社(2024).
  7. 制御系設計論,コロナ社(2021).
  8. やさしくわかるシーケンス制御,オーム社(2020).
  9. Pythonによる制御工学入門,オーム社(2019).
  10. 倒立振子で学ぶ 制御工学,森北出版(2017).
  11. Arduino×Pythonで動かしながら学ぶモータ制御入門,トランジスタ技術 2020年9月号,CQ出版社.

参考文献

  1. [VOD/Pi KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]MATLAB/Simulink×ラズパイで学ぶロボット制御入門,ZEPエンジニアリング株式会社.
  3. [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]確率・統計処理&真値推定!自動運転時代のカルマン・フィルタ入門,ZEPエンジニアリング株式会社.