トップページ     電子回路のページのトップ

 電池管ラジオ用B電源

 今まで何回か65V電源の実験を行いましたが、電池管ラジオの電源を想定していました。
 今回、「ラジオ少年」より電池管ラジオのキット(4球スーパー)を購入したので実際に使用する電源を作ることに なりました。
 ラジオの回路図を見ると出力管のコントロールゲートに負バイアスを掛ける為、B電源の−出力はグランドから 浮いています。
 もし、電源一次側を接地した場合、二次側(出力)は絶縁しなければなりません。
 あるいはB電池をフローティングで使用しなければなりません。
 また、今までのスイッチング電源ではノイズで使い物にならないと思います。
 (電源に小型のトランジスタラジオを近づければ判ります。)
 これらを考慮して回路を考えてみました。


 回路図

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

電池管ラジオ用電源回路図

 電池管ラジオ自体は私にノウハウは有りませんし、余所様の製品ですので詳細は省きます。
 興味のある人は関連サイトを検索してください。
 周波数変換を1R5、中間周波増幅を1T4、検波と低周波増幅を1S5、出力増幅を3S4で行っています。
 A電源は電池電圧をそのまま供給します。
 回路図は単3ニッケル水素電池を2本パラに使用するイメージで描いていますが、動作試験は単1アルカリ電池1本で行って います。
 カタログ上ではヒーターに合計250mA流れる筈ですが、1S5と3S4のヒーター電流が少なく、合計で210mA位 でした。
 電池電圧が下がれば電流は減るので単3ニッケル水素電池2本で20時間程度は使えるのではないでしょうか。
 A電池の電圧は1V程度まで使えるという記事を見た事があります。
 B電池は単3アルカリ電池又は単3ニッケル水素電池6本で50〜70V程度の電圧を作っています。
 定電圧制御はしていないので電池の電圧が下がれば出力電圧は下がりますが、これは高電圧の積層電池を使ったとしても同じ ことです。
 尚、製作した電源は100mA前後の消費電流でしたので、こちらも20時間程度の電池寿命だと思います。
 B電源は時間の経過と共に電圧が低下しますが、50Vあれば十分、動作します。

 回路はなるべくノイズが少なくなるようにプッシュプル回路にしました。
 昇圧トランスは電源トランスを使っって発振周波数を下げています。
 制御はPIC12F1822のPWMユニットを使用しています。
 定電圧制御はしていませんが、B電池の電圧を計測し、電圧の高い時はデューティーを下げています。
 電池の新しい時はレギュレーションを悪くして出力電圧の上昇を緩和し消費電流も抑えます。
 PIC12F1822の2相出力はハーフブリッジ用のもので此の回路ではデューティーの制御は出来ません。
 従ってデューティーは50%に固定し、ディレーを変化させて見かけのデューティーを変化させています
 
 A電池、B電池の電圧低下を検出してLEDに表示します。
 B電池の電圧が低下したときは約2秒周期でLEDが点滅します。
 A電池の電圧が低下したときは約0.6秒周期で点滅します。
 両方の電池の電圧が低下したときは0.2秒周期となります。
 アルカリ電池の時はラジオが聞こえなくなるまで使い切ってしまえば良いわけですがニッケル水素電池の時は過放電すると電池を 傷めるのでLEDが点滅したら即、充電します。
 調整中の事故が怖いので出力に短絡保護回路を付加しました。
 出力を電流計で短絡したところ30mA位の電流が流れました。
 回路図でQ3には100V以上のコレクタ耐圧のトランジスタが必要です。
 また、連続的に短絡するには2W程度の放熱が必要です。
 この短絡保護回路の為に出力電圧が2V程度下がりますので、若干効率が下がります。
 PWMの周期は2.048mSですので約500Hzです。
 50〜60Hzで使用する電源トランスに500Hzを加えたら鉄損で効率が下がると思ったのですが実際には500〜1KHz の方が効率が上がりました。

 B電源はヒーターが点灯していなければ電流が流れません。
 従ってA電源をスイッチで切るだけで済みます。
 ところがB電源にインバータを使用した場合、負荷電流が流れなくても一次側に電流が流れます。
 従ってB電源の一次側もスイッチで切る必要があります。
 A電源を切ってB電源を入れると真空管に電流は流れませんが無負荷の為、電圧が上がります。
 入力電圧10.5Vの時、B電圧は96V位になります。


 プログラム

 プログラムは短いのでソースファイルをそのまま表示します。
 コンパイラはMikoroCですがディレールーチン以外の組み込み関数は使用していません。
 注意点としてPIC12F1822はデホルトでポートがプルアップされています。
 A/D変換入力端子等はプルアップを外さないと悩む事になります。


///////////////////////////////////////////////
//  電池管ラジオB電源      global.h         //
//  2016/03/17  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#ifndef _GLOBAL_H
#define _GLOBAL_H

///// 型の短縮名称
typedef unsigned char   uchar;
typedef unsigned int    uint;
typedef unsigned long   ulong;

///// main
#define LED LATA.B2

///// A/d
typedef union{
    int adw;
    char adb[2];
}ADDATA;
extern ADDATA addata;
extern int btva;
extern int btvb;
extern uchar adf;
extern void ad_init(void);
extern void bt_volt(void);

#endif

///////////////////////////////////////////////
//  電池管ラジオB電源      adconv.c         //
//  2016/03/17  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#include "global.h"
ADDATA addata;
int btva, btvb;         //電池電圧
uchar ad_cnt;           //AD変換回数
uchar adf;              //AD完了
uint adbuffa, adbuffb;  //演算バッファ

void ad_init(void){
    ad_cnt = 0;
    adf = 0;
    adbuffa = adbuffb = 0;
    ANSELA = 0x3;           //AN0,AN1
    FVRCON = 0x83;          //A/D REFF = 4.096
    ADCON1 = 0x83;          //右詰め、Fosc/2, FVR
    LED    = 0;
}

int ad_conv(uchar ch){
    ADCON0 = ch << 2;       //ch set
    ADCON0.ADON = 1;        //A/D使用
    Delay_ms(1);
    ADCON0.GO = 1;          //A/D START
    while(ADCON0.GO);
    addata.adb[0] = ADRESL;
    addata.adb[1] = ADRESH;
    return addata.adw;
}

void bt_volt(void){
    adbuffb += ad_conv(0);
    adbuffa += ad_conv(1);
    ad_cnt++;
    if(ad_cnt == 32){                   //32回の平均
        btvb =4 * 4 * (adbuffb >> 5);   //1/32x4mVx分圧比
        btva = 4 * (adbuffa >> 5);
        adbuffa = 0; adbuffb = 0;
        ad_cnt = 0;
        adf = 1;
    }
}

///////////////////////////////////////////////
//  電池管ラジオB電源      radiops2.c       //
//  2016/03/17  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

// CLOCK 500KHz
// Oscillator INTOSC, Watchdog controlled by SWDTEN bit, Power-up Timer ON,
// MCLR Pin OFF, Code Protection OFF, Data Protection OFF,
// Brown-out Reset ON, Clock Out OFF, Int/Ext Switchover OFF,
// Fail-safe Clock Monitor OFF, F-Memory Self W-protection OFF, Pll OFF
// Stack Of/Uf Reset ON, Brown-out Reset 2.5V, Debug OFF, LVP OFF

#include "global.h"
uchar _delay;           //PWM DELAY
uint l_count = 0;       //LOOP COUNT
uint cnt_max;

