• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UC3526A:PWMコントローラの使用法について)

UC3526AのPWMコントローラの使い方とは?

このQ&Aのポイント
  • UC3526AはPWMコントローラであり、出力するパルスのDuty比を変化させることができます。
  • RESETやSHUTDOWNで出力を止めることができ、外付けのRとCでオシレータの周波数を調整することができます。
  • SYNC信号は入力にも出力にもなり、1, 2ピンの+EAと-EAの差によってDuty比が変化します。Vrefは参照電圧の役割を果たします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xpopo
  • ベストアンサー率77% (295/379)
回答No.3

追加ですが、データシートの7ページの図、Fig8 Single-EndedConfiguration の回路図には誤りがあります。 図ではトランジスタQ1がNPNになってますがこれでは正しく動作しません。 PNPトランジスタが正解です。尚、ベース、エミッタ、コレクタの接続は 変わりません。

inst
質問者

お礼

追加質問に対するご回答、どうもありがとうございます。 おかげ様で、このICに関してたいぶ理解することができました。 助かりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • xpopo
  • ベストアンサー率77% (295/379)
回答No.2

>Syncを入力として使用したい場合、 > ・オシレータの周波数はRT、CTにより決まるのではなく、 >  Syncピンに接続する外部発振器の周波数に同期する。 >  但しRT、CTにより外部発振器の周波数より少し小さい値に設定する必要有。    これはその通りです。 > ・Syncによる同期を取らない場合と同様、Syncの1/2の周期のパルスが >  OUT A,Bから出力される。  これもそのとおりです。

全文を見る
すると、全ての回答が全文表示されます。
  • xpopo
  • ベストアンサー率77% (295/379)
回答No.1

