SSブログ
DIY電気 ブログトップ

炊飯器がH02エラー [DIY電気]

時は2023年12月24日クリスマスイブ、今晩のご飯を準備しようかというタイミングに
電気炊飯器の表示窓に「H02」と表示されていることに気がついた
その炊飯器は、Panasonic SR-HX109、2020年製
近くのスーパーで骨付き鶏もも肉を買ってきてクリスマスイブの準備万端だったのに、
笑うしかないので、余裕で笑ってあげた
その余裕はどこから来たのかというと、電源の抜き差しで改善すると思ったからだ・・・
しかし、サンタクロースからのプレゼントは「故障」という言葉だった

調べたら
「ふたの温度を検知するセンサーの不具合の可能性があります。
点検や部品の交換が必要です。お買い上げの販売店、
またはパナソニック修理ご相談窓口に点検・修理をご依頼ください」
修理の目安金額:13,000円~20,000円

何度電源の抜き差しをやっても改善されず、「炊飯ボタン」も無反応
DSC_0543.JPG

クリスマスイブの支度時だったが、
修理の目安額で鼻血が出そうだったが寸止めして、
すぐに分解の工程に臨むことにした
ふたのセンサー?とりあえずふたを開けてみたが
サンタさんは微笑まなかった
DSC_0544.JPG

取っ手を少し上げると、ネジ(黄色丸で示す)を発見し外してみる
DSC_0545.JPG

カバーを外すと、すぐに白い線が断線していることに[ひらめき]気がつく
この細くて白い線の断線が原因であることは火を見るより明らかだ
DSC_0546.JPG
DSC_0549.JPG

本体側とふた側を接続している線のひとつである
この線を接続するにはふた側の線が短かく、ふた側の分解作業が必要となる
ふたの分解はネット検索でも有用な情報が得られなかったため、爪楊枝を差し込みながらマイナスドライバーでじっくり戦った
DSC_0550.JPG

その時が来た!パカっと音がするや否や
サンタさんが舌打ちしたような気がした
DSC_0551.JPG

完全に開き、サンタさんも覗き込んだかもしれない
DSC_0552.JPG

開いたが、フレキケーブル(リボンのような白と黒のケーブル)一本でつながっているので、つなげたまま作業することにした
DSC_0553.JPG

断線していた白い線同士をそのまま接続するわけにはいかない
ゆういちが所有する緑の線で、はんだでつなぎ合わせた
黒い被覆は熱収縮チューブ
あらかじめ熱収縮チューブをいれておき、接続部に合わせたらはんだごての熱で収縮させる
DSC_0555.JPG

ホットメルトで線材の束を固める
DSC_0556.JPG

問題の白い線は、このデバイス部に配線されていた
温度センサーであるか?
DSC_0557.JPG

ふたの爪を開けるのは苦労したが、元に戻すのは「パチ、パチ」と爪がかみ合う音をたてながら
容易に元通りとなった
最後にこのカバーを取り付けるだけだ
DSC_0560.JPG

ふたの開閉で断線する設計は素人だな・・・ゆういちが呟いた
それも3年程度で・・・、サンタも呟いた
DSC_0561.JPG

今回は、バックアップとしてIHクッキングヒーターで初めて炊飯をするという機会を得られ
無事に白ご飯と、骨付き鶏もも肉をいただくことができている
サンタさん、炊飯器の修理いっしょに付き合ってくれてありがとよ、
疲れたよ。

人気ブログランキング
nice!(11)  コメント(4) 
共通テーマ:日記・雑感

NEKO BENTO のソースコード [DIY電気]

過去記事でも3回ご紹介してる「猫用自動給餌器をリモコン制御に改造」の続編
「PetSafe おるすばんフィーダー デジタル2食分 バージョン2」という製品を改造しての改造シリーズ第4弾はプログラムソースコードの公開となる
PICマイコンを組み込んでおり、C言語のソースコードである

Summary:
犬猫の餌を入れておいて希望する時間後に蓋が開く商品であるが、ゆういちの希望する仕様ではなかったので改造した
マイコンは割り込みルーチンで時刻を持つ、また家電リモコンからの毎日時刻校正コマンドを受信するため時刻は正確である
左蓋、右蓋のOPEN時刻をセット可能、家電リモコン(スマホから操作)でOPENすることも可能
一か月以上もRUNして問題ないためバグは究極にゼロに近いと思っている

外観はこんな商品
シンプルはゆういちの好みである
DSC_0523.JPG

左右の蓋が開いた状態
DSC_0525.JPG

後ろには、黄色いスイッチ2つとAC/電池切り替えスイッチ増設
DSC_0524.JPG

手に持っているのがオリジナル基板
取付済みが自作基板
DSC_0522.JPG

自作基板は、Fusion PCBにガーバーデーターを送って製作した
MicrochipのPIC16F88マイコン搭載である
DSC_0526.JPG

表示器は小型のOLEDを採用している
PICマイコンが持つフォントデーターは234バイト、文字は[0]~[9], [A]~[Z], [:],[?],[-]、最低限のフォントしか持たない
DSC_0528.jpg

その自作基板の回路図はEagleで設計
nekobento_sch.png

プリント基板設計もEagle
シルク印刷で示すJP1,JP3はOLEDの表示モジュールのマウントパターン
基板表裏どちらでもマウントできるようにしている
nekobento_board.png

1980年代制御プログラムをコーディングしていた、
当時勤めていた会社の上司からプログラミングに対してコメントを受けることもあった
上司はアランドロンだった
ゆういちが上司はアランドロンと似ていると言い出したのではない、誰かが言ったので上司とアランドロンはヒモ付いただけである
アランドロンはゆういちに教えた、メインプログラムはグルグル回してタイマーで判断して複数ある処理プロセスに飛ばせばマルチタスクが実現する・ボンジュールと・・・
アランドロンから伝授した手法はゆういちが作り続けてきた多くのソフトに利用させていただいた
ゆういちのメインルーチンは必ず
while(1){ } である
特にこの手法を必要としないソフトも、while(1){ }、まずはこの手法を利用する
なぜならタスクを増やしたい場合に柔軟に対応できるからだ
このソフトもその手法を少しだけ利用させていただいている

NEKO_BENTOメインプログラム For CCSC Compiler
/**********************************************
   TITLE: NEKO BENTO

   FILENAME: neko_bento.c
   TARGET DEVICE: PIC16F88, 10MHz X'tal
   DATE:  2019.05.11 - 2023.12.14

   VERSION  00 2019.08.04 OLED表示機能
   VERSION  01 2019.09.19 FOR NEW PCB(Fusion PCB)
   VERSION  02 2019 11.02 TIME CLOCK ADJUST
   VERSION  03 2022 01.02 起動時黄色ボタン押していたら時刻入力をスキップ

   AUTHOR: Yuichi
***********************************************/

#include <16f88.h>
#use delay(clock=10000000)

#FUSES  HS,NOWDT,NOPROTECT,PUT,NOMCLR,NOBROWNOUT,NOLVP
#use i2c(master,sda=PIN_B1,scl=PIN_B4,FAST)
#ignore_warnings 203
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>

#define TIMEADJ 187  //LARGE NUMBERS=FAST CLOCK  SMALL NUMBERS:CLOCK is Delayed
                    //大きい数字は時計が進む、小さい数字は時計が遅れる
#define EEPROM_SAVED 0xcc
// OKNG
#define OK          0
#define NG          1

//24Hを超える(単位は分)、60*24-1=1439 以上は無効とするため
//1440以上であればいいが、切りのいい1500としている
#define INVALID_TIME 1500

// AポートのI/Oビット配置
// 上からLSBで割り当てればよい
// plビットをHIGHにするには PORTA.pl=1 とすればいい
struct porta_pin_map1 {      // This structure is overlayed
    BOOLEAN Infrared_rx;
    BOOLEAN pushsw;
    BOOLEAN left;
    BOOLEAN right;
    BOOLEAN pl;       //pilot lamp
} PORTA;
struct porta_pin_map2 {      // This structure is overlayed
    BOOLEAN reserve2;
    BOOLEAN sda;
    BOOLEAN reserve3;
    BOOLEAN reserve4;
    BOOLEAN scl;
    BOOLEAN reserve5;
} PORTB;

#byte PORTA = 0x05
#byte PORTB = 0x06

struct font_bit{
    BOOLEAN b0;
    BOOLEAN b1;
    BOOLEAN b2;
    BOOLEAN b3;
    BOOLEAN b4;
    BOOLEAN b5;
    BOOLEAN b6;
    BOOLEAN b7;
};

#include "hinagata.h"     // 型宣言
#include "Infrared_rx.h"     // Infrared Rmote cont

//割り込みでカウントアップする変数
int16 g_209ms_count = 0;

// get_4_number()で返される値
struct g_four_digit{  //リモコンボタン4桁で時間入力
  int16   data;  //分
  BOOLEAN timeout;  //timeoutしたらTRUE
} g_four_digit;

// 蓋を開ける時間 0時0分から何分後に蓋を開けるかの設定
// 0-1439 は有効
//   INVALID_TIME は無効
int16 g_cover[2];

// Clock
// このプログラムでは時と分をそれぞれカウントせず、分だけカウントしている
// 0~1439分で24時間
int16   g_minutes=0;  // 分カウント

// cover open flag
BOOLEAN g_open[2] = {FALSE,FALSE};  //蓋が開いたら一分間だけTRUEになる

// OLED光ってるSTATUS
BOOLEAN g_oled = FALSE;
// OLEDをSLEEPにするための時間計測
int16   g_oled_cnt = 0;

// 6*8 bitmap font
// Alphaは大文字のみ
BYTE const font[39][6]={
{0x7C,0xFE,0x82,0xFE,0x7C,0x00}, //0
{0x00,0x04,0xFE,0xFE,0x00,0x00}, //1
{0xE4,0xF2,0xB2,0xBE,0x9C,0x00}, //2
{0x44,0xC6,0x92,0xFE,0x6C,0x00}, //3
{0x1C,0x12,0xFE,0xFE,0x10,0x00}, //4
{0x4E,0xCE,0x8A,0xFA,0x72,0x00}, //5
{0x7C,0xFE,0x8A,0xFA,0x70,0x00}, //6
{0x00,0x02,0xF2,0xFE,0x0E,0x00}, //7
{0x6C,0x9E,0xBA,0xF2,0x6C,0x00}, //8
{0x1C,0xBE,0xA2,0xFE,0x7C,0x00}, //9
{0xC0,0x72,0x4E,0x7E,0xF8,0xE0}, //A 10
{0xFE,0xFE,0x92,0x92,0xFE,0x6C}, //B
{0x7C,0xFE,0x82,0x82,0xEE,0x6C}, //C
{0xFE,0xFE,0x82,0xC6,0x7C,0x38}, //D
{0xFE,0xFE,0x92,0x92,0x92,0x00}, //E
{0xFE,0xFE,0x12,0x12,0x12,0x00}, //F
{0x7C,0xFE,0x82,0xD2,0x76,0xF4}, //G
{0xFE,0xFE,0x10,0x10,0xFE,0xFE}, //H
{0x00,0x00,0xFE,0xFE,0x00,0x00}, //I
{0x60,0xE0,0x82,0xFE,0x7E,0x00}, //J
{0xFE,0xFE,0x38,0xF4,0xE2,0x00}, //K 20
{0xFE,0xFE,0x80,0x80,0xC0,0x00}, //L
{0xFE,0x1E,0x78,0xE0,0x18,0xFE}, //M
{0xFE,0x1C,0x38,0x70,0xFE,0x00}, //N
{0x7C,0xFE,0x82,0x82,0xFE,0x7C}, //O
{0xFE,0xFE,0x22,0x22,0x3E,0x1C}, //P
{0x3C,0x7E,0x42,0xE2,0xFE,0xBC}, //Q
{0xFE,0xFE,0x12,0x32,0xFE,0xDC}, //R
{0x4C,0x9E,0xBA,0xF2,0x64,0x00}, //S
{0x02,0x02,0xFE,0xFE,0x02,0x02}, //T
{0x7E,0xFE,0xC0,0x80,0x7E,0x00}, //U 30
{0x0E,0x3E,0xF0,0xC0,0x70,0x0E}, //V
{0x1E,0xFE,0xE0,0x7C,0xE0,0x3E}, //W
{0x8E,0x7E,0x38,0xFC,0xE2,0x00}, //X
{0x06,0x1E,0xF8,0xF0,0x18,0x06}, //Y
{0x82,0xE2,0xFA,0xBE,0x8E,0x82}, //Z
{0x00,0x00,0x24,0x24,0x00,0x00}, //:
{0x0C,0x0E,0xA2,0xB2,0x1E,0x0C}, //?
{0x00,0x10,0x10,0x10,0x10,0x00}, //-
};

// OLED PRINT POSITION
int oled_x=0;
int oled_y=0;

/*---------------------------------------------
   Timer interrupt interval 209ms
   0.4us*8*(65535-7)=209ms
---------------------------------------------*/
#INT_TIMER1
void watch_handler( void )
{
    // set_timer1(0)だとフルカウントする。0->FFFF->0 で割り込み発生
    // set_timer1(12)だと12少ないカウント、12->FFFF->0 で割り込み発生
    set_timer1( TIMEADJ ); // 65535-11
    ++g_209ms_count; // 209msごとにカウントアップ
    if(g_209ms_count > 286 ){ // 209ms*286=60sec
       g_209ms_count = 0;
       g_open[0]=g_open[1]=FALSE; // Cover open flag clear
       ++g_minutes;
       if( g_minutes > 1439 ){  // 24Hour
          g_minutes = 0;
       }
    }
}

/*---------------------------------------------
   main module
---------------------------------------------*/
void main( void ){
    int32 scode;
    char title[20];
    BOOLEAN select_time = 0;
    sprintf( title , "\fNEKO\nBENTO %s", "03"); //VERSION HERE
    set_tris_a( 0x03 );     // BIT0(IR) BIT1(SW) IS IN
    set_tris_b( 0x12 );     // SDA, SCL is INPUT
    PORTA = 0;
    PORTB = 0;
    if( read_eeprom( 0 ) != EEPROM_SAVED ){ // Never save
        g_cover[0] = INVALID_TIME; //Left
        g_cover[1] = INVALID_TIME; //Right
    }else{
        g_cover[0] = make16( read_eeprom(2), read_eeprom(1) );
        g_cover[1] = make16( read_eeprom(4), read_eeprom(3) );
    }
    delay_ms(300);
    oled_init();
    oled_resume( TRUE ); //NO SLEEP
    printf( oled_putc, "%s", title );
    delay_ms( 1000 );
    // If not Push Yellow Double Switchs
    if( PORTA.pushsw != 0 ){
        printf( oled_putc, "\f SET TIME\n ? " );
        sets_clock();
    }
    //delay_ms( 1000 );
    printf( oled_putc, "\f START");
    setup_timer_1(T1_INTERNAL | T1_DIV_BY_8 ); // 8bit max 3.2us
    PORTA.pl = 1; //START NOTICE
    set_timer1( TIMEADJ );
    enable_interrupts( INT_TIMER1 );
    enable_interrupts( GLOBAL );
    while(1){
        // このループは約2msぐらい
        scode = Infrared_read();
        ++g_oled_cnt;  //時間計測
        // IOのアサート
        if( scode != 0 ){
            if( scode == PS2_L1 ){ // LEFT COVER [L1]
                oled_resume( TRUE );
                printf( oled_putc, "\f L OPEN" );
                open_bento( 0 );
            }else if( scode == PS2_R1 ){ // RIGHT COVER [R1]
                oled_resume( TRUE );
                printf( oled_putc, "\f R OPEN" );
                open_bento( 1 );
            }else if ( scode == PS2_ENTER ){ // 両方開ける[ENTER]
                oled_resume( TRUE );
                printf( oled_putc, "\fALL OPEN" );
                open_bento( 0 );
                open_bento( 1 );
            }else if( scode == PS2_L3 ){ // set left time [L3]
                oled_resume( TRUE );
                printf( oled_putc, "\f L OPEN\n ? " );
                get_4_number();
                if( g_four_digit.timeout == FALSE ){
                    g_cover[0] = g_four_digit.data;
                    save_data();
                    printf( oled_putc, "\f LEFT\n  SAVED");
                }
            }else if( scode == PS2_R3 ){ // set right time [R3]
                oled_resume( TRUE );
                printf( oled_putc, "\f R OPEN\n ? " );
                get_4_number();
                if( g_four_digit.timeout == FALSE  ){
                    g_cover[1] = g_four_digit.data;
                    save_data();
                    printf( oled_putc, "\f RIGHT\n  SAVED");
                }
            }else if( scode == PS2_TIME ){ // セットしたLR蓋が開く時刻表示と現在時刻表示
                oled_resume( TRUE );
                select_time ^= 1;
                if( select_time == 1 ){
                    printf( oled_putc, "\f L " );
                    if( g_cover[0] == INVALID_TIME ){
                        printf( oled_putc, "--:--\n" );
                    }else{
                        printf( oled_putc, "%02ld:%02ld\n", g_cover[0]/60, g_cover[0]%60 );
                    }
                    printf( oled_putc, " R " );
                    if( g_cover[1] == INVALID_TIME ){
                        printf( oled_putc, "--:--" );
                    }else{
                        printf( oled_putc, "%02ld:%02ld",  g_cover[1]/60, g_cover[1]%60 );
                    }
                }else{
                    printf( oled_putc, "\fCUR TIME\n %02ld:%02ld", g_minutes/60 , g_minutes%60 );
                }
            }else if( scode == PS2_AUDIO ){ // 現在時刻を設定する [2] [0] [5] [2] -> 20時52分
                oled_resume( TRUE );
                printf( oled_putc, "\f SET TIME\n ? " );
                sets_clock();
                printf( oled_putc, "\f START");
            }else if( scode == PS2_PROGRAM ){ // Time Adjust 3時00分にセットする
                                           // スマート家電リモコンから定期的にコマンドが来る
                g_209ms_count=47;
                g_minutes = 180;
            }else if( scode == PS2_TITLE ){ // DISPLAY VERSION
                oled_resume( TRUE );
                printf( oled_putc, "%s", title );
            }
            delay_ms( 300 );
        }//if
        // TimerでLEFT蓋を開ける
        if( g_minutes == g_cover[0] && g_open[0] == FALSE ){
            open_bento( 0 );
            g_open[0] = TRUE;  //蓋が開いているフラグは一分後にタイマー割り込みでリセットされる
        }
        // TimerでRIGHT蓋を開ける
        if( g_minutes == g_cover[1] && g_open[1] == FALSE ){
            open_bento( 1 );
            g_open[1] = TRUE;
        }
        // リモコンが押されなくなって一定時間経過したら
        if( g_oled_cnt > 8000 ){
            oled_resume( FALSE );  // SLEEP MODE
        }
        if( PORTA.pushsw == 0 ){
            oled_resume( TRUE );
            printf( oled_putc, "\fALL OPEN" );
            open_bento( 0 );
            open_bento( 1 );
            delay_ms( 3000 );
        }
    }//while
}
/*---------------------------------------------
   SAVE DATA
---------------------------------------------*/
void save_data( void )
{
    disable_interrupts( INT_TIMER1 );
    disable_interrupts( GLOBAL );
    write_eeprom(0,EEPROM_SAVED );
    write_eeprom(1,g_cover[0] & 0xff );
    write_eeprom(2,(g_cover[0] >> 8) & 0xff );
    write_eeprom(3,g_cover[1] & 0xff );
    write_eeprom(4,(g_cover[1] >> 8) & 0xff );
    delay_ms(10);
    enable_interrupts( INT_TIMER1 );
    enable_interrupts( GLOBAL );
}
/*---------------------------------------------
   MANUAL SET CLOCK
---------------------------------------------*/
void sets_clock( void )
{
    get_4_number();
    if( g_four_digit.timeout == FALSE && g_four_digit.data != INVALID_TIME){
        g_minutes = g_four_digit.data;
        g_209ms_count = 0;
    }
}

