- 締切済み
マイコンの入力読み飛ばしPIC
PICマイコンを使用して、インバータ駆動の三相モータのモータ回転回数を、フォトセンサで計数しています.フォトセンサとPICの入力はフォトカプラで絶縁して接続しています. PICには、モータが10回転(センサから10回出力を受けたら)したら1回外部に出力するという分周回路機能を持たしています. しかし特定の周波数(今回の場合は約42.1Hz)の時のみ、10回ではなく11回出力を受けないと1回出力しなくなってしまいます.しかも絶対ではなく、10回の時もあれば11回の時もあるという動作です. センサの出力をオシロで観察したところ、特にノイズや立ち上がりのもたつきなどはありませんでした. 多分ですが、マイコンが誤動作していると考えられますが、どのようにな対策案がありますでしょうか?電源ピン付近にパスコンは接続済です. 何卒ご教授宜しく御願い致します.
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- ahoo_chieokure
- ベストアンサー率52% (34/65)
バグシナリオその1: ・なんとなくアナログで取り込んでみた ・アナログ入力を使ってしまったので念のためにノイズ除去のため平滑化することにした ・平滑化のため移動平均フィルタやそれに周波数特性が類似するフィルタを使った ・移動平均によるフィルタの周波数特性は周知の通り →故に特定の周波数及びその近辺でのみ取りこぼしが起こる(問題が起こる周波数よりも周波数が上がるとまた一時的に復活していく) この場合、全回転数を精査していけば1パルス分とかいうレベルでなくもっとひどい取りこぼしが起こっていると推定される。検出の敷居値がたまたま極端に設定されてるのかな…
- mink6137
- ベストアンサー率23% (595/2500)
>センサの出力をオシロで観察したところ、特にノイズや立ち上がりのもたつきなどは >ありませんでした. これはPICの入力ピンで観察した…と理解していいですか? 質問文を見たかぎりでは、まだまだ容疑者不明ですね…。 (1)マイコンの外部(ホールセンサ→フォトカプラ→PICの入力ピンまで) (2)マイコンのハード (3)マイコンのソフト(分周の方式とアルゴ) のどれか一つか共犯かの絞り込みが必要ですね! (1)については、部品定数を含む回路図の検証が必要です。 (2)については、 ・ICをドライヤーなどで熱くしてみる。 ・電源電圧を仕様の上限(下限)を少々超えるまで振ってみる。 ・ICを交換してみる。 などであぶり出しができる可能性があります。 それと、入力ピンの仕様(ハイレベル、ロウレベル)とフォトカブラの出力レベルの突き合わせも必要。 (3)については、モーターの回転とPICのポーリング動作が「非同期」であることを「再認識」 して下さい。(ポーリング方式による非同期パルスの取り扱いはかなり手ごわい…) その上で、入力パルスのミスキャッチや多重キャッチを回避できるソフトになっているかの再検証 が必要だと思います。
- SortaNerd
- ベストアンサー率43% (1185/2748)
とりあえずプログラムの内容を書いてもらわないと判断がつきません。 また、10回と11回の比率も重要な情報です。
- naw_ok
- ベストアンサー率100% (1/1)
参考にして下さい. 特にメカに連動したセンサ出力には不安定要素を含んでおります. 今回42.1Hz付近でメカ振動(共振)が有った可能性が考えられます. 出力パルスの幅(リセットタイミング)はセンサ幅と同期しているので有れば、 センサ立下り波形も関連します. ANo.1さんのフォトセンサのパルス幅、ポーリング間隔云々に同じ. 何れの場合でも、チャッタリング対策を意識しては如何でしょうか?
回路に問題がないと言うのが正しいとすると、やりたいことはそんなに難しい事にも思えないし、単純なプログラムミスや、アルゴリズムの考え方自体の間違いとしか思えません。 もう一度見直してみたらいかがでしょう。
- R360-2000
- ベストアンサー率27% (3/11)
センサからの信号を読み込むタイミングは、どのくらいの速さに設定していますか? 読み込むタイミングをもっと早くするか、センサからの信号がパルスであれば優先度の高い外部入力割り込み機能を使ってセンサの信号を読み込めば、読み飛ばしが無くなるかもしれません。
- ahoo_chieokure
- ベストアンサー率52% (34/65)
ポーリングでやろうとしてませんか? (ループの中でピンの変化を監視しようとしていませんか) ピンの変化で割り込みをかけるとかCCP機能などハードウェアの機能を使うようにしないと ソフトだけだと取りこぼす可能性が有ります。 ∵ソフトだけで実装するとピンの状態を監視していない瞬間が必ずあるはず フォトセンサのパルス幅、ポーリング間隔等を考察してみてください。
お礼
ご回答ありがとうございます. ご指摘のようにポーリングで行っております. しかし、マイコン内では ・センサ出力の取り込み ・カウント ・出力 程度の処理しか行っていないため、処理時間は十分であると考えます. パルス幅も10msec程度あります. また説明不足でしたが、42.1Hzの時のみ取りこぼしが発生します. 最大で80Hz程度の周波数をカウントしますが、80Hzの時は取りこぼしは発生していません.