void main(){
    OSCCON = 0x3b;      //内部 500KHz
    OPTION_REG = 0xf;   //タイマー0関連ダミー
    APFCON = 0x3;       //ALTERNATE CCP
    LATA = 0x0;         //出力 OFF
    TRISA = 0xb;        //RA2,RA4,RA5出力
    WPUA = 0;           //プルアップしない
    ad_init();          //AD初期化
    WDTCON = 0xf;       //ウオッチドッグ128mS
    asm CLRWDT;         //WDT CLR
    CCP1CON = 0x8c;     //PWM ACTIVE H
    PR2 = 0xff;         //サイクルタイム256  x 2uS x 4= 2.048m
    CCPR1L = 0x80;      //デューティー 128 x 2uS x 4をセット
    PWM1CON = 1;        //DELAY初期値
    T2CON = 0x4;        //T2 ON プリスケーラー1/1
    while(1){
        asm CLRWDT;                                 //WDT CLR
        bt_volt();
        if(adf && (btvb > 7200)){                   //7.2V以上はディレーを増加
            _delay = (btvb - 7200) / 50 + 1;
        }
        else _delay = 1;
        PWM1CON = _delay;                           //ディレーをセット
        cnt_max = 0;
        if(btvb < 5800) cnt_max = 540;              //B電池電圧低下
        if(btva < 950) cnt_max = 180;               //A電池電圧低下
        if(btvb < 5800 && btva < 950) cnt_max = 60; //AB電池電圧低下
        if(cnt_max){
            l_count++;
            if(l_count > cnt_max){
                LED = ~LED;
                l_count = 0;
            }
        }
        else LED = 0;
    }
}


 ノイズに関して

 ラジオは空気中の微弱な電波を捕らえスピーカーを鳴らすまでに増幅するので大きなゲインがあります。
 当然ながら放送周波数成分を含むノイズであれば、微弱な信号も捕らえてしまいます。
 今回、リップルノイズが少ない(と思った)回路構成にし、不規則なノイズの原因となる定電圧制御も行っていません。
 実際、出力電圧を観測するとリップルやノイズは完全に取れています。
 それでもラジオにはノイズが入ってしまいました。
 ノイズは電源ラインから入るのでは無く、空中に飛ぶのです。
 飛ぶ距離は1m〜2m程度ですので普通は大きな問題になりません。
 ところがラジオ自体の電源として同じ筐体に収容する場合は致命的となります。
 今回も、色々な回路を試してみましたが決め手は有りませんでした。
 発生源はコイルやトランスと思いがちですが負荷としてのトランスを外してもノイズは出ます。
 トランスを使わないコッククロフトウォルトン回路でもノイズは発生します。
 マイクロコンピューターを使用するとノイズが発生すると思ったりしましたが使わなくてもノイズは出ます。
 スイッチング動作そのものがノイズの発生源となるようです。
 アナログアンプに正弦波を入れ、トランスを駆動すれば良いかもしれませんが回路規模(コスト)や電源効率で 問題が有ります。
 マイクロコンピュータのクロック周波数や回路の動作周波数を変えればノイズは変化しますが周波数を下げれば減るという ものでもありませんでした。
 電源をアルミのシャーシーに入れたところノイズは減りましたが、これでも完全には取れていません。
 小型のトランジスタラジオを10cm〜15cm近づけるとノイズを拾います。
 幸い、電池管ラジオは寸法が大きいので電源からバーアンテナまで距離が稼げます。
 現在、ラジオシャーシの直ぐ下に電源を置いたとき、放送波の無い周波数帯域で微かに発振音が聞こえる程度で 使用上は問題ありません。
 小型のトランジスタの方がノイズに敏感で、真空管ラジオの方がノイズには強いようです。
 小型のトランジスタラジオ(AM、FM、2バンド)は製作した機器のノイズチェッカーに便利です。
 ノイズはFM周波数に入るものとAM周波数に入るものがあります。

 ラジオキットに付属していたケース(透明樹脂製工具箱)は補強リブを削らないとラジオのシャーシが入らないほど小さい ので一回り大きなケースを探しにホームセンター何店か足を運びました。
 適当なものが無く、かろうじて入手出来たのは二回り以上大きなものです。
 アクリル樹脂を加工してケースを作る時間も無いので、とりあえず適当なものが見つかるまで、このケースに入れて おきます。
 怪我の功名として内部がガラガラですので、ラジオと電源を全く影響の無い位置まで離すことが可能です。
 必要であれば、さらに間に遮蔽版を設置することも可能です。


 製作した電源ユニット

電池管ラジオ用電源

 トランスがスペースと重量の多くを占めています。
 発振周波数が500Hz程度と低く、二次電圧が100V近くまで上がるので市販の電源トランスを使っています。


 ラジオに接続

ラジオに接続

 実際に電池管ラジオに接続し、使用してみました。
 ノイズもそれ程気にならず、十分使えます。


 電源の特性

電源の動作特性

 実際の負荷を想定した6.65KΩの固定抵抗を接続しました。
 若干の電圧降下を許せば、これ以上の電流も流す事が出来、出力端の短絡電流は30mA程度となります。


 入力電圧−入力電流

入力電圧−入力電流

 電池は購入直後や充電直後は電圧が高く、使用時間が経過すると電圧が下がります。
 ここでは単3のニッケル水素充電池かアルカリ電池を6本直列に使用します。
 定電圧制御していないので、電池電圧が下がれば電流は減ります。
 定電圧制御のスイッチングレギュレータは逆に電圧が下がれば電流が増えるので一気に寿命が終わります。
 B電圧は50V程度あれば特性は大きくは変わらないので連続20時間程度は使えるのではないかと思います。
 電池電圧が高いときはデューティーを下げ消費電流を減らしています。
 下の写真は電池電圧7.2V(上)と9V(下)の時のゲート駆動電圧です。

7.2Vのゲート駆動波形

9Vのゲート駆動波形


 入力電圧−出力電圧

入力電圧−出力電圧

 定電圧制御していないので電池電圧が下がれば出力電圧も下がります。
 これはB電源に積層電池を使った場合も同じです。


 入力電圧−出力電流

入力電圧−出力電流

 入力電圧が上がれば出力電流も上がりますが、デューティーの制御により、頭打ちになります。


 入力電圧−効率

入力電圧−効率

 出力の短絡保護回路によって約2Vの電圧降下が生じます。
 これが無ければ効率は75%近くまで上昇します。
 一般的な電源回路には短絡保護回路は付いていないし、調整が済めば誤って短絡する事もないのですが 付いていれば安心です。


 使用してみる

ラジオに接続

 製作したラジオと電源をケースに組み込みました。
 キットに付属していたケースは、もともと小さすぎてケース内部の補強リブを削らなければラジオのシャーシ自体が 入りません。
 これに電源ユニットを追加する事は不可能です。
 ホームセンターに一回り大きなケースを探しに行ったのですが、思うような寸法のものが得られませんでした。
 5個所のホームセンターを廻り、やっと手に入れたケースは二回り以上大きなものでした。
 内部はガラガラで電源とバーアンテナとの距離も確保出来たのでノイズの影響は完全に消えています。
 A電池は単三電池2本、B電池は単三電池は6本で、それぞれ110mA程度の電流が流れます。(電池が新しい時)
 電池が消耗するにつれて電流は減るので20時間程度は使えるのではないかと思います。
 尚、A電池は単一電池1本にすることも来ます。
 この場合、50時間程度になると思います。(B電池は単三ですので20時間程度です。)
 A電池の電圧は1V以下になると音が、かなり小さくなります。
 0.95V以下では聞こえなくなりました。
 B電池の電圧は今回のラジオでは50V以下で音が小さくなります。
 45V以下では聞こえなくなります。


 電池管ラジオ用B電源U

 今までAMラジオを聴く習慣が無かったのですが最近は聞くようになりました。
 製作した電源はノイズも無く、快適に使用しています。
 しかしながら、若干、不満があります。
・ 市販の電源トランスを使用しているので寸法が大きく重い
・ 効率を、もう少し上げたい
 そこで手持ちのトロイダルコアでトランスを作り、再度、挑戦してみました。


 回路図

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

電池管ラジオ用電源回路図

 回路自体は大きな変更はありません。
 ただし、トランスの鉄心にフェライトのトロイダルコアを使用するので発振周波数を高くする必要があり、 一層、ノイズ対策に注意が必要です。


 プログラム

 プログラムも基本的に同じです。
 ただし、CPUクロックが500KHzから4MHzに上がりました。
 PWM周波数も500Hzから25KHzに上昇しました。
 A/D変換用クロックの周波数も上げる必要があります。

///////////////////////////////////////////////
//  電池管ラジオB電源V    global.h         //
//  2016/05/13  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#ifndef _GLOBAL_H
#define _GLOBAL_H

///// 型の短縮名称
typedef unsigned char   uchar;
typedef unsigned int    uint;
typedef unsigned long   ulong;

///// main
#define LED LATA.B2

///// A/d
typedef union{
    int adw;
    char adb[2];
}ADDATA;
extern ADDATA addata;
extern int btva;
extern int btvb;
extern uchar adf;
extern void ad_init(void);
extern void bt_volt(void);

#endif