/*---------------------------------------------
   OPEN BENTO COVER
---------------------------------------------*/
void open_bento( BOOLEAN flag )
{
   if( flag == 0 ){
       PORTA.left = 1;
   }else{
       PORTA.right = 1;
   }
   delay_ms( 300 );    // wait
   PORTA.left = 0;
   PORTA.right = 0;
   delay_ms( 600 );
}
/*---------------------------------------------
   Input 4 botton
   現在時刻設定、蓋を開ける時刻設定で使用される
   From PS2 [0]-[9]
   Return 0-1439, INVALID_TIME
          タイムアウトしたフラグで返す
 --------------------------------------------*/
void get_4_number( void )
{
    long  loop_count=0;  //タイムアウト計測用
    int32 scode; //リモコンコード
    int   digit=0; //桁ポインタ
    long  data[5]; //桁ごとの分データ
    long  num;  //数字ボタンに対応する数値が入る
    int   lutable[11] = {1,2,3,4,5,6,7,8,9,0}; //scodeの4LSBでこのLUTを見る
    long  minutes_data[5] ={600,60,10,1}; //Digitごとの単位
    delay_ms( 300 );
    printf( oled_putc, "----" );  //数字が入力されていない状態表示
    oled_x -= 4;    //表示位置を4文字分戻す
    PORTA.pl = 0;
    while(1){
        ++loop_count;  //この関数のTimeout計測
        scode = Infrared_read();
        if( scode != 0 ){
            if( scode >= PS2_1 && scode <= PS2_0 ){
                num = lutable[scode & 0x0f];  // covert to num
                if( num <= digit_max(digit,num) ){ //入力数値の制限
                    data[digit] = ( num * minutes_data[digit] );
                    printf( oled_putc, "%ld",num );
                    ++digit;  // next digit
                    delay_ms( 300 );
                }
            }
            if( scode == PS2_LEFT ){  //BACK SPACE
                if( digit != 0 ){ // digit 0 以外で動作するように
                    --oled_x;
                    printf( oled_putc, "-" );
                    --oled_x;
                    --digit;
                    delay_ms( 300 );
                }
            }
            // TIMER CANCEL
            // タイマーでNEKO弁当は開けない
            if( scode == PS2_L3 || scode == PS2_R3 ){
               delay_ms( 300 );
               g_four_digit.timeout = FALSE;
               g_four_digit.data = INVALID_TIME; //INVALID_TIME is Invalid
               PORTA.pl = 1;
               return;
            }
            loop_count=0;
        }
        // Sets Success
        // 4桁入力されたらこの関数を終える
        if( digit == 4 ){
            g_four_digit.timeout = FALSE;
            g_four_digit.data = data[0]+data[1]+data[2]+data[3];  //最終データ、分データ
            PORTA.pl = 1;
            return;
        }
        // PL blink while RUN this function
        if( loop_count > 77 ){
            PORTA.pl ^= 1;
            loop_count = 0;
        }
#if 0
        // time out 10sec
        if( loop_count > 2307 ){  // 2307 maybe 6s
            g_four_digit.timeout = TRUE;
            return;
        }
#endif
    }
}
/*---------------------------------------------
 Digit MAX
 時刻を4桁入力する際にそれぞれの桁の最大値を返す
 24:00が最大なので、最初の桁は最大が[2]である
 最初の桁に[2]を入力した場合は次の桁の最大とは[3]となる
 最初の桁に[1]を入力した場合は次の桁の最大とは[9]となる
---------------------------------------------*/
int digit_max( int digit, int num )
{
    int max;
    static int digit0num;
    switch( digit ){
      case 0:
         max = 2;
         digit0num = num;
         break;
      case 1:
         max = (digit0num == 2) ? 3 : 9;  // digit0によって最大値が変わる
         break;
      case 2:
         max = 5;  //Minutesの10の桁は最大5
         break;
      case 3:
         max = 9;  //Minutesの1の桁は最大9
         break;
      default:
         break;
    }
    return( max );
}

/*---------------------------------------------
 文字列表示する
 CCSCの特殊な使い方をする printf( vfd_putc, *fmt, hikisuu )
 というようにprintfで使う
 data; 文字
---------------------------------------------*/
void oled_putc( char c )
{
    int array;
    if( c == '\n' ){ //改行
        oled_x = 0;
        oled_y = 1;
        return;
    }
    if( c == '\f' ){ //画面クリア
        oled_clr(0);
        return;
    }
    if( isdigit(c) ){
        array = c - '0'; //数字だったら(0-9に変換)
    }else if( isalpha(c) ){
        array = toupper(c) - 55;
    }else if( c == ':'){
        array = 36;
    }else if( c == '?' ){
        array = 37;
    }else if( c == '-' ){
        array = 38;
    }else{
        array = 50; // Invalid char is SPACE
    }
    char1216( array, oled_x, oled_y );
    ++oled_x;  //次回のためにx表示位置変更
    if( oled_x > 8 ){
        oled_x = 0; //次回のためにx表示位置変更
        oled_y ^= 1; //次回のためにy表示位置変更
                     //yは0と1のみなので反転演算
    }
}

/* ----------------------------------------------------------------
    OLEDの初期化
---------------------------------------------------------------- */
void oled_init(void)
{
   i2c_start();
   i2c_write(0x78); // OLED slave address
   i2c_write(0x00); // Control byte Co=0, D/C#=0
   i2c_write(0x8d); // disable charge pump
   i2c_write(0x10);
   delay_ms(1);
   i2c_write(0xa8); //SET MUX RATIO
   i2c_write(0x3f);
   i2c_write(0xd3); //SET DISPLAY OFFSET
   i2c_write(0x00);
   i2c_write(0x40); //SET DISPLAY START LINE
#if 0
   i2c_write(0xa0); //SET SEGMENT RE-MAP
   i2c_write(0xc0); //SET COM OUTPUT SCAN DIRECTION
   i2c_write(0xda); //SET COM PINS HARDWARE CONFIGURATION
   i2c_write(0x02);
#else
   i2c_write(0xa1); //SET SEGMENT RE-MAP
   i2c_write(0xc8); //SET COM OUTPUT SCAN DIRECTION
   i2c_write(0xda); //SET COM PINS HARDWARE CONFIGURATION
   i2c_write(0x22);
#endif
   i2c_write(0x81); //SET CONTRAST CONTROL
   i2c_write(0x3f);    // MAX 7F
   i2c_write(0xa4); //DISABLE ENTRE DISPLAY ON
   i2c_write(0xa6); //SET NORMAL DISPLAY
   i2c_write(0xd5); //SET OSC FREQUENCY
   i2c_write(0x80);
   i2c_write(0x8d); //ENSBLE CHSRGE PUMP REGULATOR
   i2c_write(0x14);
   i2c_write(0xaf); //DISPLAY ON
   i2c_stop();
}
/* ----------------------------------------------------------------
    OLEDの画面クリア

      data : 埋めるデータ
---------------------------------------------------------------- */
void oled_clr(int data) // OLED 画面消去
{
   int32 i;
   oled_x = oled_y = 0;
   i2c_start();
   i2c_write(0x78); // OLED slave address
   i2c_write(0x00); // Control byte Co=0, D/C#=0
   i2c_write(0x20); // Set memory addressing mode
   i2c_write(0x00); // Horizontal addressing mode
   i2c_write(0x21); // Set column address
   i2c_write(0x00); // Column start address 0
   i2c_write(0x7F); // Column end address 127d
   i2c_write(0x22); // Set page address
   i2c_write(0x00); // Page start address 0
   i2c_write(0x03); // Page end address 3d
   i2c_stop();
   i2c_start();
   i2c_write(0x78); // OLED slave address
   i2c_write(0x40);
   for(i=0; i<512; i++){ // 128COL * 4page
     i2c_write(data); // Out data
   }
   i2c_stop();
}

/* ----------------------------------------------------------------
    OLED resume
      flag:
        true is NORMAL MODE
        false is SLEEP
---------------------------------------------------------------- */
void oled_resume( int flag)
{
    if( flag != g_oled ){
        i2c_start();
        i2c_write(0x78); // OLED slave address
        i2c_write(0x00); // Control byte Co=0, D/C#=0
        if( flag == false ){
            i2c_write( 0xae ); // SLEEP
        }else{
            i2c_write( 0xaf ); // DISPLAY ON
        }
        i2c_stop();
        g_oled = flag;
    }
    g_oled_cnt = 0;
}
/* ----------------------------------------------------------------
    OLED SETS PRINT POSITION
---------------------------------------------------------------- */
void oled_gotoxy( int x, int y)
{
    oled_x = x;
    oled_y = y;
}
/* ----------------------------------------------------------------
     OLEDに一文字出力
       font_code:
          配列を指定(0~)
       cx:
          出力水平位置(0~8)
       cy:
          出力垂直位置(0~1)
---------------------------------------------------------------- */
void char1216( int font_code, int cx, int cy ) // 12x16dot FONT
{
    int x;
    struct font_bit FONT_BIT1;  //before 8bit font
    struct font_bit FONT_BIT2;  //after extent 8bit font
    i2c_start();
    i2c_write(0x78); // OLED slave address
    i2c_write(0x00); // Control byte Co=0, D/C#=0
    i2c_write(0x20); // Set memory addressing mode
    i2c_write(0x00); // Horizontal addressing mode
    i2c_write(0x22); // Set Page Address
    i2c_write(cy*2); // Page Start
    i2c_write(cy*2+1); // Page End
    i2c_write(0x21);  // Set Column Address
    i2c_write(cx*13);  // Start Address(0-9)
    i2c_write(cx*13+11);  // End Address
    i2c_stop();
    i2c_start();
    i2c_write(0x78); // OLED slave address
    i2c_write(0x40);

    // 6*8 FONTを2倍にする処理、粗い文字となるがFONTデータが少量ですむ
    // MSBはOLED画面下方向
 
    // 1st page
    // FONT_BIT1.b0 -> FONT_BIT2_b0
    // FONT_BIT1.b0 -> FONT_BIT2_b1
    // FONT_BIT1.b1 -> FONT_BIT2_b2
    // FONT_BIT1.b1 -> FONT_BIT2_b3
    // FONT_BIT1.b2 -> FONT_BIT2_b4
    // FONT_BIT1.b2 -> FONT_BIT2_b5
    // FONT_BIT1.b3 -> FONT_BIT2_b6
    // FONT_BIT1.b3 -> FONT_BIT2_b7

    // next page
    // FONT_BIT1.b4 -> FONT_BIT2_b0
    // FONT_BIT1.b4 -> FONT_BIT2_b1
    // FONT_BIT1.b5 -> FONT_BIT2_b2
    // FONT_BIT1.b5 -> FONT_BIT2_b3
    // FONT_BIT1.b6 -> FONT_BIT2_b4
    // FONT_BIT1.b6 -> FONT_BIT2_b5
    // FONT_BIT1.b7 -> FONT_BIT2_b6
    // FONT_BIT1.b7 -> FONT_BIT2_b7

    if( font_code > 49 ){  // SPACE(BLANK) Draw
        for( x=0 ; x<24 ; ++x ){
            i2c_write( 0 );
        }
    }else{
        for( x=0 ; x<6 ; ++x ){
            FONT_BIT1 = font[font_code][x];
            //FONT_BIT1からFONT_BIT2へBITを振り分ける
            FONT_BIT2.b0 = FONT_BIT2.b1 = FONT_BIT1.b0;
            FONT_BIT2.b2 = FONT_BIT2.b3 = FONT_BIT1.b1;
            FONT_BIT2.b4 = FONT_BIT2.b5 = FONT_BIT1.b2;
            FONT_BIT2.b6 = FONT_BIT2.b7 = FONT_BIT1.b3;
            i2c_write( (int)FONT_BIT2 ); //横方向に同FONTを2 DOT
            i2c_write( (int)FONT_BIT2 ); //これで2 DOT分
        }
        for( x=0 ; x<6 ; ++x ){
            FONT_BIT1 = font[font_code][x];
            //FONT_BIT1からFONT_BIT2へBITを振り分ける
            FONT_BIT2.b0 = FONT_BIT2.b1 = FONT_BIT1.b4;
            FONT_BIT2.b2 = FONT_BIT2.b3 = FONT_BIT1.b5;
            FONT_BIT2.b4 = FONT_BIT2.b5 = FONT_BIT1.b6;
            FONT_BIT2.b6 = FONT_BIT2.b7 = FONT_BIT1.b7;
            i2c_write( (int)FONT_BIT2 );
            i2c_write( (int)FONT_BIT2 );
        }
    }
   i2c_stop();
}
//EOF


赤外線受信サブルーチン For CCSC Compiler
////////////////////////////////////////////////////////////////
//
// Infrared_X.H 
// 赤外線リモコン受信プログラム for ソニー
//
// AUTHOR: Yuichi
//
// NOTE:
//    (1)構造体の宣言例
//      struct porta_pin_map {      // This structure is overlayed
//        BOOLEAN unused1;
//        BOOLEAN Infrared_rx;
//        BOOLEAN sw;
//        BOOLEAN beep;
//        BOOLEAN Infrared_tx;
//        int     unused2 : 3;
//      }PORTA;
//    (2)1つのタイマーを使用
//      setup_timer_0(RTCC_INTERNAL | RTCC_DIV_128 );//12.8us long
//
// FUNCTION:
//   int32 Infrared_read( void );
//   int32 ep_Infrared_read20bit( void );
//   int   ep_Infrared_measure_pulse( void );
//   int   ep_Infrared_measure_leader( void );
//   int   ep_Infrared_measure_hilow( void );
//
////////////////////////////////////////////////////////////////

// Infrared BIT LEVEL
#define Infrared_LOW      0
#define Infrared_HI       1
#define Infrared_LEADER   2
#define Infrared_OUT      3

#define TV_BLUE   0x0f004ba4
#define TV_RED    0x0f004ba5
#define TV_GREEN  0x0f004ba6
#define TV_YELLOW 0x0f004ba7
#define TV_DATA   0x0f004b95
#define TV_TENKEY 0x0f004b8c
#define TV_CH1    0x0c000080
#define TV_CH2    0x0c000081
#define TV_CH3    0x0c000082
#define TV_CH4    0x0c000083
#define TV_CH5    0x0c000084
#define TV_CH6    0x0c000085
#define TV_CH7    0x0c000086
#define TV_CH8    0x0c000087
#define TV_CH9    0x0c000088
#define TV_CH10   0x0c000089
#define TV_CH11   0x0c00008a
#define TV_CH12   0x0c00008b

#define PS2_1     0x14049D00  //Play Station2 リモコン
#define PS2_2     0x14049D01
#define PS2_3     0x14049D02
#define PS2_4     0x14049D03
#define PS2_5     0x14049D04
#define PS2_6     0x14049D05
#define PS2_7     0x14049D06
#define PS2_8     0x14049D07
#define PS2_9     0x14049D08
#define PS2_0     0x14049D09
#define PS2_L1    0x140DAD5A
#define PS2_L2    0x140DAD58
#define PS2_L3    0x140DAD51
#define PS2_R1    0x140DAD5B
#define PS2_R2    0x140DAD59
#define PS2_R3    0x140DAD52
#define PS2_DISPLAY 0x14049D54
#define PS2_MARU    0x140DAD5D //RT
#define PS2_PEKE    0x140DAD5E //RB
#define PS2_SANKAKU 0x140DAD5C //LT
#define PS2_SIKAKU  0x140DAD5F //LB
#define PS2_TIME    0x14049D28
#define PS2_UP      0x14049D79
#define PS2_DOWN    0x14049D7A
#define PS2_LEFT    0x14049D7B
#define PS2_RIGHT   0x14049D7C
#define PS2_START   0x140DAD53
#define PS2_CLEAR   0x14049D0F
#define PS2_ENTER   0x14049D0B
#define PS2_AUDIO   0x14049D64
#define PS2_PROGRAM 0x14049D1F
#define PS2_TITLE   0x14049D1A

/*---------------------------------------------
   Infraredを受信して32bitデーターを返す
   リピート時間制御:繰り返し時間よりも早くこの関数を
   実行すれば即returnする
---------------------------------------------*/
int32 Infrared_read( void )
{
    int32 code;
    if( ep_Infrared_measure_leader() != Infrared_LEADER ){  // リーダー検出
        return(0);
    }
    code = ep_Infrared_read20bit();     // 12-20ビット入力
    return( code );
}

/*---------------------------------------------
  Infraredを受信して32bitデーターを返す
   必ず、ヘッダー受信の後に実行するようにプログラムしなければならない
   global変数 g_Infrared_bit_lengを使う
   RETURN:
     32bit data
     0C 00 00 95  <- POWER ON(12bit)  
     0F 00 4B CA  <- 決定(15bit)
     14 04 9D 32  <- DVD再生(20bit)
     32ビットの上位8ビットはInfraredのビット長を示し、下位24ビットはコード
---------------------------------------------*/
int32 ep_Infrared_read20bit( void )
{
    int   a_cnt, a_data;
    int32 a_Infrared_bit_leng = 0;
    int32 a_code;
    int32 a_shift;
    a_code = 0;
    a_shift = 1;
    a_Infrared_bit_leng = 0;
    for( a_cnt=0 ; a_cnt<20 ; ++a_cnt ){
        a_data = ep_Infrared_measure_hilow();        
        if( a_data == Infrared_OUT ){
            break;  // END
        }
        if( a_data == Infrared_HI ){
            a_code |= a_shift;
        }
        a_shift <<= 1;
        ++a_Infrared_bit_leng;
   }
   // BIT長が12,15,20のいずれかであれば有効とする
   if( a_Infrared_bit_leng == 12 ||
       a_Infrared_bit_leng == 15 ||
       a_Infrared_bit_leng == 20 ){
           a_code |= (a_Infrared_bit_leng << 24);
   }else{
           a_code = 0;
   }
   return( a_code );
}

