ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示
ラベル 電子工作 の投稿を表示しています。 すべての投稿を表示

2023年4月17日月曜日

MPLAB XC8 Compiler古いのはどこ...?(PICシリーズ)

メーカなどはソフトのバージョンが変わるのがすごく嫌がる。

今回、新しいPCにMPLABを導入するために、調べていたがIDE(統合開発環境)は古いVerが確認できたが、コンパイラがない。

マイクロチップのサイトを確認してもいない。

とりあえず、新しいバージョンでできるからいいが、古いバージョンが手元にないとき古い環境で検証ができない危険があるので手元にあるものを調査したら以下の様になっていた。


使用履歴1

IDE:4.10、4.15

XC8:1.45


使用履歴2

IDE:5.30

XC8:2.10


使用履歴3(新規環境)

IDE:6.00

XC8:2.41


IDEは古いものもサイトで確認できるのにXC8はないのは、モヤっとするな。

とりあえず、サーバーに保存しておくことにした。

欲しい人がいれば連絡もらえれば、メールで送ります。



2022年4月30日土曜日

USBシリアル変換モジュール(KA-CH340E1)

秋月電子で販売しているAE-FT231XというUSBシリアル変換モジュールはユニバーサル基板に実装してmicroUSBを抜き差しするのにある程度力がかかっても破損しないので重宝している。しかし、値段か¥700-と多数を購入すると安くはない。

そこで、代替品を作ってないかと探したがコンパチのものはない。(なぜ?)

そこで、今回はAE-FT231Xの代替品の開発を行う。



・目的

AE-FT231Xの互換性モジュールの開発


・コンセプト

AE-FT231Xと比較して、「小型」「安価」

AE-FT231Xのコンパチ

AE-CH340E-TYPECより小型で安価


・主な仕様

CH340E を使用した USB シリアル変換モジュール。

シリアル側のピン配列が AE-FT231Xの互換性モジュール

電源:USB バスパワ給電(+5V 最大 350mA)

入出力端子電圧:5V

過電流保護:リセッタブルヒューズによる保護

ボーレート:50bps ~ 2Mbps

ドライバ:CH341 互換

ピン仕様:2.54mm ピッチ 

モジュール寸法: 14.25mm×16mm (基板厚 1.0 mm、ランド穴径 0.9mm)


・回路図

・部品表

・アートワーク

・組配及び動作CHK

CH340Eの極性は実体図を参考

①microUSB-Bを実装

②コンデンサを実装

③CH340Eを極性に気を付けて実装

④ヒューズを実装

⑤ピンを実装

⑥狭ピッチのUSB、CH340E、各ピンをショートチェック

⑦ポータブル電源投入チェック

⑧PC接続による通信テスト

※フラックスはIPA等でしっかり落とすこと。(通信不良の原因)


・実態図


感想

USB実装しにくい。バスエラーが現状問題ないが複数個作成したら出てきそうで不安。

実装時間も含めてワンコイン(\400~500-)ぐらいの値段でつくることができた。

→欲しい人いる?

2022年4月21日木曜日

KiCADスリットでの注意

基板を発注をかけた際、どの基板カットなら値段が掛からないかが興味湧き、

3面付で見積もりを取ったらた、穴ぼこは課金してくださいと言われたので、実験的な基板ということもあり少しガイドを残した基板を提出した。
これはOKで追加禁止なくて済んだ。


正直、課金される基準が解らない。
よくわからないが、下にアウトラインを示しておく。

課金なし

課金あり

切断できる環境があるのであれば、ガイドを付けて発注をするのはいいかもしれない。

上がってきたら、会社でも使う予定の基板なので、基板カットしても罰は当たらんだろう。諸族が開発課なので、「勉強目的です」でいいだろう。

2022年3月18日金曜日

ACをUSBで入り切りできたら便利じゃね?③

 マイコンのノイズを色々見ていました。


・ノイズ原因⇒AC100Vの入り切り時のサージ

