Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V Variable_BandPass_Filter
1 はじめに
2 回路概要
2.1 回路図
2.2 入力部
2.3 MCU部
2.4 出力部
2.5 アンプ部
3 入力部
3.1 回路仕様の決定
3.1.1 周波数特性
3.1.2 電圧特性
3.2 回路シミュレーション
3.3 動作テスト
3.3.1 増幅特性
3.3.2 周波数特性
4 MCU
5 出力部
5.1 回路仕様
5.1.1 周波数特性
5.2 回路
5.3 動作テスト

Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡで
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME_Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
  可変型フィルター 周辺
  可変型フィルター MCU
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:Memory  24C128(16kB)
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735について
 Si4735ラジオを作って見よう1
 Si4735ラジオを作って見よう2
 Si4735テスト中に判ったこと1
PrO:オペアンプ  オペアンプ全般
 バンドパスフィルター
 LM324
 LM358
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Old Processor他

1.はじめに

今回の装置は、CW信号等のAF信号をMCUで構成するバンドパスフィルターに通して、MCUのPWM機能にアンプを接続してスピーカーを鳴らすものです。
またこの装置はMCUのプログラムで実行するバンドパスフィルターのため、4つの可変ができます。
(1)カット周波数の可変
(2)通過バンド幅の可変
(3)フィルター段数の可変
(4)フィルターとは違いますが、コンプレッサー量の可変
を可能としています。

この装置を作成するきっかけは、Si4735を使ってSSBを受信できるようになり、次はCWのデコーダーを作成しようと進めました。

MCUで解読する前にCW信号をある程度選別できるようにCRのバンドパスフィルターを通してMCUに入力し、CW信号をテキストに変換する方が誤動作が少ない装置ができると言うことを知りました。

最終的にはパッシブ型+アィティブ型のCRフィルターを入れることで進めていましたが、
①.CR部品の精度不良により、思った周波数特性が出しにくい。

②.CWの受信をしていたところ、両交信者の周波数が多少ずれており、受信相手によりバンド幅を可変できれば楽に受信できるが、CRでは簡単にバンド幅だけ可変するのが難しい。

③.バンド幅を広げた場合接近している局の信号を弱めたいが、CR回路ではフィルター段数を簡単に可変することが出来ない。

ということで、CWの信号をMCUに入れる前にCRおよびオペアンプで構成するローパスフィルターをやめ、MCUにバンドパスパスフィルター機能を追加して処理能力不足にならないかも含め確認しながら製作することにしました。

各特性を可変できる様にすることからMCUでCW信号を検出するレベルも可変できるようにしました。
なぜ必要かと言うとフィルターのバンド幅を狭くした場合など雑音が減り、受信する信号が浮き出るように耳では聞こえて来ます。それと同じ様にMCUで検出する信号の閾値を可変しないと弱い信号を判別出来ないためです。

低コストの関係からCH32V203で開発することにしました。




2.回路概要

2.1 回路図

①入力部
②MCU部
③出力部
④アンプ部

2.2 入力部

MCUのA/D入力前の回路
単電源で動作するオペアンプで音声データを増幅する。
最大増幅周波数は最大3kHz程度
増幅ゲインは1〜20倍程度
とする。

2.3 MCU部

この回路は「はじめに」で紹介した通り安価なMCUを使用する
(1)音声入力はA/Dを使用し音声データをデジタル処理する
(2)FPU(浮動小数点演算ユニット)を使用しない。
(3)カット周波数の可変
(4)通過バンド幅の可変
(5)フィルター段数の可変
(6)フィルターとは違いますが、コンプレッサー量の可変
(7)上記設定などを表示する。
(8)音声出力はD/Aが無いので、PWMで出力する。

2.4 出力部

MCUにD/Aが無いので、PWMで出力されるため、このPWM信号を音声データへ変換する回路。
MCUでバンドパス作成のきっかけとなるパッシブ型+アクテティブ型のフィルター回路を使用する。
フィルターの特性を可変できるのだから開発理由は有るのですが、当初の開発理由:RC部品精度から特性が狙いにくいについて多少確認したい。

2.5 アンプ部

簡単な回路として、2SC1815,2SA1015のプッシュプルもありますが、手持ちで安価なアンプとしてLTK5128があり、これをAB級のアンプとして使用してみます。




3 入力部

3.1 回路仕様の決定

3.1.1 周波数特性