/*---------------------------------------------
  InfraredのLEADERパルスを検出する
   LEADERパルスは負の2400us幅である。立下りエッジから300us後
   がLOW,600us後がLOW,600us後がLOW,600us後がLOW,600us後がHI
   であればLEADERと判断する。

  "0"     ~~~~|_|~~~~~~~~~~~~~~~~~~~~~~~ width=600us
  "1"     ~~~~|____|~~~~~~~~~~~~~~~~~~~~ width=1200us
  LEADER  ~~~~|__________|~~~~~~~~~~~~~~ width=2400us
---------------------------------------------*/
int   ep_Infrared_measure_leader( void )
{
    int16 uscnt=0;
    if( !PORTA.Infrared_rx ){
        return( Infrared_OUT );
    }
    do{
        if( uscnt > 400 ){         // uscnt400は約800us
            return( Infrared_OUT );   // 800us経過してもLOWにならない
        }
        delay_us(1);
        ++uscnt;
    }while( PORTA.Infrared_rx );        // LOWになったか
    delay_us(300);
    if( PORTA.Infrared_rx == 0 ){
        delay_us(600);
        if( PORTA.Infrared_rx == 0 ){
            delay_us(600);
            if( PORTA.Infrared_rx == 0 ){
                delay_us(600);
                if( PORTA.Infrared_rx == 0 ){
                    delay_us(600);
                    if( PORTA.Infrared_rx == 1 ){
                        // ここまでくると本当のLEADERパルス
                        return( Infrared_LEADER );
                    }
                }
            }
        }
    }
    return( Infrared_OUT );
}
/*---------------------------------------------
  InfraredのHI又はLOWパルスを検出する
   必ずLEADERパルスの直後から呼び出して検出すること
   立下りエッジから900us後にHIであれば"0"パルス、LOWであれば
   "1"パルスと判断する。

  "0"     ~~~~|_|~~~~~~~~~~~~~~~~~~~~~~~ width=600us
  "1"     ~~~~|____|~~~~~~~~~~~~~~~~~~~~ width=1200us
  LEADER  ~~~~|__________|~~~~~~~~~~~~~~ width=2400us
---------------------------------------------*/
int   ep_Infrared_measure_hilow( void )
{
    int  level;
    int16 uscnt=0;
    do{
        if( uscnt > 400 ){         // uscnt400は約800us
            return( Infrared_OUT );   // 800us経過してもLOWにならない
        }
        delay_us(1);
        ++uscnt;
    }while( PORTA.Infrared_rx );        // LOWになったか
    delay_us(900);                   // LOWのなった瞬間から900us後に
    level = PORTA.Infrared_rx;          // HI/LOWを読み込む
    while( !PORTA.Infrared_rx );        // HIになるまでここで待つ
    if( level ){
        return( Infrared_LOW );
    }else{
        return( Infrared_HI );
    }
}

//EOF


ありがとうございますm(__)m For アランドロン
ゆういちの上司はアランドロンの髪型と似てるだけじゃなかったけ?
おわり

過去の記事:
猫用自動給餌器をリモコン制御に改造
猫用自動給餌器をリモコン制御に改造、その2
猫用自動給餌器をリモコン制御に改造、その3


人気ブログランキング
nice!(10)  コメント(0) 
共通テーマ:趣味・カルチャー

草刈り機のヘッド部の掃除 [DIY電気]

マキタの充電式草刈機
伸び盛りの子どもたちのようにグングン育つ草木の季節が終わった
清掃もかねての点検とする
DSC_0487.JPG

型式は MUR189D
DSC_0490.JPG

ヘッド部の分解掃除をするためにネジ8本を外した、が!
DSC_0488.JPG

しかし、開かない
爪があるのかどうかもわからない
無理やり開けるとバキっとしそうだ
DSC_0492.JPG

3時間ぐらい試行錯誤して・・・
ウソです10分ぐらい試行錯誤して
この金属の丸い部品を取ればいいということがわかった
DSC_0493.JPG

外したらこんな部品
このヤロウが先に外れるとは思いもしなかった
DSC_0494.JPG

外した部分には枯草・・・
DSC_0495.JPG

パカっと割って、きれいに並べた
DSC_0496.JPG

モーターは簡単に外れる
DSC_0497.JPG

グリスが塗布されているのでカバーごと洗浄するのはやめてブラシで掃除するだけにした
DSC_0498.JPG

この部品も簡単に外れた
DSC_0499.JPG

グリスが塗ってあるためカバーを水洗い清掃できなかったのが
残念であった
来年も回すぞ!

人気ブログランキング
nice!(16)  コメント(0) 
共通テーマ:日記・雑感

玄関の照明スイッチ位置がありえない [DIY電気]

最近照明の記事が続いてしまって趣味が照明器具になりそうだ
✑✑✑
さてさて、それは我が家の玄関ホールにある照明スイッチ位置のお話
夜帰宅・・・
玄関ドアを開けて真っ暗
そこまでは良しとして・・・
玄関ホールを明るくする照明スイッチが玄関ホールの奥にあるのだ
家族一緒に帰ってきたら真っ暗な中、先発隊である私は靴を脱いで玄関ホール奥のスイッチをオンにしなければならない
薄暗い玄関で外出する場合も問題である
照明を点灯させて靴を履いたら照明が消せない
私の腕の長さは2mないので・・・
これって設計ミスじゃないか?
写真は玄関ドア入って土間から撮影したもので、黄色で示す位置にスイッチがあるのだ
ありえない!
DSC_2438.jpg

だから今回センサー式照明に変更することにした
以前も考えたことがあったのだが、既存照明はなんと!天井に直接取り付けられているタイプで「引掛シーリング」が天井に取り付けられているわけではないのである
そんなこんなで、交換を決意するまで時間をかけてしまった
まず、既存照明の取り外し作業をスタートさせる
DSC_2419.JPG

照明の本体は天井にねじ2本で取り付けられ、天井の穴からVVFケーブルが直接出てきている
DSC_2420.JPG

照明本体を取り外した後、念のため下地センサーで梁がある場所を確認する
DSC_2421.JPG

ホームセンターで丸型引掛シーリングを200円台で購入しネジ2本で取り付け
梁にしっかり固定された
既存照明器具が取り付けてあった2つの穴はその証として放置しておく
DSC_2422.JPG

通販でアイリスオーヤマの小型シーリングライトSCL-150LMS-LGPを購入し天井に取り付けた丸型引掛シーリングにカチリと取り付けた
仕様:
・1500lm
・人感付
・電球色
・導光板方式
DSC_2418.JPG

Before (コイズミ製 AH35786L 13年製)
DSC_2417.JPG

After (アイリスオーヤマ製 SCL-150LMS-LGP)
DSC_2424.JPG

♪おしゃれな照明
DSC_2426.JPG

円盤の外周は明るく、円の内側は照明器具ではあまり見られないドット模様
外から入ってくれば感度よくパッと明るく出迎えてくれる
第一印象、明るすぎるぐらい明るかった(玄関ホールは2.2m×1.8m)
30秒と、90秒、常時点灯の3つのモードに設定できるため30秒に設定している
明るい環境では動作しない仕組みらしいが、玄関は昼間でも薄暗いせいか毎回点灯する
DSC_2428.JPG

部屋の中から玄関ホールを見た写真
このように扉を少し開けておくと、近くを人が移動しただけで点灯してしまう
仕方ないか?
ニャンコに侵入させてみたらセンサーが反応するまで少しだけ時間がかかったが点灯した
また、動作させたくない日中は壁スイッチでオフにしておく ひと手間が必要かもしれない
DSC_2436.JPG


人気ブログランキング

【この記事で紹介している商品】



nice!(10)  コメント(2) 
共通テーマ:住宅

トイレの照明交換は容易じゃなかった [DIY電気]

トイレの照明がほんの一瞬だけまばたきした
気のせいかと思いながら首を斜めにして天井の照明器具を見たが、問題なしとばかりいつもと変わらない様子
今、「チカッ」ってしたよね?と言いたいが、用足しがすんだら、どうでもよくなる
何度かそんなことが続いていたが、その夜突然シャックリが始まった
シャックリというより、周期の少し長い点滅状態と表現した方がいいか
DSC_2395.JPG

私は知っていた!
この照明器具は電球を簡単に交換できるタイプの照明器具ではなく、天井に埋め込み式のダウンライトであることを
だから大きくため息をつきたくなった
コイズミ製AD37063L(電球色)ということがわかり、さらに調べてみると生産完了品
当時税抜き5,800円であったようだ
最近、断捨離のためメルカリづいているため、メルカリで検索開始
昼白色タイプだがAD37064Lが1000円少し越えるぐらいで売られていたので売り切れないうちにあわてて購入
型名をわかりやすくすると、
電球色:AD37063L
昼白色:AD37064L
DSC_2415.JPG

これを取り外さなければ前には進めないが、取り付けネジもないし爪を入れるのも困難
DSC_2397.JPG

車にドライブレコーダーを取り付けた時に購入した「内張りはがし」ツールを所有していたので、これを使ってグリグリ・・・グリグリ・・・
DSC_2398.JPG

グリグリを12時と6時で交互に繰り返し引き出し作業を続ける
本体が出現したが、石膏ボードの一部が破壊されているではないか!
DSC_2401.JPG

取付バネが取外しを拒んだが、力ずくで抜いた
取付バネのヤロウが石膏ボードの一部を破壊てしまっている
DSC_2402.JPG

型名まで確認したので作業の進捗を実感する
DSC_2403.JPG

ゴム製カバーに覆われた端子台に白黒のVVFケーブルが刺さっている
これは、本体を手で固定しマイナスドライバーで「解除ボタン」を押しながらVVFケーブル(白黒)を抜かなければならない・・・
手が3本以上いるっていうことなのだ
仕方ないので本体を引き抜けるだけ引き抜いて、本体を胸に固定しながら格闘すること20分
DSC_2409.JPG

めでたくVVFケーブルの取外しに成功した
ビニール紐でぶらーんと下がっているのは、誤って落下させないようにあらかじめビニール紐で対策しておいたのだ
念には念を入れたのだ
照明が手から滑って落下させることがなかったのが少し残念だった
DSC_2410.JPG

今まで電球色だったが「昼白色」になった、明るい!真っ白のトイレ!
年少期、昭和のボロアパートで生活している時代は電球だった・・・
やはりトイレは心落ち着く40W程度の電球色がよかったのではないか
DSC_2411.JPG

我が家はトイレ以外に、この型のダウンライトが5個もある(汗)
それらは故障したときに考えよう
取付バネのヤロウのことは忘れないように丁寧に作業することも・・・


人気ブログランキング
nice!(9)  コメント(2) 
共通テーマ:日記・雑感

キッチン照明をセンサータイプに交換したが・・・ [DIY電気]

キッチンのシンク上照明を非接触でオンオフできる器具に変更することにした
既存のこの照明はすっきりした薄型デザインで悪くはないのだが、オンオフが手動
DSC_1986.JPG

オンにした状態
少し暗いと感じていたのも交換する動機になっている
DSC_1985.JPG

照明のオンオフは、器具本体のスイッチで操作するため、壁スイッチを間違ってオフにしないようにカバーを付けて対策をしている(3連スイッチのいちばん上だけカバーされている)
DSC_1988.JPG

非接触でオンオフできるキッチン照明はデザインに不満はあったが、本体中央に配線を通過させる穴があるコイズミ照明 AB46964L を購入した
他メーカーでは本体中央に配線を通過させる穴が無いものがあり、ニアミスしたところだった
DSC_1982.JPG

この面が取り付け面で、中央の穴に配線を通過させればよい
DSC_1983.JPG

左のスイッチ:動作設定スイッチ
   センサー有効、切り、連続点灯、の3段切り替え
右のスイッチ:感知距離スイッチ
   センサーの直下20cm以内で動作、10cm以内で動作、の2段切り替え
右側の黒いもの:センサー
DSC_1984.JPG

既存の照明を外した
DSC_1989.JPG
DSC_1990.JPG

上を向いての嫌いな作業の時間がやってきた
ブツブツ言いながら作業を続け、新しい照明を吊戸棚にねじ止め完了
電線はまだ未接続
DSC_1991.JPG

取付完了
予想していたより暗いと感じたが、光が直接視界に入り眩しすぎる!
DSC_1992.JPG

それに、ダイニング側から照明の裏が見えてかっこ悪い!
キッチンは対面カウンターであり照明器具がすべての方向から丸見えであるため
このデザイン(昭和の台所照明)だとかっこ悪すぎた
DSC_1993.JPG

百均から白色のカラーボード(5mm厚)という商品を購入してきた
DSC_2008.JPG

照明器具の裏側にある光が漏れる穴は全て黒いテープで塞いだ
DSC_2009.JPG

カラーボードは裁断してから、照明器具の裏側(黒テープを貼った上に)に貼り付けた
DSC_2011.JPG

前面にも裁断したカラーボードを貼り付けた
DSC_2010.JPG

前面は透過した光が拡散され眩しさがなくなった
この照明は本体右側に手をかざすと、オンオフができる
オンオフ時はメカ接点ではなく半導体スイッチのようで音はせず、濡れた手でも、こまめにオンオフができるところがよい
以上、ちょっとカッコ悪いDIY

2023/12 追記
コイズミ照明 AB46964Lは1年3か月で、センサーが故障して非接触のオンオフはできなくなってしまった
この照明器具の光漏れを塞いだがために機器内温度上昇が原因だと推測する

【この記事で紹介している商品】




人気ブログランキング
nice!(12)  コメント(0) 
共通テーマ:住宅

人感センサーの感度を落とす [DIY電気]

我が家のウォークインクローゼット(2畳)は衣類は収納せずに物置小屋になっている
工具、買い置き、ニャンコの餌、文房具、薬まで
一日に何度も出入りする部屋である
うちで一番人気かもしれない
DSC_1674.JPG

だから人感センサー付きの小型シーリングライトに変更した
(アイリスオーヤマ 小型シーリングライト 薄形 2000lm 人感センサー付 昼白色 SCL20NMS-UU)
オンする反応も良い、退室すると90秒後に自動で消える
また[切時]には人感センサー近くのグリーンLEDが点灯するため、昼間ではわからないが夜中は常夜灯のような効果がある
使用することはないと思うが常時点灯モードに変更することも可能だ
2畳の物置部屋のは2000lmだと眩しすぎるかもしれないため、これより小さいモデルにするか迷ったが、こちらのモデルが最適であった
今後壁スイッチをカチカチすることがなくなる
DSC_1675.JPG

しかし、感度が良すぎた
引き戸が開いているウォークインクローゼットの前を通過するだけで点灯するではないか!
ウォークインクローゼット(桃色丸印)
左側から上下の各部屋へ歩く(黄色矢印)だけで、いちいち点灯する
ウォークインクローゼットの引き戸を閉じていれば問題ないが・・・
DSC_1680.JPG

シーリングライトの中央には人感センサーがある
この人感センサー部を見ると大阪万博の「みどり館」を連想するのは私だけか?
DSC_1676.JPG

何かに付属していたゴムクッションのようなものを机の引き出しから見つけた
DSC_1677.JPG

センサーから見て入口方向にそのゴムを貼り付けた
何度か貼り付け位置を変えながら調整した
DSC_1679.JPG

これで入口方向の感度が落ち、意図しない点灯がなくなった
と思ったら
クローゼットの前を通過すると点灯することが一度だけあった
ゴム位置(感度落とし)のチューニングは難しそうだ・・・

【この記事で紹介している商品】

アイリスオーヤマ 小型シーリングライト 薄形 2000lm 人感センサー付 昼白色 SCL20NMS-UU

アイリスオーヤマ 小型シーリングライト 薄形 2000lm 人感センサー付 昼白色 SCL20NMS-UU

  • 出版社/メーカー: アイリスオーヤマ(IRIS OHYAMA)
  • メディア: ホーム&キッチン




人気ブログランキング
nice!(7)  コメント(0) 
共通テーマ:住宅

IHクッキングヒーターの交換をやってみた [DIY電気]

中古住宅を購入したら家内が、これ替えたい、あれを替えたいと言う
今回はその第二弾、IHクッキングヒーター交換の話
既存のIHクッキングヒーターは特にグリル内の汚れがひどく、大好きなアジの干物が焼けるけど焼きたくない、焼いてもいいかもしれないけど勇気がいる
ターゲットはキッチン奥のこのIHクッキングヒーター
十分に検討を重ね自分で交換することに決めたのだ
DSC_1185.JPG

MITSUBISHI CS-KG30M
2010年8月に発売されたモデルだ
DSC_1163.JPG

馬鹿力でスポっと抜いた
想定内の油汚れだが油落としは嫌いだ
時間をかけて必死になって油汚れを取り除いた
DSC_1187.JPG

AC200Vのコンセントの形状を確認しておいた
口を開けて寝てる顔だと、頭の片隅に記憶する
DSC_1188.JPG

せっかく綺麗にしたが写真を撮り忘れ、遠目の写真しかない
自分で交換するため気が済むまで掃除ができるのはよいことだ
DSC_1211.jpg

オールメタル2つタイプのハイエンド機種でも178,000円で購入できるとわかり
通販でPanasonic Aシリーズ A7タイプ KZ-AN76Sを購入した
それまでにホームセンターのリフォームコーナーや、イオンのキッチンリフォーム特設売り場等を見て回っていたが、とてもそのような価格では買えなかった
DSC_1362.JPG

取り付けが不安になる重さ・・・
28Kgだと書かれてあった
パカっと開封
DSC_1363.JPG

付属品を取り除いたら本体が現れた
DSC_1364.JPG

得意の馬鹿力でひょいと箱から出し、意味なくスルスルスルっとグリルを引いてみた
お店でもやってしまうがグリルを開けたくなる癖がある
ここまで馬鹿力で何の問題もなし
DSC_1366.JPG

得意の馬鹿力でひょいひょいと設置した
実は、そんなに簡単では・な・か・った・・・
私がこのIHクッキングヒーターを入れ込む状態で、家内に「今だコンセントを指し込め!」と言ったら狭くてできなと言うやいなや、足が攣ったと言うし
本体をホールドする体力が無くなり墜落直前に「コンセント挿入完了、オーバー」の無線が返ってきた
ニッコリしてから、「ラジャー」と言って本体をはめこんだわけだ
これは二人作業が必須である
DSC_1367.JPG

グリルの蓋を仮に取り付けて、システムキッチンと面一になるように、また左右の隙間を合わせたり微調整に集中し、何とか位置が決まった
奥のネジを締めて、手前のこのネジを締めたら固定完了である
DSC_1368.JPG

100均の水準器で前後の傾きを確認
これで傾いていた場合の対策は知らない・・・
DSC_1369.JPG

説明書を見ながら各パーツを取り付けて完成だ
このIHクッキングヒーター交換作業は手順は簡単なんだが、本体の重さがネックである
DSC_1370.JPG

200Vのブレーカーを入れ、本体電源をオンにする
するとIHクッキングヒーターが電子音声を発しているではないか!
しかし、私の耳は何を言っているのか聞き取れなかった
DSC_1372.JPG

テスト用の古い鍋(底が少し汚れている)に水を入れて加熱してみた
「こげつき」表示はこの後消えた
DSC_1373.JPG

型名表示、KZ-AN76S
DSC_1374.JPG

今だからこんなに綺麗
DSC_1375.JPG

掃除が楽なフラットな庫内
ここも、今だからこんなに綺麗
テスト用の古い鍋の水はすぐに沸点に達しIHクッキングヒーターは問題なく動作していると認識した
DSC_1376.JPG

我が馬鹿力に感謝
めでたし、めでたし

【この記事で紹介している商品】





人気ブログランキング
nice!(15)  コメント(4) 
共通テーマ:住宅

素人はエアコン取り外しを断念 [DIY電気]

