公開日:2022/07/23
title.png

21st Season


#21-9 風速計を作ろう

 有名な話ですが、

です。

 今回は、この原理を応用してDCモータに羽根を取り付け、風で回転させて起電力を検知しようと思います。発電と言うほどの電力は得られないはずですので、回転を検知して風速計などへの応用を探ってみます。

ブラシDCモータを使う

 ブラシDCモータは、とても簡単に回すことのできるモータです。モータの電極に乾電池などで直流電力を印加すると、回ります。
 回転速度は、ある程度、印加する電力の大きさで制御することができます。PWM等を使って、単位時間当たりの平均的な電力を調整する事でも、制御可能(「#3-8 ブラシDCモータ」)です。

 ただ、止まった状態から回転始めるのには大きな電力を必要とするので、ゆっくり回るのは苦手です。トルクもあまり大きくは無いので、ゆっくり回したい時はギアボックスなどを使って回転速度を落として使います。ギア比によってトルクも稼げるので、一石二鳥です。

 ブラシDCモータを発電機として使う時も、ブラシによって電流の方向がタイミング良く切り替わるため、結果としてブラシDCモータの出力端子に生じる起電力は直流となります。


 なるべく大きな起電力を得るためには、なるべく大きなモータを使うのが良いです。が、今回使うのは、130型と呼ばれるブラシDCモータです(下図)。

ar38_3vmtr.jpg

 ちょっとした模型などの工作に使う、小さなモータです。

羽根を付ける

 風速計に応用するには、風で回る羽根をモータに取り付ける必要があります。羽根は、壊れたUSB扇風機から回収しておきました(下図)。

a219_fan.jpg

 風💨を受けて回転させるためには厚手のビニルなどでできたペラペラな羽根ではダメなので、大きめの金属(多分アルミ)製を選びました。

整流回路

 ブラシDCモータの起電力は直流(DC)なので、気を付けて実験すれば整流回路無しでも問題ありません。
 ただ、起電力は確かに直流なのですが、モータの回転方向によっては、+側になったり、−側になったりするので、間違って負の電圧をArduinoに接続してしまわないように注意して下さい。壊れます。

 想定したのと逆側から風が吹いた場合や、間違えて電極を逆に接続してしまった場合等、起電力が負(−側)になっても安全に実験できるように、整流回路を通しておこうと思います。

a219_rectifier.png

 上図は全波整流回路と呼ばれます。※ダイオードブリッジ回路等とも呼ばれます。
 入力交流(AC)信号が+側に振れても、−側に振れても、+側の直流(DC)信号に変換してくれます。交流信号の−側振幅は、0Vを境に折り返して+側の信号となって出力されます。
 いわば、交流(AC)信号を入力すると、その絶対値を取った信号が直流(DC)信号として取り出せる回路です。


 もし、交流「電力」を直流「電力」に変換して使う場合には、直流電力の脈動を抑えるために平滑化コンデンサCsを接続して使うのが一般的です。

直流と交流

 信号にせよ、電力にせよ、

 以下に示す4つの信号(V1〜V4)は、それぞれ直流でしょうか?交流でしょうか?

a219_acdc.png


 整流回路は、入力交流信号の絶対値(abs()関数)を取る回路と見ることができるので、仮に、上図の信号を全波整流すると、下図の様な出力が得られます。

a219_fulwav.png

※上図はabs()関数で作図したイメージ図で、実際に全波整流回路を通した波形とは異なります。

起電力が観測できない

 基本的な回路設計と装置の試作が終わったので、Arduino UNO+Logiscopeを使って、ブラシDCモータで発電した起電力を観測しようと試みたのですが、起電力が観測できません!


 今回の目的は「発電」ではなくて「モータの回転を検知して風速計に応用すること」ですので、切り替えて先へ進みましょう。

 羽根の回転によって生ずる起電力が100mV未満の小振幅信号であるという前提に立って、オペアンプの非反転増幅回路で×50倍程度に増幅してみました。
 すると、漸く起電力と思われる電圧の脈動を観測できました(下図)。

  予備実験サンプル:【 】内はLogiscopeからの送信データ
  【osc,0,0,7,0】

a219_unolow.png

 オペアンプを5V駆動したので、UNOを使いました。UNOなら、5Vのアナログ入力を取り込むことができますから。ただ、メモリが少ないUNOでは上図の様に、起電力の山を3個ほど取り込むのがやっとでした。

  ……もう少し長い時間の変化を観測しておきたいな〜。

 ともあれ、UNOで観測した波形から判ったことをまとめておきます。

 以上、予備実験の結果を受けて、方針変更と、改めて詳細な設計を進めて行きます。

シミュレーションしておく

 先に予備実験を済ませているので、順番がひっくり返っているんですけどね……。シミュレーションして動作を確認しておきましょう。

 LTspiceを使った回路図は以下図の通りです。

a219_schem.png

 大体、全波整流回路と言うと、前の節で示したひし形の回路図(下図、再掲)が出てきますが、LTspice等の回路図エディタでは、素子を斜め45°に回転できない物もあるため、上図の様に記述する場合があります。

a219_rectifier.png

 見た目はだいぶ違いますが、トポロジとしてはひし形の回路図と同じですので確認して下さい。

 予備実験から得た知見を活かした風速計回路のポイントを説明しておきます。


 あまり面白げではないのですが、シミュレーション結果を以下図に示します。

a219_simwf.png

 100mVほどの入力電圧Vin(緑プロット)が、全波整流回路を抜けるとVo(青プロット)となって振幅が半分ほどになってしまいました。もし、ダイオードのモデルをシリコンダイオード(1N4007)に変更すると、この時点でほとんど波形が出てきません。ショットキダイオードを使ったことで、ようやくここまで信号が通過してきました。
 そこから×51倍の非反転増幅回路を通してVamp(赤プロット)、fc≒159HzのLPFを通してVlpf(水色プロット)としてあります。
 期待通りのシミュレーション結果を確認しました。

風の吹くまま、実験

 予備実験で、メモリの少ないUNOではキャプチャ可能な時間が短すぎることが判ったため、ここからはSTM32Logiscopeを使って実験します。

ar41_stm32.jpg

 ただし、こちらの風速計回路ではオペアンプ(LM358)を5V駆動しているので、十分注意して実験しなければなりません。
 モータの回転速度が速くなりすぎたり、非反転増幅回路の増幅率が大きすぎたりすると、オペアンプのVOH(≒4V)近辺まで出力電圧が上がりますので、STM32(3.3V定格)が壊れてしまいます。
 筆者は、UNOを使った予備実験から、「出力電圧が3.3Vを超えない範囲で実験可能」と見積もったので、注意しながら実験することとしました。

 各自の責任ですので、自信のない方は5V定格のUNOで実験してください。

※若しくは、出力端子を3.3Vでクランプして接続する。


 こちらの回路をブレッドボードなどに構築して、Vs⇔Vss間にブラシDCモータの電極を接続してください。全波整流回路を通っているので、極性は不問です(以下、測定回路部分拡大図)。

a219_circuit.jpg

 STM32にlogiscope.inoをコンパイルして書き込み、以下表に従って接続してください。

STM32 接続 風速計回路 接続 ブラシDCモータ
5V Vcc  
GND GND
PA0(ADC0) Vamp
PA1(ADC1) Vlpf
  Vs 端子1
Vss 端子2

 STM32を接続したPCでlogiscope.olvを実行してください。

logiscope.olvの実行には拙作Olive+をWindowsにインストールする必要があります。


 以下図に実験中の様子を示します。

a219_expr.jpg

2軸カメラマウントを台代わりに使っていますが、サーボモータは使っていませんので、適切にブラシDCモータを固定していただいたらOKです。


 扇風機を弱・中・強、3段階の弱で運転して、そこからおよそ60cm離した所に羽根を取り付けたブラシDCモータを設置しました。モータは扇風機(弱)の風を羽根で受けて回転しています。


  実験サンプル:【 】内はLogiscopeからの送信データ
  【osc,0,0,7,0】

a219_voalow.png

 まずは、増幅直後のVamp電圧波形を見てみました。ノイズが乗っていますが、電圧の山は識別できます。山2個でモータ1回転ですから、およそ1,970rpmです。

※上のタイミング図から、山の数N[個]と、その時間T[s]を読み取ると、回転速度R=N÷T÷2[Hz]=N÷T÷2×60[rpm]です。


  【osc,1,0,7,0】

a219_lpflow.png

 今度は、遮断周波数fc≒159HzとしたLPF通過後のVlpf波形を観測してみました。ノイズが消えて、綺麗な山になっています。回転速度は約2,000rpmと、Vampで測定したのとほぼ同じでした。

 以後は、LPF通過後のVlpf波形を使って行きます。


 扇風機の風速を3段階(弱・中・強)に変化させて、起電力を観測してみました。

a219_lpflow.png

a219_lpfmid.png

a219_lpfstr.png

 読み取ったデータを以下表にまとめます。

扇風機の風速 山の電圧 谷の電圧 回転速度
2,250mV 1,120mV 2,000rpm
2,430mV 1,200mV 2,100rpm
2,970mV 1,560mV 2,410rpm

 以下に考察します。


 扇風機の風速設定を弱に戻し、ブラシDCモータの羽根に当たる風を手で遮ることで、さらに回転数を落とした結果を以下図に示します。

a219_lpfweak.png

 単位時間当たりの山の数が少なくなりました。回転数は約1,190rpm。電圧値も低下しています(山=943mV、谷=653mV)。
 ここまで来ると、山と谷の電圧差がほとんどなくなってきました。人の目で見ると、まだ回転速度を算出可能ですが、プログラムで自動的に検出しようとすると、判定条件が厳しいと感じました。

 更に風速が下がって、「そよ風」位のやわらかな風になってしまうとブラシDCモータが回らないし、回ったところで山と谷の電位差がほとんどないので回転を検知できないことになってしまいそうです。
 この方法で風速を検出するためには、ある程度の風速が必要だと感じました。

 測定した電圧波形に於いて、単位時間当たりの山の数を数えて回転速度を知り、それを風速の目安として使おうと思っていたのですが、電圧値で風速を推定した方が、風速が小さい側の指標としては使えそうですね……。ただ、電圧値は、回転速度との関係がリニアではないし、回転によって生じる脈動(山と谷)があるので、少々使い難いです。
 ……もう少し悩んでみます。


 実用化するには、残した課題が多いな……。DCモータの起電力を使うより、ロータリエンコーダを使って回転数をカウントした方が正解かも?1コマでも回転すれば検知できるので、弱い風でも検知できる可能性が高いし。→ 今回のテーマでは、 ただ単に、DCモータの起電力と全波整流回路を使って見たかっただけ、と言う噂もある……。

※「#22-6 風速計を作ろう(2)」に完結編がございます。


btn_arduino.png

btn_prev.png btn_next.png

home