Amateurfunk verbindet die Welt

0 bis 127dB-Stufenabschwächer

Erstellt: DL6GL, 13.09.2017, letzte Änderung 28.03.2024

Update 28.03.2024: Nun war die Zeit wohl reif für einen Ersatz meiner Verlegenheitslösung mit dem umgekehrten Horner-Schema. Uwe, DK4UG, hat sie beigetragen. Der schlichten Eleganz wegen soll sie weiter unten erläutert werden.

127dB-Abschwächer Frontsansicht

Um bei Hochfrequenzmessungen wohlproportionierte Pegel einzustellen, ist ein Stufenabschwächer unentbehrlich. Selbstbau wie hier ist machbar, stößt aber spätestens jenseits des 2m-Bandes an seine Grenzen. Da hilft nur noch Klotzen mit einem Profi-Gerät wie dem Weinschel 3200-1 Attenuator [1].

Das mit [1] zu apitech.com neu verlinkte Datenblatt beschreibt eine neuere Generation mit Index E (3200-1E). Hier wurde der Vorläufer eingesetzt. Als Gebrauchtgerät ist dieser Abschwächer mit etwas Glück für unter 100 US$ zu bekommen. Fehlt nur noch eine Steuerung mit einem Atmel-Controller.


1  Weinschel 3200-1 Attenuator

Hier die wichtigsten Daten:

  • Impedanz 50Ω
  • Einstellbereich 0 bis 127dB in 1dB-Schritten
  • Frequenzbereich DC bis 2GHz
  • Belastbarkeit 1W
  • Maximales SWR 1,35
  • Genauigkeit der Abstufungen < 0,3dB
  • Relaissteuerung 12V/14mA je Stufe


2  Schaltung

127dB-Abschwächer Schaltung

Abb. 1: Gesamtschaltung.

Steuerung und Anzeige besorgt ein ATmega48. Ohne zeitkritische Aufgaben reicht der interne 8MHz RC-Generatortakt des Controllers.

Der 8 Bit breite Port D steuert die Relais im Attenuator. Die Gates der P-Channel MOSFETs BSS84 sind im Ruhezustand über R2 bis R9 mit +12V vorgespannt, so dass die Relais im Attenuator stromlos sind. Jedes an den Ports PD0 bis PD7 gesetzte Bit steuert einen Darlington-Treiber im ULN2803 auf. Die nunmehr negative Gate-Source-Spannung macht den MOSFET leitend und lässt das zugehörige Relais im Attenuator anziehen.

Die Dämpfungsstufen werden entsprechend der binären Wertigkeit (1 = 20 dB, Pin 2, bis 32 = 25 dB, Pin 1) von 1 bis 63dB eingestellt. Ab 64dB beginnt diese Stufung neu nach Setzen der Pins 4 und 8 (64dB), siehe Abb. 1 rechts unten. Die Einstellung wird mit dem Drehencoder wahlweise in 1 oder in 10dB-Schritten vorgenommen.

Die Stromversorgung ≥15V DC erfolgt über eine Hohlbuchse extern. Für den Schutz der Relais sorgt ein 12V-Regler.


3  Realisierung

Bei der Auslegung von Gehäuse und Platine waren die Maße des Attenuators einschließlich SMA-Buchsen bestimmend. Anders als im vergleichbaren Projekt von Hans-Peter, DL2KHP [2], waren möglichst kleine Abmessungen das Ziel. In einem Gehäuse TEKO B4 (143x72x43mm) war schließlich alles unterzubringen. Die beiden SMA-Buchsen wurden mit Male-Female-Adaptern verlängert.

127dB-Abschwächer Platine

Abb. 2: Platine.

R2 bis R9 sind in einem neunpoligen Widerstandsnetzwerk kombiniert (Abb. 2, Mitte). Links daneben werden mit einer neunpoligen Stiftleiste, oben mit einem Draht verlötet, die Sourcen von T1 bis T8 mit +12V verbunden.

127dB-Abschwächer Innenansicht

Abb. 3: Innenansicht.

Die Adern im Flachkabel zählen vom Dreieckskennzeichen für Pin 1 von rechts nach links aufsteigend, in Abb. 3 also 1 = weiß (rechts) bis 10 = grau (links).

Zur Befestigung des Attenuators sind Schrauben 4-40 UNC-2B x 0.24 notwendig.