2004年7月に取り付けた我が家のエアコンを廃棄することにした。
エアコンの取り外しを業者に依頼すると、1台で5000円。
リサイクル料金(約1000円)を郵便局で支払い、市が指定する「指定引取場所」に運ぶと運搬費用がゼロ円ということになる。ということは自身でエアコン取り外しができたらリサイクル料金のみ約1000円で済むということだ。
Youtube等でエアコンの取り外し方法が紹介されているのは知っていたので、手順を再確認して自身で取り外しをすることに決めた。
室内機の物理的な取り外しは力ずくでやってのける自信はあるが、ガスを回収するポンプダウンの作業は不安だらけである・・・
そう、ポンプダウンという作業工程があるのだ。
今回廃棄するエアコンは富士通 AS50NPZ2W(室内機)、AO50NPZ2(室外機)
DSC_0504.JPG

その不安なポンプダウンの手順はというと
(1) エアコンを強制冷房運転する
(2) 5分待つ
(3) 二方弁をLレンチで閉める
(4) 1分待つ
(5) 三方弁をLレンチで閉める
(6) エアコンを停止する
(7) サービスポートで確認して圧が無ければ完了

ガスの噴き出しや異常時に備えて100均のゴーグル着用する
DSC_0512.JPG

室外機の止めネジを一本外す
ネジ回しに集中しているためニャンコの表情はわからない。
DSC_0506.JPG

エアコンの説明書で強制冷房運転の方法を確認すると、
リモコンの「試運転」ボタンを押せとのこと。
DSC_0513.JPG

この部分を爪楊枝で押せばよいのだ。
DSC_0511.JPG

3つのバルブキャップを外す。
キャップなのでガスが噴出する心配はなさそう。
DSC_0508.JPG

ここまで無事バルブキャップの取り外しが完了。
なんだ、簡単ではないか!
DSC_0510.JPG

手順どおり、エアコンを強制冷房運転させて、室外機の音が明らかに冷房運転始めた音に変化したのを確認。
また、エアコン吹き出し口から冷風らしき風も出ていることを確認。
そのまま5分待ってから二方弁(上写真1)をLレンチで閉めた
二方弁を閉めてから1分待つ。
三方弁(上写真2)をLレンチで閉め、エアコンを停止させた。
ここまで順調である。

最後の確認手順、サービスポート(上写真3)にLレンチの先を使って軽く押し込んでみた。
Youtubeが見せてくれたガス残りが少しだけ出るのと異なり、「シューーーーー」と出るではないか!
浮き輪かあるいは自転車のタイヤを膨らませるぐらいの勢いで・・・
ひょっとしてガスを出し切ったのかと思い、もう一度Lレンチの先を使って軽く押し込んだ。
「シューーーーー」!!! これは(汗)、、、まだガスがかなり残っている!
浮き輪を膨らませる圧どころか、容量までありそうだ。
もう一度Lレンチの先を使って、ガスを出し切るようにしようとしたら、
ガス圧が低くなるどころか黄色い液体(時には泡状)が吹き出し始めた。
「グジュグジュ~プスプスプス~」
わぁ~! ギブアップ! 失敗か? 降参!

黄色い液体なので、気のせいかレモンのような臭いがしてきた。
それに、手が油性の油が付いたようにベトベトに。
ウエスにも黄色い汚れが付着している。
参考)下写真桃色方向にLレンチで押し込んだら、黄色方向にガスが噴出
DSC_0514.JPG

ポンプダウンがうまくできなかった考えられる点としては、上記手順(4)の「1分待つ」ではガス回収が完全にできなかったのかもしれない。3分程度必要だったのか?
再度、同じ手順を実施してみるのもよいが、安全のために取り外し業者へ依頼することに。
有料ではあるが廃棄まで行ってくれるとのことで、取り外し料5000円に加えてリサイクル料5000円、約1万円を提示された。
黄色い液体にショックを受け、自身で運搬する気力まで無くなったため業者さんにフルコースをお願いした。


人気ブログランキング
nice!(16)  コメント(0) 
共通テーマ:日記・雑感

無線リモコンのバッテリー交換 [DIY電気]

マンションの車が出入りする電動開閉門のリモコンが使えなくなってからずいぶん日が経った。
このリモコンの機種とは異なるが、互換性がある新しいリモコンを所有しているため、この古いリモコンは放置していたわけだ。
リモコンはふたつあることに越したことはないため今回復活させることにした。
バッテリーが寿命のようで、ボタンを押すと一瞬だけ赤いLEDが光るため、明らかにバッテリーの寿命と思われる動作である。二回目は押しても赤いLEDはほぼ光らない。
なん時間ソーラー充電しても改善はしない。
このリモコンにはボタンがひとつと電源スイッチ、太陽電池。
電源スイッチのすぐ上には赤いLED。
側面には、何かの設定用2ビットのDIPスイッチがある。
大きさは、カードサイズで厚さが約9mm。
DSC_0011.jpg

裏には「特定小電力無線リモコン 楽王(送信機)」
型式:WYT100-1、(株)ワーム、と表示がある。
容易にバッテリー交換ができるものではなさそう。
DSC_0012.jpg

無理やり裏蓋を力ずくで剥がしてみた。
実は、強力な接着剤で貼ってあったため糊が基板と裏シートにべっとりと残り、その糊の除去に苦労したのである。
写真は糊の除去後。
糊除去で安堵したのも束の間、また大きな問題が発生。
基板を止めているネジ5つ(黄色い丸部)がプラスでもなく、マイナスでもなく、私が所有する特殊ドライバーセットにもないのである。「Y型」の特殊ドライバーが必要ということがわかった。特殊ネジ「Y型」は開けるなという意味だと思うが、それについてはスルーしておく。
ドライバーの先がY型だなんて存在さえ知らなかった。
ここまで来たら、その特殊ドライバーを入手して分解するしか選択肢はない。
Amazonで購入するため、ここから先の作業を明日以降することに。
DSC_0013.jpg

届いた「Y型」の特殊ドライバーで分解に成功。
コイン型のバッテリーがはんだ付けされていたので、はんだゴテで取り外した。
基板にはボタンは3つあるので、2つは未使用ってことだ。
DSC_0014.jpg

バッテリーには、Korea Power Cell Li-ion Rechargeable 3.7Vと表示があり、型番の記載はないのが残念。
DSC_0015.jpg

型番が無いので、Amazonで3.7Vバッテリーで検索してみた。
検索結果にはコイン型はあるが、容量が少なくはんだ付け用の足が付いているのがないため、こんな四角いものを購入してみた。
3.7V 充電式 リチウムイオン電池、320mAhだ。十分な容量があるので、使いたい時にバッテリー切れという悲しい事態を回避できるだろう。たぶん。
DSC_0010.jpg

今回購入した、「Y型」の特殊ドライバーと、その3.7Vバッテリーの記念写真。
DSC_0009.jpg

黄色い丸で示す部分に厚めの両面テープを貼り付けた。
DSC_0017.jpg

そこに購入した3.7Vのバッテリーを貼り付けた。
DSC_0016.jpg

赤と黒の電源用電線は、はんだ付けで接続。
最後に太陽電池のコネクターを差し込んで、基板をネジ止め。
3.7Vのバッテリーは厚みがあり、この中にすっぽり収まる感じはしないが、なんとか無理やり基板を取り付けた。
DSC_0018.jpg

基板を無理やり取り付けたため、基板が多少湾曲しているのだ。
写真で湾曲はわからないが。
裏蓋は両面テープで貼り付けた。綺麗には貼れずデコボコしているが動作には影響しないので適当なところで、このバッテリー交換作業を完了とした。
DSC_0020.jpg

いよいよ、動作テスト。
「押」ボタンを押し電動開閉門が動作するか?
バッテリーを交換しただけなので必ず動作するはずである、たぶん。
赤いLEDはしっかり発光するようになったが、電動開閉門はうんともすんとも言わない・・・
ひょっとして、側面のDIPスイッチか?
分解中に何かに触れて変わってしまったのかもしれない・・・
当たり!
DIPスイッチを上上に変更したら問題なく、電動開閉門は動き出した。
DSC_0023.JPG

無事にバッテリー交換が終えたが、かかった費用はというと。
Y型ドライバー 598円
3.7Vバッテリー 1,039円
合計1,637円

以上、バッテリー交換のお話でした。
めでたし、めでたし。

【この記事で紹介している商品】





アネックス(ANEX) 精密ドライバー 特殊 Y型 1.6mm No.3470-H

アネックス(ANEX) 精密ドライバー 特殊 Y型 1.6mm No.3470-H

  • 出版社/メーカー: 兼古製作所(Anex)
  • 発売日: 2015/10/13
  • メディア: Tools & Hardware



nice!(25)  コメント(0) 
共通テーマ:日記・雑感

テプラの中のテープカス [DIY電気]

仕事で、ご家庭で、大活躍のKING JIMのラベルライター。
SR530とうい機種、電源ボタンの接触が悪いため、ダメ元で裏のネジを外して分解してみることにした。

少しだけ苦戦して上カバーを外し、上下を接続しているフラットケーブル2本と、1本の電源のようなコネクターを外した。
完全に上下が分かれて作業しやすくなった。

改めて、まじまじと見てみるとカッター部にテープの残骸がすごいことに。
吹き溜まりの大量の落ち葉のように。

DSC_0205.jpg

逆さまにして叩いたら、出てくる、出てくる。
テープガースー。
間違えました、テープカス。

DSC_0204.jpg

ピンセットを使って、丹念に取れるだけ取ったら、テープカスがこんなになった。
電源ボタンの接触の改善のため分解したことも忘れて、テープカス取りに集中した。

DSC_0206.jpg

テープカス掃除は、完全ではないが終了。
電源ボタンの接触は、ここしかないだろうと推測し、
キーボード部を分解して、ラーメンの器の縁に描かれている模様のような部分をアルコールで拭いた。

DSC_0207.jpg

よくもまあ、テープガースーでギアに支障が出ていなかったもんだと感心した。
最後にまた、間違ったけど、ま、いいや。
めでたし、めでたし。


キングジム ラベルプリンタ-「テプラ」PRO SR-MK1へ-

キングジム ラベルプリンタ-「テプラ」PRO SR-MK1へ-

  • 出版社/メーカー: キングジム(Kingjim)
  • 発売日: 2020/10/01
  • メディア: エレクトロニクス




人気ブログランキング
タグ:分解 テプラ
nice!(25)  コメント(0) 
共通テーマ:日記・雑感

トイレにカッコよく扇風機導入 [DIY電気]

家電量販店でふと目に止まった商品があった。
久しぶりに私のアンテナが反応したのだ。
LED照明と扇風機が一体化したもので、それも電球ソケットにねじ込んであるLED電球と交換するだけで導入できそうな商品。夏のトイレにあったら素敵だ。
風量や明るさはリモコンで切替ができるまではわかったが、壁スイッチをオフにした場合に設定した条件が次回の壁スイッチオンで再現するのかがわからなかった。販売員さんにに聞いても、適当に答えられるだけだと思って、購入せずに自宅で調べた。
ゴミのようなクチコミ情報から拾い上げた情報では、どうやら壁スイッチオフ→オンしても前回の設定は再現すると書かれていた。ありがとう、信じるよ、クチコミさん。
ネットで注文したらすぐに到着。
猛暑が訪れる前でよかった。

注文した商品:
ドウシシャ DSLS61-LWH(電球色)
10cmDCサーキュライト circulight
ファン付照明 E26 リモコン付

ニャンコがまた開封の儀式に立ち会ってくれた。
本体とリモコン(ボタン電池付属)と説明書だ。
DSC_1543.jpg

パッケージ表。
口金サイズE26、洗面所やトイレの使用例、CIRCULIGHTとか書かれている。
DSC_1541.jpg

パッケージ裏。
サイズ、角度調整可、60W相当とか書かれている。
DSC_1542.jpg

その口金、一般的なE26だ。
DSC_1544.jpg

トイレに取り付けてあった既存のLED電球を取り外して、ねじ込んで取り付け開始。
DSC_1545.jpg

クチコミさんが言っていたとおり、壁スイッチをオフにしても前回の設定はリセットされることはなかった。
トイレには十分な明るさ。
明るさは2段切替だが、弱でも十分。
風量は3段切替で、弱でも頭にスーッっと風が当たりひんやり涼しい。
中、強にするとそれに比例してファンの音が大きくなるが、トイレの換気扇の音の方が大きいので気にはならない。
DSC_1546.jpg

角度が調整できるので、少しだけこんな感じで調整してみた。
DSC_1550.jpg

トイレはこれまでとして、次に洗面所にお試ししてみた。
洗面所の壁スイッチは、非接触タイプの電子スイッチなので、このスイッチとの組み合わせも気になるところである。非接触タイプの電子スイッチは、負荷側(電球)に少しだけ電流を流して電子スイッチのスタンバイ状態の電力としているので場合によっては電子スイッチが動作不良を引き起こすことが考えられる。
DSC_1547.jpg

しかし心配することはなかった。
電子スイッチも照明側もうまく動作している。
クリップ扇風機があるから洗面所のお試しはこれまでとして、またトイレに取り付けだ。
DSC_1549.jpg

【この記事で紹介している商品】





人気ブログランキング

nice!(39)  コメント(4) 
共通テーマ:日記・雑感

ソニーの赤外線リモコンコードを調べてみた [DIY電気]

DSC_1138.JPG

※文中"us"という単位はマイクロ秒に読み替えてください

リモコンの信号はシリアルデータで、専用のデバイスで受信すると複数のパルス幅からイチゼロ情報を得られますのでPICマイコンでデータ化しました。受信する専用のデバイスは秋月などで購入できる「赤外線リモコンモジュール」と呼ばれているもので、ソニーは40KHz仕様なのですが、秋月では見当たらないので38KHzタイプで代用しています。
パルス幅の基本は600usですので、この600usをTとします。
600us = T
リモコンのボタンが押されたらまずLEADERが送信されます。そのLEADERは4T(2400us)のパルス幅です。
LEADERの直後から1 or 0のシリアルデーターが送られてきます。パルス幅が1T(600us)だったら"0"、2T(1200us)だったら"1"です。
LEADER直後の1 or 0の数は12個か15個か20個のいずれかとなります。
12bit,15bit,20bitということです。
昔から存在するテレビ等は12bitですが、近年世の中に出てきたデジタルテレビやPLAY STATION等は15bitや20bitとなっています。
全てのパルス間の間隙は1T(600us)ですので、900usほど待ってもパルスが無い場合はタイムアウトしてそれまでのbit数と確定します。
LSB Fastですので、受信したデータをLSBから並べた場合、下7bit(D0~D6)がDATA、下7bitを除いたデータがCAT(機器)を表すようです。

図で書くと下記のようなタイムチャートになります。
縞々模様は40Khzを現わしています。
12bit、LSBから101010101010と送られてくる例です。
IR_WAVE_EXAMPLES.PNG

ここに公開しているデータは、生データですので、CATコードが何かな?という場合は7bitLSB方向にSHIFTしてください。

【以下CODEは全て生データです】


[TV]

BUTTONBIT LENGTHCODE
CH112000080
CH212000081
CH312000082
CH412000083
CH512000084
CH612000085
CH712000086
CH812000087
CH912000088
CH1012000089
CH111200008A
CH121200008B
BS51200008C
BS71200008D
BS111200008E
チャンネルUP12000090
チャンネルDOWN12000091
音量UP12000092
音量DOWN12000093
消音12000094
電源12000095
音声切替12000097
テレビ120000A4
入力切替120000A5
RIGHT120000B3
LEFT120000B4
オフタイマー120000B6
画面表示120000BA
メモ120000DC
ホーム,メニュー120000E0
明るさ設定120000E4
決定120000E5
UP120000F4
DOWN120000F5
リンクメニュー15000D58
録画リスト15000D65
TVポーズ15000D67
アプリキャスト15000D6F
電子取説15000D7B
NETFLIX15000D7C
SEN15000D7D
TrackID15000D7E
消費電力15003BB6
AVマルチ15003BBE
10キー15004B8C
BS/CS15004B90
連動データ15004B95
停止15004B98
一時停止15004B99
再生15004B9A
早戻し15004B9B
早送り15004B9C
録画15004BA0
戻る15004BA3
15004BA4
15004BA5
15004BA6
15004BA7
字幕15004BA8
CS15004BAB
BS15004BAC
地上アナログ15004BAE
地デジ15004BB2
オプション15004BB6
15004BBC
15004BBD
LEFT15004BCD
RIGHT15004BCE
UP15004BCF
DOWN15004BD0
ビデオ15005216
コンポーネント15005217
ワイド切替1500523D
番組表1500525B
アプリ1500622A
Youtube15006247
レコーダーホーム15006248
視聴中メニュー1500624B
ヘルプ1500624D
hulu20040F80
Abema20040F81
U-NEXT20040F82



[BD]

BUTTONBIT LENGTHCODE  
  BD1BD2BD3
CH1200E2D000EAD000F2D00
CH2200E2D010EAD010F2D01
CH3200E2D020EAD020F2D02
CH4200E2D030EAD030F2D03
CH5200E2D040EAD040F2D04
CH6200E2D050EAD050F2D05
CH7200E2D060EAD060F2D06
CH8200E2D070EAD070F2D07
CH9200E2D080EAD080F2D08
CH10200E2D090EAD090F2D09
CH11200E2D0A0EAD0A0F2D0A
CH12200E2D0B0EAD0B0F2D0B
削除200E2D0F0EAD0F0F2D0F
チャンネルUP200E2D100EAD100F2D10
チャンネルDOWN200E2D110EAD110F2D11
開/閉200E2D160EAD160F2D16
停止200E2D180EAD180F2D18
一時停止200E2D190EAD190F2D19
再生200E2D1A0EAD1A0F2D1A
<<200E2D1B0EAD1B0F2D1B
>>200E2D1C0EAD1C0F2D1C
録画200E2D1D0EAD1D0F2D1D
メニュー200E2D290EAD290F2D29
番組表200E2D2A0EAD2A0F2D2A
らくらくスタート200E2D2D0EAD2D0F2D2D
UP200E2D390EAD390F2D39
DOWN200E2D3A0EAD3A0F2D3A
LEFT200E2D3B0EAD3B0F2D3B
RIGHT200E2D3C0EAD3C0F2D3C
決定200E2D3D0EAD3D0F2D3D
オプション200E2D3F0EAD3F0F2D3F
画面表示200E2D410EAD410F2D41
ホーム200E2D420EAD420F2D42
戻る200E2D430EAD430F2D43
番組説明200E2D440EAD440F2D44
My!!番組表200E2D450EAD450F2D45
書き込み200E2D480EAD480F2D48
入力切替200E2D4F0EAD4F0F2D4F
200E2D560EAD560F2D56
200E2D570EAD570F2D57
10キー200E2D610EAD610F2D61
連動データ200E2D620EAD620F2D62
字幕200E2D630EAD630F2D63
音声200E2D640EAD640F2D64
200E2D660EAD660F2D66
200E2D670EAD670F2D67
200E2D680EAD680F2D68
200E2D690EAD690F2D69
BS200E2D6A0EAD6A0F2D6A
地デジ200E2D6B0EAD6B0F2D6B
CS200E2D6E0EAD6E0F2D6E
15秒送り200E2D750EAD750F2D75
10秒戻し200E2D760EAD760F2D76



[PS2]

BUTTONBIT LENGTHCODE
120049D00
220049D01
320049D02
420049D03
520049D04
620049D05
720049D06
820049D07
920049D08
020049D09
ENTER20049D0B
RETURN20049D0E
CLEAR20049D0F
TITLE20049D1A
DVD MENU20049D1B
PROGRAM20049D1F
TIME20049D28
A-B20049D2A
REPEAT20049D2C
PREV20049D30
NEXT20049D31
PLAY20049D32
SCAN-L20049D33
SCAN-R20049D34
SHUFFLE20049D35
STOP20049D38
PAUSE20049D39
DISPLAY20049D54
SLOW-L20049D60
SLOW-R20049D61
SUBTITLE20049D63
AUDIO20049D64
ANGLE20049D65
UP20049D79
DOWN20049D7A
LEFT20049D7B
RIGHT20049D7C
SELECT200DAD50
L3200DAD51
R3200DAD52
START200DAD53
L2200DAD58
R2200DAD59
L1200DAD5A
R1200DAD5B
200DAD5C
200DAD5D
×200DAD5E
200DAD5F



[AV SYSTEM]

BUTTONBIT LENGTHCODE
決定1500180C
音量UP15001812
音量DOWN15001813
消音15001814
電源15001815
ナイトモード15005820
シネマ15005843
ミュージック15005849
入力切替15005869
UP15005878
DOWN15005879
音声切替20008812
プレイモード20008826
|<<20008830
>>|20008831
>||2000883A
ボイス20028839
低温2002887B
スタンダード2006881D
オートサウンド2006882F



[VAIO]

BUTTONBIT LENGTHCODE  
  PC1PC2PC3
CH1200B2D00033D0003BD00
CH2200B2D01033D0103BD01
CH3200B2D02033D0203BD02
CH4200B2D03033D0303BD03
CH5200B2D04033D0403BD04
CH6200B2D05033D0503BD05
CH7200B2D06033D0603BD06
CH8200B2D07033D0703BD07
CH9200B2D08033D0803BD08
CH10200B2D09033D0903BD09
CH11200B2D0A033D0A03BD0A
CH12200B2D0B033D0B03BD0B
チャンネルUP200B2D10033D1003BD10
チャンネルUPDOWN200B2D11033D1103BD11
音量UP200B2D12033D1203BD12
音量DOWN200B2D13033D1303BD13
消音200B2D14033D1403BD14
再生停止200B2D18033D1803BD18
一時停止200B2D19033D1903BD19
再生200B2D1A033D1A03BD1A
巻き戻し200B2D1B033D1B03BD1B
早送り200B2D1C033D1C03BD1C
録画200B2D1D033D1D03BD1D
録画停止200B2D1E033D1E03BD1E
200B2D1F033D1F03BD1F
200B2D20033D2003BD20
入力切替200B2D24033D2403BD24
画面サイズ200B2D25033D2503BD25
画面表示200B2D26033D2603BD26
機能切替200B2D27033D2703BD27
録画モード200B2D28033D2803BD28
字幕200B2D29033D2903BD29
音声切替200B2D2B033D2B03BD2B
電源200B2D2C033D2C03BD2C
UP200B2D30033D3003BD30
DOWN200B2D31033D3103BD31
LEFT200B2D32033D3203BD32
RIGHT200B2D33033D3303BD33
決定200B2D34033D3403BD34
キャンセル200B2D35033D3503BD35
メニュー200B2D36033D3603BD36
戻る/リターン200B2D37033D3703BD37
ツール/タイトル200B2D38033D3803BD38
アングル200B2D39033D3903BD39
ソフト選択200B2D43033D4303BD43
起動200B2D44033D4403BD44
終了200B2D45033D4503BD45



[デジタルCSチューナー]

BUTTONBIT LENGTHCODE
CH120071D00
CH220071D01
CH320071D02
CH420071D03
CH520071D04
CH620071D05
CH720071D06
CH820071D07
CH920071D08
CH020071D09
選局20071D0B
チャンネルUP20071D10
チャンネルDOWN20071D11
電源20071D15
二重音声20071D17
番組説明20071D29
プロモ20071D2B
信号切替20071D2D
予約一覧20071D30
好み一覧20071D31
登録20071D32
ダイレクト選局A20071D33
ダイレクト選局B20071D34
ダイレクト選局C20071D35
ダイレクト選局D20071D36
メニュー20071D38
画面表示20071D3A
ラジオ20071D4A
EZパネル20071D52
ジャンプ20071D6C
現在番組20071D6F
週間番組20071D70
UP20071D72
DOWN20071D73
RIGT20071D74
LEFT20071D75
決定20071D76
ジャンル20071D77
日付20071D78



[DVD]

BUTTONBIT LENGTHCODE  
  DVD1DVD2DVD3
120049D00022D000FAD00
220049D01022D010FAD01
320049D02022D020FAD02
420049D03022D030FAD03
520049D04022D040FAD04
620049D05022D050FAD05
720049D06022D060FAD06
820049D07022D070FAD07
920049D08022D080FAD08
020049D09022D090FAD09
確定20049D0D022D0D0FAD0D
戻る20049D0E022D0E0FAD0E
クリア20049D0F022D0F0FAD0F
チャンネルUP20049D13022D130FAD13
チャンネルDOWN20049D14022D140FAD14
電源20049D15022D150FAD15
開/閉20049D16022D160FAD16
録画20049D19022D190FAD19
トップメニュー20049D1A022D1A0FAD1A
録画モード20049D1E022D1E0FAD1E
時間/テキスト20049D29022D290FAD29
|<<20049D30022D300FAD30
>>|20049D31022D310FAD31
不明20049D32022D320FAD32
<<20049D33022D330FAD33
>>20049D34022D340FAD34
停止20049D38022D380FAD38
一時停止20049D39022D390FAD39
録画停止20049D3D022D3D0FAD3D
録画一時停止20049D3E022D3E0FAD3E
システムメニュー20049D53022D530FAD53
画面表示20049D54022D540FAD54
サラウンド20049D5A022D5A0FAD5A
<-・20049D5C022D5C0FAD5C
字幕20049D63022D630FAD63
音声20049D64022D640FAD64
アングル20049D65022D650FAD65
UP20049D79022D790FAD79
DOWN20049D7A022D7A0FAD7A
LEFT20049D7B022D7B0FAD7B
RIGHT20049D7C022D7C0FAD7C
タイトルリスト20062D10003D1000BD10
チャプター書込20062D13003D1300BD13
・->20062D14003D1400BD14
番組説明20062D15003D1500BD15
番組表20062D16003D1600BD16
ツール20062D17003D1700BD17
カーソルモード20062D18003D1800BD18
ズーム-20062D19003D1900BD19
マーク消去20062D1A003D1A00BD1A
プログレッシブ20062D1A003D1A00BD1A
Gガイド20062D1B003D1B00BD1B
予約20062D1C003D1C00BD1C
HDD20062D2E003D2E00BD2E
DVD20062D2F003D2F00BD2F
シンクロ録画20062D77003D7700BD77
ズーム+20062D79003D7900BD79



[ビデオカメラリモコン RMT-814]

BUTTONBIT LENGTHCODE
X212000394
停止12000398
一時停止12000399
再生1200039A
巻き戻1200039B
早送り1200039C
スロー120003A3
<120003B0
>120003B1
ゼロセットメモリー120003C7
>>120003D6
<<120003D7
画面表示120003DA
START/STOP15005C99
フォト15005C95
サーチ選択15005CAD
データコード15005CCC
T(telephoto)15006C9A
W(wide)15006C9B


END OF TABLE.


人気ブログランキング
nice!(1)  コメント(2) 
共通テーマ:日記・雑感

個人でプリント基板をFusion PCBに発注してみた [DIY電気]

メッキ線の熱にどれだけ指が耐えられるか?
キターーー!思わず指を離して、はんだボールが飛び散りメッキ線が妙な部分にくっついてしまう。
電子工作を道楽とする人々は電子回路は手配線基板で作るというのが常でした。
昨今、格安でオリジナルのプリント基板を特注できそうなので、メーカーにひとつ作ってもらうことにしたのです。
今回作ったのは約80mm×40mmの両面プリント基板。
格安でまず思いついたのが

■P板.COM■
回路図設計CADとパターン設計CADソフトを無料配布しています。
回路図CADが「CADLUS Circuit」パターン設計CADが「CADLUS X」です。
これらのツールを使って回路図を書き、パターン設計し、出来上がったデーターを送信して発注すれば手元にプリント基板が届きます。
CADLUS Circuitは難易度は低いと思われます。しかしCADLUS Xはチュートリアルを見ながら一枚プリント基板を設計し、もう一度最初からやってみようと思っても、えっ!どうするんだったけ?手が動きません。頭の中の引き出しを手当たり次第開けても何も残っていません。
全くすべて忘れてしまってます。
直感的に操作を進められなくて必ずマニュアルが必要になります。
お絵かきソフトのように自由に使えるようになるには時間がかかりそうですので、CADLUS Xに限っては趣味の電子工作用途には向かないのではないかと思います。
P板.COMでは、他のパターン設計CADから出力したガーバーデータも受け付けていますので無理してCADLUS Xを使う必要はありません。
次に、気になるプリント基板製作の価格。
オンラインで見積もりができるので調べてみると5枚作ってもらうと22,258円。
一昔前の業界内で比較すれば格安なのですが、この金額であれば、せっせと手配線を続けます。
あっさり断念し、次にたどり着いたのが

■Fusion PCB■
オンライン見積もりしたら、超格安!
5枚も10枚も金額が変わらないので10枚で見積もってみるとなんと衝撃の価格!

プリント基板10枚: $4.91
送料(DHL) :$19.61
Discount :$0.74
合計 :$23.78

プリント基板が500円、送料が2000円です。
中身より送料の方が高いですが、中身が500円なので送料2000円でもOKです。
Fusion PCBは中国の深センですのでこのように送料が多くかかります。
また、円建てで支払うことのなるので為替手数料がさらに加わります。
運送業者はDHLのほかに指定ができ、Singapore POSTなどはもう少し安いですが到着まで日にちがかかります。
次に気になるのがパターン設計CAD、Fusion PCBやらAUTODESK EAGLEを何度もネットサーフィンし、パターン設計は

■EAGLEでいいんじゃないかという結論に達しました■
EAGLE_WORK.jpg
太平洋のど真ん中から無人島に漂着したみたいに。
でもその無人島を知らなかったのは私だけ、みたいな(笑)
EAGLEは本格的に使いたいのであれば、サブスク手続きが必要ですが、趣味レベルであれば「EAGLE無償版」で十分です。基板上限サイズがあり80cm平方と仕様に書かれているので、10cm×8cmが最大基板サイズになります。
マニアの間で人気があるようで、ネット上にもたくさんの情報がありますので、とりかかりやすいCADだと思います。
EAGLEは、回路図CADとパターン設計が両方含まれていますのこれひとつで完結です。
Fusion PCBで製造できる規格のデーターがEAGLE用としてFusionサイトにあります。DRC(デザインルールチェック)用のDRUデーターというもので、ダウンロードしてEAGLEに読み込ませます。
製造用データーはガーバーデーターが必要ですので、EAGEからガーバーを出力させます。このカーバーデーターはFusion PCBが要求しているものにカスタマイズする必要がありますがEAGEL内にFusion PCB用のCAMファイルというものが準備されていますので、それを利用すればFusion PCB提出用のガーバーデータが出力されます。実際には、複数のガーバーデータがZIP形式に圧縮されたものが出力されます。

■まずEAGLEで回路図を書きました■
部品ライブラリが豊富にありますが、無かったり代用では済まされないものは、ネットサーフィンして調べまくり入手します。ライブラリ作成も可能ですが、ライブラリ作成は後の学習にとっておくこととします。
使用部品は、老眼を所有したシニアにもやさしい大きな部品を使うことにしました。
回路図が書き終わったら

■パターンの設計です■
プリント基板のエディターを開くと、右側に仮の基板枠、左に部品がすでに並んでいます。
左の部品をドラッグして基板上に配置し、配線、チェックという流れです。
パターンを編集している最中に大失敗しました。
回路図とパターン図を両方開いて作業しておけばよかったのですが、邪魔なので回路図のウィンドウを閉じたんです。そしたらパターン図のウィンドウの上に黄色い警告らしき帯が表示されたんですが、大した事ないだろうと思って少し作業を進めたら、回路図とパターンが同期しなくなってしまいました。パターン図は削除して最初から作るはめに。
どうやら、回路図とパターン図の二つのウィンドウは開いておくことが必須のようです。
格闘の末パターン設計も完了です。
前述のCADLUS Xに比べ、非常に使いやすいと思います。
頭の中の引き出しに少し憶えさせておけそうです。

■ガーバーデータまで出力し■
注文してみました。
サイトの注文フォームにZIP形式で圧縮したガーバーデータをアップロードすると、ガーバーデータのビューワーで基板の各層が目視で確認できますので安心です。
安堵も束の間、注文の途中クレジットカード(楽天カード)決済が通らなくて、猫の顔にミカンの皮を近づけられた顔になってしまいました。
2回やってみましたがエラーで注文できず。今までネット通販でクレジットカードが使えないということはなかったのですが、海外では信用が薄いカードは蹴とばされるのか?
たしか、支払いにはクレジットカードか"PayPal"と書かれていたなと脳味噌に残っていましたので、急きょPayPalアカウントを作ってPayPalで支払い手続きをして無事注文完了です。
そのPayPalには前述の同じ楽天カードを登録したのですが蹴とばされなかったです。
猫の顔の近くからからミカンの皮が消えました。

よくある質問には「リードタイム・納期」はこう書かれてます。
・基板製造 2-7 営業日
・DHL 1-3営業日
到着まで最長10営業日かな?
ミカンでも食べながら到着を待つとします。

18日 20:00頃 注文
24日 16:00頃 seeedStudioから出荷済連絡メールあり
24日 16:00頃 DHLから荷物が配送されますメールあり

26日 に荷物が届きました
注文してから8日目で特注のプリント基板を手に入れました。
DSC_1120.jpg

早速開封します
10枚です。
DSC_1121.jpg

DSC_1122.jpg

基板をスキャナで撮影
IMG_20190926_0002.jpg

80×40mm基板、レジストは黒です。
何故黒?これを組み込む場所が外から見えるのでなるべく目立たなくするためです。
きれいに出来上がっています。個人で使うのでこれで十分だと思います。
基板4コーナーに入れたはずの3.6mm穴がないというミスに気が付きました。
EAGLEで穴の「Info」を見てみると、Drill=13.77953となっています。不慣れなインチ単位で設計していたので一桁間違って13.77953milにしたので0.35mmの穴になったようです。穴径のプルダウンには小さい値しかなかったので勘違いしたのか?
ドリルで穴をあければいいのでそれほどショックではありませんが。
早速穴あけしてみましたが、想定してたより硬くて穴が開けらません、キリやドリルでようやく開けることができました。

基板左上の穴図ですが黄色い円内が今回間違ったφ0.35mmの穴です。その左の桃色の円内は比較のためφ3.5mmを適当な位置ですが書いてみました。穴径を示す記号が異なることがわかります。今回はこの記号に惑わされた原因もあります。図では見ずらいですがオレンジ色の円が実際の穴を表すようです。
HOLE_ERROR.jpg

今回の支払い金額は日本円で、締めて2,670 円でした。
穴さえ、開いていれば、、、

落ち着いたところで、部品をマウントしてみました。
DSC_1124.jpg

めでたし、めでたし。


基礎からのプリント基板製作―Autodeskの基板設計ソフト「EAGLE」を使う (I・O BOOKS)

基礎からのプリント基板製作―Autodeskの基板設計ソフト「EAGLE」を使う (I・O BOOKS)

  • 作者: 正幸, 佐倉
  • 出版社/メーカー: 工学社
  • 発売日: 2017/05/01
  • メディア: 単行本




人気ブログランキング



nice!(1)  コメント(0) 
共通テーマ:日記・雑感

猫用自動給餌器をリモコン制御に改造、その3 [DIY電気]

過去記事でも2回ご紹介してる「猫用自動給餌器をリモコン制御に改造」の続きです。
「PetSafe おるすばんフィーダー デジタル2食分 バージョン2」という製品を改造しての改造シリーズ第3弾になります。
この製品は左右2つのエサ入れがありそれぞれ"L","R"と呼ばせてもらいます。
思いつくたびに機能アップさせ、今回はOLEDという表示デバイスを組み込んでオリジナルの回路は取り除きました。やはり1時間単位の設定しかできないオリジナル回路は不要と判断。LRの閉めた蓋は小型のソレノイドでロックされていて、ソレノイドが働くとバネで開くようになっています。当然のことながら、そのソレノイドはそのまま流用します。
何故、そんなに電子工作やプログラム作成に没頭するのかと家族も不思議がっていると思いますが、うちのニャンコさんにはあと10年、20年は使ってもらわないといけない弁当箱なので、究極に使いやすいように改良を続けているんです。
アライグマのような手つきでプログラミングしている後ろ姿を見られながら日夜改造に専念しました。
黄色の丸がオリジナルの基板、緑色の丸が第2弾まで使っていた自作のPICマイコンの基板、今回は両方取り除いて新しい基板を取り付けることに。

基本スペックは以下です
・赤外線リモコンにより蓋を開ける(外部制御)
・設定した時刻に蓋を開ける(スタンドアローン)
・設定した時刻は一度セットすると消えない
・時計内蔵、電源再投入で再設定要
・OLED表示器付
DSC_1019.jpg

新しい基板は、PICマイコン、OLED表示デバイス、ソレノイドをドライブするFETが付いたものです。OLEDはAmazonで「DSD TECH 2 PCS Arduino ARM用IIC OLEDの0.91インチディスプレイ」というものを2個入りで入手。PICはPIC16F88-I/Pという型番のものを利用します。少量なのでヤフオクで安価に入手。
オリジナルの基板が付いていた場所に取り付けられるように寸法を測って取り付け穴を開けて基板の製作をスタートします。
DSC_1005.jpg

回路図です。
NEKO_BENTO_CONT.gif

PICマイコンへの書き込みをPICKit3からオンボードでできるようにICSP用の6Pコネクタを付けます。実際は5ピンでいいのですが、PICKit3側が空きを含めて6ピンなのでそれに合わせています。プログラム更新の度にPICマイコンを外して書き換えもできますが、ICSP仕様にしても回路規模はさほど大きくならないためICSPコネクタを付けることにしました。
DSC_1006.jpg

基板の黒い印の穴4個はOLEDを付ける場所の目印。
DSC_1007.jpg

作業中にやたらニャンコは線材に興味を示します。
最近、猫草枯れて食べてさせてないからなぁ。。。
これが終わったら猫草栽培始めるから!
DSC_1009.jpg

草じゃねぇ!って言ってんのに!
有害物質カドミウムでも入っていたらたいへんだ。
DSC_1008.jpg

基板が完成してからはブレッドボードに組んで動作確認とデバッグを実施。
この基板は赤外線リモコンからコマンドを受信する機能も含まれているので、赤外線リモコンがユーザーインターフェイスになります。
たまたまPlay Station2のリモコンが余っていたので、このリモコンでコントロールすることに。今まではTVリモコンを使用していたのですが、当然テレビと競合するので今回からPS2に変更です。
DSC_1014.jpg

オリジナル基板が取り付けてあった部分に取り付け開始です。
DSC_1020.jpg

OLEDだけは、表示面が基板のはんだ面になるので、基板の裏にグルーガンで取り付けます。
OLEDと手作り基板の接触部には絶縁体をはさみました。
自己融着シリコンテープしかなかったので、サンドウィッチにスライスチーズでも挟むように。
DSC_1021.jpg

ほぼ配線も完了し完成間近です。
DSC_1022.jpg

きたない配線ですがきっと動くはず。
DSC_1023.jpg

組み込みが完了しました。
電源を投入し、あっけなく基本動作OK
電源投入直後は、「NEKO BENTO 00」タイトルとバージョン番号表示です。
おわかりかと思いますが昔のファミコンの文字みたいにフォントがギザギザしています。
PICがフォントデータを持ち一文字書かせる度にフォントデータを送信する仕組みなのです。そもそも使用しているPICはメモリが豊富にあるわけではないので、数字と大文字英字と記号を少し、各6×8ドットのフォントしか持っていないのです。6×8ドットなので2倍に拡大して書かせています。そのためフォントがギザギザなのです。
等倍で書かせれば文字情報は増えますが文字は小さくなります。
オリジナル基板が無くなりましたので3つのボタンがあった所は穴が開いているため、黒っぽいプラでOLEDの部分だけ窓を開けて目隠しをしました。
DSC_1037.jpg

これはL,Rの蓋が開く時刻を確認表示しているところです。
OLEDは約20秒無操作が経過したらスリープになるようにしています。
また、時刻はPICがソフトで数えていますが電波時計のように正確ではありません。PS2リモコンの[PROGRAM]というボタンが押されたら午前3時に時刻調整します。
自分で毎晩3時に[PROGRAM]ボタンを押すのではなく、毎週日曜日の午前3時にスマートリモコンから発信されるようにスマートリモコン側に設定しています。
時刻調整なしに一カ月動かしてもニャンコに支障があるようなズレはないのですが。
この時期夏は、Lを5:20、Rは14:00にセットしています。前夜にLに朝ごはんを入れてあげ、日中のニャンコ留守番時はRに昼ごはんを入れてあげるような使い方です。
朝、ニャンコは蓋が開くのを待っていますが、留守番時のお昼は食欲が出ないようで、14:00に開けても16:00頃にヒマだし小腹が空いたから食べようと(ネットワークカメラで確認してます)ポリポリしてます。お昼より夕方がいいのではないかと探っているところです。
冬季朝はニャンコも起床が遅くなるので、季節によって時刻設定を変更することとなります。

NEKO BENTOが受け付けるリモコンコマンドは以下です。
[L1] L蓋開く
[R1] R蓋開く
[ENTER] LR両方開く
[L3] L蓋を開ける時刻設定 → 数字ボタンで設定しEEPROMメモリに書き込む
[R3] R蓋を開ける時刻設定 → 数字ボタンで設定しEEPROMメモリに書き込む
[TIME] 現在時刻とLR蓋を開ける時刻を交互に表示
[PROGRAM] 午前3時の時刻へ修正
※EEPROMメモリは電源を切っても記憶しているメモリ
DSC_1036.jpg

動画はこちらです。


以上です。
まだまだ進化が続くかな?
...

その後、プリント基板をネット発注で作ってもらいましたのできれいになりました。
DSC_1147.jpg

めでたし、めでたし。


人気ブログランキング
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

OLED 0.91インチディスプレイを買ってみた [DIY電気]

電子工作で小型の表示器が必要になりAmazonでOLED表示器を買ってみました。
「DSD TECH 2 PCS Arduino ARM用IIC OLEDの0.91インチディスプレイ」という商品で表示面積がかなり小さなものとなっています。届いた商品を開けると本体と接続ケーブルが2セット、広告っぽいチラシ一枚です。
DSC_0980.jpg

ひとつ手にとってます。
赤いのは保護シートを剥がす端っこです。
DSC_0981.jpg

それぞれの表裏です。
DSC_0982.jpg

Arduinoのu8glibライブラリを使えと書いてあるだけです。私は、PICマイコンで使用するつもりなのでArduinoと言われてもピンと来ないのです。勉強不足でついて行けません。
もう少し調べると、一番重要なキャラクターROMが入ってないということが判明したのであります。やられました!
まあ、購入前からキャラクターROMが入ってないというのは薄々わかっていましたが、案の定そうだったわけです。
文字フォントはマイコン側に持たせてI2C通信によりビット情報を流し込んでドットで書け!というものです。
今回の工作では主に時刻情報を表示させたいので、一歩譲って最悪数字とコロンと+αがあればいいということにします。
チラシにはメインチップがSSD1306だと書かれていますので、早速ネットで仕様書をダウンロードして入手。
コントローラであるSSD1306は128*64の解像度のOLEDを制御するとのこと。縦の64ドットは8ブロックに分かれ、ページと呼んでいます。1ページの縦は8ドットです。全面を全て書くには、8ビットを128回書くのを8回繰り返すということです。
それは理解できたんですけど、今回購入した表示器は128*32なので仕様書に書かれている縦のドット数が半分なのです。
あたって砕けろ!ということでブレッドボードでテストしてみました。
PICマイコンは16F88です。
DSC_0985.jpg

回路図です。
OLED TEST.gif

データを流し込んだら、わ~綺麗な水色表示!
でも、なんか変んな表示!どういうこと?砕けかけそうです。
それからそれから、あれこれ遊んでいるうちに発見しました。
奇数ビットだけ表示しているようなんです。
おいおい、偶数ビットは無視かよ。
仕様書に舞い戻り、「Set COM Pins Hardware Configuration (DAh)」という項目に目が止まりました。
0xDAコマンドの次の1バイトデータで設定できるようです。
今回初期値でテストしていましたので、0xDAに続いて0x02を設定することにより表示に成功しました。
左は猫のシルエットを4文字分で表示されています。
数字は、自作の7セグメント風フォントです。
DSC_0998.jpg

ビットマップフォントは1文字12*16にしています。横12ドットだと10文字で120ドットなので水平方向は8ドット余る計算。
縦はフルで32ドットなので、その半分の16ドットにしました。表示できる文字数は10*2ということになります。
DSC_1001.jpg

その後、テストを繰り返しているうちに別の場所のACコンセントにさすと、OLED画面の初期化に失敗しているようで、画面が反転モードだったり、砂の嵐だったり、一部が横線だったり、勝手にスクロールしたりなんです。
数分完全放電させると正常になったりするので、動作モードが予期せぬモードにラッチしているような感じです。ラッチが抜けにくいというか。
SSD1306仕様書の最後にApp Noteというのがあり、P5/6に「Software Configuration」の項目があり初期化のフローが書いてありました。12ステップですが、仕様書どおりに初期化ルーチンを書いて様子見しましたが改善せず。
結果的には商品が不良っぽいです。
2つのうちもうひとつは安定動作することがわかりました。

ここからCCSC用のテストプログラム(C言語ソースコード)です
/**********************************************
  OLED TEST PROGRAM
  DSD TECH OLED 0.91inch Display
  CCSC PIC COMPILER
  DATE 2019 JULY
***********************************************/

#include <16f88.h>
#use delay(clock=20000000)
#FUSES  HS,NOWDT,NOPROTECT,PUT,MCLR,NOBROWNOUT,NOLVP
#ignore_warnings 203
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>

#use i2c(master,sda=PIN_B1,scl=PIN_B4,FAST)

// Bitmap Font Data
//
// [14][24]で一つの配列にしたかったがコンパイラエラーとなるため分けた
// font1[14][12], font2[14][12]の2つにした
byte const font1[14][12] =
{
{0x00,0xFC,0x7A,0x06,0x06,0x06,0x06,0x06,0x06,0x7A,0xFC,0x00},//0
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0xFE,0x00},//1
{0x00,0x00,0x82,0x86,0x86,0x86,0x86,0x86,0x86,0x7A,0xFC,0x00},//2
{0x00,0x02,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x7A,0xFC,0x00},//3
{0x00,0xFE,0x7C,0x80,0x80,0x80,0x80,0x80,0x80,0x7C,0xFE,0x00},//4
{0x00,0xFC,0x7A,0x86,0x86,0x86,0x86,0x86,0x86,0x02,0x00,0x00},//5
{0x00,0xFC,0x7A,0x86,0x86,0x86,0x86,0x86,0x86,0x82,0x00,0x00},//6
{0x00,0xFC,0x7A,0x06,0x06,0x06,0x06,0x06,0x06,0x7A,0xFC,0x00},//7
{0x00,0xFC,0x7A,0x86,0x86,0x86,0x86,0x86,0x86,0x7A,0xFC,0x00},//8
{0x00,0xFC,0x7A,0x86,0x86,0x86,0x86,0x86,0x86,0x7A,0xFC,0x00},//9
{0xFF,0xFC,0xB8,0xF8,0xF8,0xB8,0xFE,0x00,0x00,0x00,0x00,0x00},//CAT LTOP
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//CAT RTOP
{0x00,0x01,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},//CAT LBTM
{0xFF,0xFF,0xFF,0xFF,0xFC,0xC0,0x00,0x07,0x1F,0xF8,0xE0,0x00},//CAT RBTM
};

byte const font2[14][12] =
{
{0x00,0x3F,0x5E,0x60,0x60,0x60,0x60,0x60,0x60,0x5E,0x3F,0x00},//0
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x7F,0x00},//1
{0x00,0x3F,0x5E,0x61,0x61,0x61,0x61,0x61,0x61,0x41,0x00,0x00},//2
{0x00,0x40,0x60,0x61,0x61,0x61,0x61,0x61,0x61,0x5E,0x3F,0x00},//3
{0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x3E,0x7F,0x00},//4
{0x00,0x00,0x41,0x61,0x61,0x61,0x61,0x61,0x61,0x5E,0x3F,0x00},//5
{0x00,0x3F,0x5E,0x61,0x61,0x61,0x61,0x61,0x61,0x5E,0x3F,0x00},//6
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x7F,0x00},//7
{0x00,0x3F,0x5E,0x61,0x61,0x61,0x61,0x61,0x61,0x5E,0x3F,0x00},//8
{0x00,0x00,0x40,0x61,0x61,0x61,0x61,0x61,0x61,0x5E,0x3F,0x00},//9
{0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF8,0xF0,0xF0,0xE0},//CAT LTOP
{0xE0,0xC0,0x80,0x00,0x00,0x00,0x00,0xE0,0xF0,0x38,0x38,0x18},//CAT RTOP
{0x20,0x60,0x78,0xFF,0xFF,0x7F,0x1F,0x7F,0x7F,0xFF,0xFF,0xFF},//CAT LBTM
{0x7F,0x7F,0x7F,0x7F,0x3F,0x3F,0x38,0x38,0x1C,0x0F,0x03,0x00},//CAT RBTM
};

// AポートのI/Oビット配置
struct porta_pin_map {      // This structure is overlayed
    BOOLEAN reserved1;
    BOOLEAN reserved2;
    BOOLEAN reserved3;
    BOOLEAN reserved4;
    BOOLEAN pl;      //pilot lamp
} PORTA;
#byte PORTA = 0x05
#byte PORTB = 0x06

void oled_init(void);
void oled_clr(int);
void char1216( int font_code, int cx, int cy );
/*---------------------------------------------
   main module
---------------------------------------------*/
void main( void ){
    setup_adc_ports(NO_ANALOGS);
    setup_ccp1(CCP_OFF);
    set_tris_a( 0x00 );     // ALL OUT
    set_tris_b( 0x12 );     // SDA, SCL is INPUT
    PORTA.pl = 0;           //PL OFF
    delay_ms(100);
    oled_init();
    delay_ms(100);
    oled_clr(0x00);


    char1216(10,0,0);  //猫シルエット左上
    char1216(11,1,0);  //右上
    char1216(12,0,1);  //左下
    char1216(13,1,1);  //右下

    char1216(0,2,0);  // Font0 を x=2 y=0に出力
    char1216(1,3,0);
    char1216(2,4,0);
    char1216(3,5,0);
    char1216(4,6,0);
    char1216(5,7,0);
    char1216(6,8,0);
    char1216(7,9,0);

    char1216(8,2,1);
    char1216(9,3,1);
    char1216(0,4,1);
    char1216(1,5,1);
    char1216(2,6,1);
    char1216(3,7,1);
    char1216(4,8,1);
    char1216(5,9,1);
    while(1);
}

/* ----------------------------------------------------------------
    OLEDの初期化
---------------------------------------------------------------- */
void oled_init(void)
{
   i2c_start();
   i2c_write(0x78); // OLED slave address
   i2c_write(0x00); // Control byte Co=0, D/C#=0
   i2c_write(0xa8); //SET MUX RATIO
   i2c_write(0x3f);
   i2c_write(0xd3); //SET DISPLAY OFFSET
   i2c_write(0x00);
   i2c_write(0x40); //SET DISPLAY START LINE
#if 0 //画面上下設定
   i2c_write(0xa0); //SET SEGMENT RE-MAP
   i2c_write(0xc0); //SET COM OUTPUT SCAN DIRECTION
   i2c_write(0xda); //SET COM PINS HARDWARE CONFIGURATION
   i2c_write(0x02);
#else //画面上下逆
   i2c_write(0xa1); //SET SEGMENT RE-MAP
   i2c_write(0xc8); //SET COM OUTPUT SCAN DIRECTION
   i2c_write(0xda); //SET COM PINS HARDWARE CONFIGURATION
   i2c_write(0x22);
#endif
   i2c_write(0x81); //SET CONTRAST CONTROL
   i2c_write(0x7f);
   i2c_write(0xa4); //DISABLE ENTRE DISPLAY ON
   i2c_write(0xa6); //SET NORMAL DISPLAY
   i2c_write(0xd5); //SET OSC FREQUENCY
   i2c_write(0x80);
   i2c_write(0x8d); //ENSBLE CHSRGE PUMP REGULATOR
   i2c_write(0x14);
   i2c_write(0xaf); //DISPLAY ON
   i2c_stop();
}
/* ----------------------------------------------------------------
    OLEDの画面クリア

      data : 埋めるデータ
---------------------------------------------------------------- */
void oled_clr(int data) // OLED 画面消去
{
   int32 i;
   i2c_start();
   i2c_write(0x78); // OLED slave address
   i2c_write(0x00); // Control byte Co=0, D/C#=0
   i2c_write(0x20); // Set memory addressing mode
   i2c_write(0x00); // Horizontal addressing mode
   i2c_write(0x21); // Set column address
   i2c_write(0x00); // Column start address 0
   i2c_write(0x7F); // Column end address 127d
   i2c_write(0x22); // Set page address
   i2c_write(0x00); // Page start address 0
   i2c_write(0x03); // Page end address 7d ->3d
   i2c_stop();
   i2c_start();
   i2c_write(0x78); // OLED slave address
   i2c_write(0x40);
   for(i=0; i<512; i++){ // 128COL * 4page
     i2c_write(data); // Out data
   }
   i2c_stop();
}

/* ----------------------------------------------------------------
     OLEDに一文字出力
       font_code:
          配列を指定(0~)
       cx:
          出力水平位置(0~9)
       cy:
          出力垂直位置(0~1)
---------------------------------------------------------------- */
void char1216( int font_code, int cx, int cy ) // 12x16dot FONT
{
    int x;
    i2c_start();
    i2c_write(0x78); // OLED slave address
    i2c_write(0x00); // Control byte Co=0, D/C#=0
    i2c_write(0x20); // Set memory addressing mode
    i2c_write(0x00); // Horizontal addressing mode
    i2c_write(0x22); // Set Page Address
    i2c_write(cy*2); // Page Start
    i2c_write(cy*2+1); // Page End
    i2c_write(0x21);  // Set Column Address
    i2c_write(cx*12);  // Start Address(0-9)
    i2c_write(cx*12+11);  // End Address
    i2c_stop();
    i2c_start();
    i2c_write(0x78); // OLED slave address
    i2c_write(0x40);
    for( x=0 ; x<12 ; ++x ){
      i2c_write(font1[font_code][x]);
    }
    for( x=0 ; x<12 ; ++x ){
      i2c_write(font2[font_code][x]);
    }
   i2c_stop();
}


このデバイスを使った電子工作が完成したら記事にしたいと思います。


DSD TECH 2 PCS Arduino ARM用IIC OLEDの0.91インチディスプレイ

DSD TECH 2 PCS Arduino ARM用IIC OLEDの0.91インチディスプレイ

  • 出版社/メーカー: DSD TECH
  • メディア: エレクトロニクス




人気ブログランキング
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

TK-85が出てきた [DIY電気]

若いころこNECのTK-85というマイコンボードを買ってきてマイコンのプログラミングトレーニングをしました。トレーニングじゃなく半分遊び道具だったかもしれません。
そのTK-85が蔵から出てきました。
こんな汚い箱に入って。
DSC_0967.jpg

箱から出てきたのは、本体のみでマニュアルがありませんでした。
非常に残念。
DSC_0964.jpg

テンキーみたいなキーボード
DSC_0965.jpg

改造した痕跡。
DSC_0966.jpg

たしか、1982年頃に買ったのではないかと思います。
プログラミングの方法は、アセンブラ言語をノートにコーディングして、その右に、命令に対する16進数を書いてという具合に。ジャンプ命令は、特にやっかいなもんでした。命令を増やしたりすると番地が変わるのでその都度ジャンプ命令の部分も書き換えが必要だったのです。
 注)相対ジャンプ命令は例外
アセンブラ学習中は7セグメントLEDを光らせたりするぐらいのことしか学習課題がなく、時計の秒のような数字の変化を見ては少し喜び、他人が見てたら変人と思うはずです。
そうこうしているとYAMAHAからシンセサイザDX-7が発売になると知ったのです。
音楽的に興味があったわではなく、MIDIという信号を入れてあげると音が鳴るということに興味を惹かれました。独身貴族だった私はすぐさま秋葉原のラオックスでDX-7ゲット(20ン万円)。
TK-85とDX-7をつなぐインターフェイス回路(パラシリ変換)を作ってプログラミングに臨んだわけです。DX-7は16音が同時に発音できる仕様ですので、プログラムも16チャンネル出力できるようにしました。
全てのプログラムは残っていませんでしたが、サブルーチンだけが古いノートの一部に残っていました。
TK85_PRG_1.jpg

DX-7と接続するための改造が写真の手配線です。
プログラミングが終わってからは、ひたすら譜面を16進数に落とし、自動演奏を完成させることができました。
TK85_PRG_2.jpg

自動演奏に酔いしれ感心したもんです。
ビバルディの春を20小節ぐらいかな、とても全部はメモリ不足で入りません。
ビバルディの春の次は、ギターの譜面でディアハンターをデータ化して演奏させた記憶があります。
当時はインターネットも、Nifty-Serveもなく、シェアして他の方にお披露目させることもなかったです。
今思えばオーディオテープにでも取っておけばよかったと後悔しています。


人気ブログランキング
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

猫用自動給餌器をリモコン制御に改造、その2 [DIY電気]

過去記事でもご紹介しています「猫用自動給餌器をリモコン制御に改造」の話題です。
PICマイコンを組み込んでいるのですが、過去に作成したPICマイコンをそのまま流用していました。ソフトを変更したくても、書き込みツールを所有しないので、ソフト変更は手も足もでません。
そこで、今回10年ほど休んでいたマイコンプログラムを再開することにしたのです。
コンパイラーだけは所有していたのですが、書き込み器を持ってないので「ANBE PIC プログラミングキット PICKIT3互換品 PIC マイコン ライター」を購入しました。
3,000円を切る価格!こんなに安くて入手できるのなら、もっと早くに買っておけばよかっと少し後悔。書き込みソフトは、本家Microchipのサイトから「MPLAB X IDE v5.15」をダウンロードして、インストール中にオプションで、IPE(書き込みソフト)だけ指定してインストールしました。
DSC_0763.jpg

開梱したところ。大満足の内容。
DSC_0765.jpg

今までのところ、TVリモコンで蓋を開けることができるようにしています。
ですから、スマート家電リモコンを利用すれば、好きな日時に蓋を開けることができます。
TVリモコンを受信するソフトもこのPICにプログラムしてあります。ソニー製のリモコンでしたら、まず、LEADERパルスという2400μs幅のパルスを検出、その次から12bitか15bitか20bitのデータが送られてきます。600μsだったらゼロ、1200μsだったらイチなのでビットを組み立てていくソフトです。
12bitか15bitか20bitのどれであるかは、タイムアウトで判断しています。

#define TV_BLUE 0x0f004ba4
ソフトの中では、TVの青ボタンはこのように定義しています。
青ボタンは、15bit長で0x4ba4というコードなのです。

今回は、その機能に加えて、TVリモコンで本体にタイマー設定ができるようにしました。
実はこの製品、「PetSafe おるすばんフィーダー デジタル2食分 バージョン2」は、タイマー設定が1時間単位しかできない欠点があるのです。
改良したことは、設定モードに移行したら、TVのチャンネルボタンを2つ押して2時間30分後、というような設定ができます。簡素化するため、あえて10分単位の設定に留めています。
2時間30分の設定であれば、[2],[3]とチャンネルボタンを押して設定します。2時間ちょうどだったら[2],[10]とチャンネルボタンを押せばいいようにしました。チャンネルボタンには[0]が無いので、ゼロは[10]で代用しています。
PICマイコンはタイマー割り込みという機能を常時働かせて、ソフトで時間をカウントするようにしました。10MHzのクロックで動作させているので、基本サイクルはデータシートに(=Fosc/4)と書かれているので、2.5MHzを基本サイクルで計算します。2.5MHzの周期は0.4μs、×8のプリスケーラーを使用して16bitのフルカウントで約209msの割り込みをプログラムしました。
フタがセットした時間より数分違っていてもニャンコには影響ないので、ラフなカウントでいいと思っていたのですが、12時間のカウントをしたところ、なかなか正確です。
DSC_0799.jpg

動画はこちらです。


猫用自動給餌器をリモコン制御に改造、その3」へ続く...


PICの書き込み、これ、コスパが最高です


ANBE PIC プログラミングキット PICKIT3互換品 PIC マイコン ライター

ANBE PIC プログラミングキット PICKIT3互換品 PIC マイコン ライター

  • 出版社/メーカー: ANBE
  • メディア: エレクトロニクス




人気ブログランキング
nice!(0)  コメント(0) 
共通テーマ:ペット

猫用自動給餌器をリモコン制御に改造 [DIY電気]

以前の記事「猫用自動給餌器の導入」で紹介した「PetSafe おるすばんフィーダー デジタル2食分 バージョン2」をテレビリモコンで蓋が開くように改造しました。
リモコンで動くようにしておけば応用がききますので。
DSC_0465.jpg

全く別の機器に入れていた赤外線リモコンを受信する基板を流用することにしました。
電子工作の定番、PICマイコンで作ったものです。
そのままでは使えないので、トランジスタをFETに変更です。
IMG_20190316_0002.jpg

購入したFET(2SK4017)が2個と、ACアダプタの接続端子です。
DSC_0594.jpg

こちらは、Amazonで「SODIAL(R) 5件ミニDC-DCコンバータステップダウンモジュール調整可能電源出力0.8-20V」というDC-DCコンバーターを購入。5個で450円!それも中国から、2週間もかけて届きました。
DSC_0635.jpg

早速改造スタートです。
DSC_0587.jpg

これが自作の赤外線リモコンを受信する基板です。
もう既に、トランジスタからFETに変更してあります。
DSC_0607.jpg

上面パネルには、LEDと赤外線受光部用の穴。
DSC_0608.jpg

裏面にはパネルマウント型ACジャックの穴。
DSC_0609.JPG

組み込み中です。
中央の基板は、PetSafe おるすばんフィーダーのメイン基板です。
基板から赤黒の線が、左右のソレノイドに配線されています。赤がソレノイドのホット側で、黒が引き込み側です。オリジナルの回路では、引き込みにA2sHBsというFETを使っているのです。ですので今回組み込むマイコン基板にFETを付けてオープンドレインをこの黒に繋ぐことでOR回路にしてあります。OR回路なので本来の動作も問題なく動くのです。
左下の茶色い基板は今回組み込む基板、上の小さなのがDC-DCコンバーターです。
このDC-DCコンバーターのINには6Vを入れていますが、出力の最大は3.5Vでした。
DSC_0638.jpg

組み込みが完了しました。
ホットメルトはやはり便利ですね、基板の取り付けが楽でした。
DSC_0639.jpg

上面パネルに開けた穴。上の緑っぽいのは赤外線受光、下の赤っぽいのはコマンドを受けた時に光るLEDです。この時!気付きました!慎重に改造を実行していたのですが。こんな所に赤外線受光部を付けたら、先に右側の蓋を開けたら前面方向からの赤外線コマンドを遮断してしまうじゃないですか!
でも、それほど深刻なミスではなかったようです。
赤外線は家の壁やらモノに反射して届くので問題なかったようです。汗!
DSC_0640.jpg

裏はACアダプタを接続するDCジャックです。
DSC_0641.jpg

これで完成です。
左蓋と右蓋は、ソニーのリモコンであれば、テレビに限らず何でもティーチングできるようなソフトになっています。今回は、左蓋はデータ放送時に使う「青」ボタン、右は「黄」ボタンにティーチングしてあります。
DSC_0644.jpg

もともと家にある家電リモコンRS-WFIREX3です。
こいつは、家電リモコンの赤外線コマンドをなんでも出力してくれますので重宝しています。
外出先からもボタン押せますし、何月何日の何時に「青」ボタン押せ!も事前設定できます。毎日朝6時(繰り返し設定)に、ニャンコに飯を与えることが可能です。
設置場所は部屋の隅にある150cm高シェルフの上ですが、部屋の中のどこでも赤外線コマンドが飛んでいきます。
DSC_0642.jpg

家電リモコンアプリを起動したが画面です。
家には一個しか家電リモコンがないので「家電リモコン(1)」しか表示していません。
Screenshot_20190310-135523.jpg

「家電リモコン(1)」をタップしたら、設定されている家の中の機器が表示されます。
黄色い機器が「ニャンコ弁当」です。
Screenshot_20190310-135530.jpg

「ニャンコ弁当」をタップすると、2つのボタンが表示され、そのボタンをタップすれば、ニャンコ弁当の蓋が開きます。外出先からも開きます。
Screenshot_20190310-135537.jpg

この画面はタイマーの一覧です。
一番下に、「ニャンコ弁当」があります。
毎日朝6時に左の蓋が開きます。
本体の、1時間ステップのタイマーセットを毎晩しなくてもOKです。
このタイマーは注意点がありまして、外出先からはタイマー変更できないのです。必ず家のネットワークにスマホを接続してからしか変更できません。
Screenshot_20190310-140019.jpg

これでニャンコも毎日正確に「ニャンコ弁当」が開くので規則正しい生活になります。
めでたし、めでたし。

動画はこちらです。


追記:
ところがその後、家電リモコンRS-WFIREX3のタイマーセットしたリモコンコマンドが送信されなくなるトラブルが2回ほどありました。タイマーセットしたその項目だけがだめなようで、改善策が見つけられません。一度は、他のタイマーを削除したら動くようになりました。
今のところ信頼性が低いと判断して、家電リモコンRS-WFIREX3からの自動給餌コマンドはやめています。アプリをアップデートした直後でもなさそうです。

猫用自動給餌器をリモコン制御に改造、その2」へ続く...






人気ブログランキング
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

トイレの換気扇から少し異音 [DIY電気]

トイレの換気扇から少し異音が出始めました。
三菱電機のVD-10ZC2(製造年1996)です。
こんな換気扇です。
DSC_0526.jpg

カバーをはずしてみたところ、回転中なのでシロッコファンの中が綿菓子を作るドラムみたいな妙な容姿になっています。なんじゃこれ!ってな感じす。
DSC_0505.jpg

遅れ停止スイッチなので、スイッチを切って数分後に確認したところ
シロッコファンは埃まみれ。
DSC_0506.jpg

トイレ天井の左のやつです。
DSC_0507.jpg

ピンセットで埃をつまんで除去を始めましたが、なかなかはかどりません。
DSC_0510.jpg

埃が頭上から降ってくるし、この程度の除去までが限界です。
DSC_0511.jpg

黒いカバーがネジ5本で止まっているだけでしたので、黒いカバーを外して、シロッコファンも外しました。こんなに簡単に外れるのであれば最初から外せばよかったです。
シロッコファンの取り外しには8mmのボックスドライバーを使ってます。
ちなみにシロッコファンは樹脂製です。
DSC_0514.jpg

シロッコファンを外した跡はこのような状況です。
実は、ダクトは数年前に専門業者に掃除してもらってます。
たしか、1~2万円ぐらいだったような、
DSC_0515.jpg

シロッコファンとカバーは水洗いでスッキリ。
DSC_0517.jpg

掃除を始めてしまってますが、埃が原因での異音ではありません。
モーター軸を指で回転させても異音がしますので。
将来的には「モーターだけ交換」をすることになりそうです。
モーターの型番でも見ておこうと思いモーターを外してみました。
ついでにモーターが付いていた部分(穴)から、天井から吊り下げで取り付けられているのを確認しました。青い部分が天井の取り付け部です。この手の施工をやられては、本体交換するのに天井をぶち壊さなければなりません。
本体の交換が容易であればモーターだけ交換する必要はないのです。
ですから、うちの場合は「モーターだけ交換」なんです。
困ったもんです。
DSC_0521.jpg

型番かな?BK042X2というように見えます。
モーターの胴を一周確認しましたが、そのほか何も書かれていません。
DSC_0522.jpg

BKじゃなく、8K042X2かな?
DSC_0523.jpg

横から。
モーター本体70mm長、直径60mm、シャフト40mm長です。
DSC_0524.jpg

DSC_0525.jpg

取り扱い説明書にはモーターの型番に関する記載はいっさいありませんでした。
vd-10zc2_motor.GIF

今後の計画では同じモーターか、代替品の入手方法がわかったら交換したいと思います。
ご存知の方、情報いただければうれしいです。
今回は、モーターシャフトに油を吹き付け、組み直してメンテナンス完了としました。
音は静かになりましたが、経験上、数日したらまた鳴り出すでしょう。


人気ブログランキング
nice!(0)  コメント(0) 
共通テーマ:住宅

トラッキング火災対策 [DIY電気]

大掃除で冷蔵庫を移動させて裏を見たらびっくり。
こりゃまたすごいことになっています。
トラッキング火災が心配になります。
トラッキング火災は、電流が埃を伝い流れますので発煙や発火につながります。
特に、一年365日コンセントに挿しこんだままになっているコンセントは人の手が触れず埃も蓄積して非常に危険な状態となります。
使うと時だけ抜き挿しする電気製品は心配ないと思います。
年末の大掃除などでコンセント部に埃がたまっているのを見つけたら必ず対策しましょう。
対策したので掃除は不要ということではありません。
冷蔵庫や、洗濯機、テレビの裏等、気にかけておいたほうが無難です。
DSC00386.jpg

最近の家電製品のコンセントは、刃の付け根に黒いカバーが取り付けてありますので、トラッキング火災対策されています。
DSC_0713.jpg

古い家電製品は当然のこと、新しい家電製品でも下写真のように対策が取られていないものもあります。このようなものは、黒いカバーを後付けできますので、必ず対策しておきましょう。
また、空きコンセントには埃が入り込まないように専用キャップを付けておけば安心。
タイトラキャップは百均で見たことはありませんが、それに相当するカバーは売られていますね。
DSC_0714.jpg


サンワサプライ タイトラキャップ TAP-PSC4N

サンワサプライ タイトラキャップ TAP-PSC4N

  • 出版社/メーカー: サンワサプライ
  • 発売日: 2007/12/20
  • メディア: Personal Computers




人気ブログランキング


nice!(0)  コメント(0) 
共通テーマ:住宅

留守時に在宅を装うタイマー [DIY電気]

リビングのLED照明の壁スイッチは、Panasonicの「あけたらタイマ」というものを取り付けております。
上下に2つスイッチがあり、上は単なるスイッチで、この壁の上にある照明を入り切りさせているだけです。今回のメイン紹介は「あけたらタイマ」というので、その下のモジュールです。
DSC_0713.jpg

蓋を開けてみましょう。
デジタル時刻表示とスイッチがあります。
設定するのは以下の4つです。
(1)現在時刻
(2)入り時刻
(3)切り時刻
(4)遅れ消灯時間

(1)は現在時刻を設定。(2)入り時刻は定刻モードにした時の入り時刻。(3)切り時刻は定刻モードにした時の切り時刻。(4)遅れ消灯時間は、通常モード時に消灯してから何分何秒後に切りにするか。
以上のように設定しておきます。
モードを「解除」にしておくと、通常の照明入り切りができますが、切りの時だけ(4)で設定した時間(秒単位可能)後に照明を切りにすることができます。私は、30秒に設定していますので、就寝時に切りにして寝室に向かい、布団に入ったら消える使い方です。(切りにしてから実際に照明が消えるまでは緑のLEDが点滅・点滅中にボタンを押すと即消灯)
(2),(3)は「定刻」モードにした時に、その時間に正確にオンオフします。
「留守」モードというものもありまして、そのモードにしておくと(2),(3)で設定した時刻の±30分でランダム時刻に入り切りしてくれます。一週間ぐらい家を空ける時に在宅を装ってくれます。留守モードにしたというだけでも安心して旅行に行けます。一泊だったら定刻モードでもOKですね。
DSC_0715.jpg
DSC_0714.jpg

消灯時は緑のLEDが光りますので暗がりでスイッチの場所がわかります。
DSC_0717.jpg

このシーリングライト(LED)を入り切りさせています。
DSC_0718.jpg






人気ブログランキング
nice!(0)  コメント(0) 
共通テーマ:住宅

レンジフードのモーター交換 [DIY電気]

この記事に関してのご質問はご遠慮いただいております。 この記事はあくまでも参考としていただき、モーター交換を含む作業等は、ご自身の責任において行ってください。多くの方はこの記事で成功してらっしゃいます。私は関連する業者ではありません(笑)

19年使ってきたレンジフードからは何年も前から症状は発症していたのです。
「シャリン・シャリン・シャリン・・・・」とびっくりするような音がして、子どもの頃テレビで胴体切断マジックショーを見たときのトラウマがよぎるのです。何度かモーターを取り外してモーターボディの中のベアリングを交換してきたのですが、今回はモーターごと交換することにしました。
タカラスタンダードのタカラレンジフードファン VL-60という型で、モーターにはH-130-8VEと印字してありましたので、楽天で探して問い合わせてみたところ、VRNモーター 10224494で代用可とのことでした。
この記事下に、Amazonと楽天の商品リンクを掲載しています。
DSC_0462.jpg

こんなレンジフードです。
DSC_0463.jpg
DSC_0464.jpg

作業するには、この2つの工具は必須であります。
短いマイナスドライバーとボックスドライバー(7mm)です。
ここで言う”短いマイナスドライバー”とは長さが7cm以内であればOK。
DSC_0476.jpg

フィルターの外し方は、フィルターの取っ手をつかんで上方向(黄色矢印)に1~2cmスライドして、手前方向(桃色矢印)に引けば外れます。左右、両方を外しましょう。
DSC_1104.jpg

フィルターを外すとファンケースが姿を現します。
DSC_0465.jpg

4箇所蝶ナットを外し、リングを外すと、シロッコファンの全体が見えてきます。
DSC_0466.jpg

短いマイナスドライバー(長さ7cm以内)が必要な場面がやってきました。
モーターの軸にシロッコファンを止めている「止めネジ」を緩めなければなりません。普通のドライバーだと柄が邪魔してネジを回せないのです。
sirocco_fan.jpg

止めネジを緩めたらシロッコファンを引き抜きます。
油ねっとりで引き抜くことができない場合は、ドライヤー等で軸部を暖めると油が緩くなり取れやすくなります。たぶん、作業開始前に運転をしておけば、モーターからの熱で取れやすくなるのではないかと思います。
DSC_0468.jpg

シロッコファンを外すと、モーターが見えます。
このモーターは4箇所ナットで止まっていますので、7mmのボックスドライバーで外します。
DSC_0469.jpg

モーターのコネクターはこの段階で外します。
この白いコネクタ―は、LANケーブルを抜く時のように爪を押しながら引っ張って外します。コネクターを接続する場合は爪は押さずに、しっかりと接続すればOKです。
DSC_0470.jpg

取り外したモーターが左、新品が右です。
DSC_0471.jpg

コネクターの形状が同じであることを確認します。
新品モーターのコネクターは変換コネクター付きでした。
DSC_0472.jpg

モーターが外れた状態です。
防振ゴムですね。
DSC_0473.jpg

新しいモーターをボックスドライバーを使って取り付けます。
コネクターを差し込んだらモーター交換完了です。
もう、胴体切断マジックショーを思い出すことはないでしょう。
DSC_0474.jpg

『おまけ』
古いモーターを分解したところです。
モーター軸にベアリングが2箇所あることがおわかりでしょうか?このベアリングは大きなホームセンターでも購入できます。いままで懲りずに、このベアリングを交換してきたわけです。このベアリングは簡単には取れないので特殊な工具が必要になります。
DSC_0475.jpg

『おまけ』
回路図です。
FAN_Sch.jpg


[ひらめき]購入情報

■Amazonリンクのこちらは、モーターとパッキンをセットで購入可




■楽天リンクのこちらは最安値(送料を考慮しても)、モーター単品、パッキンはありません。





人気ブログランキング
nice!(0)  トラックバック(0) 
共通テーマ:住宅

電気毛布の最小温度設定からさらに低くする方法 [DIY電気]

私の母が電気毛布を使用しているのですが、チクチクして体が痒くなってしまうと相談がありました。
もう少し温度を下げたいようなのですが、最小設定してもダメなようです。
ググっていたら、プログラムタイマーEXPPT77を見つけ調べたところ、最小15分のオンオフを繰り返す設定ができるようです。
設定スイッチを一つおきにオンオフ状態に全周設定します。
時刻設定は面倒なので不要です。
要は、電気毛布を15分おきにオン/オフを繰り返えさせ、温度を下げてしまおうという計画です。
母は遠方のため、購入して設定だけやってしまって送ってあげました。
母からは心地よいとのことで合格点をもらいました。
気になるのは音なのですが、確認を忘れました。何にも言ってなかったからOKかな?


プログラムタイマーEXPPT77

プログラムタイマーEXPPT77

  • 出版社/メーカー: リーベックス
  • メディア: ホーム&キッチン




人気ブログランキング
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:住宅

コタツの切り忘れが絶対になくなるよ [DIY電気]

冬といえばコタツに入りながらみかんですね。
私の場合は焼酎なのです。あっ!すみません、またお酒の話で、よい子の皆さんは二十歳からです。
今回はコタツの切り忘れのお話です。
一晩コタツをつけたままにしてしまったり、出掛けてしまったりと、ついついうっかりミスしてしまうことがありますよね。
タイマー付きのコタツがありますが、我が家のコタツみたいに温度調整しかないものが多数だと思います。
そこで、パナソニックのダイヤルタイマー(3時間形) WH3201WP というものを買ってきたのであります。11時間形もありますが、3時間形が最適だと思います。
設置はいたって簡単、コンセントに差し込んで、コタツのコンセントを「時間がたてば - 切」に差し込むだけです。コタツを使いたい時にクルっとひねって適当な時間にセットするだけ。
時間がくると勝手に切れます。
知らない間に切れてなんだか寒くなったなぁと感じたらまた、またクルっとひねればいいのです。
省エネにもなるので一石二鳥です。
欠点といえば、「チャチャチャチャ・・・・」と小さな音(ちょっと大き目)が鳴ることですが慣れだと思います。

DSC_01091.jpg

冬限定では勿体無いので、夏はお風呂場の扇風機に転用です。
DSC_01092.jpg

このシリーズは、コンセントに差し込むプラグが、紹介した写真のように本体にあるものと、1mのケーブルになっているものがあります。


人気ブログランキング
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:住宅

ナショナル電動ドライバー(EZT160H)の電池交換 [DIY電気]

この記事に関してのご質問はご遠慮いただいております。 この記事はあくまでも参考としていただき、モーター交換を含む作業等は、ご自身の責任において行ってください。

購入してからずいぶん経ちました。
内蔵のNi-Cd電池がへたれたらしく、ACアダプタを接続しながらなんとか凌いできましたがダメです。
もう限界で回らなくなりました。
家具の組み立て等、たいへん重宝する電動ドライバーで私には必須アイテムなのであります。
困った時のヤフオクってなことをよく聞きますが、ありました、ありました、Ni-Cdが単品で売られています。
一個200~300円です、交換に必要な6個買っても2000円でお釣りがきます。
電動ドライバーを開けた回路図です。
EZT160H.gif

Ni-Cdの交換には、はんだごて、はんだ、ニッパやその他工具が必要です。
図のNi-Cd1~Ni-Cd6までを交換しなければなりません。6個のNi-Cdはばらばらですので、玩具に入れる電池のように接触させるだけではなく、全てのNi-Caは、はんだ付けが必要です。
電動ドライバーのグリップの部分に6個のN-Cdが入っていまして、キツキツです。
交換作業の難易度は少し高めです。
無事交換して、電動ドライバーが復活しました。
DSC_0322.jpg

挑戦される方はプロジェクトを発動する前に電動ドライバーを開けてみて判断したほうがいいと思います。

2018/2/17 追加写真

NI-CD 4/5SC 2000mAh 1.2V
直径:22.5mm
長さ:34mm
6個直列接続です。
DSC_0799.jpg

養生テープで電池を巻いてます。
DSC_0800.jpg

2018/6/13
取り扱い説明書の P5 追加
CCI_000005.jpg

【この記事で紹介している商品】




【そろそろ買い替えを考えている商品・・・これかな】





人気ブログランキング
nice!(0)  トラックバック(0) 
共通テーマ:趣味・カルチャー

キッチンのシーリングライト交換 [DIY電気]

マンション購入時からキッチンに取り付けてあった蛍光灯式のシーリングライトが寿命を迎えた。
スイッチを入れると、「ジーーー」と鳴り出し、おまえは蝉か!と思うほど。その上、点灯するまでに時間がかかります。もう蝉の鳴き声は聞きたくないので、あきらめて交換することにしました。
今までも交換したいとは思っていたのですが、相手はそう簡単には交換させてくれる照明機器ではありません。蛍光灯本体が天井に直接ネジで取り付けてあり、ローゼットにカチャっと簡単取り付けとはいかないのです。
蝉の蛍光灯を取り外したら、穴から100Vのケーブルが出ているだけです。
やるだけやってみようと思い、購入したフル引掛ローゼット Panasonic WG-6005WPを直接天井に木ネジを使って取り付けようとしましたが、案の定、だめです。石膏ボードなのでネジでしっかり止まるわけがありません。
ガーーーン!予想通りです。
ユルユル状態のローゼットに照明器具を取り付けたら、ものの10分ほどで落下して血を見ることになります。
IMG_20150612_140149.jpg

天井に蝉の蛍光灯が付いていたわけですから、その取り付け穴を利用するしかありません。
取り付け穴は2箇所でピッチは910mmです。まず、木材を天井に取り付け、その木材にフル引掛ローゼットを取り付け、あとは購入したシーリングライトを取り付けることにしました。
下写真は、右側に立てかけてあるのが蝉の蛍光灯です。中央下は木材に白色を塗っています。木材はホームセンターで相談すると、何年経ってもたわんだりしない「エゾ松」を薦めてくれました。エゾ松くんのサイズは1000*90*24(長*幅*厚)です。
IMG_20150612_140438.jpg

木材中央にフル引掛ローゼット Panasonic WG-6005WPと取り付け、天井にエゾ松くんを910mmピッチ、2箇所止めで取り付けました。木材中央部は、フル引掛ローゼットを取り付けるので、エゾ松くんの中央部はホールソーという工具で大きめの穴を開ける必要があります。
エゾ松くんは、結構重いので重さを量りました。
エゾ松くん=0.7Kg、 コイズミさん=1.4K、蝉の蛍光灯=2.7Kg。
ということは、エゾ松くんとコイズミさんを合わせて2.1Kgですから、蝉の蛍光灯よりずいぶん軽く取り付け部の強度はOKということになります。
DSC_0299.jpg

今回買ったのは、コイズミ BH13730R 「LEDシーリング6畳用調光リモコン付」というもの。
価格もリーズナブルで、今まで以上に明るくなり料理も楽しくなります。
DSC_0297.jpg


人気ブログランキング


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:住宅

NT-301の赤外線リモコン制御 [DIY電気]

以前、アクアリウム・水草水槽を趣味にしていた頃にHPを立ち上げておりました。
HPも現在閉鎖となっていますのでその中で紹介していました電気工作をご紹介いたします。
また水槽始めたいなぁ~♪

NISSO製のプログラムタイマーは毎日設定した時刻に水槽の照明をオンオフさせるタイマーです。水槽のメンテナンスや、来客があったときにの非定常時に照明がほしいときに手動で照明オンしたいですよねそれには、水槽裏に置いてあるNT-301の透明カバーを開けてスイッチを押さなければならないんです。
そこで、このプロジェクトはスタートしました。テレビのリモコンでオンオフできるように改造するプロジェクトです。
NISSOプログラムタイマーNT-301は2系統のタイマーがあり、ふたつの100V器具を別々にオンオフできます。タイマーオフ時は前面パネルのT1またはT2ボタンを押すことで強制的に希望のチャンネルをオンにできます。そのふたつのボタンを赤外線リモコンで遠隔制御できるように改造することにしました。NT-301を開けると写真左部の電源基板と写真右部の緑色に見えるデジタル制御基板(以下D基板)で構成されていることがわかります。それぞれは6ピンのコネクタで接続されています。D基板は前面パネルにネジ止めされているので、ネジを外して、プッシュスイッチ等がばらばらに外れないようにそっと基板を外します。液晶表示器も外れそうになるけど、あわてる必要はありません。
これから製作するリモコン受信基板をこの中に組み込むことにします。
nt301_open.jpg

アマチュア(プロも)の電子工作でよく使用されるPICマイコンというワンチップマイコンをメインにNT-301に組み込む回路を製作しました。実はもう、この時点ではPICに書き込むプログラムは完成に近い状態です。新品のPICは、プログラムを書き込んであげないと、なんの機能も持たないため、書き込み器を購入するか自作するなりしなければプログラムを入れることができません。
下の回路はU2が赤外線リモコンから送信された光を受光し、1番ピンから出力してPICのRA0に接続しています。PICはRA0に入力されたリモコンコードを解析してRB0とRB1に200msの正パルスを出力するのです。
赤外線リモコンはS社のテレビリモコンのコードを解析するようにしました。CH1を押すとRB0に、CH2を押すとRB1にという具合にRB7まで出力しています。対応するリモコンボタンは好みのボタンを登録することができるようにもしています。
200msの正パルスをトランジスタのベースに入れると、T1_OC,T2_OCのコレクタがGNDへ短絡する仕組みです。T1_OC,T2_OCは前述のD基板のT1スイッチとT2スイッチへ接続します。T1,T2スイッチと並列接続となり、トランジスタの電子スイッチとT1,T2スイッチのどちらでも動作するようになります。
pic_drawing.gif

D基板に貼り付けた状態のリモコン受信基板です。D基板は表は緑色ですが、この写真に写っている裏は茶色です。基板にはコネクタを使用していますが、接続ははんだ付けとしています。基板上のLEDはD1ではなく回路図には無いRB4に接続したテストランプであるのでご注意を。
基板上部のコネクタの2本線は茶がT1_OC、赤がT2_OC。裏から出ている赤と黒はD1を延長しフロンとパネルへいきます。
基板右部の3本は赤外線受光モジュールU2を延長してフロントパネルへいきます。黒がU2の3番ピンへ、黄が2番ピンへ、青が1番ピンへ接続されます。
基板左部の基板下から赤黒2本の線がD基板のコネクタ部へ接続され電源供給を受けています。赤が+3.3V、黒がGNDですね。
部品の高さはこれが限界!電源基板との余裕がないため計算上では隙間が1mmも無いはず。汗!
nt301_addpwd_a.jpg

これはリモコン受信基板の裏(はんだ面)です。よく考えて作っていない証拠で配線のまたがりが発生しました。自分が使用するものなのでテキトウな作業。動けばいいという気持ちで作業をしています。+3.3VとGNDを作業中、サインペンで塗ってみるとこりゃまたわかりやすくミスが少なくなります。今回は回路が簡単でしたので+3.3Vを赤ペンでしか塗っていないのです。
「いもはんだ」という言葉があります。それは、はんだをしたつもりで、お互いに電気的に接続していない状態であり、裸眼で見てもわからないことがよくあります。少しでも疑問に思う箇所があればルーペで確認します。ルーペでも判断が困難であれば、追加はんだをすればいいですよ。
nt301_addpwd_b.jpg

これはD基板のコネクタ部から+3.3VとGNDをもらってくる配線です。リモコン受信基板の+3.3VとGNDに接続されます。赤線が+3.3Vで4番ピンに、黒線がGNDで1番ピンにはんだ付けしています。電源ラインはこの回路で最も電流が流れるラインであるため太めの電線が良いのです。
ついでなので説明しますと、丸に見える部分はくし型になっているスイッチパターン。上から導電ゴムスイッチで短絡する構造となっています。このD基板には4箇所ありT1,T2,セレクト,スタートのスイッチです。
nt301_33v.jpg

D基板で目立つ大きなICはNECのuPD753104という型のマイコンである。T1,T2スイッチの片側からこのマイコンのピンにパターンがつながっている。はんだ付け可能な部分は唯一このICのピンです。ピンの間隔は0.8mmで、今回のはんだ付け作業中で最も難易度の高い作業であります(汗)。ICの左上が1番ピンです。茶色の電線は31番ピンへ、赤の電線は32番ピンへ接続しています。
コツはICのピンに適量のはんだをまず盛り、電線にもはんだを適量盛っておきます。次に、一本の電線をICのピンに合わせテープで固定し、はんだゴテを上から触れて溶かして付けます。ルーペで見て不十分であれば、その上からはんだを少し流し込みます。もう一本も同様に作業します。作業が終了したらテープをきれいに貼りなおして写真のように固定しておきます。
nt301_wire_connect.jpg

これが赤外線受光モジュールU2です。S社のリモコンはキャリア周波数が40KHzですが、手持ちの38KHz品を無理やり使っています。ちなみに40KHz品はGP1UD28YKという型番です。また、+3.3Vで動かすため底電圧で動作するタイプを使うことは必須です。
リモコン受信基板から出た3本の線でここまで引っ張ってきています。NT-301の前面に約φ4.5の穴を開け、その部分に接着しました。接着にはメルトガンを使ったのでしっかりと十分すぎるほど接着できています。これのいいところは、失敗したらこの樹脂を指でつまんで剥がせることですね。指で剥がすのが無理であればラジオペンチでつかんで剥がせます。
nt301_ir_panel.jpg

NT-301のフロントパネル下部には赤外線リモコン受光部がのぞく丸い穴、フロントパネル上部には赤いLEDのパイロットランプが見えます。
この改造作業の初期のことですが、赤外線リモコン受光部は手で塞いだりしても光漏れでけっこう動作するものだと思い、中の基板に実装したんです。全部カバーをして、さ~あ動作テスト!しかーーーし全く反応しない。一部の隙間からは動作しますが軽快な動作はしなかったのです。
nt301_complete.jpg

改造が終わったNT-301はいつもの水槽の裏へ設置した。テレビリモコンで動作確認を行い、動作することを確認。こうなるとどれだけ離れてもリモコンがきくのかテストしてみたくなる。結果はテレビのリモコンと同じく、10mぐらいまではOKでした。T1には照明、T2にはCO2の電磁弁を接続しているので、タイマー未動作中にCH1を押すと照明がオンとなり、電磁弁未動作中にCH2を押すと初期スタートのCO2がジュワ~と勢い良く出る。電磁弁はリモコン制御をしたくないため、リモコンボタンの登録モードで間違っても押されないようなボタンにカスタマイズした。
タイマーをセットしなければ、単なるリモコンスイッチとなります。
nt301_finish.jpg

PICにはプログラムを書き込まないと動作しませんので、デバッグを繰返しながらプログラムを完成させます。
以下PICマイコンとプログラムの仕様です。

●プログラム開発環境
・プログラム開発言語、CCS Cコンパイラ
・統合開発環境、MPLAB IDE V7.40
●マイコン基本設定
・デバイス PIC16F819
・動作クロック10MHz
・パワーアップタイマ(PUT)ON
・ウォッチドックタイマ(WDT)2304msで使用
・スリープ(SLEEP)未使用
●I/Oピンとその動作
・RA0端子(入力)に赤外線受光モジュールのVOUTを接続
・RA1端子(入力)にHIを与えるとRB出力はHIでアサートする
・RA1端子(入力)にLOWを与えるとRB出力はLOWでアサートする
・RA2端子(出力)未使用のためオープンとする
・RA3端子(出力)未使用のためオープンとする
・RA4端子(出力)PL=パイロットランプを接続。登録モードおよび有効な赤外線コマンドを受信すると発光する。
・RB0端子(出力)は赤外線コマンドCH1を受光すると200msアサートする
・RB1端子(出力)は赤外線コマンドCH2を受光すると200msアサートする
・RB2端子(出力)は赤外線コマンドCH3を受光すると200msアサートする
・RB3端子(出力)は赤外線コマンドCH4を受光すると200msアサートする
・RB4端子(出力)は赤外線コマンドCH5を受光すると200msアサートする
・RB5端子(出力)は赤外線コマンドCH6を受光すると200msアサートする
・RB6端子(出力)は赤外線コマンドCH7を受光すると200msアサートする
・RB7端子(出力)は赤外線コマンドCH8を受光すると200msアサートする
・アサート後は1秒間赤外線コマンドを受け付けない
・赤外線コマンドはS社対応で、TVリモコンのCH1~CH8を受け付けます

・登録モードではRB端子に対応するリモコンボタンをカスタマイズできる。
TVリモコンの「電源ボタン」を押すと、パイロットランプが5回ブリンクし登録モードになります。パイロットランプが5回ブリンクした後はパイロットランプが点灯し、RB0に対応するリモコンボタンの入力待ち状態となります。60秒以内に希望するボタンを押し、残り7回も同様にボタンを入力します。8回登録が完了すると、登録内容が自動保存されます。登録途中、60秒以内にボタンが押されないか、または「電源ボタン」が押されたら、それまで登録したボタン内容を破棄して登録モードを終了します。登録モードが終了する場合にもパイロットランプが5回ブリンクします。登録モードのキャンセルボタンに「電源ボタン」を使用しているため「電源ボタン」を登録することはできません。


人気ブログランキング

タッチレススイッチへの変更 [DIY電気]

タッチレススイッチは壁スイッチを「ぱっちん」としなくても。手をかざすだけで照明の入り切りができるスイッチなのである。これを知ったからにはどうしても家のどこかに取り付けたくなり、このプロジェクトは発動したのである。家の中をよく観察すると、洗面所の壁スイッチまわりの壁紙が薄黒くなってきているではないか!ターゲット決定!

以前から興味があった東芝のタッチレススイッチを購入した。この手のものは超大型ホームセンターでも置いていることはないので、通販で購入するしかない。購入した内容は、東芝ライテック製の本体NWD1881(WW)とプレートNWD5111(WW)のふたつ。写真の左の白い枠がプレートであり別売であるので買い忘れたらたいへん。

NWD1881_unpack.jpg

これが、これから交換しようとしている洗面所の電灯スイッチだ。100円ショップで購入した木製プレートはおしゃれでなかなかのものだが今回で引退となる。電灯スイッチがダブルスイッチ(スイッチ2つ)となっているものは交換の対象とはならない。
作業を始める前に必ずブレーカーを落としておく。
ちょっと待った~!作業するには第2種電気工事士以上の免許が必要となります。

NWD1881_before.jpg

木製プレートを取り外し、その中にある鉄プレートをネジをゆるめて取り外した。

NWD1881_remove.jpg

スイッチを引っ張り出すと白と黒の電線がスイッチに差し込まれている。片切りスイッチというもので、ルールとしては黒が電圧側、白が照明側である。取り外すには、それぞれの電線差込口横にマイナスドライバーを差し込むスリットがあるので、マイナスドライバーを力強く差し込んで電線のロックを外し、電線を抜けばよい。抜いた黒線は電圧側なので、タッチレススイッチの電圧側へ、白線は照明側へ差し込め(接続)ばよい。

NWD1881_wire.jpg

金属プレートをネジ締めする前に、本体のTピースと呼ばれる中央のカバーを外さなければネジ締めができない。Tピースを外し、金属プレートをネジ締めしたらTピースを再装着する。最後にプレートを取り付ければ完成。写真の緑色のLEDが光っているのは待機状態で、電灯がオンになるとこのLEDは消える。今回はLED電球照明の代わりに導入し、問題なく動作した。試しに別部屋の蛍光灯の壁スイッチと交換してみたら、蛍光灯は微妙にしゃっくり(異常音が少し聞こえる)を繰り返しているような結果だったので蛍光灯はどうやら使えない。

NWD1881_finish.jpg

こ、これは!想像以上に感度が高い。~3cmぐらいまでかと思っていたのだが、10cmぐらいまで検出する。応答速度も申し分なく、なかなかのものだ。
スイッチ入りで「ピィ」
スイッチ切りで「ピピッ」
と音が鳴る。Tピースを外すとこのブザーのオンオフスイッチがあり、鳴らさない設定もできるようになっている。
オンオフ回数が多い洗面所には絶好のスイッチだ。小さなお子さんがいらっしゃる家庭では、スイッチ付近の壁が真っ黒になってしまうのだが、このタッチレススイッチを導入すればその問題も解消するかもしれない。

NWD1881_hand.jpg

※ 電気工事を行うには第2種電気工事士以上の免許が必要です。

【この記事で紹介している商品の後継機種】





人気ブログランキング
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:住宅
DIY電気 ブログトップ