以前作っておいたPWMの基本周波数変換のプログラム
XC8 V1.35 用に書き換えました。
PWMの発生器で動作も確認しましたが,大丈夫なようで
す。元になった諸兄は,変換後の周波数は,少なくとも
20kHz必要だと書いていましたが,私は,
100Hz→→10KHz
にしてみました。まだ,基板に組んでないのですが,
実験基板で,実際のコントロールがどうなるか確認して
みたいと思います。参考までに,下記がプログラムです。
main.c
例によって,コメント,ゴミ等が沢山あります。
AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0
TRさん,書き込みありがとうございます。
このプログラムは,PWMの基本周波数を変換するものです。
MACHからのPWM信号を使って,モーターを回転させるためです。
変換しないで直接モーターやPWMコントローラーにMACHからの信号いれてもいいようですが,
MACHからの信号の解像度を上げるのには,
基本周波数を低くする必要があるようです。
一方,モーターをコントロールするには,PWMの基本周波数が高くないといろいろ不具合がですので,
低→高 に変換した方がうまくいくということなので,
やってます。
プログラム難しそうですが,それほど複雑なことはしていません。
ただ,割り込みを複数使ってますので,一見複雑にみえます。
timer0→→MACHからのPWMの信号の有無を割り込みから判断し,なければ出力のPWMのDUTYを0にする。
timer1→→コメントアウトしてますが,信号の表示用です。
timer2→→MACHからの信号のサンプリングで,MACHからの信号のDUTYを計ります。それと出力のPWMの生成。
外部割り込み→→計ったDUTYに基づいて,出力のDUTY比の入力と,信号の有無を判断
みたいなことやってます。
AGENT: Mozilla/5.0 (Linux; Android 7.1.1; ASUS_X00HD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36
推測です。
machからPWMが発生しているが、PICでPWM基本周波数を変換し、変換後の値をmachの画面のMotorControlのPWM BaceFreqに書き込まないと駄目なんだ!?
AGENT: Mozilla/5.0 (Linux; Android 7.1.1; ASUS_X00HD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36
周期を変える?
それとも、DUTY比を変えるプログラムですか?
AGENT: Mozilla/5.0 (Linux; Android 7.1.1; ASUS_X00HD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Mobile Safari/537.36
めちゃ長い!です
ギブ
理解不能