ゲヌマ・フジガヤ2(fujigaya2) blogのまとめ - VVVFの編集
 VVVF部分のパラメータはkasoku.hに書いている。

Kasoku.hの中身

 配列は二つの部分に分かれている。上配列でVVVFの音色の切替ポイント示している。下配列がVVVFの音階とモーターの強さの配列である。
注意)このページのソースをスケッチにコピーすると表示のために全角スペースなどを使っているのでエラーになる。
  • 上の配列 progmem_ref_kasoku[10]
 0〜8までのVVVFの配列の切替ポイントを指示している。
const PROGMEM int progmem_ref_kasoku[10] =
{
0,//0:E231
5,//1:E231和音
10,//2:113系
15,//3:207系
20,//4:シンプルなもの
25,//5:京急
40,//6:test
45,//7:test
50,//8:test
55,//終わり+1
};
  • 下の配列 progmem_kasoku[55][8]
 VVVF配列のそのもの。
//速度領域始め、終わり、周波数始め、終わり、周波数2始め、2終わり、Duty始め、終わり
const PROGMEM int progmem_kasoku[55][8] =
{   
   //0:E231元に近いもの
   {   0, 100,1008,1008,1008,1008,   0, 508},
   { 101, 150,1008,1500,1008,1500, 508, 610},
   { 151, 512, 461, 914, 461, 914, 458, 661},
   { 513, 700, 914, 914, 461, 914, 661,1017},
   { 701,1023, 914, 914, 914, 914,1023,1023}, 
   //1:E231パルス幅変更で音に深みを持たせたつもりのもの
   {   0, 100, 750, 750,1500,1500,   0, 508},
   { 101, 150, 750,1500,1500,3000, 508, 610},
   { 151, 512, 345, 685, 691,1371, 458, 661},
   { 513, 700, 685, 685,1371,1371, 661,1017},
   { 701,1023, 685, 685,1371,1371,1023,1023},
   //2:113系
   {   0, 512, 345, 685, 691,1500,   0, 512},
   { 513, 700, 685, 685,1500,1500, 513, 700},
   { 701,1019, 685, 685,1500,1500, 701,1019},
   {1020,1021, 685, 685,1500,1500,1020,1021},
   {1022,1023, 685, 685,1500,1500,1022,1023},
   //3:207系
   {   0, 100, 350,1000, 350,1000,   0, 100},
   { 101, 200, 400,1000, 400,1000,  70, 200},
   { 201, 300, 450,1000, 450,1000, 140, 300},
   { 301, 512, 450,1000, 900,1500, 240, 512},
   { 513,1023,1000,1200,1500,2400, 513,1023},
   //4:シンプルなもの
   {   0, 255, 225, 750, 450,1500,   0, 255},
   { 256, 511, 375, 685, 750,1500, 220, 511},
   { 512, 767, 375, 685, 750,1500, 480, 767},
   { 768,1021, 685, 685,1500,1500, 768,1021},
   {1022,1023, 685, 685,1500,1500,1022,1023},
   //5:京急 ドレミファ
   {   0,  10, 349, 349, 349, 349,   0,  20},//F
   {  11,  20, 392, 392, 392, 392,  21,  40},//G
   {  21,  25, 440, 440, 440, 440,  41,  50},//A
   {  26,  30, 466, 466, 466, 466,  51,  60},//Bb
   {  31,  35, 523, 523, 523, 523,  61,  70},//C 
   {  36,  40, 587, 587, 587, 587,  71,  80},//D
   {  41,  45, 622, 622, 622, 622,  81,  90},//Eb
   {  46,  50, 698, 698, 698, 698,  91, 100},//F
   {  51,  55, 783, 783, 783, 783, 101, 110},//G
   {  56, 100, 783, 783, 783, 783, 110, 150},//一定音
   { 101, 130, 880,1125,1760,2250, 170, 200},//ノコギリ1
   { 131, 160, 750,1100,1500,2200, 185, 230},//ノコギリ2
   { 161, 190, 600, 900,1500,1800, 210, 260},//ノコギリ3
   { 191,1022, 550,1000,1100,2000, 230,1022},//ノコギリ4長い
   {1022,1023,1000,1000,2000,2000,1022,1023},
   //6:テスト用
 ・・・・(省略)・・・・
};

VVVF配列の作り方

 VVVF音は音に厚みを出すため、2和音を使用しているが、混じって二つの周波数の真ん中の周波数になる。
 例えば、750Hzと1500Hzの音を出すとする。
 すると、750[Hz]の音の周期は1333[us]、1500[Hz]の周期は667[us]で、この二つの周期が交互にくるので、合成の周期は1000[us](=(1333[us]+667[us])/2))となる。なお、周期1000[us]のとき周波数は1000[Hz]である。
 イメージグラフが書ける表はこちら
 この表は、5段のもののため、ドレミファVVVFみたいのを作るときは、もう少し段数を増やす必要がある。
 モーター指示値に対するモーター出力値の表がある理由は、E231、ドレミファVVVFなどは同じ音階の音が続きながらモーター回転数だけ上がるためと、PWM周波数が高いと低い場合に比べモーター出力が非力なため、それを調整するためである。
表のイメージは以下。


次へ Melody部分の編集