トランシーバはMaximのMAX3051EKAというICを使用しているのだが、これのRSピンをGNDに落とすのを忘れていた。Hi-speedモードにするためにはこのピンをGNDに接続する必要があるがハンダ付けを忘れてピンがフロート状態になってしまっていたためLow-speedモードか若しくはどっちつかずの不安定な状態で動作していたようだ。

ウラ面で8番ピンをGNDに接続する予定だったが、忘れてしまっていた。
このRSピン部を修正したら、CAN通信できるようになった。
ポンプ操作部の機能としては、ボリュームやスイッチで操作するマニュアルモードとCANbus経由で操作されるリモートモードを持つこととした。起動時の初期モードはマニュアルモードで、モード切り替えはCANbusから行う。リモートモードでは手動操作は無効となる。 CANbusからはこのモード切り替えの他に、PWMの周期、duty、回転方向が設定できる。少々判りづらいがRTLはこんな風になっている。

PWMモジュールは5年前に作った物だが、このモジュールではdutyは固定小数(1.7bit ... 整数部1、小数部7bit、最大値1.0)で設定できるようにしてある。そのため、上位側が回路(HDL)であれソフトウェアであれ、設定値のduty⇔パルス幅変換の計算をすることなく、duty値そのものを設定することが出来るので楽できる。PWM式のDAC等に応用する場合に扱いやすいだろうと考えてこのような仕様にした。
これはIP作成当時のシミュレーション波形

Zynq側で以下のようなプログラムを書いてCAN busから制御できるかを見た。
リモートモードに変更後、dutyを100msec毎に0%から100%まで上げた後、今度は逆に100%から0%まで下げ、最後にマニュアルモードに戻す。
マニュアルモードで動作中にリモートモードに設定されたことでCAN bus支配下になりプログラム通りに回転数が上昇・下降している。また、リモートモード中はボリュームやスイッチ操作を受付ないがマニュアルモードに復帰すると操作出来ている。
ということでコントローラも一応完成した。
今後はローラーを若干改良して実際に冷却液を流してみようと考えている。
0 件のコメント:
コメントを投稿