マイコンに12V近くのサージが掛かっていたのでマイコンのUSB信号が止まっていたことを考えるにシャットダウンしたのではないかと思う。

以下の対策をして見た。

①LPF→1kHzのフィルタを付けてもサージが抜けてきてるのでダメ。

②バリスタ→多少は良くなり、シャットダウンの回数が減ったがやはり落ちる。

③電源コンデンサを追加→マイコンの電源を強化。サージに関しては意味がない。

④ゼロクロス電力する。→落ちなくなった。

秋月の「ソリッド・ステート・リレー(SSR)キット 25A(20A)タイプ」を使用しました。


とりあえず、リレーは変更する方針となりました。
つかさーこのキットバラで部品買うよりキットを買った方が安いんだけど...大丈夫か
基本構成は、これでよさそうです。あとなんか追加したいな。

2022年3月6日日曜日

ACをUSBで入り切りできたら便利じゃね?②

とりあえず、以前作成した基板が上がってきたので、組み立てて適当なケースに突っ込み動作確認を行いました。



基本的なショートチェックなどを行い無負荷での粗調を行いました。問題なさそうなので、とりあえず、作製した内容をまとめました。

○品名:AC100V-USBSW_ver1.00
○使用方法:キットや自作したリレーデバイスを使用しPCのUSBを介して、AC100V (Max30A)をON/OFFできるキット。PCでマイコンを制御するのでPCとキットをアイソレーションさせています。ケースに組み込むことを想定し、パイロットランプ(LED)を基板からリードを伸ばして動作状況を視覚的に確認することをできるようにしています。
○特長
・リレーはキットや自作したリレーデバイスを使用。(1次側:DC5V制御)
・AC100V (Max30A)の大電流対応設計
・パイロットランプ追加可能
○仕様
・電源電圧:5V
・消費電流:TBD
・制御信号電流:TBD
・接点容量:20A 30VDC、30A 240VAC
○基板寸法:100x100mm
○回路図

○部品表
TBD
一部、動作の問題があると改造するかもしれないので
○基板寸法・取付穴図
TDC
基板ができているのである。(面倒)
○組立
TBD
○動作確認
TeraTeamでserial通信で動作確認を行いました。
○使用方法
serial通信でASIIの0x30(=0)でりリレーがOFF、0x31(=1)します。
TeraTeamは勿論、VBAやC++でserial通信を想定しています。

○コンパイラ
XC8(v1.45)
○PICのMCCの設定




○PICのプログラム
#include "mcc_generated_files/mcc.h"
#include <stdio.h>
#include <math.h>
static uint8_t readBuffer[64], writeBuffer[64];
uint8_t i, numBytesRead;                            

uint8_t cmd;

void wait(int imax){
    for(int i=0;imax>=i;i++){
        __delay_us(1);
    }
}

void main(void)
{
    SYSTEM_Initialize();                                 
    PORTB= 0b0000000;
    int acawp=0;
    wait(3000);
    while (1)
    {
        USBDeviceTasks();                                   
        if( USBGetDeviceState() < CONFIGURED_STATE )   
            continue;                                       
        if( USBIsDeviceSuspended() == true )                
            continue;                                       
        if( USBUSARTIsTxTrfReady() == true) {           
            numBytesRead = getsUSBUSART(readBuffer, sizeof(readBuffer));
            for(i=0; i<numBytesRead; i++) {                 
                switch(readBuffer[i]) {                     
                    case 0x0A:                              
                    case 0x0D:
                        writeBuffer[i] = readBuffer[i];    
                        break;
                    case 0x30:
//                     RB4=0;
//                     RB5=0;
                        PORTB= 0b0000000;
                        acawp=0;
                        wait(3000);  
//         printf("\n0:AC_OFF");      
                        putrsUSBUSART("\r\nAC_OFF"); 
                        writeBuffer[i] = readBuffer[i];                          
                        break; 
                    case 0x31:
//                     RB4=1;
//                     RB5=1;
                        PORTB= 0b0111000;
                        acawp=1;
                        wait(3000);                          
//                     printf("\n1:AC_ON");  
                        putrsUSBUSART("\r\nAC_ON"); 
                        writeBuffer[i] = readBuffer[i];    
                        break;                        

                    default:                                
                        if(acawp==1){putrsUSBUSART("\r\nnow:AC_ON");} 
                        if(acawp==0){putrsUSBUSART("\r\nnow:AC_OFF");}   
                        writeBuffer[i] = readBuffer[i] + 1; 
                        break;
                }
            }
//            if(numBytesRead > 0)                            
//                putUSBUSART(writeBuffer,numBytesRead);      
        }
        CDCTxService();                                     
    }
}