///////////////////////////////////////////////
//  電池管ラジオB電源V    adconv.c         //
//  2016/05/13  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#include "global.h"
ADDATA addata;
int btva, btvb;         //電池電圧
uchar ad_cnt;           //AD変換回数
uchar adf;              //AD完了
uint adbuffa, adbuffb;  //演算バッファ

void ad_init(void){
    ad_cnt = 0;
    adf = 0;
    adbuffa = adbuffb = 0;
    ANSELA = 0x3;           //AN0,AN1
    FVRCON = 0x83;          //A/D REFF = 4.096
    ADCON1 = 0x93;          //右詰め、Fosc/8, FVR
    LED    = 0;
}

int ad_conv(uchar ch){
    ADCON0 = ch << 2;       //ch set
    ADCON0.ADON = 1;        //A/D使用
    Delay_ms(1);
    ADCON0.GO = 1;          //A/D START
    while(ADCON0.GO);
    addata.adb[0] = ADRESL;
    addata.adb[1] = ADRESH;
    return addata.adw;
}

void bt_volt(void){
    adbuffb += ad_conv(0);
    adbuffa += ad_conv(1);
    ad_cnt++;
    if(ad_cnt == 32){                   //32回の平均
        btvb =4 * 4 * (adbuffb >> 5);   //1/32x4mVx分圧比
        btva = 4 * (adbuffa >> 5);
        adbuffa = 0; adbuffb = 0;
        ad_cnt = 0;
        adf = 1;
    }
}

///////////////////////////////////////////////
//  電池管ラジオB電源V    radiops3.c       //
//  2016/05/13  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

// CLOCK 4MHz
// Oscillator INTOSC, Watchdog controlled by SWDTEN bit, Power-up Timer ON,
// MCLR Pin OFF, Code Protection OFF, Data Protection OFF,
// Brown-out Reset ON, Clock Out OFF, Int/Ext Switchover OFF,
// Fail-safe Clock Monitor OFF, F-Memory Self W-protection OFF, Pll OFF
// Stack Of/Uf Reset ON, Brown-out Reset 2.5V, Debug OFF, LVP OFF

#include "global.h"
uchar _delay;           //PWM DELAY
uint l_count = 0;       //LOOP COUNT
uint cnt_max;

void main(){
    OSCCON = 0x68;      //内部 4MHz
    OPTION_REG = 0xf;   //タイマー0関連ダミー
    APFCON = 0x3;       //ALTERNATE CCP
    LATA = 0x0;         //出力 OFF
    TRISA = 0xb;        //RA2,RA4,RA5出力
    WPUA = 0;           //プルアップしない
    ad_init();          //AD初期化
    WDTCON = 0xf;       //ウオッチドッグ128mS
    asm CLRWDT;         //WDT CLR
    CCP1CON = 0x8c;     //PWM ACTIVE H
    PR2 = 39;           //サイクルタイム(39+1)  x 1u = 40uS
    CCPR1L = 20;        //デューティー 20 x 1uS をセット
    T2CON = 0x4;        //T2 ON プリスケーラー無し
    _delay = 1;
    PWM1CON = _delay;                               //ディレーをセット
    while(1){
        asm CLRWDT;                                 //WDT CLR
        bt_volt();
        if(adf && (btvb > 7200)){                   //7.2V以上はディレーを増加
            _delay = (btvb - 7200) / 200 + 1;
        }
        else _delay = 1;
        PWM1CON = _delay;                           //ディレーをセット
        cnt_max = 0;
        if(btvb < 5800) cnt_max = 540;              //B電池電圧低下
        if(btva < 950) cnt_max = 180;               //A電池電圧低下
        if(btvb < 5800 && btva < 950) cnt_max = 60; //AB電池電圧低下
        if(cnt_max){
            l_count++;
            if(l_count > cnt_max){
                LED = ~LED;
                l_count = 0;
            }
        }
        else LED = 0;
    }
}

 製作した電源ユニット(改)

電池管ラジオ用電源(改)

 トランスが小型軽量になり、一回り小型のプラスチックケースに収納することが出来ました。
 内部には銅テープを貼っています。

電池管ラジオ用電源(改)

 周波数が高くなった為、ノイズは強烈になりました。
 内部に貼った貼った銅テープだけではノイズは取れず、外側にも銅テープを貼りました。
 テープの合わせ目は半田で短絡しておくと効果があります。
 これで使えるレベルになりました。
 ただし、ケースの蓋は開かず、開ければテープの貼り直しになります。
 テープを貼る前に十分、ハード、ソフトのチェックを済ませておく必要があります。


 電源の特性

電源の動作特性

 前回同様、実際の負荷を想定した6.65KΩの固定抵抗を接続しました。
 出力端の短絡電流は29mA程度となりました。


 入力電圧−入力電流

入力電圧−入力電流

 前回より入力電流が少なくなり、効率UPが期待出来ます。
 入力電圧10V以上で入力電流が下がっているのはデューティーを下げている為です。


 入力電圧−出力電圧

入力電圧−出力電圧

 出力電圧が前回と同じくらいになるようにトランスの巻き数比を調整しました。


 入力電圧−出力電流

入力電圧−出力電流

 出力電圧が前回と同じレベルですので出力電流も同じレベルになります。


 入力電圧−効率

入力電圧−効率

 効率は大幅にUPしました。
 電池の持続時間は効率のUP率以上に伸びるはずです。


 負荷を重くしてみる

電源の動作特性2

 負荷抵抗を6.65KΩから5.02KΩに変更した時の特性です。


 入力電圧−入力電流

入力電圧−入力電流

 入力電圧−出力電圧

入力電圧−出力電圧

 入力電圧−出力電流

入力電圧−出力電流

 入力電圧−効率

入力電圧−効率

 負荷が重くなり、効率は下がりましたが、それでも75%以上あります。


 電池管ラジオ用B電源V

 これはもう少し小型のラジオの電源として考えたものです。
 単3電池3本で40V5mA程度の負荷を想定した電源です。


 回路図

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

電池管ラジオ用電源回路図

 一回り小型のFT−50#43コアを使用したので巻き数が取れず、周波数25KHzでは効率が悪いので50KHzに 上げています。
 トランスのレギュレーションが悪く、無負荷にすると出力電圧が90V位に上がってしまうので52Vの定電圧ダイオードで クランプしています。
 ただし、負荷を5mA程度取ると電圧が40V程度になるので、定電圧ダイオードは回路動作と無関係になります。
 定電圧ダイオードに電流が流れた事はフォトカプラでCPUにフィードバックしていますが定電圧制御している訳では ありません。
 デューティーを下げて、無負荷の時の消費電流を多少でも下げようとした訳です。
 デューティーを下げすぎると消費電流は減るのですが出力にリップルが出ます。
 又、入力電圧を計って電圧が高い時もデューティーを下げています。
 出力の短絡電流は16mAでした。


 プログラム

 CPUクロックは8MHzに上がりました。
 PWM周波数も50KHzに上昇しました。
 A/D変換用クロックの周波数も上げる必要があります。

///////////////////////////////////////////////
//  電池管ラジオB電源X    global.h         //
//  2016/06/23  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#ifndef _GLOBAL_H
#define _GLOBAL_H

///// 型の短縮名称
typedef unsigned char   uchar;
typedef unsigned int    uint;
typedef unsigned long   ulong;

///// A/d
typedef union{
    int adw;
    char adb[2];
}ADDATA;
extern ADDATA addata;
extern int btvb;
extern uchar adf;
extern void ad_init(void);
extern void bt_volt(void);

#endif

///////////////////////////////////////////////
//  電池管ラジオB電源X    adconv.c         //
//  2016/06/23  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#include "global.h"
ADDATA addata;
int btvb;           //電池電圧
uchar ad_cnt;       //AD変換回数
uchar adf;          //AD完了
uint adbuffb;       //演算バッファ

void ad_init(void){
    ad_cnt = 0;
    adf = 0;
    adbuffb = 0;
    ANSELA = 0x1;           //AN0
    FVRCON = 0x82;          //A/D REFF = 2.048
    ADCON1 = 0xd3;          //右詰め、Fosc/16, FVR
}

int ad_conv(uchar ch){
    ADCON0 = ch << 2;       //ch set
    ADCON0.ADON = 1;        //A/D使用
    Delay_ms(1);
    ADCON0.GO = 1;          //A/D START
    while(ADCON0.GO);
    addata.adb[0] = ADRESL;
    addata.adb[1] = ADRESH;
    return addata.adw;
}

