Einstellbares Dämpfungsglied bis 4GHz mit dem Arduino

Ich habe die Attentuator (Dämpfungsglied) Platine aus China bekommen mit dem PE4302 Chip drauf.

Diese Platine soll seriell vom Arduino angesteuert werden. Die Dämpfung ist dann einstellbar bis zu einer Frequenz von 4GHz. Das funktioniert wenn man das Datenwort seriell überträgt mit Data und Clock und dann mit LE das Wort scharf schaltet.

Doch zuerst ein Blick auf die gelieferte Platine. Da fallen gleich ein paar Fehler auf:

Am Ausgang in der Nähe des SMA Steckers ist eine Masse Durchkontaktierung direkt neben die Streifenleitung gesetzt worden. Da hat einer nicht aufgepasst.

Die Lötbrücke J5 ist gesetzt. Damit liegt LE direkt auf 3V und ist nicht ansprechbar. Diese Lötbrücke habe ich entfernt.

Die Lötbrücke J6 ist gesetzt. Damit ist P/S auf GND und somit auf den Parallelbetrieb eingestellt. Diese Lötbrücke habe ich entfernt. Für den Seriellen Betrieb habe ich die Lötbrücke J4 gesetzt und damit P/S auf 3V gelegt. Dann können die seriellen Daten akzeptiert werden.

Hier die Änderungen im Bild.

Dann wurde der Arduino Uno angeschlossen.
Die Spannungsversorgung des PE4302 Platine ist auf 5V ausgelegt und damit direkt am Arduino 5V Ausgang anschließbar.
Die Datenpegel des Uno Liegen bei 5V. Der PE4302 akzeptiert aber nur 3V. Hier wurden drei Spannungsteiler in den 3 Datenleitungen zwischengeschaltet jeweils mit 2,2 kOhm und 3,3k Ohm Widerständen um den PE4302 nicht zu beschädigen.

Die Datenausgänge am Arduino sind frei wählbar und im Programm angegeben.

Hier der komplette Aufbau mit dem Uno, den 3 Spannungsteilern und dem Attentuator.

Dazu das Arduino Programm. Die Dämpfung wird von 0dB zu 31,5dB hochgefahren und dann wieder runter gefahren zu 0dB. Alle 2 Sekunden wird die Dämpfung geändert.

// PE4302 Digital Step Attentuator
// 1MHz bis 4GHz Dämpfungsglied 0-31,5dB
// 3V Spannung, 3V Daten
// DIP Schalter Stellung : wenn P/S auf 1
// C0.5-C16 alle auf 1 gibt 31,5 db beim Einschalten
// oder
// DIP Schalter Stellung : wenn P/S auf 0
// PUP1 und PUP2 auf 1 gibt 31,5 db beim Einschalten
//
// https://forum.arduino.cc/index.php?topic=491568.0
//
// Matthias Busse 10.2017 Version 1.0

int DATA=5; // freie Auswahl der 3 Leitungen
int CLOCK=6;
int LE=7;
int pause=2000; // Pause in ms

void setup() {
  Serial.begin(38400);
  pinMode(DATA, OUTPUT);
  pinMode(CLOCK, OUTPUT);
  pinMode(LE, OUTPUT); 
}

void loop() {
  float att;   // Daempfung 0 bis 31.5

  for (att = 0.0; att <= 31.5; att+=0.5) { // hoch gehen
    Serial.print(att); 
    Serial.println(" dB");
    setAttenuator(att);
    delay(pause);
  }
  for (att = 31.5; att >= 0.0; att-=0.5) { // runter gehen
    Serial.print(att); Serial.println(" dB");
    setAttenuator(att);
    delay(pause);
  }
}

void setAttenuator(float attent){
// MSB (C16) ... LSB (C0.5) werden an den PA4302 seriell übergeben 
// max. 25kHz oder alle 0,05 ms aufrufen.
//
// Matthias Busse 10.2017 Version 1.0
  
  int i; // das Datenbit
  int attent2 = (int) attent*2.0;
  
  if ((attent2 < 0) || (attent2 > 63)) // Wert im Bereich ?
    return;
  digitalWrite(LE, LOW); // Daten in das Latch eingeben
  digitalWrite(CLOCK,LOW);
  for (int b = 6; b > 0; b--) { // die 6 Bits
    i=((attent2 << 1) >> b) & 0x01;
    digitalWrite(DATA, i); // ein Bit schreiben
    digitalWrite(CLOCK, HIGH); // und Bit übernehmen
    digitalWrite(CLOCK, LOW); 
  }
  digitalWrite(LE, HIGH); // Serielle Daten an den Chip übergeben
  digitalWrite(LE, LOW);  // Auf neue Daten warten.
}

Getestet wurde die aufgebaute Schaltung mit dem Anritsu Site Master S332D mit Transmissions Messung von 25MHz bis 3GHz.

Verwendet wurden:
Arduino Uno
Arduino Software 1.8.0
Drei Spannungsteiler 5V > 3V aus 2,2k und 3,3kOhm
PE4302 Platine fertig aufgebaut

von Matthias Busse

Ein Gedanke zu „Einstellbares Dämpfungsglied bis 4GHz mit dem Arduino

  1. Pingback: Der PE4302 Attentuator / Dämpfungsglied ist vom PC steuerbar über einen Arduino | Shelvin – Elektronik ausprobiert und erläutert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.