sycom2600のアイコン画像
sycom2600 2021年02月20日作成 (2021年02月20日更新)
製作品 製作品 閲覧数 2346
sycom2600 2021年02月20日作成 (2021年02月20日更新) 製作品 製作品 閲覧数 2346

VVVF風磁励音扇風機

VVVF風磁励音扇風機

はんだを行うとき、皆さんはどのような体勢で行うのでしょうか?私は姿勢が前のめりになるので顔に煙が直撃しておそらく体によろしくないであろうと思っていました。 しかも天性の貧乏性のため、超格安のはんだを使用しています。はっきり言って質は100均以下です。そのため煙がモクモクと...そのため、いつもはPC用の140mmファンを回していましたが、12v故に安定化電源を占有もしくはいちいち出さなければならないため少し面倒でした。そのため、5vで動く扇風機が、こんな真冬に欲しくなったのですがまさかのどこにも売ってないのです。なのでどうせなら楽しく遊べる、かつ予算500円以内で作れる扇風機 というものをテーマに作っていきます。

遊べるとなると、やはり音を鳴らしたいですよね(鉄分多めの一言)
音と言えば鉄道のVVVF
インバーター音のなる扇風機なんてタモリクラ〇ぐらいでしか見たことありませんが...憧れますよね。でも三相交流は面倒です。重いです。何ならかご三相捨てられました(涙
なのでDCでそれっぽく流していきましょう。

用意するもの
パチディーノナノ(Arduino nanoの互換機)
スライド抵抗(10K)
Nch FET(今回はK2232使用)
抵抗(適当)
夏によく見かけたスマホにさせる扇風機(今回はホームセンターで100円で購入)

上から125円 150円 100円 100円
計475円です。目安までに...

まずArduinoのPWM周波数は標準で490、または980Hzです。これはPin、ボードの設計によって違いますが大体は6.5ピンが後者です。
周波数を変えるにはArduinoとしてプログラムするのは直接的には無理なのでAVR的な、マイコン的なアプローチになります。まあ行ってしまえばレジスタ値書き換えとプリスケーラの分周期変更です。

なので、皆さんの愛しのデータシート↓↓
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf

ご存じの通り328pはタイマカウンタを0~2まで持っています。内訳は8ビットが2個、16ビットが1個です。自分は16BITのカウンタ1を例にとり進めていきます。制御は13のレジスタで成り立っていてArduino系だと9.10PINに割り当てられています
またPC周波数(移送基準)は490のはずなので分周比はクロックとカウンタから
(1024x2ⅹ490)/16Mⅹ1000=62.7200000
どこか間違えてますがおおよそ64の分周比なのでしょう(適値
レジスタ値書き換えとプリスケーラの分周期変更は
AVR.hのヘッダが必要です。
TCCR〇A及びBの〇にはそれぞれカウンタ名が入ります。
PWMmodeは海外ニキに従い位相周波数基準PWM
top値はOCR1Aが多いのでOCR1Aです。 
(トップ値はなぜかOCR1Aにしてますが理由はよくわかっていませんがBだとダメ見たいです。おそらくダブルバッファされてるのかな?)
分周期は1とかにすると楽しくなっちゃうので8を選択 下位3itに注意して書き込みます。
TCCR1A = 0b00100001;
TCCR2B = 0B00010010;

ビット演算子指定について
説明が出来ないので...ネットを見ると演算子指定いっぱいでびっくりです

TOP値
式がHz/分周比とTOP値らしいので
OCR1A=(1000000/周波数)
OCR1B=(1000000/周波数xduty比)
これに合わせて関数を立てます。
これでモーターを回せば音が鳴ります。
あとは適当に周波数を変えてあげればOK
正直これ以上書くのが疲れたのでもう...

一応レジスタ部以下
#include <avr/io.h>
float duty =   ; //初期数値はとりあえず0推奨
float svc=100; //周波数
void setup() {
pinMode(9, OUTPUT);
}

void loop() {

// モード指定
TCCR1A = 0b00100001;
TCCR1B = 0b00010010;

// TOP値指定
OCR1A = (1000000 / svc);

// Duty比指定
OCR1B = (1000000 / svc * duty);
}
以下loopで可変周波数にすれば音変わります

周波数について
loopで周波数変えるのはいいけど周波数はどうするかですが
私はシーメンスVVVfにしたかったのでmapで抵抗値を整えてそれっぽく鳴らしています
周波数はネットから拾ってきました。

FETは抵抗を介さなくてもなぜか安定すると定評?の2232君を使います。Arduino と愛称抜群です。

本体ハードの加工

本体は元についてたmicroUSBを基板ごととリます。
FETと電源側に適当に配線します。
Arduino nanoを付けます 
FETのパッケージと合わさり綺麗にハマります。
AnalogPinにスライド抵抗を付けます
抑える棒がなかったので落ちてたFRP棒を使いグルーガンで固めます。

完成?出来上がりです。一応出力はロジアナで見ましたが高校のロジアナだったので写真は撮れませんでしたOrz
ちなみにこれはNゲージに応用できるのでこれでパワーパック作りました。いつか上げたいものですが書くのが面倒で

疲れたのでとりあえずここまでで...参考になったURLとレジスタについて詳しく知りたい人向けにURLを張り付けておきます。

上田ブログ様
https://b.ueda.tech/?post=06039
↑京急VVVFの周波数についてです。これをベースに自分の耳に合わせて前後10Hzくらいふればちょうどよくなります。
なんと!時間も書いてあるのでこれに合わせてディレイ割り当てて加速度で回してあげれば....

garretlab様
http://garretlab.web.fc2.com/arduino/inside/hardware/arduino/avr/cores/arduino/wiring_analog.c/analogWrite.html
↑レジスタについて詳しく乗っています。正直勉強になります。いやなりました。
他にもいろいろ乗っているので見て損はないと思いますむしろ得だらけですが時間がすごい勢いで吸われます

simple projects様
https://simple-circuit.com/arduino-frequency-counter-project/

以上です

1
sycom2600のアイコン画像
こんにちは。電子工作をまったりやっている機械科高校生です。作るものは完全に私利私欲を満たすもの又は思い付きな作品が多いと思います。作品とも言いにくいものばかりですが独学なので寛容な心で見ていただけたら幸いです(笑) 多趣味過ぎて電子工作はペース遅めですが、ながーくやっていきたいと考えています。
ログインしてコメントを投稿する