2008年5月28日水曜日

PIC16F690,PWMとsup85n15-21

PIC16F690の周辺機器ECCP+にてPWMをしてみた。SPECシート"11.3.7 SETUP FOR PWM OPERATION"と関連箇所から簡単に設定ができてしまった。

動作確認にフリーウェア「ハンディオシロ」を活用できたのでちょっと嬉しい。
ソースコードの関連部分を記載します。(宣言部分とかは頂き物なので、外しています)

; $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;
; PWMsetup
;
; $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
bsf STATUS,RP0 ; バンク 1を選択 bcf TRISC,5 ; CCP1 movlw 0x65 movwf PR2 bcf STATUS,RP0 ; バンク 0を選択
movlw 0x0c ; 00001100 bit 5-4?; movlw 0x0e ; 00001110 bit 5-4? movwf CCP1CON
movlw 0x30; movwf CCPR1L
bcf PIR1,TMR2IF clrf TMR2
movlw 0x06 movwf T2CON
btfsc PIR1,TMR2IF goto $-1
; bsf STATUS,RP0 ; バンク 1を選択; bsf TRISC,5 ; CCP1 output; bcf TRISC,5 ; CCP1 output; bcf STATUS,RP0 ; バンク 0を選択
; bcf PORTC,5; bsf PORTC,5

ちなみに下の写真はPIC16F690のPWM信号を使いMOSFETのsup85N15-21で50Wハロゲンライトをドライブしているところ。MOSFET自体の発熱も、かすかに暖かくなる程度、PWMにて明るさの調整が出来ることも確認しました。

この格安大電流用MOSFET、秋月通商の通販では売り切れているようです。(2008/5/28確認)



2008年5月25日日曜日

PIC16F690、EUSARTの罠

PIC16F690の周辺機器ESUARTで非同期シリアル通信(RS232)をしてみた。表題にある通り罠が2つほど用意されていた。

まず1つ、Revision Eスペックシートの「BAUDRATE」(ボーレート)の値、9600の次が10417と記載されている。
内蔵オシレータ8MHzの場合この値がエラー0%で問題が無さそうなのだが、TeraTermでボーレート10417は選択できない。スペックシートで他の値はErrorが0.16%とありエラー頻度と解釈し今回の試験用途では問題にならないと思い9600で実験した。が、文字化けして全く使えない、改善方法の見当もつかない。エラー0.16%が利いているのか非同期だからダメなのか悩み抜いた、、TeraTermのボーレート選択を14400にしてみた。(PIC側は10417の設定)

これで文字化けは解消された、、、、14400が正しい?このしょうもない罠に半日以上苦しめられてしまった。どうしてくれる!マイクロチップ!


そしてもう1つ、Transmit(送信)時、なぜか1個置きの文字しかPCのコンソール(TeraTerm)に表示されない現象が発生した。”必ず”なのでソース上でダミーを送信するように変更を加えることで対処できた、、、、、が、何かしっくり来ない。いろいろwebで調べてみるとPICをいじっていれば必ず拝む後閑氏の「電子工作の実験室」にて重要な情報を得た。Transmitで1文字送信が完了したかどうかの確認フラグは「TXIF」とある。後閑氏のページでは「確実にするためには"TRMT"をチェックする。」との記載があった。これの変更で問題をクリアできた。

今回の試験内容(写真の物)

RS232でPCと接続しTeraTermにてcomポートに接続TeraTermのシリアルの設定は「ボーレート14400、8bit、パリティ無し、ストップビット1、フロー制御無し」、PICの電源を投入すると「日本語」とTeraTermに表示する。キーボードで"1"を入力するとLEDがOFF、"2"を入力するとLEDがONする。

ハード構成は写真の通り単純な物。蛇足だが記載するとPIC16F690,ADM3202AN,LED,1kΩ(LED点灯用),0.1uF x 5,(ADM3202AN用),D-sub9ピンメス。
写真の左上のケーブルはPICKIT2接続用、右下はD-sub9ピンに接続する3本のライン。

その他、参考にした情報
なひたふ電子、、、、D-sub9ピンについて (何回何回も拝見させて頂いております)
はじめてのPICアセンブラ入門、、、、持ってます。 (周辺装置の手引き用途)

ソースコードの関連部分を記載します。(宣言部分とかは頂き物なので、外しています)
※テキストをDLできるようにできないのかぁ、、このブログは、、