Vor dem Aussägen des Durchbruchs für das Display sollte dessen Positionierung unbedingt ausgemessen werden. Je nach Typ und Hersteller gibt es hier merkbare Unterschiede. Auf die zugehörigen Maßzeichungen ist auch nicht immer Verlass.


4  Software

Die Software wurde mit BASCOM-AVR erstellt. Quelle, .hex, Kurzbeschreibung und Excel-Rechenschema im Download. Es gibt zwei Versionen, eine für Drehencoder ohne Zwischenschaltstufen und eine mit ("Step1").
Mit der Version 1.03 wurde die zugegeben umständliche Ansteuerung des Abschwächers durch eine elegante Berechnungsmethode von Uwe, DK4UG, ersetzt.

Der Weinschel 3200-1 Abschwächer ist über einen 8 Bit breiten AVR-Port in den Stufen 0 bis 127dB anzusteuern. Port-Bit (0 … 7) = 1: Entsprechendes dB-Relais an Pin 1 bis 8 wird aktiviert. Der neue DK4UG-Algorithmus wurde vorab mit Excel getestet und optimiert.

Abb. 4: Berechnung der Bitmuster mit Excel.

Der Abschwächer in Abb. 3 ist mit Pin 1 (32dB) nach links und Pin 9 (GND) nach rechts eingebaut. In Abb. 4 wird er in Übereinstimmung mit der Bit-Reihenfolge seitenverkehrt gezeigt.

Mit den verfügbaren dB-Stufen sind einstellbar:

  • drei Mal 32dB ergeben 32, 64 und 96dB,
  • 1, 2, 4, 8, 16dB ergeben alle Zwischenstufen von 1 bis 31dB,
  • maximal also bis 96 + 31 = 127dB.

Das heißt, jede Abschwächung von 1 bis 127dB ist in die verfügbaren Stufen zu zerlegen. Stufen, die zur Gesamtdämpfung beitragen, werden mit Bit = 1 am entsprechenden Port aktiviert, alle anderen mit Bit = 0 deaktiviert. Abschwächung 0dB: alle 8 Bits = 0.

Das nehmen 8 Variablen mit den passenden Bitmustern vor, vgl. Abb. 4. Mit BASCOM "Alias" kann man nicht nur AVR-Ports mit sprechenden Namen versehen wie im BASCOM Help beschrieben, sondern auch Werte zuweisen:

Index Variable Bitmuster dB-Wert
0 ATT96 Alias &H89 1000_1001 32+32+32=96
1 ATT64 Alias &H88 1000_1000 32+32=64
2 ATT32 Alias &H01 0000_0001 32
3 ATT16 Alias &H40 0100_0000 16
4 ATT8 Alias &H20 0010_0000 8
5 ATT4 Alias &H10 0001_0000 4
6 ATT2 Alias &H04 0000_0100 2
7 ATT1 Alias &H02 0000_0010 1

Die unteren Bitmuster für 1 bis 8dB sind in Abb. 4 nachzuvollziehen.

Die ATTXX-Variablen 0 … 7 werden mit den identisch indizierten dB-Werten "ATTs" in Lookup-Tabellen abgelegt, Zugriff und Identifizierung über den Index 0 …7.

'Attenuator Lookup Tables -----------------------------------------------------	
'Main step attenuator port bit patterns
attsPort:
Data Att96 , Att64 , Att32 , Att16 , Att8 , Att4 , Att2 , Att1 

'Main step attenuations (dB)
Atts:
Data 96 , 64 , 32 , 16 , 8 , 4 , 2 , 1

Eine Anpassung für andere Abschwächer mit 8 Bit-Ansteuerung und anderen dB-Stufen oder anderen Pin-Belegungen sollte nach diesem Muster einfach vorzunehmen sein. Die nachfolgende neue Funktion zum Setzen der Bitmuster wertet die jeweiligen Zuordnungen in den Lookup-Tabellen aus.

Function SetBitPattern(byVal bytAtten As Byte) As Byte	
'Calculate attenuator bit pattern at ports 1...8
'Smart method submitted by Uwe, DK4UG
'Input:   bytAtten       Attenuation (dB) 0...127
'Output: SetBitPattern   Bit pattern to set attenuator ports 1...8

  Dim bytAttPort As Byte                          'Attenuator port bit pattern
  Dim bytAtt As Byte                              'Attenuation dB
  Dim i As Byte

   bytAttPort = 0

   If bytAtten <> 0 Then
      For i = 0 To 7
          bytAtt = bytAtten \ Lookup(i , Atts)
          If bytAtt <> 0 Then
             bytAttPort = bytAttPort Or Lookup(i , attsPort)
             bytAtten = bytAtten - Lookup(i , Atts)
             If bytAtten = 0 Then Exit For
          End If
      Next i
   End If
   SetBitPattern = bytAttPort