○実際に家電を入り切りしてみた。
負荷として、扇風機や電気あんか、マイニングリグをPCで入り切りしてみました。結果として、TeraTeamでACを入り切りを数回すると扇風機はUSB接続が切れてしまった。マイニングに関しては負荷が変動した時にUSB接続が切れた。電気あんかは負荷変動が緩やかなためなのか、USB接続が切れることはなかった。
USBに何かノイズが乗って切れていると思い、USBを接続しているケーブルにチョークを付けたが、多少良くなった程度で正直変わらないと言っていいレベル。
→マイコン自体はACのノイズを受けていると考えられる。

なので、マイコンの制御端子をオシロで当たってみてみようと考えている。(LPFをマイコンの制御端子に付ければ治りそうだな....)

2022年2月23日水曜日

ACをUSBで入り切りできたら便利じゃね?①

 タイトル通り。ACをUSBで入り切りしたら便利かなと思って、作ってみました。


経緯

仕事でも、私用でもリモートでPCを使っているが、webカメラで様子を見つつ100Vを入り切りしたいなと思うことがありました。

PCからリモートで制御はできるので、TeraTermでON/OFFする回路を作ってみました。

回路図は以下の通り。

USBはアイソレーションして、ACと絶縁にしています。また、ACリレーは秋月のキットをそのまま使用します。



AWは以下の通り。

アイソレーター以外は全てスルーホールを想定して作成しました。




ササっと、作製したので変なミスがあるかもしれませんが、そこまで難しい回路ではないのでリカバリーもそんなに難しくないと思ってます。

とりあえず納品まち。


次回に続く。

2022年1月10日月曜日

最近電子工作していたこと。

 久しく電子工作に関してまとめていないが、オシロスコープを買ったり、ミキサ作ったり、PICいじったり、DMMを買ったりしているが、記事にしないと忘れそうで、その不安でつらい。

書くための時間を割かないとまずいなと思った今日この頃。

仕事でも、電電系だし触らない日の方が少ないんだよな...


とりあえず、

・オシロスコープのレビュー

・ミキサ作製レポ

・PIC(?)

DMM校正方法

かな

2021年11月16日火曜日

ムゲンドラモン(プラモ)を光らせるための検討

 ムゲンドラモンのプラモをコロナワクチンを打った日に購入しましたが、光らせたいと思っていたらもう今年のお尻が見えてきているので、早急に完成をさせないと思っている今日この頃。

色々悩みもあるが、とりあえずリフレッシュを意識してやるためにもこのようなことをおろそかにしないようにしてる。

如何でもいい余談は読まれないので適当にして、今回はプラモのムゲンドラモンを光らせたいので光らせてもいい感じのところと色を検討する。

組んだムゲンドラモンはこのようなものです。


下手に LEDが目立つとカッコ悪いので見えにくい角度を意識したいですが無限キャノンと口をビームを意識したオレンジの LEDがカッコ良さそうかな。という感じで考えている。


以下に一覧で書き出す。発光方法も併せて考える。

無限キャノン→オレンジ色(PWM明暗繰り返し)

口→オレンジ色(PWM明のみ)

目→赤色(単純点灯)

