目次

降圧回路

 電源電圧を下げて利用するときは、3端子レギュレータと
 いう選択肢があります。3端子レギュレータの場合、必要
 とする電圧から3V程度高くないと、まともに動かない時
 もあります。また、使われなかった電力は、レギュレータ
 ICで消費されることになり、効率が悪くなります。

 降圧回路を、チャージポンプ式に、電荷の充放電
 による電圧変換で実現します。

 次の回路で動作を確認してみます。



 チャージポンプ回路は、スイッチにダイオード
 キャパシタをつけるだけですが、実際の回路は
 トランジスタで、スイッチングします。



 ダイオードは、ショットキーバリアーダイオード
 キャパシタにはESRの小さいデバイスを利用します。

 nQin、Qinに、デッドタイムのあるクロックを
 入力して、キャパシタに充放電させます。



 デットタイムを用意するのは、ダイオードのもつ
 逆回復時間を確保して、完全に電流の流れを遮断
 するため。

 デッドタイムのあるクロックを生成するのは
 コンパレータとマルチプレクサを利用します。



 動作は非常に簡単で、カウンタで0〜32を生成し
 カウンタ値で、Qin、nQinの出力値を次のように
 変えていきます。

 0 : Qin=1 nQin=0
 1 : Qin=1 nQin=0
 2 : Qin=1 nQin=0
 3 : Qin=1 nQin=0
 4 : Qin=1 nQin=0
 5 : Qin=1 nQin=0
 6 : Qin=1 nQin=0
 7 : Qin=1 nQin=0
 8 : Qin=1 nQin=0
 9 : Qin=1 nQin=0
10 : Qin=1 nQin=0
11 : Qin=1 nQin=0
12 : Qin=1 nQin=0
13 : Qin=1 nQin=0
14 : Qin=1 nQin=0
15 : Qin=0 nQin=0
16 : Qin=0 nQin=1
17 : Qin=0 nQin=1
18 : Qin=0 nQin=1
19 : Qin=0 nQin=1
20 : Qin=0 nQin=1
21 : Qin=0 nQin=1
22 : Qin=0 nQin=1
23 : Qin=0 nQin=1
24 : Qin=0 nQin=1
25 : Qin=0 nQin=1
26 : Qin=0 nQin=1
27 : Qin=0 nQin=1
28 : Qin=0 nQin=1
29 : Qin=0 nQin=1
30 : Qin=0 nQin=1
31 : Qin=0 nQin=0

 カウンタ値0〜14のときは、キャパシタC1、C2に充電
 15のときは、キャパシタC1、C2から放電します。
 74HC4040を利用し、0〜31を生成し、0〜15、16〜31
 で、マグニチュードコンパレータの出力を切替えます。



 逆回復時間は、1周期の中の2/32=6.5%になります。
 5%程度がよい言われていますが、多少長いです。
 実験にはよいと判断しました。

 信号生成のVHDLコードは、以下のようになります。

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity adec is
  port (
    -- system
    nRESET : in  std_logic ;
    CLOCK  : in  std_logic ;
    -- enable
    ENA    : in  std_logic ;
    -- latch out
    QOUT   : out std_logic_vector(1 downto 0) --;
  );
end adec;

architecture behavioral of adec is
  -- input 
  signal iENA : std_logic ;
  -- output
  signal iQOUT : std_logic_vector(1 downto 0) ;
  -- registers
  signal iCNT : integer range 0 to 31 ;
begin
  -- input 
  iENA <= ENA ;

  -- output
  QOUT <= iQOUT when ( iENA = '1' ) else "00" ;

  -- send pulse with dead time
  iQOUT(0) <= '1' when ( iCNT < 15 ) else '0' ;
  iQOUT(1) <= '1' when ( iCNT > 15 and iCNT < 31 ) else '0' ;

  -- counter
  process (nRESET,CLOCK)
  begin
    if ( nRESET = '0' ) then
      iCNT <= 0 ;
    elsif rising_edge(CLOCK) then
      iCNT <= iCNT + 1 ;
    end if ;
  end process ;

end behavioral;

 ブロック図で示すと、次の構成となります。



 フリーランニングカウンタで、0〜31を生成し
 その値により、出力値を確定します。

 カウンタに与えるクロックは、次のように可変
 できるような発振器を利用します。



 実際には、VCO(Voltage Controlled Oscillator)で
 周波数を可変できるようにしておきます。
 VCOであれば、D/Aコンバータで周波数を制御できる
 ようになるからです。

(under construction)

目次

inserted by FC2 system