home 2021/06/03


久しぶりに電子部品を作成してみました。パソコンが新調されており今まで設定してあった設定が全て消えており新規設定に苦労したので記録しました。

ます回路図作成 BSCH3Vをインストールしました。

 

次にJWWをインストール 基板パターンを作成します。

下記を jw_win.jwf のファイル名でJWCADのフォルダーに置くと作図がし易くなります。

S_COMM_0 = 00 35 A4 1 1 900 0 0 000
LAYNAM_N = 1
LAYNAM_0 =CNC,ORIGIN,CAM_LINE,CAM_LINE1,
外形,ジャンパ,,,,,,,,,,,
LAYCOL_0 = 1 2 3 6 8 0 0 0 0 0 0 0 0 0 0 0
COM_LAY00 = 1 1 0
COM_LAY01 = 00 00 00 00 00 02 00 00 00 00
COM_LAY11 = 00 00 00 00 00 00 00 00 00 00
COM_LAY21 = 00 00 00 00 00 00 00 00 00 00
COM_LAY31 = 00 00 00 00 00 00 00 00 00 00
COM_LAY41 = F1 00 00
END

これで基板切削、穴あけ加工がCNCで出来ます。

JWCADからGコードを作成するためNCVC をインストール

中華CNCが出力Gコードを受け付けてくれません

悩みましたがオプション、切削パラメーターの設定、最低化でdecycle_G82.plを指定これでサポート外の穴あけコードを出力しなくなります。plプログラムのインストールも必要です。

ドウェル時間 0設定ではerrになります。

実際に切削するためcandleをインストール

USB232Cを設定するためCH340ドライバーのインストール必要

通信スピードを合わせるためパソコンの232C設定を115200ボーに設定

Candleの232Cの設定も併せてください。

更に通信ポートを私の場合はCOM4でした。

 

これでnot connected と成っているところがredyになります。

Service setingで Ignore error responses にチェックを入れてerrを無視させます。

CandleHeightmap を切削前に実行してください。Autoで加工広さ自動取得、基盤の場合は縦横共に3か所も測定すれば十分です。基盤の歪み等の確認を行ってZ軸の誤差を自動補正してくれます。私の場合は0.3oほど差がありました。

アイコンはZ軸の原点を探ってくれます。刃物を交換した時に実施します。

アイコンは基板の原点を決めた時に実施します。0,0になります。

これでハードウエアーは完成したのでソフトの作成です。

MPLABXIDEを使ってPIC16F1823にプログラムを書き込みます。

しばらく使わないとVERUPされて使い勝手が変わってしまいます。

ConfigrationBitsを使用してICの基本設定をまず行います。

次にプロゴラム

#include <xc.h>

#include <stdlib.h>

#include <stdio.h>

// CONFIG1

#pragma config FOSC = INTOSC    // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)

#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)

#pragma config PWRTE = ON       // Power-up Timer Enable (PWRT enabled)

#pragma config MCLRE = OFF      // MCLR Pin Function Select (MCLR/VPP pin function is digital input)

#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 = OFF       // Internal/External Switchover (Internal/External Switchover mode is disabled)

#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)

// CONFIG2

#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)

#pragma config PLLEN = OFF      // PLL Enable (4x PLL disabled)

#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)

 

#define _XTAL_FREQ 4000000

#define PTTIN   RA4

#define PTTON   RA5=0;

#define PTTOFF  RA5=1;

#define RXON    RA0=0;

#define RXOFF   RA0=1;

void main(void) {

    ANSELA = 0b00000000 ;//defolt アナログ

    TRISA  = 0b00011110;

    PORTA  = 0b00100000;

    WPUA4=1; //pulup

    RXON

while(1){

    while(PTTIN == 1) {} //PTT押されるまで待つ

    RXOFF

    _delay(50000);

    PTTON

    while(PTTIN == 0) {}  //PTToffまで待つ

    PTTOFF

    _delay(50000);

    RXON

}

//return 0;

}Errが無くなるまで修正をお願いします。MPLABが出力するERRコードは役に立たない。

書込みにはPIKKIT3を認識させる必要が有ります。

左のスパナアイコン、ConncctedHarwareToolPIKKIT3を選択

Power 5Vを選択、出力させます。

ProgramOptionsUSELowmodeを選択

こんな設定全部覚えきれません。

 

 

遅延の状況です。


PTT遅延回路/WSJTインターフェース

プリアンプのGaAsFET3回も壊したので、PIC16F5470で遅延回路を作りました。

保護のダイオードがいっぱい入っているのですが、壊れてしまいます。

◆仕様
・プログラムメモリ:512ワード
・RAM:25バイト
・I/Oポート:最大12本
・タイマー:8ビットx1
・EEPROM:なし
・A/Dコンバータ:なし
・電源電圧:2.0V(MAX4MHz)〜5.5V(MAX20MHz

RC発振回路4.8K+15Pで約1.5MHzを発振しています。

追試される方は高級のPICを使ってください。8PPICで十分です。

内蔵クロック発振回路、内蔵プルUP等ハードが簡単になります。回路図のCRがなくなります。

LEDは動作確認の目的ですので省略可能

WSJTの回路も内蔵しました。

PTT0Vで送信、プリアンプは0Vで動作OFFの仕様です。

リレーの切替スピードは50ms位か? 余裕を持って300msで設計しました。

タイミングとしてまずプリアンプOFF300ms、その後送信、送信終了後、300ms、後プリアンプON 

_delay(500000) 関数ですが、500000クロック待てとの関数です。

1/1.5M*4*500000=1.3秒の計算ですが、実測約300msです。

良く分かりません 4倍する必要は無いのでしょうか?

機能がないのでPICの設定、プログラムも超簡単 良い部品です。

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#pragma config OSC = RC // Oscillator selection bits (XT oscillator)
#pragma config WDT = OFF // Watchdog timer enable bit (WDT disabled)
#pragma config CP = OFF // Code protection bit (Code protection off)
#define PTT RB4
#define PRI RB0
int main(int argc, char** argv) {
TRISA=0b11111111;
TRISB=0b11100000;

PORTB=0b11111111; //????
while(1){ //????
while((PORTA ^ 0b11110000) == 0b11111111 ) {} //?????????
PRI=0; //pri OFF
_delay(500000);
PTT=0;
while((PORTA ^ 0b11110000) != 0b11111111) {} //?????????
PTT=1; //PTT OFF
_delay(500000);
PRI=1; //pri on
}
return (EXIT_SUCCESS);
}
 


2015/0709

設計変更

RB0には20mの電線が同軸ケーブルにそって屋根の上に行っています。

HFのアンテナは雷季節には常にバチバチ電気スパークが飛んでいます。

このケーブルにも同様に高電圧が発生することが予想されます。現にプリアンプ内の回路にはスパークさせるための放電管が全ての回路に挿入されています。

PICが壊れるのも時間の問題かと!!

TR,C,L,Dによる保護回路を入れることにします。


回路、ソフト変更しました。

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#pragma config OSC = RC
#pragma config WDT = OFF
#pragma config CP = OFF
#define PTT RB4
#define PRI RB0
int main(int argc, char** argv) {
TRISA=0b11111111;
TRISB=0b11100000;
PORTB=0b00010000;
while(1){
while((PORTA | 0b11111100) == 0b11111111) {}
PRI=1; //pri OFF
_delay(500000);
PTT=0; //PTT on
while((PORTA | 0b11111100) != 0b11111111) {}
PTT=1; //PTT OFF
_delay(500000);
PRI=0; //pri on
}
return (EXIT_SUCCESS);
}