2017年2月15日水曜日

超音波風速計 贅沢にペリフェラルをつかってみた



 TIM1本をディレイに使ってみた。結論から言うと、あんまりよろしくない気がする。ADC変換を行っていないときと、ADC変換を行っているときでは、マイコンに吸われる電流が違い、それが波形を乱している気がする。なので2000サンプルで8組分の等価時間サンプリングが可能だが、少なくとも最初の1組は読み捨てる必要がありそうだ。
 次のテとしては、ADCのDMAをサーキュラモードにして、最初の1周3ミリ秒を読み捨てて、次の3ミリ秒(2週目)を使う、といった感じかな。でも本来読み捨ては1msec程度で充分なので、無駄に2msecかかることになる。ま、それでも1chあたり10msecで8ch測ったとしても0.1秒未満なわけだが。

 あと等価時間サンプリングにこだわる必用はない気がする。うまく位相を計測するアルゴリズムを考える必要があるが。
 PCで処理するならBPF通してDC成分抜いてから位相を90度ずらしてAtan2に突っ込んで直線に変換して、とかいろいろできそうなんだが、浮動小数点演算を使いたくないのでもうちょっと軽いアルゴリズムが必用。こういうところはF4を使いたくなるねぇ。

 位相を検出したりするのはいろんな用途が有るので、方法もいろいろあるのだが、ADCからの生データはDCオフセットがあるのがつらそう。デジタルフィルタを通してAC結合してから位相比較になるのかな。


 現在使ってるハードウェアリソース
・TIM2(PWMのタイミング:80kHz)
・DMA1-2(PWM波形の転送)
・TIM4(ADC開始タイミングのディレイ:1MHz、TIM2のスレーブ)
・TIM3(ADCトリガ:642.85714kHz:TIM4のスレーブ)
・DMA1-1(ADCの転送)

 もーちょっとTIMが柔軟だったら、と思うんだが、できないことはしょうがないから他の方法で工夫しないと。
 でっかいホワイトボード欲しい。ある程度の広さの作業空間とセットで。

0 件のコメント:

コメントを投稿