void bt_volt(void){
    adbuffb += ad_conv(0);
    ad_cnt++;
    if(ad_cnt == 32){                   //32回の平均
        btvb =2 * 4 * (adbuffb >> 5);   //2mVx分圧比/32
        adbuffb = 0;
        ad_cnt = 0;
        adf = 1;
    }
}

///////////////////////////////////////////////
//  電池管ラジオB電源X    radiops5.c       //
//  2016/06/23  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

// CLOCK 8MHz
// Oscillator INTOSC, Watchdog controlled by SWDTEN bit, Power-up Timer ON,
// MCLR Pin ON, Code Protection OFF, Data Protection OFF,
// Brown-out Reset ON, Clock Out OFF, Int/Ext Switchover OFF,
// Fail-safe Clock Monitor OFF, F-Memory Self W-protection OFF, PLL OFF
// Stack Of/Uf Reset ON, Brown-out Reset 2.5V, Debug OFF, LVP OFF

#include "global.h"
uchar _delay;           //PWM DELAY

void main(){
    OSCCON = 0x73;      //内部 8MHz
    OPTION_REG = 0xf;   //タイマー0関連ダミー
    APFCON = 0x3;       //ALTERNATE CCP
    LATA = 0x0;         //出力 OFF
    TRISA = 0xb;        //RA2,RA4,RA5出力
    WPUA = 0;           //プルアップしない
    ad_init();          //AD初期化
    WDTCON = 0xf;       //ウオッチドッグ128mS
    asm CLRWDT;         //WDT CLR
    CCP1CON = 0x8c;     //PWM ACTIVE H
    PR2 = 39;           //サイクルタイム(39+1)  x 0.5u = 20uS
    CCPR1L = 20;        //デューティー 20 x 0.5uS をセット
    T2CON = 0x4;        //T2 ON プリスケーラー無し
    _delay = 1;
    PWM1CON = _delay;                               //ディレーをセット
    while(1){
        asm CLRWDT;                                 //WDT CLR
        bt_volt();
        if(!PORTA.B1){                              //軽負荷
            if(adf && (btvb > 4100)){
                _delay = (btvb - 4100) / 200 + 3;
            }
            else _delay = 3;
        }
        else {
            if(adf && (btvb > 4100)){               //4V以上はディレーを増加
                _delay = (btvb - 4100) / 200 + 1;
            }
            else _delay = 1;
        }
        PWM1CON = _delay;                           //ディレーをセット
    }
}


 製作した電源ユニット

電源基板 トランスの箱 装置外観
電源基板トランスの箱装置外観

 製作した電源です。  ケースはトランスの空き箱を使いました。
 箱の全面に銅テープを貼ります。
 テープの合わせ目は半田で接続します。


 電源の特性

電源の動作特性

 出力端の短絡電流は16mA程度となりました。


 入力電圧−入力電流

入力電圧−入力電流

 入力電圧が4Vを越えた辺りから入力電流が減っていますが入力電圧4.1V以上はPWMのデューティーを変更している 為です。


 入力電圧−出力電圧

入力電圧−出力電圧

 入力電圧−出力電流

入力電圧−出力電流

 入力電圧−効率

入力電圧−効率

 電池管ラジオ用B電源W

 現在、サブミニチュア管を使用した4球スーパーを計画しています。
 キットと違って部品集めから始めなければならないので挫折する可能性もあります。
 とりあえず電源を考えたのですが上記の40V5mAの電源では、やや能力不足となります。
 そこで単3電池4本で45V8mAの電源を新たに作りました。


 回路図

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

電池管ラジオ用電源回路図

 コアを一回り大きくして発振周波数は20KHzに下げました。
 前作では電池電圧低下検出を省略しましたが、復活させました。
 負荷を解放すると80V以上の電圧が出てしまうので定電圧ダイオードでクランプしています。
 実際の使用においては無負荷にはならないので、定電圧ダイオードは不要ですが動作確認中のトラブルを避ける為に 入れてあります。
 短絡保護回路も動作確認中のトラブルを避ける為に入れてあり、短絡電流は18mA程度になります。
 電池逆接続はA電池、B電池とも問題ありません。
 ただし、A電池はラジオに直接入力されるので、ラジオ側で考慮する必要があります。


 プログラム

 CPUクロックは4MHz、PWM周波数は20KHzです。
 B電池の電圧が3.8V以下になると電池切れ警報を出します。
 この時のLEDの点滅周期は実測で4.6秒でした。
 A電池の電圧が0.95V以下になると電池切れ警報を出します。
 この時の点滅周期は1.7秒でした。
 A、B両方が低下すると周期は0.3秒程度でした

////////////////////////////////////////////////
//  電池管ラジオB電源W    global.h          //
//  2016/12/11  PIC12F1822  MikroC  Ver6.0.0  //
////////////////////////////////////////////////

#ifndef _GLOBAL_H
#define _GLOBAL_H

///// 型の短縮名称
typedef unsigned char   uchar;
typedef unsigned int    uint;
typedef unsigned long   ulong;

///// main
#define LED LATA.B2

///// A/d
typedef union{
    int adw;
    char adb[2];
}ADDATA;
extern ADDATA addata;
extern int btva;
extern int btvb;
extern uchar adf;
extern void ad_init(void);
extern void bt_volt(void);

#endif

////////////////////////////////////////////////
//  電池管ラジオB電源W    adconv.c          //
//  2016/12/11  PIC12F1822  MikroC  Ver6.0.0  //
////////////////////////////////////////////////

#include "global.h"
ADDATA addata;
int btva, btvb;         //電池電圧
uchar ad_cnt;           //AD変換回数
uchar adf;              //AD完了
uint adbuffa, adbuffb;  //演算バッファ

void ad_init(void){
    ad_cnt = 0;
    adf = 0;
    adbuffa = adbuffb = 0;
    ANSELA = 0x3;           //AN0,AN1
    FVRCON = 0x82;          //A/D REFF = 2.048
    ADCON1 = 0x93;          //右詰め、Fosc/8, FVR
    LED    = 0;
}

int ad_conv(uchar ch){
    ADCON0 = ch << 2;       //ch set
    ADCON0.ADON = 1;        //A/D使用
    Delay_ms(1);
    ADCON0.GO = 1;          //A/D START
    while(ADCON0.GO);
    addata.adb[0] = ADRESL;
    addata.adb[1] = ADRESH;
    return addata.adw;
}

void bt_volt(void){
    adbuffb += ad_conv(0);
    adbuffa += ad_conv(1);
    ad_cnt++;
    if(ad_cnt == 32){                   //32回の平均
        btvb =2 * 4 * (adbuffb >> 5);   //1/32x2mVx分圧比
        btva = 2 * (adbuffa >> 5);
        adbuffa = 0; adbuffb = 0;
        ad_cnt = 0;
        adf = 1;
    }
}

////////////////////////////////////////////////
//  電池管ラジオB電源W    radiops6.c        //
//  2016/12/11  PIC12F1822  MikroC  Ver6.0.0  //
////////////////////////////////////////////////

// CLOCK 4MHz
// Oscillator INTOSC, Watchdog controlled by SWDTEN bit, Power-up Timer ON,
// MCLR Pin OFF, Code Protection OFF, Data Protection OFF,
// Brown-out Reset ON, Clock Out OFF, Int/Ext Switchover OFF,
// Fail-safe Clock Monitor OFF, F-Memory Self W-protection OFF, Pll OFF
// Stack Of/Uf Reset ON, Brown-out Reset 2.5V, Debug OFF, LVP OFF

#include "global.h"
uchar _delay;           //PWM DELAY
uint l_count = 0;       //LOOP COUNT
uint cnt_max;

