2022.12.1
前へ
次へ
ホームページトップへ戻る


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第116回]



●PICUSBIO−03(65)Timer2(14)ハーフブリッジPWMモード(3)Active−Low

前回でハーフブリッジPWMモードについては終るつもりだったのですが、もう一回追加をすることになりました。
Data Sheetのパルス波形の説明図を見て、ずっと気になっていたことがあります。
たとえば前回のFIGURE14−14でもそうなのですが、Output signals are shown as active−highと書いてあります。
波形図にわざわざactive−highと書いているからにはactive−lowの場合もあるということを示唆しているようです。
[第114回]でCCP1CONのbit3−0の設定をするところで「ハーフブリッジPWMモードではbit3−0は1100にすべき、と考えられます」と書きました。
それはactive−highの設定です。
それはそれで間違いではなかったのですが、今になって考えてみますとドキュメントのどこにも「active−highにすべき」とは書いてないようです。
ならば。
active−lowも試してみるべきです。
CCP1CONのbit3−0の説明を読むとP1AとP1Bをともにactive−highにするにはbit3−0を1100に設定しますが、逆にP1AとP1Bをともにactive−lowに設定するにはbit3−0を1111に設定することになると考えられます。

active−lowに設定したプログラムです。

前回[第115回]で作ったプログラムのCCP1CONの設定をactive−lowに書き換えます。
このプログラムはDead−Bandなしの設定です。
30行の$8Cを$8Fに書き換えました。

プログラムを実行しました。

上側(CH1)がP1Aです。
下側(CH2)がP1Bです。
周期は10μsecです。
パルス幅は7μsecです。
P1Aは7μsecがL、3μsecがHです。
おお。
active−lowになっていますね。
P1BはP1Aとは逆のコンプリメンタリ(相補的)な出力になっています。
前回[第115回]の波形と逆になっていることを確認してください。

ついでですから上のactive−lowのプログラムに前回と同じようにDead−Bandを設定してみました。

前回と同様に15行を追加しました。

プログラムを実行しました。

こちらも前回の波形とはちょうど逆の波形になりました。

水平時間軸を1μsec/divにしました。


ハーフブリッジPWMモードではCCP1CONのbit3−0の設定を1100にする(P1AとP1Bをともにactive−highにする)とP1Aがactive−highになりP1Bはそのコンプリメンタリ(相補的)な出力になります。
実質的にはP1Bはactive−low出力なのですがこの場合にはそのようには言わないでP1Aのコンプリメンタリ出力であるとしているようです。
そして今回のテストでCCP1CONのbit3−0の設定を1111にする(P1AとP1Bをともにactive−lowにする)ことでP1Aがactive−lowになりP1Bはそのコンプリメンタリ(相補的)な出力になることが確認できました。

ところで。
CCP1CONのbit3−0の設定は上記のほかに1101にする(P1Aをactive−highに、P1Bをactive−lowにする)設定と、1110にする(P1Aをactive−lowに、P1Bをactive−highにする)設定があります。
今までのテストの結果から考えると、その設定はないだろうと思われるのですが、ものは試しですから念のためにそれも試してみることにしました。

まずはCCP1CONのbit3−0を1101にしてみました。

30行の$8fを$8dに書き換えました。

プログラムを実行しました。

あれっ?
Dead−Bandが利いている?
そういうことか。
最初はあれっと思ったのですがすぐに納得できました。
前回のプログラムを実行したあとで今回のプログラムを実行しましたから、今回のプログラムには15行はありませんが前回のプログラムで実行したPWM1CONの設定がそのまま生きていたのです。
ふつうにPICにプログラムを書くときにはPICアセンブラやPICコンパイラでプログラムを作成してそれをPIC WRITERでPICに書き込んでから実行しますからプログラムにない設定は初期設定の通りになります。
しかしPICUSBIO用のBASICインタプリタではPICをリセットしない限り先に行った設定は全て生きています。
PICUSBIOはUSBケーブルを一旦外すことでリセットされます。
それは納得できたのですが。
この波形はいけません。
P1AとP1Bがともに「active−high」になっています。
この波形ではactive−highの期間中両方のパワースイッチがONになってショート電流が流れてしまいます。
やはりこの設定は使えないことがわかりました。
するとbit3−0を1110にするのも多分駄目だろうと推測できますが、ここまでやってきたことですから念のためにそれも試してみることにしました。

30行の$8dを$8eに書き換えました。

プログラムを実行しました。

やっぱり予想した通りの波形になりました。
P1AもP1Bも両方ともパルスの出力が「active−low」になってしまいました。
この場合もアクティブな期間に両方のパワースイッチがONになってショート電流が流れてしまいます。

ということでハーフブリッジPWMモードではCCP1CONのbit3−0は1100か1111にしなければならないことがわかりました。
しかし。
Data Sheetにはそのような注意書きはないようです。
ハーフブリッジPWMモードでCCP1CONのbit3−0に1101または1110を設定してもそれは禁止、無効にはならずに本来出力されてはならない間違った波形が出力されてしまいますから、ここのところはそのような設定をしてしまわないように注意する必要があります。

PIC−USBIO using BASIC[第116回]
2022.12.1upload

前へ
次へ
ホームページトップへ戻る