2022年11月1日火曜日

可変アッテネータ

PE4302・ArduinoNano・SSD1306

可変アッテネータ

PE4302数値制御アッテネータ(1MHz〜4GHz)をArduinoNanoで制御、表示はOLED128x32を使いエンコーダで減衰値を選択しています。海外ネットのプログラムを参考にしました。









SG 10MHzを測定
ATT -0.0dB      Meter  -06.0dBm
ATT -10.0dB    Meter  -15.9dBm


回路図




















プログラム
#include <Encoder.h>
#include <Arduino.h>
#include "OLED_SSD1306.h" // https://github.com/askn37/OLED_SSD1306#start-of-content
OLED_M091P oled;
Encoder enc(2,3);
int attsw = 4; 
int att=0;
 // Assignments:
float LCDdata = 0;  // 0 to 31.5 Data for LCD
int AttenData = 0;  // 0 to 63 data for the attenuator
int changerate =4;
long lastPos = 0;

void printToLCD(float)
{   
  oled.setCursor (0, 2); 
  oled.println("ATT"); 
  oled.setCursor(0, 3);
  if (LCDdata < 10.0) oled.print(" ");
  oled.print("- ");
  oled.print(LCDdata, 1);
  oled.print(" dB");   
}   

void setup() 
{
  pinMode(attsw, INPUT_PULLUP);
  oled.begin();
  oled.mirror(); //左右表示反転
  oled.flip();   //上下表示反転
  oled.setCursor (0, 2); 
  oled.println("PE4302"); 
  oled.setCursor(0, 3);
  oled.println("ATT");  
  delay (2000); 
  oled.clear(); 
}  
  
void loop() 
 // 0.5dB steps, so six bits are needed.)
 // D8 to 13 go to attenuator V1 to V6
if (digitalRead(attsw) == LOW) {  
  AttenData= 63 ; 
    
}
  
DDRB = B00111111;
PORTB = AttenData;
  long newPos = enc.read() /changerate;
  if (newPos != lastPos)  // then encoder has moved
    {
      if (newPos < lastPos) 
    { if (AttenData > 0) AttenData--; 
    } 
      else 
    { if (AttenData < 63) AttenData++; 
    }
    lastPos = newPos;
    }
 
 // AttenData (0 to 63) is divided by two
 // to get the 0 to 31.5 for the LCD.
     LCDdata = AttenData / 2.0;
    // Attendata is an int. the decimal 2.0 forces
    // a floating point calculation.
 // Now add 2dB offset to allow for the insertion loss
 // of about 1.2dB, which I have padded up to 2dB.
   LCDdata = LCDdata + 0.0;
 //and display it.  
   printToLCD(AttenData); 
 delay (100);  //For the display again  
}

0 件のコメント:

コメントを投稿

Raspberry Pi Donkey Car スマートカー

  2020年に製作したDonkey Car スマートカー について記事にしました。 Donkey CarはRaspberry Pi のカメラからコースを ディープラーニングさせ自動走行を行います。(動画は白線上を自動走行)   動画