void main(){
    OSCCON = 0x68;      //内部 4MHz
    OPTION_REG = 0xf;   //タイマー0関連ダミー
    APFCON = 0x3;       //ALTERNATE CCP
    LATA = 0x0;         //出力 OFF
    TRISA = 0xb;        //RA2,RA4,RA5出力
    WPUA = 0;           //プルアップしない
    ad_init();          //AD初期化
    WDTCON = 0xf;       //ウオッチドッグ128mS
    asm CLRWDT;         //WDT CLR
    CCP1CON = 0x8c;     //PWM ACTIVE H
    PR2 = 49;           //サイクルタイム(49+1)  x 1u = 50uS
    CCPR1L = 25;        //デューティー 25 x 1uS をセット
    T2CON = 0x4;        //T2 ON プリスケーラー無し
    _delay = 1;
    PWM1CON = _delay;                               //ディレーをセット
    TRISA = 0xb;
    while(1){
        TRISA = 0xb;
        asm CLRWDT;                                 //WDT CLR
        bt_volt();
        if(adf && (btvb > 6000)){                   //6V以上はディレーを増加
            _delay = (btvb - 6000) / 100 + 1;
        }
        else _delay = 1;
        PWM1CON = _delay;                           //ディレーをセット
        cnt_max = 0;
        if(btvb < 3800) cnt_max = 540;              //B電池電圧低下
        if(btva < 950) cnt_max = 180;               //A電池電圧低下
        if(btvb < 3800 && btva < 950) cnt_max = 60; //AB電池電圧低下
        if(cnt_max){
            l_count++;
            if(l_count > cnt_max){
                LED = ~LED;
                l_count = 0;
            }
        }
        else LED = 0;
    }
}


 製作した電源ユニット

電源基板 ケース 装置外観
電源基板ケース装置外観

 製作した電源です。  ケースは菓子箱を切り抜いて作りました。
 箱の全面に銅テープを貼ります。


 電源の特性

入力変動特性

負荷変動特性

 入力電圧−入力電流

入力電圧−入力電流

 入力電圧が6.5Vを越えた辺りから入力電流が急に増えていますが、定電圧ダイオードに電流が流れる為です が特に問題ありませんし、6.5Vを超えるのは新品の電池の一瞬の間だけです。


 入力電圧−出力電圧

入力電圧−出力電圧

 定電圧制御をしているわけではないので出力電圧は入力電圧に比例して変化します。
 これはB電源を電池直接にしても徐々に電圧が下がるので同じことです。
 出力電圧の調整は巻き数比を変えるしかありません。


 入力電圧−出力電流

入力電圧−出力電流

 入力電圧−効率

入力電圧−効率

 通常の電池電圧範囲では85%以上の高い効率です。


以下のグラフは入力電圧を6V一定にして負荷を変化させたときの特性です。

 出力電流−入力電流

出力電流−入力電流

 出力電流−出力電圧

出力電流−出力電圧

 無負荷の出力電圧は定電圧ダイオードによりクランプされています。


 出力電流−効率

出力電流−効率

 リップルノイズ

 出力のリップルノイズは完全に取れていてシンクロでは観察出来ません。
 しかしながらポケットラジオを近づけると強いノイズを受信します。
 ノイズは空中に飛ぶので回路的に解決するのは困難です。
 そこで、銅テープで完全にシールドしました。
 かなり、状況は良くなりましたが、ポケットラジオを密着させるとノイズを受けます。
 実際の使用にあたっては、寸法に余裕のあるケースに収納し、バーアンテナとの距離を離す事が必要があります。
 別の頁「電池管ラジオキット」で実際に使用した写真があります。
 追補> 
 空中に飛ぶノイズはコンデンサーに充電するとき発生するような気がします。
 例えばノイズを吸収するために巻き線にCRの直列回路を入れると電源のノイズは吸収されるのですが電磁波の放射は増すので ラジオのノイズは増えてしまいます。
 この事に気付かず、電池管ラジオ用B電源Uまでは回路図にCR直列回路が入っています。
 急激な出力の変化はラジオノイズを増やします。
 出来るだけスイッチング周波数を下げるのは効果が有りますが、トランスが大型になり効率が下がります。
 出力FETのゲートに小抵抗を入れると波形が鈍ってラジオノイズは減りますが若干、効率が下がります。

 1.5V入力の電源

 1.5VのA電池を電源にするDC/DCコンバータでB電源を供給すれば電池の種類が1種類で済みます。
 ただし、昇圧比が大きいので電池には、かなりの電流が流れます。
 また電源電圧が1.5Vと低いので回路の電圧ロスがシビアで効率も低くなります。
 その辺りを確認するために1.5V電源のDC/DCコンバータを実験しました。
 ただし、実際に真空管ラジオに使用した訳ではありません。
 用途としてはサブミニチュア管4球ラジオ程度のB電源を考えています。
 仕様としては電池電圧1.25Vの時、負荷に40V、4mAが流せるものとします。


 シングル出力

DC/DCコンバータ回路図

 トランス

トランス
 コアはFT−50#43です。
 一次巻き線は0.26mmUEWを24回でセンタータップ。(12回バイファイラ巻き)
 二次巻き線は0.16mmUEWを巻いたのですが、途中で巻き数が判らなくなり、インダクタンスとコアのAL値から 逆算して230回程度となりました。

 トロイダルコア用巻き線治具

巻き線治具

 トロイダルコアにコイルを巻くのは大変です。
 写真の様な巻き線治具を作成しておくと重宝します。

 実験結果

実験データ

 表に電池電圧1.25Vのデータはありませんが、1.25Vの時40V、4mA以上の負荷が取れるように 巻き数比を調整します。
 トランスは先に二次巻き線を巻き、その上に一次巻き線を巻いているので実際には二次巻き線の巻き数を増減します。
 出力電圧の微調整はベース抵抗の値でも出来ます。
 ベース電流を増やせば出力電圧は上がります。
 ベース抵抗にパラに入っているコンデンサーはスピードアップコンデンサーで波形の立ち上がりが早くなります。
 結果、効率は上がりますが発生ノイズは大きくなります。
 回路図の1uFを0.1uFにすると効率は、かなり落ちます。
 実験データは10KΩの負荷(実測10.05KΩ)を接続した時のものです。
 効率は70%で、1.5V電源の回路としては、まずまずです。
 ただし、ノイズに対するシールドが必要です。
 仕様部品や回路定数により若干、向上する可能性が有りますが、大きくは変わらないと思います。

 動作波形

動作波形

 写真は10KΩ負荷の時のコレクタ波形です。(1V/DIV、10uS/DIV)
 周波数は30KHz程度でコアと巻き線の状態で決まるようです。
 CRの値や電源電圧の変動では、あまり変化しません。
 トランジスタがオフの時コレクタには電源電圧の2倍の電圧が現れます。

 問題点

 この回路は簡単、小型で効率も比較的高いのですが電源電流がパルス状に大きく変化します。
 その為、電源端子のリップルノイズが簡単には取れません。
 回路図の定数470uF×2では数十mVのリップルノイズがの残ります。
 用途によっては十分ですが電池管ラジオではヒーターに接続されるので影響が心配されます。
 この辺りは実際に使用していないので判りません。
 更に大容量のコンデンサーを入力に付加するか、ヒーター側にフィルタを付けたらどうだろうと考えています。
ヒーター回路 インダクター
 写真のインダクターは100uHですが直流抵抗が0.5Ωですので電圧ロスは小さいです。
 二次側のリップルノイズは回路的には完全に取れていますが、電磁波として空中に飛ぶのでシールドは必要です。
 追補>
 その後の実験でこの回路(シングル出力)は電源電流のリップルがヒーター経由で乗り、使用に耐えない事が判りました。
 上記程度のフィルターでは気休めにもなりませんでした。


 プッシュプル回路

DC/DCコンバータ回路図

 プッシュプル回路では片側のトランジスタがオフの時は、もう一方がオンしているため結果的に常に電源電流が流れている ことになり、電源電流が変化しません。
 その為、電源にリップルノイズが発生しません。

 トランス

トランス
 コアはFT−50#43です。

 一次巻き線は0.26mmUEWを36回でセンタータップ。(18回バイファイラ巻き)
 二次巻き線は0.16mmUEWを巻いたのですが、途中で巻き数が判らなくなり、インダクタンスとコアのAL値から 逆算して440回程度となりました。
 最初はシングル回路のトランスを流用したのですが、入力電流が増え、周波数は下がり、効率は54%程度でした。
 入力電流を減らす為には巻き数を増やしてインダクタンスを大きくする必要があります。
 結果、入力電流は減って効率は60%程度に改善されましたが周波数は、さらに下がりました。

 実験結果

実験データ

 プッシュプルにした為、電源電流は、ほぼ一定になり、電源端子のリップルノイズは回路図の定数で完全に取れています。
 ただし、電磁波として空中に飛ぶノイズはシールドしないと取れないと思います。  効率は10%程度下がりました。
 効率60%は満足出来る値ではありません。
 スイッチング電源を作るとき微少電力を扱う場合を除き、最低でも入力電力の2/3が負荷に供給出来る(効率66.7%)を 目標にしています。
 効率が下がる原因としてトランジスタのオフが遅れ、もう一方のトランジスタのオンと重なる時間が発生しているのではないか と予想します。
 対策として
