目次

簡易ストロボフラッシャーV2(キセノン管)

概要

前回、簡易ストロボフラッシャー(キセノン管)を製作しましたが、消費電流が大きいため長時間駆動には向きませんでした。

そこで今回は、消費電流を抑えて長時間駆動が可能な「ストロボフラッシャー」を製作しました。

<仕様>

動作原理

周囲が暗くなると高電圧を発生させ、電圧が250V以上になるとストロボをフラッシュ(閃光)させます。

動作原理(ハードウェア)

◎高電圧発生
詳細は、高電圧発生回路を参照してください。

◎ストロボ機構

詳細は、簡易ストロボフラッシャー(キセノン管)を参照してください。

※手持ちのNEC社製のSCR(P2M)を使用しました。SCRは、サイリスタ (Thyristor)とも呼ばれています。
※秋月電子で販売している「高感度小型サイリスタMCR22-8」でも代用可能です。(8個200円)

◎照度の検出

動作原理(ソフトウェア)

◎メイン関数(main)

◎フラッシュ点灯関数(flash_proc)

回路図

ソースコード

flasher_v2_00.c
//********************************************************************** 
/*
        【簡易フラッシャーV2】 
*/
//********************************************************************** 
#define BYTE    unsigned  short
#define WORD    unsigned  int
#define DWORD   unsigned  long
//
#define FLASH   GPIO.B5
#define ON      1
#define OFF     0
//
#define SW      GPIO.B3
//**********************************************************************
extern  void    main();
extern  void    flash_proc();
extern  int     ad_measurement(unsigned short channel);
extern  void    PWM1_custom_Set_Duty(WORD duty_ratio);
extern  void    led_blink(short cnt);
//**********************************************************************
//■■■メイン関数■■■
void    main()
{
        int     ad, threshold;
        //                
        OSCCON = 0b01110000;    //clock=8MHz
        CMCON0 = 0b00000111;
        ANSEL  = 0b00001011;
        TRISIO = 0b00011011;
        FLASH = OFF;
        //ADC初期化 
        ADC_Init();
        ADCON0.VCFG = 1;
        //PWM初期化 
        PWM1_Init(5000);        //pwm=5kHz
        PR2 = 0xFF;
        PWM1_custom_Set_Duty(150);      //duty≒15% 
        PWM1_Stop();
        //LED点滅 
        led_blink(10);
        //基準照度測定 
        //threshold = ad_measurement(3);
        //基準照度読み込み 
        threshold = EEPROM_Read(1);
        threshold = (threshold << 8) | EEPROM_Read(0);
        //
        while (1) {
                //照度測定 
                ad = ad_measurement(3);
                //基準照度と照度の比較 
                if (threshold > ad) {
                        led_blink(1);
                        //
                        flash_proc();   //フラッシュ点灯 
                }
                //基準照度測定&書き込み 
                if (SW == 0) {
                        while (SW == 0) {
                                led_blink(1);
                        }
                        led_blink(10);
                        threshold = ad_measurement(3);
                        EEPROM_Write(0, threshold & 0xFF);
                        EEPROM_Write(1, (threshold >> 8) & 0xFF);
                }
        }
}
//**********************************************************************
//■■■フラッシュ点灯関数■■■
void    flash_proc()
{
        double  hv;
        //
        PWM1_Start();
        //
        hv = 0.0;
        while (hv < 250000.0) {
                hv = ad_measurement(0);
                hv = hv * 2.4365234375 * 221.0;
        }
        //
        FLASH = ON;
        Delay_ms(10);
        FLASH = OFF;
        //
        PWM1_Stop();
}
//**********************************************************************
//■■■アナログデータ測定関数■■■
int     ad_measurement(unsigned short channel)
{
        long    ad;
        int     cnt;
        //
        ad = 0;
        for (cnt = 0; cnt < 100; cnt++) {
                ad += ADC_Get_Sample(channel);
        }
        return (ad /= 100);
}
//********************************************************************** 
//■■■PWMデューティ設定関数■■■ 
void    PWM1_custom_Set_Duty(WORD duty_ratio)
{
    CCPR1L = duty_ratio >> 2;
    CCP1CON.DC1B0 = (duty_ratio & 0b00000001) != 0 ? 1 : 0;
    CCP1CON.DC1B1 = (duty_ratio & 0b00000010) != 0 ? 1 : 0; 
}
//**********************************************************************
//■■■LED点滅関数■■■
void    led_blink(short cnt)
{
        while (cnt > 0) {
                FLASH = ON;
                Delay_ms(100);
                FLASH = OFF;
                Delay_ms(100);
                //
                cnt--;
        }
}
//**********************************************************************

動作確認

トリガ回路と放電管は、「写るんです」の回路を一部利用しました。

基板と電池ボックス(単三電池1.2V×4本)とストロボ部分を分離して接続しました。
屋外で使用するためにガラス瓶に入れました。

畑に設置して使用しています。
お蔭様でスイカも動物被害にあわず無事に収穫することが出来ました!?

※高電圧を取り扱いますので、製作時には感電にご注意ください。

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details