アナログ回路におけるCRローパスフィルタ
<利用事例>
1.スイッチ入力のチャタリング防止: 機械式スイッチの接点バウンスによるノイズを除去し、クリーンな信号を得る.
2.マイコンのリセット回路: 電源投入時や外部からのリセット信号のノイズを除去し、安定したリセット動作を確保する.
3.電源用ノイズフィルタ: 電源ラインの高周波ノイズを除去し、クリーンな電源を供給する.
4.オーディオ処理: 音声信号の高周波ノイズを除去し、音質を向上させる。特にバターワース型フィルタは、通過帯域の応答が平坦で適度に急峻なロールオフ特性を持つため、オーディオアプリケーションに適している.
5.センサーのアナログフロントエンド: センサーからの出力信号に含まれる高周波ノイズを除去し、信号品質を向上させることができる.
6.方形波から正弦波の抽出: 高調波をフィルタリングして方形波から基本周波数の正弦波を抽出する.
7.アナログ-デジタル変換前の信号処理: ADC入力前に高周波成分を除去し、エイリアシングを防止する.
8.カスケード接続による高次フィルタ: 複数のCRローパスフィルタをカスケード接続することで、より急峻な遮断特性を持つ高次フィルタを実現できる.
OpenModelicaを用いて簡単なCRフィルタの挙動をシミュレーション
抵抗RとコンデンサCの接続を間違えないように注意する.
(RC回路と混同しない)
CRフィルタによる出力電圧の挙動を確認
青色:パルス入力電圧
赤色:RCフィルタ後の出力電圧
CR_filter.mo
model CR_filter
Modelica.Electrical.Analog.Basic.Ground ground annotation(
Placement(visible = true, transformation(origin = {0, -40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Electrical.Analog.Sources.PulseVoltage pulseVoltage(V = 5, period = 2, width = 50) annotation(
Placement(visible = true, transformation(origin = {-62, 2}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
Modelica.Electrical.Analog.Sensors.VoltageSensor voltageSensor annotation(
Placement(visible = true, transformation(origin = {34, 32}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
Modelica.Electrical.Analog.Basic.Resistor resistor(R = 10000) annotation(
Placement(visible = true, transformation(origin = {0, 4}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
Modelica.Electrical.Analog.Basic.Capacitor capacitor(C = 10e-6) annotation(
Placement(visible = true, transformation(origin = {-34, 42}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(pulseVoltage.n, ground.p) annotation(
Line(points = {{-62, -8}, {-62, -24}, {0, -24}, {0, -30}}, color = {0, 0, 255}));
connect(voltageSensor.n, ground.p) annotation(
Line(points = {{34, 22}, {34, -24}, {0, -24}, {0, -30}}, color = {0, 0, 255}));
connect(resistor.n, ground.p) annotation(
Line(points = {{0, -6}, {0, -30}}, color = {0, 0, 255}));
connect(pulseVoltage.p, capacitor.p) annotation(
Line(points = {{-62, 12}, {-62, 12}, {-62, 42}, {-44, 42}, {-44, 42}}, color = {0, 0, 255}));
connect(capacitor.n, resistor.p) annotation(
Line(points = {{-24, 42}, {0, 42}, {0, 14}, {0, 14}, {0, 14}}, color = {0, 0, 255}));
connect(voltageSensor.p, capacitor.n) annotation(
Line(points = {{34, 42}, {-24, 42}, {-24, 42}, {-24, 42}}, color = {0, 0, 255}));
annotation(
uses(Modelica(version = "3.2.3")));
end CR_filter;