8bit PICで10分!ミニマムIoT製作


CLK周波数と分周比の調整 ミニ音源の制作

NCOを用いた周波数生成とCLK周波数/分周比の調整

図1 NCOを用いた矩形波生成では,インクリメント・レジスタを適切に設定することで,正確な周波数のパルスを出力できる.ポイントは,クロック・ソースの選択と分周比の計算.画像クリックで動画を見る.または記事を読む.[提供・著]後閑 哲也
詳細[VOD/KIT/data]8bit PIC/Wi-Fi/Debugger搭載!ミニマムIoTデバイス製作キット

NCO(Numerically Controlled Oscillator)は,DDS(Direct Digital Synthesizer)の原理を利用し,クロック信号を基に任意の周波数の矩形波を生成する回路です.PIC16F17146は,20ビットのアキュムレータとインクリメント・レジスタをもち,幅広い周波数に対応可能です.

NCOの出力周波数$f_{out}$は,次の式で求められます.

$ f_{out} = \frac{f_{clk} \times NCOINC}{2^{20}} $

ここで,$f_{clk}$は入力クロック,$NCOINC$はインクリメント・レジスタの値です.

入力クロックはLFINTOSC(31.25kHz)または内蔵クロック(32MHz)を使用できます.例えば,$f_{clk} = 32MHz$,$NCOINC = 1$のとき,$f_{out}$は約7.63Hzになります.

分周比の調整

音階の周波数を正確に出力するためには,インクリメント・レジスタの値を適切に設定する必要があります.例えば,ド(C)の基本周波数65.406Hzを出力するためには,増し分値は以下のように求められます.

$ NCOINC = \frac{65.406}{0.00745} \approx 8778 $

この値を3バイトに分けてNCOINCL,NCOINCH,NCOINCUに設定します.

NCO設定の流れ

  1. クロック・ソースをLFINTOSCまたは32MHzに設定する
  2. インクリメント・レジスタの値を計算し,NCOINCL,NCOINCH,NCOINCUに格納する
  3. パルス出力先をRC_2ピンに指定する
  4. オクターブごとに周波数を2倍し,音階を生成する

ミニ音源の制作

音階の生成と出力

5オクターブの音階を2秒ごとに繰り返し出力するには,NCOの設定を動的に変更し,適切なタイミングで信号を出力することが求められます. 具体的には,以下の手順で音階を生成します.

  1. 最初に基準となるド(C)の周波数を設定する
  2. 増し分値を計算し,NCOのレジスタに設定する
  3. 2秒ごとに音階を変更し,RC_2ピンへ出力する
  4. オクターブを変化させる際に,周波数を2倍する

この方法を用いることで,音階を安定して生成できます.〈著:ZEPマガジン〉

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

著者紹介

  • 1971年 東北大学 工学部卒 大手通信機メーカにて制御機器開発に従事
  • 1996年 ホームページ「電子工作の実験室」を開設
  • 2003年 有限会社マイクロチップ・デザインラボ設立 代表取締役 計測制御システムコンサルタント,書籍執筆 セミナ講師
  • 2012年 神奈川工科大学 工学部 客員教授

著書

  1. "[VOD/KIT/Book/data]ラズパイPico W×ChatGPT APIで学ぶ 会話型IoTエッジ開発,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]PICマイコン オールイン1日学習キット ,ZEPエンジニアリング株式会社.
  3. [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
  4. [VOD/Pi KIT]ラズパイ×Node-REDで作ろう!IoTアプリ開発入門,ZEPエンジニアリング株式会社.
  5. 電子工作のための PIC16F1ファミリ活用ガイドブック,技術評論社.

参考文献

  1. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]M5Stack Core2付き!ESP32で学ぶPython&Arduinoプログラミング入門,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
  4. [VOD/KIT]M5Stackで一緒に作ろう!IoTセンシング・エッジ×クラウド連携システム開発[改訂版],ZEPエンジニアリング株式会社.
  5. [VOD/KIT]実習キットでできる!ラズパイPicoでマイコン入門,ZEPエンジニアリング株式会社.
  6. [VOD/KIT]LabVIEW×Arduino!初めてのパソコン計測&制御【改訂版】,ZEPエンジニアリング株式会社.