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をマイコンの制御端子に付ければ治りそうだな....)

0 件のコメント:

コメントを投稿