関節等の赤クリアパーツ→赤色(単純点灯)

膝→青色(単純点灯)

右手→青(PWM明暗繰り返し)


制御方法

PIC16F1827


電源

背中あたりにPIC書き込み端子と共通させ。acアダプタ等で供給する。(逆電圧については検討すること)


2021年11月9日火曜日

PIC16F1827でPWM3

PIC16F1827のPWMは5bitなので直視たり、カメラで撮っていると明るさの変化が目でばれるのでどのようにしたらいいか考えたところ散乱させれば、わからなそうな感じがしたので紙で囲ってやってみました。


プログラムは基本的ほぼ同じで以下の通り

 #include "mcc_generated_files/mcc.h"

void wait(int imax){

    for(int i=0;imax>=i;i++){

        __delay_ms(1);

    }

}


void MIXLED2(double time){

    int i, j = 1;

        PORTB= 0b0000010;

    for(CCPR1L=0;CCPR1L<63;){


        CCPR1L = CCPR1L + j;

        if(j ==  1){if(CCPR1L>=32)j = -1;}

        if(j == -1){if(CCPR1L<=1)j =  1;}

        

        wait(time);

    }

}

void main(void)

{

    int i, j = 1;

    int PORTA_n=1;

     double time,cktime;

    time=100;

    CCPR1L = 0b0001;

    SYSTEM_Initialize();

    while(1){

        MIXLED2(time);

    }

}


動作は以下の通り。



そこそこそれっぽいかな?

ふと思ったんだけどマイコン入りのフルカラーLEDでやればマイコンのピン節約にならないかな?ちょうどその手の部品があるし、挑戦してみる?気が向いたらやるか。

2021年11月8日月曜日

PIC16F1827でPWM&Lチカ2

動作確認としてPWM&Lチカを行っています。

今回は「LEDが流れるように点灯する」と「LEDの明るさが段階的に明るさが変化する」を同時に動かします。(ざっくりの動作。)

マイコンを単体で二つの動作同時にそれっぽく見せるはプログラムをきちんとそれぽく書けばいい。

それっぽく見せるというのは、人間の目は速い点滅は点灯にしか見えない。という考え方だ。