・ RESET、SHUTDOWNで出力を止められる。 RESETをLOWにすることで出力は止まります。また、ソフト・スタート用の  充電コンデンサを放電しますので、RESETを解除する(LOWからオープンにする。)  とPWMはソフト・スタートします。   SHUTDOWNをLOWにするとPWMのLATCHがセットされてPWM出力はL(GNDレベル)  に固定されるためPWMは停止します。ただし、SHUTDOWNを解除(LOWからオープン  にする。)するとただちにPWM動作は開始されます。しかし、ソフトスタートは  ソフト・スタート用の充電コンデンサは充電されたままですのでソフトスタート  は働きません。この場合はいきなり全体の制御ループが起動しますので、PWM平滑  用のインダクタンスに起動時大きな電流が流れてしまい、最悪の場合、インダクタンス  が加熱し、インダクタンスが極端に減少し、暴走してしまう危険があります。 ・ 外付けのR、Cでオシレータの周波数を決められる。   → オシレータの半分の周波数のパルスがOUT A、Bから出力されるのですか?  (Duty比可変)   11番ピン(RD)をGNDにショート(dead timeを大きくしたい場合は抵抗でGNDに  ショートする。)した状態でオッシレータの周波数を設定できます。周波数は7ページ  の一番下、左側のグラフから設定したい周波数の周期よりCTとRTの値を選べば設定  できます。   またオッシレータ周波数の1/2のパルスがOUT A、Bから出力されます。尚、OUT A  とBはお互いに反転した関係のパルスになってます。これらパルスは当然Dutyが可変  です。 ・ 1,2ピンの+EA、-EAの差を見て、差があるとDuty比が上下するのですか?   基本的にはその通りです。+EA、-EAの差が大きくなるにつれてOUTPUT A,BのHigh  になるDutyが小さくなってゆきます。 ・ SYNC信号は入力にも出力にもなるのですか?   入力の場合、出力の場合それぞれのSYNC信号の役目は何ですか?   SYNC信号は入力にも出力にもなります。データシートの6ページのFig.4にSYNC端子  の内部回路が示されてます。その図でSYNCが出力の場合(通常のオッシレータが発振  し、PWM動作している状態。)ではQ1がON-OFFされてオッシレータのパルスが出力されて  います。SYNC端子に信号を入力する場合、必ずNPNトランジスタのオープンコレクタ  あるいはCMOSの N-chオープンドレインでドライブする必要があります。その外部信号が  LOWの時、トランジスタQ2のエミッタがGND+VBE(Q2)に落とされて、内部オッシレータをLOW   レベルに強制的に落とします。外部信号がオープンになれば、Q2はベースに接続された  20kΩの抵抗でプルアップされるのでQ2のエミッタはVREFまで上がり、内部のロジック  「H」レベルになります。   SYNCが入力の場合の役目:    外部の発振器の周波数にオッシレータの発振を同期させる場合に使用します。この   場合、オッシレータの発振周波数fosc0を外部発振器の周波数foscextより10%程度   低く設定しておきます。また外部発振器からの信号はON(LOW)の期間をHigh(Open)   の期間に比べて十分小さく(10%程度以下?)しておきます。この場合に動作は外部   からの信号がLOWになる毎にオッシレータの発振用のコンデンサCTがLOWに放電されます。    オッシレータのCTはそこから充電を開始し規定の電圧まで達すると通常は放電されて   また、充電を開始されるのですが、その規定の電圧に達する前に外部発信器からLOWが   来てCTが放電されます。この結果、オッシレータのCTの放電のタイミングが外部発振器   の周期に同期することになります。結果、オッシレータの発振周波数は外部発信器の   周波数foscextに同期します。     SYC信号が出力の時の役目:    SYNC信号の出力を利用する場合、単にPWMの周波数をモニタするために使用する場合も   ありますが、PWMで動作している電源が複数ある場合に、これら複数のPWM電源のスイッチング   を同期させたい場合があります。たとえば、PWM周波数がその機器に内臓されている   AMラジオの受信機にノイズ妨害を与える場合にPWM周波数を受信機の受信に妨害を与えない   周波数に設定したい場合などの場合に使います。このばあい、基準になるPWM電源の   オッシレータの周波数を所望の周波数に設定し、そのSYNC出力を同期させたいPWM電源の   同じICのSYNCピンに接続します。これでお互いにSYBCピンがせつぞくされたPWM電源は   全て同じ周波数、同じタイミングで動作しますのでAM受信機へのノイズ妨害を対策でき   ます。   ・ 6,7ピンの役割は何ですか?     端子名称に+Cs、-CsとあるようにこれはCurrent Sense(電流検出)の意味です。ブロック   図を見るとヒステリシス付きのコンパレータと微小電圧(100mV)のフローティングの基準電圧   が使われています。使い方は外部入力電源とVC端子間に電流検出用の微小抵抗Rsを接続し、   その両端をそれぞれ電位の高いほうを+Cs端子に、低いほうを-Cs端子に接続します。検出電流   Isenseは Isense=100mV/Rsで求まります。この電流を超えるとコンパレータの出力が「L」   になりPWMラッチをセットしPWM出力はLに固定され、PWM動作が停止します。この動作により   PWMの過電流保護が可能になります。   ・ Vrefの役割は何ですか?       主に誤差アンプ(Error Amp)の基準電位に使用します。その他には、回路周辺で5Vの   電圧が必要な場合に利用します。

inst
質問者

補足