・ トランジスタをSW用のターンオフ時間の小さい物、飽和電圧の小さいものに交換する。
・ 整流ダイオードをVFが小さく逆回復時間の小さい物にする。
・ 一次巻き線、二次巻き線の巻き数を増やして(巻き数比は変えない)発振周波数を下げる。
・ CRの値を見直す。
 等で効率66.7%に到達するのを今後の課題とします。

 動作波形

動作波形

 写真は10KΩ負荷の時のコレクタ波形です。(1V/DIV、10uS/DIV)
 周波数は4.5KHz程度で大きく下がりました。
 この回路では電源電圧の変化で周波数が変化します。


 製作した電源

DC/DCコンバータ回路図

 効率を上げる為にトランジスタをストロボ用の2SC5714に交換しました。
 このトランジスタはコレクタ飽和電圧が小さい、蓄積時間が小さい、HFEが非常に大きいという特徴があります。
 ダイオードは適当なものが見つからず、そのままです。
 トランスは若干、巻き数比を下げました。
 一次側の巻き数は48回でセンタータップ(24回/24回バイファイラ巻き)
 二次側は巻き数を数えていませんがインダクタンスとAL値から逆算して440回程度だと思います。
 最初に二次巻き線を巻き、その上に一次巻き線を巻き、電圧の調整は一次巻き線の巻き数で調整しました。
 結果的には3%程、効率が上昇し、63%強となりましたが、目標の66.7%には到達しませんでした。
 その後、出力に保護回路を付けました。
 短絡、過電流保護と無負荷時の過電圧防止回路を付加しました。
 これらはロスとなるので効率は下がります。
 総合的には効率58〜59%となってしまいました。
 最後に厚紙で作った箱に入れ、銅テープでシールドし、さらにアルミテープを、その上に巻きました。
 これだけ対策しても電磁ノイズは完全に取り切れてはいませんので配置を工夫する必要が有りそうです。
 ノイズをさらに少なくするには発振周波数を下げたり、波形の立ち上がり立ち下がりを緩やかにする必要があり、 寸法、重量、効率との兼ね合いになります。
 ラジオに組み込む機会は、今の所まだありません。
 追補>  その後、実際のラジオに組み込んで使用しています。
 詳しくはラジオの製作記事(1.5V単電源...)を参照してください。

 回路基板
回路基板

 厚紙で作った箱に入れる
箱に入れる

 シールドする
シールド


 効率を上げる

 前回に製作したDC/DCコンバータは、まだ満足出来ない点が幾つかあります。
 その一つが効率です。
 出力の保護回路を付けた状態では58%程度になってしまいます。
 あるときコアの材質を変える事を思いつき、実行してみました。

DC/DCコンバータ回路図

 回路自体は殆ど変わっていません。
 2SC5714は非常にHFEが大きいのでベース抵抗の値を大きくしています。
 一次巻き線に電流が流れすぎるとコアが飽和します。
 飽和すると二つのトランジスタのコレクタ波形が非対称になります。
 同時に飽和するのでは無く、し易い方の片側から飽和するようです。
 飽和した側のトランジスタがオフしたとき大きなスパイク電圧が発生します。
 飽和した場合、効率は下がるものの、二次巻き線に、それなりの出力電圧は発生するのでオシロでコレクタ波形を監視し、 飽和していないことを確認する必要があります。
 変わったのはトランスのコアです。
 今回のコアは透磁率の大きいFT−50#75です。
 巻き数は一次側0.26mmUEWを36回、二次側は例によって後で計算により求めていますが、0.16mmを360回 程度です。
 トランスの製作に関しては理論的では無く、感覚的に行っていますが、巻き数比を10倍程度にしなければならない事は 事実です。

 実験結果

実験データ

 出力の過電圧保護回路の関係で出力電圧は仕様より下げています。
 一次側の巻き数を減らせば電圧は簡単に上がるのですが、電池が新しいとき定電圧ダイオードに無駄な電流が 流れてしまいます。


 入力電圧−入力電流

入力電圧−入力電流

 電源電圧1.5V以上で電流が増えているのは出力保護の定電圧ダイオードに電流が流れる為です。
 効率は下がりますが壊れることはありません。


 入力電圧−出力電圧

入力電圧−出力電圧
 

 入力電圧−効率

入力電圧−効率

 電池電圧の殆どの範囲で効率は75%程度あります。
 もし出力側の保護回路が無ければ効率は80%を超えると思われ、1.5V入力の電源としては素晴らしい値だと思います。
 (保護回路の定電流ダイオードで2V程度の電圧降下があると思われます。)

 回路基板
回路基板

 検討事項

 効率に関しては満足出来ましたが、多少、気になる点があります。
 相変わらず、空中に伝搬するノイズが発生しているのでシールドする必要があります。
 発振周波数が3KHz程度ですので、コアに耳を近づけると微かに発振音が聞こえます。
 発振周波数は電源電圧で変動します。
 今まで#43材のコアを使っていたのですが今回#75材を使ってみました。
 逆に透磁率の小さい#61材を使ったらどうなるか試してみたいと思います。

 実際にラジオに組み込んでみた

実際にラジオに組み込み

 上記の電源をラジオに組み込んでみました。
 ラジオの基板は以前に作成したものを流用しました。
 今回はヒーター回路に電源ノイズが回り込む可能性があるので、ヒーター回路のフィルターを強化しました。
 電池で駆動していた時と部品配置が異なるのでケースは作り直しとなりました。
 電源電流はヒーターとDC/DCコンバータで450mA程度流れるので単3電池2本をパラに接続しています。
 コンバータは銅テープを何重にも巻いてシールドしました。
 動作させたところ空中伝搬ノイズが強烈で使用に耐えません。
 ラジオの電源としては失敗ですがラジオ以外の用途では高効率の電源として十分使えると思います。


 マイコンを使ってみる

製作した電源

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

マイコンを使った電源
///////////////////////////////////////////////
//  電池管ラジオB電源Z    radiops7.c       //
//  2017/11/29  PIC12F1822  MikroC  Ver6.0.0 //
///////////////////////////////////////////////

// CLOCK 8MHz
// Oscillator INTOSC, Watchdog controlled by SWDTEN bit, Power-up Timer ON,
// MCLR Pin ON, Code Protection OFF, Data Protection OFF,
// Brown-out Reset ON, Clock Out OFF, Int/Ext Switchover OFF,
// Fail-safe Clock Monitor OFF, F-Memory Self W-protection OFF, PLL OFF
// Stack Of/Uf Reset ON, Brown-out Reset 2.5V, Debug OFF, LVP OFF


void main(){
    OSCCON = 0x73;      //内部 8MHz
    OPTION_REG = 0xf;   //タイマー0関連ダミー
    APFCON = 0x3;       //ALTERNATE CCP
    LATA = 0x0;         //出力 OFF
    TRISA = 0x8;        //RA3入力
    WPUA = 0;           //プルアップしない
    WDTCON = 0xf;       //ウオッチドッグ128mS
    asm CLRWDT;         //WDT CLR
    CCP1CON = 0x8c;     //PWM ACTIVE H
    PR2 = 39;           //サイクルタイム(39+1)  x 0.5u = 20uS
    CCPR1L = 20;        //デューティー 20 x 0.5uS をセット
    T2CON = 0x4;        //T2 ON プリスケーラー無し
    PWM1CON = 1;        //ディレーをセット
    while(1){
        asm CLRWDT;     //WDT CLR
        PWM1CON = 1;    //ディレーをセット
    }
}

 電源回路はいろいろ試したのですが、これはPIC12F1822を使ったものです。
 結果的にはノイズで使用に耐えなかったのですが、効率が高く、ラジオ以外の用途では十分実用になると思います。
 追補>
 その後、実際のラジオに組み込んでいます。
 確かにノイズは多いのですがスペースに余裕があれば厳重にシールドし、なんとか使えます。
 詳しくはラジオの製作記事を参照してください。

電源の特性

 効率は全範囲で85%程度ありますが基板のスペースの関係で出力の保護回路が付いていません。
 これを付けても75%以上にはなると思います。

ドレイン波形

 繰り返し周波数は50KHzでオン時に0.5uSの休止時間を入れています。


 作り直した電源回路

