はじめに

DCCのデコーダはワンチップCPUを使用して、コントローラから指令された命令でモータをコントロールしています。
また、モータは速度制御するために、Hブリッジ回路を使い、PWM制御で速度制御を行います。
よって、このPWM波形をうまく制御すれば、DCCからでも、VVVF音(例として、ドレミファソラシド〜♪)の再現が可能になります。

VVVFとは・・・詳しいことはwikiを参照してください。
可変電圧可変周波数制御
VVVFインバータ制御

どのように、VVVF音を発生させるかと言いますとモータ制御波形を可聴域の周波数で制御させればよいのです。

通常のDCCデコーダの一例
チョッパ型(電圧振幅を固定にしてTon,ToffのDuty比を可変させる)の場合、周波数を固定にして
Duty比をコントロールさせることで、平均電圧を制御させて、モータの速度を制御します。
※図の太線が平均電圧です。

■前進時


■後進時


下図の様に周波数固定で電圧振幅を可変させることも可能

■電圧振幅制御


VVVF音を再現させるには、下図の様に周波数を変化させる必要が有ります。

■周波数制御



周波数・振幅・Duyu比の3つのパラメータを組み合わせることでVVVF音に似た音を発生しつつ
速度制御も可能となります。



上図の様に速度を上げるにつれて、周波数を可変させます。
この時にDuty比と、電圧振幅を変えて速度をコントロールさせます。
今回は、回路を簡略化するため、電圧振幅の制御は行っていません。

スロットルに対して以下の様なテーブルを作って、スロットの位置まで周波数テーブルを遷移させていきます
スロットル位置が変化無いことを検出して、周波数を可聴域から外してあげれば惰性運転しているように聞かせる
事ができます。
下表は28ステップで考えています。



実際は速度に対して、周波数とDuty比のテーブル(または、計算式)を作成することでVVVF音を作り出していきます。


回路図


■Atiny2313バージョン


実際、VVVFパターンを仕込むために、メモリがかなり必要になったため、ATMega168に変更

■ATmega168バージョン


基板

■ATmega168バージョン




2010.12.25 初版