中学の理科で発光ダイオードを交流の電源とつないでそのままだとただ点灯しているだけだが、振ると点滅しているのが解る。(参考:https://exam.fukuumedia.com/dcandac/)

このように人間の目をだますような形のものをつくればいい。



プログラムは以下の通り

 #include "mcc_generated_files/mcc.h"

void wait(int imax){

    for(int i=0;imax>=i;i++){

        __delay_ms(1);

    }

}


void MIXLED1(double time){

    int i, j = 1;


    for(CCPR1L=0b00000010;CCPR1L<=0b1100000;CCPR1L = CCPR1L + 0b00000010){

        PORTA = 0b00000001;

        CCPR1L = CCPR1L + j;

        if(j ==  1){if(CCPR1L>=0b11000)j = -1;}

        if(j == -1){if(CCPR1L<=0b0001)j =  1;}

        wait(time);


        PORTA = 0b00000010;

        CCPR1L = CCPR1L + j;

        if(j ==  1){if(CCPR1L>=0b11000)j = -1;}

        if(j == -1){if(CCPR1L<=0b0001)j =  1;}

        wait(time);


        PORTA = 0b00000100;

        CCPR1L = CCPR1L + j;

        if(j ==  1){if(CCPR1L>=0b11000)j = -1;}

        if(j == -1){if(CCPR1L<=0b0001)j =  1;}

        wait(time);


        PORTA = 0b00001000;

        CCPR1L = CCPR1L + j;

        if(j ==  1){if(CCPR1L>=0b11000)j = -1;}

        if(j == -1){if(CCPR1L<=0b0001)j =  1;}

        wait(time);


        PORTA = 0b00000000;

        CCPR1L = CCPR1L + j;

        if(j ==  1){if(CCPR1L>=0b11000)j = -1;}

        if(j == -1){if(CCPR1L<=0b0001)j =  1;}

        wait(time);

    }

}


void main(void)

{

    double time,cktime;

    time=100;

    CCPR1L = 0b00;

    SYSTEM_Initialize();

    while(1){

        MIXLED1(time);

    }

}

動作は以下の通り。

前回同様、LEDの制限抵抗(200Ω)が小さいのでPWMの青LEDが「0b11」から点灯し始めている。もう少し大きい抵抗を付ければ問題ないと思う。



今度はとりあえず青LEDの抵抗値を決めます。抵抗でだめならプログラムで考えないとな....

2021年11月6日土曜日

組み込み部品の検討

プラモに組み込み部品の検討をした。部門別にした。 


●LED

LEDをプラモに組み込むために極力小さいLEDを使用することを検討した。

プラモの微小な隙間に入れるためにLEDはチップを使用したいところだが1005や0603のような小さいLEDは組み込む際小さいなど問題があるのでサイズとして1608サイズが望ましいと考えている。

無論入手性も重要今回は秋月のみで購入を考えている。(20211106現在)

赤LED

型番:SML-E12V8WT86
・VF:2.2V
・サイズ:1.6×0.8(単位:mm)
・標準電流:20mA
URL:https://akizukidenshi.com/catalog/g/gI-11879/

青LED
型番:SMLE13BC8TT86
・VF:2.9V
・サイズ:1.6×0.8(単位:mm)
・標準電流:5mA
URL:https://akizukidenshi.com/catalog/g/gI-11881

緑LED
型番:SML-E12P8WT86
・VF:2.2V
・サイズ:1.6×0.8(単位:mm)
・標準電流:20mA
URL:https://akizukidenshi.com/catalog/g/gI-11878

フルカラーLED
型番:OSTB0603C1C-A
・VF(typ.):
・赤…2.0V
・緑…2.6V
・青…2.8V

・サイズ:1.6×1.6(単位:mm)
・標準電流:5mA
URL:https://akizukidenshi.com/catalog/g/gI-06418/

●配線材

電線はポリウレタンエナメルワイヤーで0.3φが使いやすりと思う。


●マイコン

マイコンはSSOPなどの表面実装がよさそう。書き込む際のピンも出しておく必要がある。


●電源

電池やACアダプター、USBなどもある。マイコンへ書き込むピンと同じよう使うといいかも。


2021年11月4日木曜日

PWM&Lチカでプラモを電装回路図

プラモを電装する上で、PWMのピンがどれだとか、制御上RBやRAにまとめたほうがいいものを調べる必要があったので回路図を引いた。

部品の乗数や具体的な型番はここでは調査していないので省略する。

回路図は以下の通り。



今度は、チップのLEDの型番を調べて、抵抗の乗数を決めるか。

PIC16F1827でPWM&Lチカ

プラモにLEDを組み込みたいと言われて、とりあえずやっつけでPICでPWM&Lチカを試作してみました。。

使用したPICはPIC16F1827です。

動作確認としてPWM&Lチカを行っています。

回路図は省略。

使用したMCCは以下の通り。


CCP3は添付通り

ECCP1は添付通り

TMR2/4は添付通り




プログラムは以下の通り

#include "mcc_generated_files/mcc.h"

void wait(int imax){

    for(int i=0;imax>=i;i++){

        __delay_ms(1);

    }

}


void wait2(int imax){

    for(int i=0;imax>=i;i++){

        __delay_us(1);

    }

}

void LED_CHK(int time){

    PORTB = 0b00000000;    PORTA = 0b00000001;

        wait(time);

    PORTA = 0b00000010;

        wait(time);

    PORTA = 0b00000100;

        wait(time);

    PORTA = 0b00001000;

        wait(time);

    PORTA = 0b00000000;    PORTB = 0b00001000;

        wait(time);

    PORTB = 0b00000100;

        wait(time);

    PORTB = 0b00000010;

        wait(time);

    PORTB = 0b00000001;

        wait(time);

    PORTB = 0b00000000;    PORTA = 0b00000001;

        wait(time);

    PORTA = 0b00000010;

        wait(time);

    PORTA = 0b00000100;

        wait(time);

    PORTA = 0b00001000;

        wait(time);

    PORTA = 0b00000000;    PORTB = 0b00001000;

        wait(time);

    PORTB = 0b00000100;

        wait(time);

    PORTB = 0b00000010;

        wait(time);

    PORTB = 0b00000001;

        wait(time);

    PORTA = 0b00001111;    PORTB = 0b00001111;

        wait(time);

    PORTA = 0b00000000;    PORTB = 0b00000000;

        wait(time);

    PORTA = 0b00001111;    PORTB = 0b00001111;

        wait(time);

    PORTA = 0b00000000;    PORTB = 0b00000000;

        wait(time); 

}



void BLED(){

    int i;

        CCPR1L = 0b00010;

        CCPR3L = 0b10;

        for(CCPR1L=0b00000010;CCPR1L<=0b1100000;CCPR1L = CCPR1L + 0b00000010){

            wait(20);

        }

        for(CCPR1L=0b1100000;CCPR1L>=0b00000010;CCPR1L = CCPR1L - 0b00000010){

            wait(20);

        }

//    }

}



void GLED(){

    int i;

        CCPR1L = 0b00010;

        CCPR3L = 0b1;

        for(CCPR3L=0b0000001;CCPR3L<=0b11000;CCPR3L = CCPR3L + 0b0000001){

            wait(30);

        }

        for(CCPR3L=0b11000;CCPR3L>=0b000001;CCPR3L = CCPR3L - 0b0000001){

            wait(30);

        }

//    }

}


void main(void)

{

    double time,cktime;

    time=0.10;

    cktime=100.0;

    double dut;

    dut=25.0;

    double ton,toff;


    SYSTEM_Initialize();

    while(1){

        LED_CHK(cktime);

        LED_CHK(cktime);

    

 

        BLED();

        GLED();

        BLED();

        GLED();

        BLED();

        GLED();

        BLED();

        GLED();

    }

}

動作は以下の通り。

全体動作は問題なし。

しかし、LEDの制限抵抗が最適化されていないのでPWMの緑LEDが「0b1」でも消灯しない。

赤LEDでPWMのピンを出していないので動作確認していないが同じことが起きると思う。


ざっくりしか計算していないので、もう少し調整が必要だな。(手持ちの抵抗でやるのが正直安上がりだから検討を進めます。)

2021年3月24日水曜日

AE-FT231XとPIC16F1778を用いてシリアル通信(PICシリーズその17)

AE-FT231XとPIC16F1778を用いてシリアル通信を行っていきます。

TeraTERMを使って動作確認を行います。


◆内容

AE-FT231XとPIC16F1778を用いてシリアル通信でR/Wの確認を行った。

 

◆プログラム

#include "mcc_generated_files/mcc.h"

#include <stdio.h>

void putch(char Data){

    EUSART_Write(Data);

}

uint8_t getch(void){

    return(EUSART_Read());

}

uint8_t cmd;

void main(void)

{

    SYSTEM_Initialize();

    __delay_us(3000);

    while (1)

    {

        printf("\r\n");

        printf("\r\n*****************");

        printf("\r\nHello PIC16F1778 World!");

        printf("\r\nserial read write test");

        printf("\r\nCommand = ");

        cmd = getch();

                printf("\r\ninput Command = ");

        putch(cmd);  ???

        if((cmd >= 'a') && (cmd <= 'z'))

            printf("\r\nReceive Alphabet:%c",cmd);

        else if((cmd >= '0') && (cmd <= '9'))

            printf("\r\nReceive Number:%c",cmd);

        else

            printf( "\r\n???:%c",cmd);

    }

}

 


 

◆MMCの設定


◆Tera Termの設定

 


◆動作確認



◆コメント

最近忙しいという言い訳でほどんど工作できできていなかったなあ。

ブログ更新も滞っているし、コンピューター関連で2個並行で動いている内容とかもあるし。

今後はきちんとやっていけるといいなと思っている状態です。

2021年2月17日水曜日

無通電方法でのマグネトロンの故障判別方法

一度は分解したことがある人も多いのではないかと思われる電子レンジ安全上修理はお勧めできない。

しかし、トランスや高圧ダイオード、大きい永久磁石、ACファン、オイルコンデンサなど高圧部品が多い。

なかでも家電の中でも珍しいマグネトロンは磁石以外なかなか部品取りとして使うことは少ない。 

そのため、マグネトロンが溜まることもしばしばある。

いらないが使えるなら修理したい人に渡してもいい。しかし、マグネトロンが正常か異常か判断ぐらいはしたほうがいい。

そこで今回は無通電でマグネトロンが故障しているか判別する方法をまとめた。


必要機材

・テスタ


各箇所の名前




1外観チェック

1-1.冷却フィンが変形していないこと

1-2.永久磁石が割れていないこと

1-3.アンテナキャップがスパークして、変色していないこと

1-4.貫通コンデンサが破損により変色していないこと


2.電特チェック

2-1.端子間の抵抗値が0.1-0.5Ωであること

(解放状態であるとマグネトロンのフィラメントが破損していると考えられる)

2-2.端子とシャシー間が解放状態であること

(本来なら絶縁抵抗計を用いる必要があるが準備が難しいので省略した。)


あくまでも無通電による確認のため、通電して分かる破損に関しては今回割愛しています。

必要な方は以下の参考を当たってみてください。

参考:https://hasiden.ocnk.net/news-detail/24


2021年1月3日日曜日

2021年秋月電子福箱販売中止みたい

 2021年1月2日

パソコン工房でグラボ買えず(並ぶ気失せ)

秋月近くのドドールでコーヒー飲みながら

読書に勤しもうかと思って、秋月前を通った際。


…やはり流行り病のせいで秋葉原も八潮もお楽しみ袋、福箱は中止でしたか。

来年あるといいですね。

2020年12月29日火曜日

RHLM-ver01のLチカ(PICシリーズその16)

RHLM-ver01のLチカ(PICシリーズその16)

 ●概要

始めて使うマイコン動作確認として、定番のLチカのコードを使用しました。

 ●マイコン

・PIC16F1455

 ●コンパイル環境

・MPLAB X IDE v5.30

・XC8(v1.45)

 ●プログラム

/*********************************************

  *  PIC16F1455の動作確認プログラム

  *   USB_PC   PIC16F1455を使用

  *********************************************/

 #include "mcc_generated_files/mcc.h"

/***** メイン関数 ****/

 void main(void)

{

     SYSTEM_Initialize();                       

     while (1)

     {

         RA5= 0;

          __delay_ms(200);

        RA5= 1;

       __delay_ms(200);   

    }

 }

●動作確認

普通にLチカしました。(画像も不要)

一応コードを残す位置付けです。


2020年12月28日月曜日

RHLM-ver01基板のフットプリントミスの修正(PICシリーズその15)

●概要

RHLMのAW時、PICのサイズを間違えたため(正:SOIC、誤:SOIC-W)そのリカバリを行います。

●作業

幸いなことにpin間はSOICと同じなので、通信にかかわるものを意識して修正すれば対応可能なので図のように実装します。(実際は14pinに寄せる形になります。) 

 A面の部品は問題なさそう。LCDはすぐ買おう。コロナのおかげでアキバに行くことなくなり通販使うこと増えたな。パパっとバイクで行くのでもいいのだが、寒いし通販一択。 

B面のPICはSOIC-Wなので載せてもらえなかった。しょうがない。自分で載せるしかない。PICの下にビアがあるのでマスキングしないといけないと思っていたが、レジストされている。


念のためマスキング。

実装は思ったより難しくなかった。


●動作確認

電源のオープンショートチェックを行い、後にUSBから給電(携帯充電器使用)電源電圧も問題なさそう。

次回からは、これらを使ってマイコン設計に移っていく。


2020年12月26日土曜日

RHLM-ver01の概要(PICシリーズその14)

 ●概要

RHLMは、PCに接続して、その周囲の温度をモニター及び、データ出力するLCD付きデジタル温湿度計となります。

●基板作製環境

・KiCAD5.1.4(回路,AW)

・Excel2013(BOM)

・PCBGOGO(メーカ)

  

●回路図

LCD付きデジタル温湿度計RHLMは、温度湿度計、LCDをI2C通信でPICが制御しています。

LCD「AQM0802A-FLW-GBW」はI2Cで制御可能な8x2の表示とバックライトが付いたデバイスとなります。外形は、30mm×19.5mm、表示部分の大きさは27mm×10.5mmとなります。液晶コントラストは、コマンドで設定しますので外付けVRが不要となっています。また、電源電圧3.3Vで、消費電流1mAです。

 

センサ関連は、2種類実装可能ですが使用上はどちらか一つにするつもりです。

始めに、温度センサ「STTS751-0WB3F」はI2Cで所得可能な温度測定精度 ±2℃の温度センサデバイスとなります。パッケージ:SOT-23-6となります。また、電源電圧3.3Vで、消費電流50uAです。このセンサは湿度の測定できません。

 

温湿度センサ「Si7020-A20-GM1」はI2Cで所得可能な温度測定精度 ±0.4℃、湿度測定精度±4%の温湿度センサデバイスとなります。パッケージ:DFN6となります。また、電源電圧3.3Vで、消費電流150uAです。

 

何れのI2Cデバイスも駆動電圧は3.3VのためUSBから給電する際、5Vから3.3Vに降圧させる必要があります。

今回はレギュレータ「LT1761-3.3」降圧回路を構成しました。このレギュレータは低ノイズ、低損失レギュレータです。今回の開発では、オーバースペックですが、今後電源ノイズを気にする開発を行う際にも使用するので、少し高いですが使用しています。

制御用のマイコンには、PIC16F1455を使用します。PIC16F1455にはUSBデバイスモジュールが搭載されています。PICマイコン内部にUSBモジュールが搭載されているので、回路規模は小型化できます。これを使って、シリアル通信(UART)をUSB変換するモジュールとして、データを転送します。

LEDは、通信確認用として組み込んでいます。



●AW

LCD付きデジタル温湿度計は五百円玉2枚分の長さと比較的小型でとなっています。中に通信線が這うのでそこに気を付けて配線を行っています。

I2Cは等長と鎖状の接続を意識しています。また、USBに関しても等長を意識して配線を行いました。

このときPICのサイズを間違えたため(正:SOIC、誤:SOIC-W)一作業余計な作業が後々発生しました。リカバリは、簡単だったのでよかったです。

基板作製の際、気を付けましょう。


●基板製造

今回は、基板製造及び部品実装をPCBGOGOで行いました。

前回、反転増幅回路モジュール基板を作製した時はコロナで納期が延びましたが今回は遅れることもありませんでした。

2020年12月17日木曜日

基板のフットプリントミス(PICシリーズその13)

PCBgogoで基板を作成してみました。(PICシリーズその11)の回路に関して、フットプリントが致命的なミスがありました。


フットプリントの間違えです。

U4のPIC16F1455を何故かワイドタイプのフットプリントで作製してしまいました。

実装屋さんから「部品が乗らない。」との連絡。

何とか、赤線のように配線できないか頼むが、実装不可のこと。

そりゃあそうだ、会社みたくたくさんお金をかけていないので、無理だろう。

このリカバリは届いてからするしかないな。

やり方は図の通りだし。

  


今後このようなミスはなくしていかないとなと思った。