POINT EQU 0xXX ;変数宣言
;; RS232送信; bsf STATUS,RP0 ; バンク 1を選択 clrf TRISB bcf BAUDCTL,BRG16; bit3 movlw 0x26 movwf TXSTA movlw 11 ; 14400bps movwf SPBRG ; clrf SPBRGH ;
bcf STATUS,RP0 ; バンク 0を選択
clrf PORTB bsf RCSTA,SPEN; Serial Port Enable bcf RCSTA,RX9; bcf RCSTA,ADDEN;
clrf POINT;CON1 movwf TXREG
bsf STATUS,RP0 ; バンク 1を選択 btfss TXSTA,TRMT; データ送信済みかチェック goto $-1
bcf STATUS,RP0 ; バンク 1を選択
movf POINT,w; call STRING_03; addlw 0; btfsc STATUS,Z; goto CON1_END;
incf POINT; goto CON1
CON1_END
;; RS232受信;
bsf STATUS,RP0 ; バンク 1を選択 bcf TRISB,TRISB5 bsf BAUDCTL,SCKP bcf STATUS,RP0 ; バンク 0を選択 bsf RCSTA,CREN
bsf PORTB,6 ;LED ON
RXCHR BTFSS PIR1,RCIF goto $-1 btfss RCSTA,OERR goto CHK_FERR bcf RCSTA,CREN bsf RCSTA,CREN goto RXCHR
CHK_FERR btfss RCSTA,FERR goto RCV_END movfw RCREG goto RXCHR
RCV_END movlw '1' xorwf RCREG,w btfsc STATUS,Z bcf PORTB,6 ;LED OFF
movlw '2' xorwf RCREG,w btfsc STATUS,Z bsf PORTB,6 ;LED OFF
goto RXCHR
;; テーブルデータ;
STRING_03 ADDWF PCL,F DT "日本語\n\r",0,0

2008年5月20日火曜日

PIC16F690

PIC16F690で周辺装置(USARTとか)の試験をするために、ネットを探していると、「はじめてのPIC」というホームページで写真の物が紹介されていました。

写真は私がそのHPに掲載された物をそのまま試験した結果です。LCDは16x2で掲載している物とは違いますがプログラム修正なしで動作しています。(LCDはデジットで350円で売っていた物です。)

使ったことの無いPICを使う場合に一番しんどいのは、機種固有の宣言部分と壊さないための電子パーツの配置ですがその両方をゲットできました。

USARTとPWMの試験にかかれそうです。

2008年5月17日土曜日

ハンディオシロ用ボルテージフォロア

フリーウェアのハンディオシロ用のボルテージフォロア(インピーダンス1MΩのプローブ)を作ってみた。-側は測定しないつもりなのでLM358で作っています。サンプリング速度が44.1kHzくらいで、使用対象はいまのところ無し。


7セグのダイナミックドライブを測定してみた。確かに重複していない事が確認できる。(重なっていたら正常に表示されていませんよね)

2008年5月13日火曜日

MOSFETとトランジスタ

※間違えているかもしれませんが了承ください。

ここ最近のsup85n15-21の試験で、おかしかったところがわかった。初回試験時の異常発熱は写真中の図①と②で発生していた。①のおかしいところは、、、

そう、電源は12Vあるがランプでボルテージを消費した後の位置からゲート電圧を取っているため電圧が低くなっておりVgsに必要な電圧10V(スペックシート記載のVgs(on))を確保できていない。

続いて②のおかしいところはゲート接続先は12Vある。但しソースの電圧がGNDではなく、ランプでの消費予定分が乗っかったボルテージになっておりこちらもVgsに必要な10Vを確保できていない。

これらの時のVgsは4.53Vで電流は2.8A。実に12.684ワットの消費をしていた。
Pd(Maximum Power Dissipationb)が2.4ワットとの記載があり、、、壊れてもおかしくない??という状況になっていたと思われる。巨大なヒートシンクが1分もたたないうちに「触ることはできるが熱い」という状態になってしまっていた。

③の図が正解。Vgsが10Vを超え,Vdsが51mV,電流3.72Aを確認した。MOSFETの発熱は確認できなかった。

ちなみにMOSFETの状態は下記の計算になる。
51mV/3.72= 13.71mΩ
51mV * 3.72A= 0.189ワット

ここで、トランジスタ-MOSFETの性能と使い方について何かカッチリしてきたので記録しておこう。

NPN形トランジスタやN形MOSFETは負荷をコレクタ側、もしくはドレイン側に接続するという理由が見える。be間の電流やGS間の電圧を決定する際に設計しやすいからという理由だろう。 (写真の図を見るとわかりやすい。)
PNP型トランジスタやP形MOSFETは同様の理由で負荷をエミッタ側もしくはソース側に接続する。