お礼が遅くなり申し訳ございません。 各質問に対する詳細な説明、どうもありがとうございます。 このICについて、だいぶ理解することができました。 Syncについてもう少し質問させて頂けますでしょうか。 Syncを入力として使用したい場合、  ・オシレータの周波数はRT、CTにより決まるのではなく、   Syncピンに接続する外部発振器の周波数に同期する。   但しRT、CTにより外部発振器の周波数より少し小さい値に設定する必要有。  ・Syncによる同期を取らない場合と同様、Syncの1/2の周期のパルスが   OUT A,Bから出力される。 という理解でよろしいでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PWMのパルスを直流電圧にしたいです

    PWMのパルス幅によって電圧が0~5VとしてPICなどのADコンバータで入力して デジタルの数値として認識したいのですが、 パルス波形をDuty比に応じた直流電圧にするにはどんな回路をつければ良いでしょうか? またPWMの周波数は何ヘルツくらいが良いでしょうか? (周波数の上限、下限などがあったら教えていただきたいです)

  • PICのPWMの使い方を教えてください

    PIC12F1822のPWMのテストをしていますが、正しい設定方法が判らず、以下の現象が出ています。 プログラム全体と、MPLIB のシミュレータによるLogic Analyzerの画像を添付しましたので、PICにお詳しい方のアドバイスをよろしくお願いいたします。 ◆ テスト内容: 周波数一定でデューティー比を変化させていく  今回の設定は、PR2=127 なので、パルス幅を0 ~ 最大パルス幅の 511 ((PR2+1)*4)で変化させる ●問題点1: デューティー比100%近く(508/512)でPWM出力が突然 50%に変わる。 ●問題点2: デューティー比100%以上(512/512以上)を設定するとPWMは100%('H'のまま)となる。 その後デューティ比を下げてもPWMの出力は'H'のままで、PWMの出力が出ない。 ● 問題点3: パルス幅の設定で、CCP1CON<5:4>に'00'以外をセットすると、PWMの動作がおかしくなる(出力が'H'のまま) ・・・ これはシミュレータのバグでしょうか? プログラム全体は、一番下にありますが、メインロジックは以下のように簡単なものです。 while (1) { for (i = 500; i <= 512; i = i + 1) { pulse_width = i ; CCPR1L = pulse_width >> 2; // パルス幅上位8bit CCP1CON = ((pulse_width & 0x0003) << 4) | 0x0C; // パルス幅下位2bit         // ここで、CCP1CON<5:4>に'00'以外をセットすると、PWMの動作がおかしくなる __delay_ms(1); } } どうぞよろしくお願いいたします。                           K.A. --------------------------------------------- /* * File: 周波数一定、ディューティー比連続変化 * Author: K.A. * * Created on 2014/07/20 * */ #include <stdio.h> #include <stdlib.h> #include <xc.h> #pragma config FOSC=INTOSC, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF #define _XTAL_FREQ 8000000 // クロック8MHz #define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0))) int main(int argc, char** argv) { OSCCON = 0b01110010; // 内部クロックは8MHz ANSELA = 0b00000000; // すべてをデジタルI/Oに割当 TRISA = 0b00001000; // すべてのピンは出力に割当てる(RA3は入力専用) PORTA = 0b00000000; // 出力ピンの初期化(全て'0'にする) RA5 = 0; // 動作確認用LED /* PWM */ TRISA2 = 1; // RA2 出力をサスペンド TMR2IF = 0; // TMR2 フラグをクリア CCP1SEL = 0b0; // CCP1/P1Aの機能をRA2に割り当てる CCP1CON = 0x0C; // PWM モード // Period を 設定する xx ms=((PR2)+1)*4*125ns(8MHz)* PreScaler(x1-x64) PR2 = 127; // 0.064ms (プリスケーラが x1 の場合) T2CKPS0 = 0b0; // プリスケーラ 00:x1, 01:x4, 10:x16, 11:x64 T2CKPS1 = 0b0; // CCPR1L = 0; // パルス幅上位8bit CCP1CON = ((0 & 0x0003) << 4) | 0x0C; // パルス幅下位2bit TMR2ON = 1; // TMR2 カウント開始 while (TMR2IF == 0) { /** / do nothing /**/ } TRISA2 = 0; // RA2に出力を接続 unsigned int pulse_width; int i; while (1) { // パターン1 : デューティー比を変化させていく // 今回の設定は、PR2=127 なので、最大パルス幅は 511 ((PR2+1)*4) // 問題点1: デューティー比100%近く(508/512)でPWM出力が突然 50%に変わる。 // 問題点2: デューティー比100%以上(512/512以上)を設定するとPWMは100%('H'のまま)となる。 // その後デューティ比を下げてもPWMの出力は'H'のままで、PWMの出力が出ない。 // 問題点3: パルス幅の設定で、CCP1CON<5:4>に'00'以外をセットすると、PWMの動作がおかしくなる(出力が'H'のまま) for (i = 500; i <= 512; i = i + 1) { pulse_width = i ; // Pulse width を 設定する PW=(CCPR1L:CCP1CON<5:4>)*125ns(8MHz)*PreScaler(x1-x64) CCPR1L = pulse_width >> 2; CCP1CON = ((pulse_width & 0x0003) << 4) | 0x0C; // CCP1CON<5:4>に'00'以外をセットすると、PWMの動作がおかしくなる // printf("PR2= %d, PW= %d, CCPR1L= %x, DCIB= %x \n", PR2, pulse_width, CCPR1L, temp2) ; __delay_ms(1); if (RA5==1) RA5=0; else RA5=1 ; } } return (EXIT_SUCCESS); } ----------------------------------------

  • PICのPWMの正しい使い方について教えてください

    PIC12F1822用のPWMの基本動作テストプログラムを作りましたが、PWM出力が意図どおりに得られません。 (XC8のテストプログラムを下に添付。テストパターン1/2の切り替えはコメントアウトをお願いします。  アナライザの出力を画像で添付しました。) テスト目的: タイマー0の周期割り込みに合わせて、PWMのデューティー比(または周期)を変更するプログラム   テストパターン 1 : パルスのデューティー比を変えるテスト 質問1: パルスのデューティー比を変えるテストは、PWM設定の一回おきにCCPからのPWMの出力が出ません テストパターン 2 : パルスの周波数を変えるテスト 質問2: 周波数を変えるテストはOKに見えるものの、1回目のPWMがHighとなるのと、割り込みの11回目、13回目あたりでPWM出力が欠落する 【回答のお願い】 どうも、PWMのレジスタ設定に手順、またはタイミングがあるのではないかと思いますが、原因がわからず困っております。 PICに詳しい方からのご指導をよろしくお願いいたします。                                    K.A. ------------------------------------------------------ /* * File: PIC12F1822 PWC * Author: K.A. * * Created on 2014/07/20 * * タイマー0の周期割り込みに合わせて、PWMのデューティー比(または周期)を変更するプログラム * */ #include <stdio.h> #include <stdlib.h> #include <xc.h> #pragma config FOSC=INTOSC, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF #define _XTAL_FREQ 8000000 // クロック8MHz /* * */ // タイマー割込みの処理 int TMR0_Count = 0; // タイマーの割込み発生回数をカウントする変数 void interrupt Timer0(void) { // タイマー0の割込み発生か? Timer0 は 8bitの オーバーフロー・カウンタ if (TMR0IF == 1) { TMR0_Count++; if (TMR0_Count > 5) { TMR0_Count = 0; if (RA5 == 0) RA5 = 1; else RA5 = 0; // RA5は、動作表示用LED } TMR0IF = 0; // タイマー0割込フラグをリセット } } int main(int argc, char** argv) { unsigned int pulse_width = 5; OSCCON = 0b01110010; // 内部クロックは8MHz ANSELA = 0b00000000; // すべてをデジタルI/Oに割当 TRISA = 0b00001000; // すべてのピンは出力に割当てる(RA3は入力専用) PORTA = 0b00000000; // 出力ピンの初期化(全て'0'にする) RA5 = 0; // 動作確認用LED // Timer0  Timer0 は 8bitの オーバーフロー・カウンタ OPTION_REG = 0b00000001; // 内部クロックでTIMER0を使用、プリスケーラカウント値 1:2 // bit5:0=Fosc/4, bit3:0=PreScaler_ON, bit2-0:PreScaler TMR0 = 0; // タイマー0の初期化 (+2cycle) TMR0IF = 0; // タイマー0割込フラグを0にする TMR0_Count = 0; // 割込み発生の回数カウンターを0にする TMR0IE = 1; // タイマー0割込みを許可する GIE = 1; // 1: 全割込み処理を許可する /* PWM */ TRISA2 = 1; // RA2 出力をサスペンド TMR2IF = 0; // TMR2 フラグをクリア CCP1SEL = 0b0; // CCP1/P1Aの機能をRA2に割り当てる CCP1CON = 0x0C; // PWM モード // Period を 設定する xx ms=((PR2)+1)*4*125ns(8MHz)* PreScaler(x1-x64) PR2 = 127; // 4.096ms (プリスケーラが x64 の場合) T2CKPS0 = 0b1; // プリスケーラ 00:x1, 01:x4, 10:x16, 11:x64 T2CKPS1 = 0b1; // CCPR1L = pulse_width >> 2; // パルス幅上位8bit CCP1CON = ((pulse_width & 0x0003) << 4) | 0x0C; // パルは幅下位2bit TMR2ON = 1; // TMR2 カウント開始 while (TMR2IF == 0) { /** / do nothing /**/ } TRISA2 = 0; // RA2に出力を接続 while (1) { if (TMR0_Count == 0) { /**** テストパターン 1 : パルスのデューティー比を変えるテスト ****/ // パルスのデューティー比を変えるテストは、PWM設定の一回おきにCCPがPWMの出力が出ません。 なぜ? pulse_width = pulse_width + 10; if (pulse_width > 500) pulse_width = 5; /**/ /**** テストパターン 2 : パルスの周波数を変えるテスト **** / // 周波数を変えるテストはOKに見えるが、 // 1回目のPWMがHighとなるのと、割り込みの11回目、13回目あたりでPWM出力が欠落する PR2 = PR2 - 8 ; if (PR2 < 8) PR2 = 127; pulse_width = PR2 ; // Duty 25% に相当 /**/ CCPR1L = pulse_width >> 2; CCP1CON = ((pulse_width & 0x0003) << 4) | 0x0C; TMR0_Count++; // 続けて PWMの設定変更をしないためのフラグ代わり } } return (EXIT_SUCCESS); }

  • タイマICを使ったPWM信号の作り方

    周波数:約100Hz(精度悪くても良いです) デューティ比:10%~90%ぐらい タイマIC入力:5V PWM信号:5V・20mA以下 以上の仕様でPWM信号を出力する回路を自作したいのですが、 どのようなタイマICを使うのが良いでしょうか? タイマIC555を検討したのですが、デューティ比50%以上しか作れないようでした。 よろしくお願いします。

  • PICによるPWM出力の周期について

    PIC(16f873)を用いて、モータをPWM制御しようと思っています。 そこでいくつか質問なんですが、PWMの周期は下記の式で与えられるとありますが、 PWM周期 = (PR2の値+1)x4x発振器周期xタイマー2のプリスケーラ値 この周期は、自分で適当に決めていいのでしょうか?それともモータによって決まっているんでしょうか?  そもそもPWMは、デューティ比で出力が変わると思うんですが、周期が違うとどのような違いが出るのでしょうか?周波数が高くなると細かい制御が出来るって感じでしょうか? 初歩的な質問ですが、よろしくお願いします。m(_ _)m

  • dsPICを用いたPWM出力

    dsPIC(30F4012)でPWMの出力をしてやりたいのですがソフトの知識があまりなく困っています。外部の可変抵抗の値をAD変換した後にそのAD変換した値をデューティ比と比例させてPWM波形を出力してやりたいのです(リアルタイムで変化)。開発環境はMPLAB(C30)です。ご指導お願いいたします。

  • PWM信号をアナログ信号に変換する方法

    PWM信号をアナログ信号に変換するための回路を教えてください。ここでのPWM信号の例は、デューティ比の分解能が10bit(4096段階)で周波数は488Hz、すなわち分解能の周波数は2MHzです。この信号を例えば0~5Vのアナログ信号に変換したいのです。よろしくお願いします。

  • PWM信号を、エンコーダ信号に変換したいのです。

    ある基板から、DCモータ駆動用のPWM信号が出力されています。 この信号を、エンコーダ信号(PWMに応じて周波数が変化し、位相が90度 ずれた2つのパルス)に変換する回路を検討しております。 (可能な限り、ハードだけで実現したいと考えております) どなたか、知恵を授けてください。 PWM信号はモータ駆動の信号ですので、CW/CCW両方の信号が出てきます。 (+側がPWMの時は、-側はH固定、-側がPWMの時は、+側はH固定) エンコーダ信号パルスは、PWMに応じて、位相が変化する必要があります。 PWMの周波数は約22KHzです。エンコーダ側は最速で6KHz程度が必要です。 よろしくお願いします。

  • マイコンによるPWM制御

    7個のサーボをマイコンによって独立に駆動しようと試みています。 つまり、別の周期、DUTY比のPWM信号を7つ同時に出力できるマイコンが要求されます。 どのようなマイコンが最適でしょうか。 ほかの条件としては、 1.開発環境が整っている。 2.入手性がよい 3.ローコスト 4.20MIPS以上の処理性能 でしょうか。どなたかお願いします。

  • PICの相補PWMについて

    PICの相補PWMについて タイトルのとおりPICの相補PWMというのがさっぱり分かりません。 PICのデータシートやプログラムの参考にと購入した本を読むと、相補PWMというのはPWMの1周期の中でペアになっているピンが、それぞれ逆位相の波形を出力する機能だと思うんですが合っているでしょうか? また合っている場合、PICのデータシートに乗っていた回路(添付画像)、多分これはモータ駆動の回路だと思うんですが、これだとモータはPWM1周期の間に正転と逆転を繰り返して動かないような気がするんですがどうなのでしょうか? どなたか教えていただけないでしょうか。 よろしくお願いします。