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設定の流れ
- クロック・ソースをLFINTOSCまたは32MHzに設定する
- インクリメント・レジスタの値を計算し,NCOINCL,NCOINCH,NCOINCUに格納する
- パルス出力先をRC_2ピンに指定する
- オクターブごとに周波数を2倍し,音階を生成する
ミニ音源の制作
音階の生成と出力
5オクターブの音階を2秒ごとに繰り返し出力するには,NCOの設定を動的に変更し,適切なタイミングで信号を出力することが求められます. 具体的には,以下の手順で音階を生成します.
- 最初に基準となるド(C)の周波数を設定する
- 増し分値を計算し,NCOのレジスタに設定する
- 2秒ごとに音階を変更し,RC_2ピンへ出力する
- オクターブを変化させる際に,周波数を2倍する
この方法を用いることで,音階を安定して生成できます.〈著:ZEPマガジン〉
著者紹介
- 1971年 東北大学 工学部卒 大手通信機メーカにて制御機器開発に従事
- 1996年 ホームページ「電子工作の実験室」を開設
- 2003年 有限会社マイクロチップ・デザインラボ設立 代表取締役 計測制御システムコンサルタント,書籍執筆 セミナ講師
- 2012年 神奈川工科大学 工学部 客員教授
著書
- "[VOD/KIT/Book/data]ラズパイPico W×ChatGPT APIで学ぶ 会話型IoTエッジ開発,ZEPエンジニアリング株式会社.
- [VOD/KIT]PICマイコン オールイン1日学習キット ,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズパイ×Node-REDで作ろう!IoTアプリ開発入門,ZEPエンジニアリング株式会社.
- 電子工作のための PIC16F1ファミリ活用ガイドブック,技術評論社.
参考文献
- [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]M5Stack Core2付き!ESP32で学ぶPython&Arduinoプログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]STM32マイコン&Wi-Fiモジュールで学ぶ C/C++プログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]M5Stackで一緒に作ろう!IoTセンシング・エッジ×クラウド連携システム開発[改訂版],ZEPエンジニアリング株式会社.
- [VOD/KIT]実習キットでできる!ラズパイPicoでマイコン入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]LabVIEW×Arduino!初めてのパソコン計測&制御【改訂版】,ZEPエンジニアリング株式会社.