回路図
Attint1614ボードは、GQPオリジナルのレギュレータ、UPDI書込み端子付き仕様である。パラレルポートをAポートに割り付けたので、PA2からPA7を使った。
スケッチ
メモリー機能とPE4302挿入損失補正(1.5dB)。操作は、UP/DOWNで0.5ステップ設定が出来る。PE4302は、0.5dB~31.5dB設定なので、挿入損失分を考慮すると2.0dB~33.0dBのアッテネータである。
//////////////////////////////////////////////////////////////////////////////
// Copyright©2018.JA2GQP.All rights reserved.
// PE4302 paralel Attenater control
// 2026/2/9
// JA2GQP
//////////////////////////////////////////////////////////////////////////////
#include <Tiny4kOLED.h>
#include "font/Tlcdnums14x24.h"
#include <EEPROM.h>
//------------------------ Define value -------------
#define SW_UP 4
#define SW_DOWN 5
#define DEF_Att 17 // 8.5db(8.5+1.5=10dB)
#define Loss 3 // Insertion Loss 1.5dB
//---------- EEPROM Memory Address ------------------
#define Eep_Init 0x00 // Eep Init(1byte)
#define Eep_Att 0x02 // REPT sw(1byte)
//---------- Memory Define --------------------------
int att_level = DEF_Att; // -10dB
unsigned long Time_Passd; // control timer
const byte Int_End = 73; // Initial end code
//------------------------ Setup --------------------
void setup() {
PORTA.DIRSET = B11111100; // PA7,PA6,PA5,PA4,PA3,PA2
// PA1,PA1 <<<read port>>>
PORTA.OUT = B00000011;
pinMode(SW_DOWN, INPUT_PULLUP);
pinMode(SW_UP, INPUT_PULLUP);
oled.begin();
oled.clear();
oled.on();
if(EEPROM.read(Eep_Init) != Int_End){ // Eep initialaz
delay(10);
eep_init();
init_end_disp();
delay(2000);
}
else{
if(digitalRead(SW_UP) == LOW){
delay(10);
eep_init();
init_end_disp();
delay(2000);
while (digitalRead(SW_UP) == LOW);
}
}
att_level = EEPROM.read(Eep_Att);
oled.clear();
}
//------------------------ Main ---------------------
void loop() {
if (digitalRead(SW_UP) == LOW) { // UP_SW on?
att_level++;
delay(50);
while (digitalRead(SW_UP) == LOW);
Time_Passd = millis(); // Timer start
}
if (digitalRead(SW_DOWN) == LOW) { // dpwn SW on?
att_level--;
delay(50);
while (digitalRead(SW_DOWN) == LOW);
Time_Passd = millis(); // Timer start
}
att_level = constrain(att_level,1,63);
if(Time_Passd+2000 < millis()){ // 2 second over?
EEPROM.write(Eep_Att,att_level);
}
att_disp(att_level + Loss); // level display
PORTA.OUT = att_level << 2; // port out
}
//---------- EEPROM Initialization -----------------
void eep_init(){
int i;
for (i=0;i<16;i++) // 0 clear(128byte)
EEPROM.write(i, 0);
EEPROM.write(Eep_Att,DEF_Att); // Repeater off
EEPROM.write(Eep_Init,Int_End); // Init end set(73)
}
//---------- Attenator display ----------------------
void att_disp(int lv) {
int lev;
oled.setFont(&Tlcdnums14x24);
oled.setCursor(16, 0);
lev = lv / 2;
if(lev < 10)
oled.print(':');
oled.print('-');
oled.print(lev);
oled.print('.');
if(lv & 0x01)
oled.print('5');
else
oled.print('0');
oled.setFont(FONT8X16);
oled.setCursor(96, 2);
oled.print("dB");
}
//---------- Initialayze end display ----------------
void init_end_disp() {
oled.setFont(FONT8X16);
oled.setCursor(1, 0);
oled.print("Initialayze end");
}
結果
直出した。
1GHz帯でHP-432Aを使って
測定したが問題なかった。
耐入力電力24dBm(250mW)。
ダウンロード
JA2GQP's Download siteのPE4302フォルダからダウンロードできる。


0 件のコメント:
コメントを投稿