<< 前のページ
2025年4月8日(火) 21:08
一発動作を期待したが、全く反応しない。
2系統の出力は交換しても動くはずなので、結線の組み合わせは12通り。片っ端から験してみる。残念ながら、すべての組み合わせで無反応。完全にアテが外れた。
だが、設定周波数を確認する液晶ディスプレイに、何も表示されない。出力をオシロで確認しても、動作している。なぜか、表示だけできない。プログラムは、表示するようにしたまま変わらない。そもそも試験中に設定値を確認できないと困るので、液晶ディスプレイはずっと表示可能状態のままだ。
PWM出力がI2Cに影響しているとも思えないのだが、これでは周波数不明。
取り敢えず抵抗を延々回して設定値を変えてみるが、超音波モーターは全くの無反応。
周波数が共振からどれぐらい外れていると回転しないかは分からない。外れていても低速ながら反応はあると期待していたが、そうではないかもしれない。あるいは、駆動方法が根本的に間違っているのかもしれない。
ただ、ここまで無反応だと、まさに手掛かりがない。
超音波モーターを動かすことが目的ではなく、ラジコン戦車の砲塔を回すことが目的である。これ以上はこだわらず、ひとまず断念することにした。
written by higashino [カメラ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2025年4月7日(月) 21:29
テスターで確認すると、2つの出力ともにGNDへプルダウンされている。

いっぽうPWMの設定ミスは更に存在した。DUTY比は Duty 値で決まるのではなかった。Duty - Phase によって決まるのだ。本当に紛らわしい。

ソフト修正だけ行ってみると、想定通りDUTY50が実現できた。位相も90度ズレている。
しかし、チャンネル1がプルダウンされていないかのような症状に変化なし。別の場所で配線ミスしてないかテスターで調べるが、異常は発見できない。
一部にハンダ付け作業困難な部分があってそこがハンダ付け不良になっている可能性が否定できないので、抵抗を外して別の実装方法でハンダ付けし直すことにした。抵抗は2個所でハンダ付けされているが、作業の容易な一方のハンダを溶かすと、もう一方もポロっと外れた。これやっぱハンダ付け不良だったな。

改めてプルダウン抵抗をハンダ付けすると、遂に想定通りの出力波形が出現した。

これでようやく、超音波モーターの動作に挑戦できる。
written by higashino [カメラ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2025年4月6日(日) 20:26

まず、MCCでPWM2の設定を忘れていた。おかげで、プリスケーラーが128になっていたのだ。そのため、25μ秒周期のはずが3.2ミリ秒周期になっていた。更に、コピペからの変更ミスを発見。
念のため配線も確認し、一方だけ違っていないことをチェック。
また、開始位相は Offset ではなく Phase で調整しなければならなかったのだ。これ暫く扱ってないと忘れる。用語的に Offset を使ってしまうのだ。

更に、出力に4.7KΩのプルダウンを付けて様子を見ると、2系統目は波形が立下がるようになった。しかし1系統目は変化が無い上に、DUTYが怪しい。

逆回転出力だと、位相はズレている模様。でもDUTY設定やはり間違えてるっぽい。
written by higashino [カメラ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2025年4月5日(土) 21:11
続けて、PWM出力を元に超音波出力を生成する部分を実装する。
念のため最終出力にショットキーバリアダイオードを仕込んでおく。
TLP250 と最終出力には、12Vを配電。
ボリュームを操作し、PWM周波数が40KHzとなるよう800に調整。最終出力をオシロで確認する。すると、PWM周期が期待した25μ秒から大幅に異なる3ミリ秒以上になっている。電圧が下がっていないのは負荷ゼロが効いてしまっているので、測定時は150Ωぐらい付けておくべきだろう。
更に問題なのは、2系統出力のうち1系統しか出力できていない。

ハードウェアの製作ミスと、ソフトウェアのバグ。両方ありそうだ。
written by higashino [カメラ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2025年4月4日(金) 19:11

コントロールはノイズ耐性が高い dsPIC を使いたいが、PWMで実験するには PIC16F1579 の方がやりやすい。とにかく動作させられるかどうかが今は問題なので、手早く8ビットPICを使うことにする。

更に、共振周波数が不明。共振周波数を手軽に変更しつつ試せるようにすべく、わざわざボリュームでADC入力値を可変にし、それに基づいて周波数を変更できるようにする。
これは当面のハード製作を面倒にするが、作った後の実験は楽になる。
特に8ビットPICはプログラムのたびに抜き差しせねばならないので、周波数を変えるたびに再プログラムは面倒に過ぎる。更に、PicKit
は書き込み失敗を多発させるので尚更プログラム回数は減らしたい。
PIC16F1579 でADCを使ったことがないのは不安材料。
仕様書で確認すると、
1)ADCON0.ADON = 1 とする
2)読み出すチャンネルを設定する
3)ADCON0.GO/DONE = 1 とする
4)ADCON0.GO/DONE = 0 となるまで待つ
5)AD/RES を読み出す
で取得できるようだ。
このうち、1)はMCCで設定済みで良いし、使用するチェンネルが1つなら2)もMCCで設定しておけば良い。あとは、
ADCON0bits.GO_nDONE = 1;
while (ADCON0bits.GO_nDONE) ;
vol = AD/RES;
という感じで読めば良い。
ボリュームの他に押しボタンを2つ設置し、ボリューム値とボタン状態を液晶ディスプレイに表示するところまで作ってみる。
DC-DC コンバーターは、12Vを生成するのに使う。
ADC変換値は10ビットで、そのままPWMの周期に設定すれば良い感じのはず。
最終的にはボタンを押すと超音波モーターが回転し、もう1つのボタンを押すと逆回転する、という結果を期待している。
written by higashino [カメラ] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
<< 前のページ
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4