ArduinoのPWMキャリア周波数を20KHzにする

  • 2020.04.03 Friday
  • 15:25

Nゲージ鉄道模型で自動運転を楽しんでいます。

自動運転は、マイコンとして Arduino Nano Every を使ってPWM制御を使って速度を調整しています。

 

走行中の速度は勿論、加速や減速時もデューティ比を変えて制御していますが、Arduino の場合、PWMキャリア波は一般的に490Hzか、976Hzの周波数で、可聴域の真っ只中にあり、モータはキーン言う音を発して走行します。

このため、パルス制御のコントローラの様に、可聴域外の20KHzまで周波数を上げる必要があるのです。

 

その方法として、「Arduino Nano Every のPWM周波数をアップする」を紹介しました。

ここで、キャリア周波数を 15.7KHz まで上げる事が出来ました。

方法は、下記の記述を追加するだけでした。

  TCA0.SINGLE.CTRLA = 0b0101 ;

 

しかし、後期高齢者の小生には充分でしたが、若い人にはまだ聞こえる恐れがあります。

そこで、DEKOさんのアヤシいお部屋の「Arduino Nano Every」の記事のごとく、20MHzに設定できるメニューを追加してテストを実施しました。

 

Nano Every で使用しているCPUは Uno と違って、ATMega4809を使用しているのでクロックスピードがもともと20MHzあり、Nanoとの互換性のために、16MHzに落として使用しているとの事。それでは、もとに戻してやれば、16MHz ⇒ 20MHzなので、16KHz ⇒ 20KHzになると考えたからです

上記の実験と同じスケッチを使用して、メニューの20MHzに設定して実験してみました。

そしてオシロで確認した波形を下に示します。

CH1はD9ポートで、CH2はD10ポートです。

CH1はD10ポートで、CH2はD6ポートです。

CH1はD10ポートで、CH2はD5ポートです。

CH1はD10ポートで、CH2はD3ポートです。

 

キャリア周波数は 19.5KHz となり、狙いどうりです。

ヂューティーは30に設定しています。比でいうと30/256=12%です。

Arduinio Nano Every の場合は、一つのタイマーからPWM波形を生成していますので。5個のポートの周期と立ち上がりタイミングは全て一致している事も確認できます。

 

この方法は、Arduinio Nano Everyだけに適応できる方法です。CPUが異なるArduino Uno などには適応できません。

 

******************** 追記 **************************************************

上記のような設定にした理由については下記のサイトで説明していますので参照ください。

 鉄道模型工作実験室  Arduino Nano Every のPWMキャリア周波数を20kHzにする

 

****************************************************************************

 

 

 

コメント
コメントする








    

calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< May 2020 >>

にほんブログ村

selected entries

categories

archives

recent comment

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM