技術メモ

過去の経験や実験データ,設計・検討資料を残す。
今取り組んでいることのプロセスの記録から新たな気付きを得る。

お風呂パズル

2019-11-06 | 日記

ボケているけど。

長風呂のせいか,捨てられてしまったのでここまでです。

三角パズルもおまけで掲載しました。

ファミリーレストランのおまけでもらったお風呂パズルにはまった。
60マスのパズルでオリジナルは6x10の長方形

60になる長方形は3x20,4x15,5x12でも作れるはず。

何日掛かった事か!
ピンボケだけど成果発表

<その後>
6x10の組合せを色々試してみた。(追加20191219)

さらに追加で12通り(2020.1.10)


DIP8pのPICマイコンによる発振器の製作

2017-11-04 | マイコン

昔使用していた発振器が無くなったり,水晶振動子を分周しただけでは欲しい周波数が得られない
アプリケーションに,簡単に対応できないか検討し,DIP8pのPICマイコンが使えそうだったので
秋月電子通商で1個120円でPIC12F1840を購入した。

1.実験回路
          

   ①右側5pコネクタは,書込・デバッグ用JTAG端子,2pコネクタは+5V電源です。
     (書込はPICKit3を使用)
   ②発振出力はLED点灯させ確認。
   ③内蔵発振器(確度±1%)と水晶発振の両方実験できるよう取付(4.9152MHz)

2.結果
(1)内蔵発振器32MHzでも,水晶振動子を用いた場合でも両方動作した。
   (水晶振動子にコンデンサがなくても動作したが,付けなきゃダメだよね)
(2)10Hzを作るには,内部タイマを用い,以下の割込みを発生させソフトで10Hz実現
   ①TMR2:1000Hz割込
   ②TMR0:100Hz割込
(3)20kHZ発振は,TMR2とPWM機能を用いた

3.20kHz発振の初期化プログラム
#include
#include
#include
#include "time.h"

#define INTERNAL_OSC    // コメントアウトで水晶発振となる
// CONFIG1
#ifdef INTERNAL_OSC
    #pragma config FOSC = INTOSC    // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#else
    #pragma config FOSC = HS        // Oscillator Selection (HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins)
#endif
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)

// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = ON       // PLL Enable (4x PLL enabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)

void TMR2_Initialize(void)
{
    #ifdef INTERNAL_OSC
        PR2 = 99;       // 32Mz/4/4/100 = 20kHz
        IRCF0 = 0;      //内蔵CLK8MHz
        IRCF1 = 1;      //内蔵CLK8MHz
        IRCF2 = 1;      //内蔵CLK8MHz
        IRCF3 = 1;      //内蔵CLK8MHz    
    #else
        PR2 = 61;       // 19.8806Mz/4/4/62 = 20.04kHz
    #endif
    T2CON = 0x01;   // prescaler 1/4 off postscaler 1/1
    TMR2 = 0x0;     
    T2CONbits.TMR2ON = 1;
}
      
void EPWM_Initialize (void)
{   // CCP1M P1A: active high; P1B: active high; DC1B 3; P1M single;
    CCP1CON = 0x0C;
    CCP1CONbits.DC1B = 0b00;    // CCPL1L8bit + bit1 +bit0
    // CCP1ASE operating; PSS1BD low; PSS1AC low; CCP1AS disabled;
    ECCP1AS = 0x00;
    // P1RSEN automatic_restart; P1DC 0;
    PWM1CON = 0x80;
    // STR1B P1B_to_port; STR1A P1A_to_CCP1M; STR1SYNC start_at_begin;
    PSTR1CON = 0x01;
    CCPR1L = 30;    // ここでデュティを変える
    CCPR1H = 0x00;
}

void PIN_MANAGER_Initialize(void)
{   LATA = 0x00;    
    TRISA = 0x3B;   // 0:output RA2
    ANSELA = 0x13;  // 0:digital 1:analog
    WPUA = 0x3F;    // Weak pllup 1:enable
    OPTION_REGbits.nWPUEN = 0;
    APFCON = 0x00;  // RA2 is CCP1
}

void main(void)
{   EPWM_Initialize();
    TMR2_Initialize();
    PIN_MANAGER_Initialize();
    
    while(1)
    {
    }
}

4.OSC,TMR0,TMR2,PWM機能のブロック図
https://plaza.rakuten.co.jp/datasheet/diary/201711040000/


単相フルブリッジ・アクティブフィルタ(力率改善:PFC)回路のデジタル制御

2016-10-26 | 回路

単相の力率改善回路は,小容量の場合は1石式の昇圧回路により実現する。
100W以下程度なら臨界モード(電流不連続)で簡易な回路とし,2kW程度までの場合は
電流連続モードの制御をし,ピーク電流を抑えることで高効率を実現している。

さらに電力容量が大きくなる場合は,フルブリッジの昇圧回路を用いている。
フルブリッジのアクティブフィルタ回路は,電力の流れを双方向に制御可能で,なお且つ
位相も電流波形も変えられるため,交流負荷装置にも応用が可能である。

フルブリッジ・アクテイブフィルタ回路のデジタル制御を実施したので紹介する。

PWMインバータによりV2を発生させることにより,ILを制御する。
(1)電流0[A]設定の時,V1=V2とすることで,電流0となる。
   V1の値をそのままV2指令V2*とする。

(2)PI制御をしない(PIゲインを0)時,ILにより発生するVLを計算し,V2*をつくる。

(3)電流の向きと大きさにより,デッドタイム補正を行い波形歪を最少にする。

(4)ILをフィードバックし,PI制御により大きさ,位相,波形歪を制御する。

これらをプログラム作り込むことで,電流指令IL*通りの入力電流波形を実現できる。
ここでVdcはV1の最大値以上ないとV2を発生できず,制御できない。
一般的には240V*(√2) < Vdc ≒ 380Vdc~400Vdcとしている。


AC/AC変換(電子スライダック)

2016-09-27 | 回路

AC電圧を可変する装置にスライダック(可変オートトランス)がある。

スライダックは,トランスなので重い。
これを電子的に可変することで,軽くて制御機能も付けられ便利となるので製作してみた。

波形整形のイメージはこんな感じ。

実際の波形(無負荷)

入力電圧を100V,200Vにした時,85V出力の波形です。

降圧しかできないので,実際の使い方は,電源ラインにトランスを直列接続し
電圧微調整の回路として用いる。

 

 

 


整流回路の電圧電流

2016-08-20 | 回路

整流回路の電圧・電流を求める一覧表を作成した。
負荷は抵抗としているので,実際の整流回路での値とは異なることに注意

http://www.tokyo-seiden.co.jp/technic/rectify/

整流回路とサイリスタ1次制御により,大電流や高電圧の直流電源が容易に設計できる。

サイリスタ式100kVA1000V直流電源
http://www.tokyo-seiden.co.jp/seihinn/dengen/ga0099/

集塵機用高電圧電源
http://www.tokyo-seiden.co.jp/seihinn/dengen/syuujinki2/