さて続いてトランジスタ、MOSFETの利用制限についてもわかってきた。スペックシートにあるVceo,Vdsは何を表しているか。この両端にかけれる最大電圧となっている。これは遮断状態における両端電圧ということ。通電状態でトランジスタ、MOSFETが破壊される電圧との意味ではない。

ではどれだけの電気をドライブできるのか。これが結構ややこしい

■トランジスタの場合
必要な情報は最大規格のコレクタ損失Pcとコレクタ電流Ic、それとIc-Vceグラフ。
Ic-Vceグラフ上でIcの最大値とIbの最大値あたりの交点とそのVceが最大性能となる。

2sc1815のスペックシートを例にすると、最大規格のIcは150mA、Ic-Vceグラフを参照します。グラフ中のIb=6.0mAとIc=150mAの交点のVceがだいたい0.5Vとなっている。
これは、ベース電流6.0mAの時にIcに150mAを通すとce間に0.5Vの電圧(損失)が発生すると読む。この時の損失がPcの400mWを超えていなければ、ドライブ可能である。

150mA * 0.5V=75mW

スイッチとして使う分にはかなり大物をドライブできることがわかる。

※Icが150mAを超えることは保障されていないし、性能限界ぎりぎりまで使用することは好ましくないので、通常この設計値は使わない。
※これに放熱計算をして、必要時ヒートシンクを用意します。(通常2sc1815にはつきません)



※2sc1815で12V91.6mA をドライブして問題が無いことを確認した。








■MOSFETの場合

最大通電能力に必要な情報は最大規格のIdとPd,DS(on),Safe Operating Areaグラフかな?

2008年5月12日月曜日

sup85n15-21とか2sk2232

ひき続き手持ちのMOFSET、2sk2232の試験をした。負荷(12V50Wのハロゲン灯)はドレイン側に接続し、それを+12Vへ接続。ソースはGNDへ接続、ゲートは+12VでON、GNDでOFFができてドライブに問題が無いことを確認した。前回の試験と違い、ゲート、ドレインをショートさせての接続試験ではなくドレイン取り出し口よりも電源側の位置にゲートを接続した。(トポロジ的には同じように思える)で肝心の測定値。

ゲート、ソース間は10.55V、電流は3.72A、ドレイン、ソース間は103mV!!!!これは使える!!!

前回の試験と結果が違いすぎるので、sup85n15-21も同じ接続で再実験してみた。

ゲート、ソース間は10.52V、電流は3.72A、ドレイン、ソース間は51mV!!!!当然発熱も無い。





前回の試験は何だったんだろう、、ちなみに負荷の位置だが前回試験ではソース側、ドレイン側ともに試しているので違いはゲートの取り出し位置くらいだ。

(下の画像は16*17*25のヒートシンクを付けたsup85の試験、全然熱を持たなかった。)

2008年5月11日日曜日

sup85n15-21

sup85n15-21インターネットで調べるといくつかテストをしてNGの評価を出されている300Wまでドライブ可能、on抵抗0.021Ωと低い激安のMOSFET。大人買いをしてしまっていたので試験をしてみた。試験方法は写真の通り、、、、、

100均で購入した12V50Wのハロゲン灯をATX電源の12V、放熱板をつけたsup85n15-21でドライブしてみた。ドライブはできた。


※下記の実験結果は、再実験で覆されたので打ち消ししました。

ドライブの接続はゲートとドレインを+12V、ソースをランプ経由GNDに接続した。ゲートをGNDにすればランプはOFF、+12Vに接続すると点灯するのを確認できた。
ゲートとソース間(当然ドレインとソース間も同じ)にテスターを当ててみると4.53V、電流は2.8A、、、、、

RDS:(VGS=10V)0.021ΩMAXと書いてあったが、、
普通にR=V/Iに代入すると4.53/2.8=1.61Ω、、、、、

消費電力は4.53*2.8=12.68ワット
発熱量は4.53*2.8/4.2=3.02カロリー/sec、、1秒間に発生する熱量となっているということ、熱いのだ。

もっと大電力相手に使えば問題ないのかな、、うむ~~

---------------------------
追加
2sk3163で同じ実験をしてみた。
ゲートとソース間は2.4V、電流は3.27A

普通にR=V/Iに代入すると4.53/2.8=0.734Ω、、、、、
消費電力は2.4*3.72=8.928ワット
発熱量は2.4*3.72/4.2=2.16カロリー/sec