今回使用するのは受信器でSSBおよびCW信号から出力されるものを使用する。
このため、人が会話するのに支障の無い周波数帯域 300Hz〜3,000Hzとする。

法などを e-GOV で検索し、確認しました。
無線設備規則(昭和二十五年電波監理委員会規則第十八号)
 第四十五条の十五 航空局の・・・送信装置で 総合周波数特性として 
  変調周波数三〇〇ヘルツから三、〇〇〇ヘルツまでにおいて、六デシベル以内。
 と規定されている。

 第五十八条(FMではあるが)
 一 変調周波数は、三、〇〇〇ヘルツを超えないものであること。

などありましたので、周波数帯域を300Hz〜3,000Hzと決めました。

3.1.2 電圧特性

(1)信号中心電圧
・音声信号は交流で通常中心電圧は0(V)[GND]です。
・MCUのA/Dは入力電圧が0〜VDD(3.3V)です。
このことから音声信号の中心電圧を≒ VDD/2(V)になるように出力する。
オペアンプでこの回路を構成するが、オペアンプの電源もコスト低減からMCUのVDDと同じにするため、オペアンプを「レール・ツー・レール(Rail-to-Rail)に対応したものを使用する。

(2)増幅率
a.最大増幅率
音声信号の最小波高値として±150(mV)を想定する。
MCUのA/D最大入力は VDD電圧 ≒ 3.3(V)になる。
以上から最低倍率は 3.3 / 0.3 = 11倍以上する。
b.最小増幅率
Si4735の音声信号最大波高値として±300(mV)がこの装置に入る。
MCUのA/D最大入力は VDD電圧 ≒ 3.3(V)になる。
以上から最低倍率は 3.3 / 0.6 = ※5.5倍以下とする。
※ これ以上増幅するとマイコンのADCの入力範囲(3.3V)を超えて音が歪んで(クリッピングして)しまうため、最大でも5.5倍以下に抑える必要があります。

3.2 回路シミュレーション

LT1013と言うレール・ツー・レール特性をもったオペアンプを使用した。
増幅は非反転増幅回路にして入力と出力を同相にしました。

LTspiceを使用して回路のシミュレーションをしましたが、部品のLT1013が無く、追加するのも時間がかかるので他のオペアンプ(レール・ツー・レールでは無い)を代用したため、使用電圧が違います。
 赤線が最大増幅時の周波数特性、緑線が最小増幅時の周波数特性
 右下の回路が最大増幅時の回路、左下の回路が最小増幅時の回路

3.3 動作テスト

3.3.1 増幅特性

最低 入力:600(mV) 出力:1.2(V) 増幅率:2倍     最大 入力:200(mV) 出力:2.93(V) 増幅率:14.6倍










最大特性から、レール・ツー・レール特性のオペアンプだけに、電源電圧近くでも飽和していない事がわかる。

3.3.2 周波数特性

増幅率 2倍                      増幅率 14.6倍













実際使用するのは3kHzまでだが、100kHzまでフラットの特性を持っている。
10Hz〜250Hzの減衰は入力カップリングコンデンサー 1(uF)と入力インピーダンスによるハイパスフィルターを構成されている物と思われます。




4 MCU

MCUは別のページで紹介します。
MCU




5 出力部

5.1 回路仕様

5.1.1 周波数特性

3khzをfcとしたローパスフィルターとする。 またPWMは35.16kHzで出力されるため、この周波数に対して十分減衰すること。

5.2 回路

設計と実装で相当違うことが判っていたので、設計のfcを3.5kHz程度で設計しました。
しかし、実装する受動態の値のズレがひどく、抵抗1本だが設計値を変更しました。
設計回路と実際の回路で特に値が違っていたのは
中国製のコンデンサーを使用したせいか、10(nf)が実測で12.4(nF)、20(nF)が26.8(nF)、4.7(nF)が6.62(nF)となりました。
このため、フィルター特性が仕様外となったため、抵抗R1の5.1(kΩ)を3(kΩ)へ変更することで、Fcを3.2(KHz)でシミュレートでましたが・・(実測では?)
やはりCRのフィルターの実装が難しいと思ったところです!


5.3 動作テスト

Fcは2.92(kHz)、35kHzの減衰量は-57dB 1/708 となった。
例えば3.3VのPWM信号で4.7(mV)程度の雑音が有ると思われる。




































更新日 2026/10/24 14:47  管理者 平林 剛Hirabayashi Takeshi