2025年1月22日(水) 21:38
相変わらず、謎過ぎる現象が直らない。
正弦波駆動の位相加算値を
target_slow = 60000;
という感じに定数で代入すると何の問題もなくモーターはスムーズに回転する。同じ場所を
target_slow = table_slowh[cnt_pwm];
とテーブル引きにすると、まるで回らない。10回に1回ぐらいは値が取得できているがそれ以外は0になっているかのような挙動になる。そしてそれも、規則的な動きではない。
60000 という定数値は、暫定的にフルスロットル位置で取得できる値になっている。
液晶ディスプレイで cnt_pwm を表示させると、送信機のスティック位置に応じて想定通りに値が得られる。フルスロットルだと安定して255が得られるので動作試験に使っている。
次に液晶ディスプレイで table_slowh[cnt_pwm] の取得値を表示させると、これも問題なく 60000 が表示される。値が不安定になることもない。
それなのに、モーターはうまく回転しないのだ。どういう手品なんだよ?
if (cnt_pwm > 128) {
target_slow = 60000;
}
else if (target_slow < 128) {
target_slow = (-60000);
}
else {
target_slow = 0;
}
送信機スティック値の符号だけを見て、前進ニュートラル後退の3通りだけモーター動作させてみる。すると、これまた回転不安定。やはり、スティック値
cnt_pwm が安定取得できていない疑いが強い。既に確認済みではあるが、また液晶ディスプレイに
cnt_pwm の値を直接表示させてみる。
ところが、プログラムを書き込めない。もともと PICkit 4 はUSB抜き差ししないと認識されないことがしばしば発生していたが、どうやっても認識されなくなった。

written by higashino [エアガン機動戦闘車] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4