End Function

Wenn bytAtten= 0 ist, bleibt das anfängliche Bitmuster bytAttPort = 0000_0000 und fertig. Sonst werden alle Abschwächerstufen Atts durchprobiert. Sobald die Division bytAtten \ Atts(i) größer 0 ist, also bytAtten ≥ Atts(i) ist, erfolgt die Feinsuche. Dann sind noch kleinere Zwischenstufen zu finden.

In diesem Fall wird mit dem bitweisen Or das Bitmuster bytattPort um dort noch nicht, aber in attsPort(i) vorhandene Bits = 1 ergänzt (X Or Y = 1, wenn X oder Y oder beide = 1, sonst = 0).

Anschließend wird die obige Division bytAtten \ Atts(i) untersucht: Ist die Differenz bytAtten - Atts(i), also der Rest > 0, müssen noch weitere Zwischenstufen aus dem Rest zerlegt werden. Sonst, für Rest = 0, gibt es nichts mehr zu zerlegen. Der Dämpfungswert wurde gefunden, das komplette Bitmuster ist gesetzt.

Schon smart im Vergleich mit meinem vorherigen Versuch. Herzlichen Dank, Uwe.


Die Bedienung erfolgt nur mit dem Drehencoder, der drei Funktionen bereitstellt:

  1. Drehen zur Einstellung des Dämpfungswertes 0 bis 127dB,
  2. kurzer Druck zum Wechsel zwischen den Schrittweiten 1 und 10dB,
  3. langer Druck zur Darstellung des Relativpegels in Bezug auf die aktuelle Dämpfung als Offset.

Die dritte Funktion erleichtert z.B. Abgleicharbeiten, indem eine beliebig einstellbare Dämpfung als Bezugspunkt dient, um den Relativpegel in dBm bezogen auf diesen Offset in der ersten Displayzeile anzuzeigen. Wenn z.B. der HF-Generator 10dBm Pegel liefert und der Offset ebenfalls auf 10dB eingestellt wird, zeigt das Display in der Funktion 3 folgerichtig 0dBm an.

127dB-Abschwächer Display Offset

Abb. 5: Offset-Einstellung.

Mit jeder Änderung der Dämpfung wird damit der Ausgangspegel hinter dem Attenuator unmittelbar in dBm angezeigt.

 

Referenzen

[1] https://www.apitech.com/globalassets/documents/products/rf-microwave-mi…
[2] http://www.dl2khp.de/projekte/attenuator.html
     Die Seite von DL2KHP (sk) wurde abgeschaltet.

 

Downloads

Hier sind die Downloads mit Schaltbildern, Platinenlayouts, Firmware und weiteren Beschreibungen.

Wie immer: Das beschriebene Mustergerät wurde eingehend getestet, es gibt aber weder Gewährleistung noch Garantie.

Auch wie immer, die Downloads sind frei für den privaten Gebrauch entsprechend der GNU-Lizenz. Eine kommerzielle Nutzung ist nicht gestattet.

Update 21.02.2019:
Bei Nachbauern arbeiten nicht alle eingesetzten Encoder zufriedenstellend. Es stehen nun zwei Versionen zur Verfügung:
(1) Ohne Auswertung von Zwischenschaltstufen,
(2) mit Auswertung von Zwischenschaltstufen, Dateiname "...Step1".
Siehe auch hier.

Update V1.01, 14.06.2019
Die 10dB-Schritte stoppen nun, wenn der nächste Schritt die untere oder obere Grenze (0/127dB) überschreiten würde. Damit bleibt das Raster erhalten.

Update V1.02, 07.07.2019
Reine Kosmetik: Die umständliche Programmierung der Schrittweitensteuerung 1/10dB bereinigt.

Update V1.03, 28.03.2024
Die umständliche Erstellung des Ansteuer-Bitmusters mit dem umgekehrten Horner-Schema wurde durch eine elegante Berechnung von Uwe, DK4UG, wie oben beschrieben ersetzt.


Download                      

attenuator_schematics.pdf        

attenuator_pcb.zip          

attenuator_mega48_firmware_v103.zip        

attenuator_programmbeschreibung_1.00.pdf        

attenuator_excel.xlsm