製作したコンバーター
電源回路

 今度はノイズを減らす目的で再度、作り直しました。
 空中伝搬ノイズはコンデンサーに充電を開始した瞬間かコイルに流れていた電流が遮断された瞬間に発生すると思われます。
 波形を鈍らせればノイズは減少すると思われますが効率は下がります。
 回路図でトランスの巻き線とパラに1UFのコンデンサーを入れるとノイズの発生は大きく減少します。
 波形は鈍っているはずですが見た目に大きな変化は有りません。

 電源の特性

電源特性
 このラジオはB電圧48Vの時、4mA弱の電流が流れるので12KΩ(実測11860Ω)の負荷を接続しました。
 効率は大きく下がりましたが電源電圧が低いほど効率が上がるのが面白いところです。

 使ってみて

 地元のローカル局3局の内、周波数が低い方の2局は実用的に聞こえるのですが高い方の1局は選局すると発振気味になり 明確さを欠きます。
 コンバータの発振周波数は1KHz程度と低いのですが、この1KHzが微かに聞こえます。
 周波数の低い2局では同調すれば消えますが、放送の無い位置では少し目立ちます。
 単3電池2本で4〜5時間、使えると思います。
 以上、まだまだ改良の余地がありますが、今回は此処までです。


 オマケ:電源表示灯

 電池管のラジオに電源表示灯をつける場合A電池の1.5VではLEDは点灯しません。
 B電源でラジオと直列にLEDを入れるのが簡単です。
 この場合、VFによる電圧ロスが赤色LEDで1.8V位あります。
 B電圧が18V〜24Vと比較的低い場合、この1.8Vが大きく感じます。
 そこでDC/DCコンバータで1.5Vを昇圧します。
LED用コンバータ
回路図
 上図は一般的に「1.5Vで白色LEDを点灯する回路」として出回っているものです。
 ただし、白色LEDは電源表示灯として不向きですので赤色LEDに変更し、VFを合わせる為、ダイオード2本 を直列に入れてあります。
 2本のインダクターは密着させる必要があります。
 この回路は強いノイズを発生します。

LED用コンバータ
回路図
 上図はインダクターの代わりにトロイダルコアを使用したものです。
 コアは手持ちのT−37#12を使用し0.1〜0.26mm程度のUEWを0−CT−120回(60回バイファイラ巻き) 巻いています。  コアはもっと小さな物で十分です。
 このコアはカーボニル鉄で透磁率の小さな高周波用のものです。
 この回路は発振周波数が5MHz程度でラジオノイズを発生しません。
 コアの透磁率が大きいと発振周波数が下がり、放送周波数以下ではラジオノイズが発生します。
 かなり低い周波数でも高調波がラジオノイズとなります。
 発振周波数が高い場合、低調波の影響はありません。
 この回路では1V以下、又は1.6V以上では動作が変わり、発振周波数が下がってノイズを発生します。
 動作電流は1.5Vで5mA、1.25Vで2mA程度で、動作電流に比例して暗くなり、1V以下では消灯しました。


 追補>
 この記事をUPした後も電池管ラジオB電源用のDC/DCコンバータをいろいろ試しています。
 実際の使用例に関してはラジオの製作記事
 <1.5V単電源4球スーパー>
 <1.5V単電源3球レフレックススーパー>
 <1.5V単電源3球ポータブルレフレックススーパー>
 <1.5V単電源4球ポータブルスーパー>
 を参照してください。


 電池管ラジオキット用電源の作り直し

 私が最初に製作した電池管ラジオはラジオ少年の4S−DC−DXで次に製作したのは4S−DCでした。
 キットのB電源は006P電池を7本〜8本使用するように指示されていました。
 しかし、私は最初からDC−DCコンバータを使用しました。
 調整時に大量の006Pを消費すると考えた為です。
 CVCC電源 → DC−DCコンバータとすれば調整に電池を使用しなくて済みます。
 (その後、電池管調整用のCVCC電源を製作したので、現在は、こちらを使って調整しています。)
 最初のDC−DCコンバータは単3電池6本(9V)から65Vを発生するものでした。
 動作上は特に問題無かったのですが、A電池(単1、1本)とB電池とでは電池の消耗時期が異なるので非常に煩わしく 感じました。
 その後、オリジナルのラジオを作るようになり、こちらは小出力だったこともあり、ヒーター電源の1.5VからB電源を 昇圧するようになりました。
 こうすれば電池が1種類で済むので電池の交換が簡単です。
 今回、4S−DC−DX、4S−DCの電源も1種類の電池で駆動出来る様に電源を作り直しました。


 回路図

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

電池管ラジオキット用電源回路図

 負荷は65V10mAを想定しています。
 これを1.5Vから昇圧するので電池電流は大きくなります。
 ノイズと効率は相反するのですが、今回は効率を優先します。
 今回製作した2台のDC−DCコンバータは同じ回路ですが、1.5V入力の時、6.5KΩの負荷に65Vの電圧を発生する ようにトランス2次巻き線の巻き数を調整しました。
 上記の条件で2台の電源の効率は79%と80%でした。
 実際にラジオに接続した時の入力電流は1.5V820mAでした。
 上記の電流にはヒーター電流250mAを含んでいます。
 これを単1アルカリ電池1本で供給すると10時間程度の持続時間と予想します。
 実用的には少し短いと感じたので2本パラにしました。
 回路はマイコンによるPWM制御です。
 1.5Vではマイコンは動作しないので補助電源で3.3Vに昇圧しています。
 PWMにはデッドタイムを入れて突入電流による効率低下を防いでいます。(ノイズは増えます)
 電池電圧が高い時はデューティーを下げて入力電流を下げています。(ノイズは増えます)
 電池電圧が1V程度になったら電源表示灯を点滅させます。
 出力保護は開放したときの高電圧をクリップします。
 また、出力短絡から保護します。
 ただし、出力を短絡すると電源だけで1A消費するので短時間の保護です。
 効率の高い電源ですが強烈なノイズを発生するので厳重にシールドします。


 ソフトウエア


///////////////////////////////////////////////
//  電池管ラジオB電源      global.h         //
//  (1.5V電源U)                       //
//  2018/09/03  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#ifndef _GLOBAL_H
#define _GLOBAL_H

///// 型の短縮名称
typedef unsigned char   uchar;
typedef unsigned int    uint;
typedef unsigned long   ulong;

///// A/d
typedef union{
    int adw;
    char adb[2];
}ADDATA;
extern ADDATA addata;
extern int btvb;
extern uchar adf;
extern void ad_init(void);
extern void bt_volt(void);

#endif

///////////////////////////////////////////////
//  電池管ラジオB電源      adconv.c         //
//  (1.5V電源U)                       //
//  2018/09/03  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

#include "global.h"
ADDATA addata;
int btvb;           //電池電圧
uchar ad_cnt;       //AD変換回数
uchar adf;          //AD完了
uint adbuffb;       //演算バッファ

void ad_init(void){
    ad_cnt = 0;
    adf = 0;
    adbuffb = 0;
    ANSELA = 0x1;           //AN0
    FVRCON = 0x82;          //A/D REFF = 2.048
    ADCON1 = 0x93;          //右詰め、Fosc/8, FVR
}

int ad_conv(uchar ch){
    ADCON0 = ch << 2;       //ch set
    ADCON0.ADON = 1;        //A/D使用
    Delay_ms(1);
    ADCON0.GO = 1;          //A/D START
    while(ADCON0.GO);
    addata.adb[0] = ADRESL;
    addata.adb[1] = ADRESH;
    return addata.adw;
}

void bt_volt(void){
    adbuffb += ad_conv(0);
    ad_cnt++;
    if(ad_cnt == 32){                   //32回の平均
        btvb = 2 * (adbuffb >> 5);      //2mVx分圧比/32
        adbuffb = 0;
        ad_cnt = 0;
        adf = 1;
    }
}


///////////////////////////////////////////////
//  電池管ラジオB電源      radp1r53.c       //
//  (1.5V電源)                         //
//  2018/09/03  PIC12F1822  MikroC  Ver4.60  //
///////////////////////////////////////////////

// CLOCK 4MHz
// Oscillator INTOSC, Watchdog controlled by SWDTEN bit, Power-up Timer ON,
// MCLR Pin OFF, Code Protection OFF, Data Protection OFF,
// Brown-out Reset ON, Clock Out OFF, Int/Ext Switchover OFF,
// Fail-safe Clock Monitor OFF, F-Memory Self W-protection OFF, Pll OFF
// Stack Of/Uf Reset ON, Brown-out Reset 2.5V, Debug OFF, LVP OFF

#include "global.h"

void main(){
    uchar ledf = 0;
    uint _delay = 1;

    OSCCON = 0x6b;      //内部 4MHz
    OPTION_REG = 0xf;   //タイマー0関連ダミー
    APFCON = 0x3;       //ALTERNATE CCP
    LATA = 0x0;         //出力 OFF
    TRISA = 0x9;        //RA0,RA3入力
    WPUA = 0;           //プルアップしない
    WDTCON = 0xf;       //ウオッチドッグ128mS
    ad_init();          //AD init
    asm CLRWDT;         //WDT CLR
    CCP1CON = 0x8c;     //PWM ACTIVE H
    PR2 = 39;           //サイクルタイム(39+1)  x 1u = 40uS
    CCPR1L = 20;        //デューティー 20 x 1uS をセット
    T2CON = 0x4;        //T2 ON プリスケーラー無し
    PWM1CON = _delay;   //ディレーをセット
    while(1){
        asm CLRWDT;                         //WDT CLR
        bt_volt();                          //電池電圧計測
        if(adf){
            if(btvb < 921) ledf = ~ledf;    //1V以下で点滅(80mVロス)
            else ledf = 0xff;               //それ以上で連続点灯
            adf = 0;
        }
        if(btvb < 1250) _delay = 1;         //デューティーの調整
        else if(btvb < 1600){
            _delay = btvb - 1250;
            _delay = _delay / 40;
            _delay += 1;
        }
        else _delay = 20;                   //出力停止
        PWM1CON = _delay;                   //ディレーをセット
        if(ledf) LATA.B2 = 1;               //LED ON
        else LATA.B2 = 0;                   //LED OFF
        Delay_ms(20);
    }
}


 製作した電源ユニット

電源基板 4S−DC−DXに組み込み 4S−DCに組み込み
電源基板4S−DC−DX4S−DC

 4S−DC−DXは馬鹿でかいケースに入っていてバーアンテナから離せるのでノイズの影響は殆どありません。
 電源は厚紙とアルミテープで作ったシールド箱に入れ、さらに小型のアルミケースに入れています。
 4S−DCはケースが比較的小さいので電源とバーアンテナの距離が稼げず、電池が新しい時、僅かにノイズの影響を 感じますが受信の支障にはなりません。
 電源は厚紙と銅テープでシールド箱を作っています。
 銅テープは何重にも巻いています。
 銅テープは高価ですが半田付け出来るのがメリットです。
 電池の持ちですが負荷の重い4S−DC−DX(1.5V、0.83A(ヒーター含む))を断続使用して約30時間、 実用的に聞く事が出来ました。
 4S−DCは1.5V0.79Aですので若干、電池の持ちはよくなりました。
 断続使用で40時間程度、電池電圧は0.9Vまで実用的に聞くことが出来ました。
 電池電圧が0.9V以下になって音が小さくなってなっても電源を切って一晩置けば若干、回復し2時間程度は聞くことが 出来ます。
 断続使用では動作時間が伸びます。


 4球スーパー電源の作り直し

 以前、紹介した4球スーパーの電源を作り直しました。
 1V6−5678−1AG5−5672の標準的なものです。
 電源はA電源が単1電池1本、B電源は単3電池4本から45V、6〜7mAをDC−DCコンバータにより供給して いました。
 電池応用ハンドブック(CQ出版)に記載されているアルカリ電池の定抵抗連続放電特性グラフから70時間程度の持続時間と 判断されます。
 ただし、放電終了電圧が0.9Vと規定されています。
 この電圧では受信出来たとしても音が、かなり小さくなるので実用的には45〜50時間の持続時間と思われます。
 これだけ電池か持てば実用的には問題無いと思われますが、やはり2種類の電池を管理するのが煩わしく、これも、1.5V 単電源に作りかえました。


 回路図

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

電池管ラジオキット用電源回路図

 回路は前項の「電池管ラジオキット用電源の作り直し」の電源と同じものが使えますが手持ち部品の関係で微妙に異なって います。
 ただし、出力電圧、電流が違うのでトランスだけは新規に作らなければなりません。
 今回は6.5KΩの負荷抵抗に約45Vの出力電圧を発生出来るようにトランスの2次巻き線を微調整しました。
 結果的には入力電圧1.5V、入力電流0.28Aの時、6.5KΩの負荷に46.5Vの電圧が発生しました。
 効率は79%ということになります。
 実際の負荷(ラジオ)は僅かに軽いと思います。


 ソフトウエア

 ソフトウエアも前項「電池管ラジオキット用電源の作り直し」と同じものが使えます。

 電源の入れ替え

今までの電源 新規の電源
今までの電源新規の電源

 製作した基板は前項のものと見た目が殆ど同じなので写真は写しませんでした。
 単3電池4本が無くなったのでスペースに余裕があるように見えます。
 ただし、扉に付けたスピーカーのマグネットが大きくて干渉するので配置には苦労しました。


 結果

 単1電池1本で全て賄うので連続動作時間は短くなります。
 電池電圧1.5Vの時、395mAの電流が流れました。(ヒーター電流を含む)
 電池応用ハンドブックのグラフから電池の動作時間を調べると30時間程度となります。
 グラフの放電終了電圧は0.9Vとなっています。
 この電圧でもラジオは聞こえますが微かな音です。
 実用的な持続時間は20時間程度と思われます。
 電池応用ハンドブックは2005年版ですが電池は年々良くなっているので、もう少し良い結果になるかもしれません。
 以前の電源より動作時間は短くなりましたが単1電池1本だけになったので取り扱いは楽になりました。
 この電源も強烈なノイズを発生しますがシールド、その他の対処で受信の支障にならないレベルになっています。




 動作時間65時間を達成

4球スーパー

 以前に紹介した4球スーパーですが1T4−SFを4本使用しています。
 電池は単1電池1本です。
 最初から1.5V単電源でしたがノイズを下げるためDC−DCコンバータを作り直しました。
 電池電圧が高いとき僅かなノイズが聞こえるのですが支障は特にありませんでした。
 そのままでも良いのですが、もう少し努力してみました。
 シールド箱の作り直しが主な作業ですが回路は前項の回路に近いものに作り直しました。
 ソフトに関しては電池電圧によりデューティーを変更する事を止めました。
 デューティー可変は電池電圧が高い時に出力電圧を抑える目的でしたがノイズは増えます。


 回路図

 回路図をクリックすると拡大表示されます。
 拡大図から本文に戻るにはブラウザの←戻る釦を使用してください。

電池管ラジオキット用電源回路図

 回路は前項のものと殆ど同じですが手持ち部品の関係で微妙に変わっています。
 ただ、発振トランスの巻き数は意識的に変えています。
 前項の電源より出力電流が小さいので若干、巻き数を増やしています。
 二次電圧は巻き数を調整して合わせ込んでいるので二次巻き線の巻き数は回路図通りではありません。

 動作時間

 電池の持ちは感度や音量の大きいラジオ程、有利です。
 電池電圧が下がっても実用的な音量で聞こえる為です。
 一般的にはバーアンテナの寸法が大きいほど電池の持ちは良くなります。
 ヒーター電流が小さい球も有利ですがヒーター電流の小さい球はgmが小さいので微妙なところです。
 連続動作と間欠動作では電池の持ちは結構違います。
 間欠動作では停止中に若干、電池が回復するので動作時間が伸びます。
 今回、達成した65時間は間欠動作です。
 例えば1日目に15時間聞いて2日目は8時間聞くと言うような使い方です。
 60時間位経過した時の電池電圧は0.9Vで、まだ実用的に聞こえました。
 動作中の電池電圧は低く出るのでスイッチを切って無負荷にすれば電圧は上がります。
 一晩、寝かせたところ翌日には若干回復して、さらに5時間位聞けました。
 このラジオは減電圧に強く、手元に置いてバーアンテナの方向を合わせれば0.85Vまで聞く事が出来ます。
 1日8時間程度の使用では1週間程度は受信できると思います。
 私の作ったラジオの中では最も調子が良いのですが1T4−SFのスペアーが入手出来ていません。

トップページ  「電子回路」のトップ