www.to-st.de
Home  |  Impressum  |  Datenschutz  |  Kolophon  |  Kontakt
Eyecatcher Image:  /img/eyecatcher/si4735lin/teaser_780x175_si4735lin_SI4735_PC_Radio-Case-03.jpg
SI4735 PC-Radio USB V2 Linux Software Linux & Computer Blog / Vermischtes  
Startseite zur Linux Software
für SI4735 PC-Radio USB
Videos/Screencasts Download Preselector für das
AK Modulbus PC-Radio
 
Artikel auf Deutscharticle not available in English

Preselector für das AK Modulbus PC-Radio | von Ralf Beesner, DK5BU

Das PC-Radio wird ohne Vorkreis-Abstimmung geliefert. Ein Preselector verbessert aber deutlich die Empfindlichkeit auf UKW und den AM-Bändern und reduziert auf den letzteren die Nebenempfangsstellen. Vorgestellt werden hier zwei Preselector-Lösungen auf Basis einer UKW-Luftspule und Festinduktivitäten mit automatischer Umschaltung unter Ausnutzung von einem GPO (AK Modulbus PC Radio, mittels ATtiny13) oder zwei GPO (eigener Lochrasteraufbau).

Inhalt


Vorbemerkungen und -versuche

Das PC-Radio wird ohne Vorkreis-Abstimmung geliefert; ein Preselector verbessert aber deutlich die Empfindlichkeit auf UKW und den AM-Bändern und reduziert auf den letzteren die Nebenempfangsstellen, da Empfänger mit IQ-Mischern und 0 Hz ZF auch bei den Vielfachen der Mischoszillatorfrequenz sehr empfindlich sind (ein Vorkreis dämpft diese Nebenempfangsstellen stark).

Bei den Vorversuchen ergaben sich folgende Erkenntnisse:
  • in den Beispielapplikationen des Datenblatts liegt die Antenne direkt am FM-Eingang des IC; die UKW-Induktivität geht von dort gegen Masse. Die UKW-Empfindlichkeit ist jedoch größer, wenn die Antenne nicht am heißen Ende der Induktivität angeschaltet wird, sondern an einen Anzapf der Induktivität, so daß die HF-Spannung hochtransformiert wird (offenbar ist der FM-Eingang recht hochohmig)
  • der AM-Eingang ist für den Anschluss kurzer Stabantennen gedacht, die nicht in Resonanz sind, sondern eine kapazitive Komponente mit hoher Impedanz aufweisen und daher direkt an das heisse Ende des AM-Kreises anzuschließen sind. Lange Antennen bringen jedoch eine große kapazitive Komponente in den Eingangskreis und verstimmen ihn soweit, daß die interne Resonanznachführung des IC an ihre Grenzen kommt. Ausserdem ist die hohe Antennenspannung unnötig und sogar kontraproduktiv. Es ist daher sinnvoll, die Antenne lose über 22 - 50 pF anzukoppeln.
  • über etwa 10 Mhz erfolgt keine Nachstimmung des Schwingkreises; die interne Abstimmkapazität verharrt auf dem Minimum 7 pF
  • der Bereich 150 kHz bis 10 Mhz läßt sich mit 3 Induktivitäten abdecken: 2,2 mH für LW, 120-150 µH für MW und 3,3-4,7 µH für KW (die LW-Spule ist fest verdrahtet, die MW- und die KW-Induktivität sind nur einseitig angeschlossen und werden je nach empfangenem Wellenbereich parallelgeschaltet - es sind also zwei mechanische oder elektronische Schalter erforderlich)
  • dies sind ziemlich genau die Werte, die Burkhard Kainka bei seinem Si4735-Elektor-Radio einsetzt. Für UKW wird dort allerdings eine Festinduktivität verwendet, während uns eine Luftspule aus 4 Windungen mit 10 mm Durchmesser und Antennenanzapf auf der kalten Seite an der ersten Windung günstiger erschien

Automatische Umschaltung

Man könnte die Umschaltung der AM-Induktivitäten von Hand vornehmen; eleganter ist es aber, dies programmgesteuert zu erledigen.

Der Si4735 weist einige GPOs (general purpose outputs) auf; zwei sind grundsätzlich nutzbar. Zu beachten ist aber, daß sie eine Doppelfunktion aufweisen: beim "Hochfahren" des ICs fungieren sie als Eingänge und legen in den ersten msec den Modus für den Steuerbus fest. Für den I2C-Modus muß GPO1 auf high liegen und GPO2 auf low.

Im laufenden Betrieb kann man dann beliebige Pegel über die beiden GPOs ausgeben.


Abb. 1: Schaltplan Preselector-Lösung via 2 GPOs

Grundsätzlich kann man die Schaltung nach Abb.1 verwenden, um die Induktivitäten umzuschalten. Als Schalter fungieren MOSFets, die entweder hochohmig sind und die Induktivität "in der Luft baumeln lassen" oder sie niederohmig gegen Masse ziehen. Da die MOSFet-Gates sehr hochohmig und gegen Überspannungen empfindlich sind, sorgen Gatewiderstände für die Ableitung von Spannungsspitzen (für den Fall, dass der Si4735 mal nicht in seiner Fassung steckt).

Auf dem Lochraster-Aufbau eines Si4735-Empfängers funktioniert diese Variante recht gut. Die Gatewiderstände sind so an Plus bzw. Masse geschaltet, dass der Si4735 beim Hochfahren in den I2C-Modus geht.

Sonderlösung für die AK Modulbus-Platine

Leider wurde GPO2 beim AK Modulbus PC-Radio fest und gründlich auf Masse gelegt, und es ist mit vertretbarem Aufwand nicht möglich, diese Masseverbindung aufzutrennen.

Es bleibt nur GPO1, also ein einziger Pin, um drei Zustände zu übermitteln.

Ein gangbarer Weg ist, über GPO1 jeweils ein einfaches Telegramm zu senden: Innerhalb einer Sekunde müssen ein, zwei oder drei Low-Impulse von etwa 100 msec an GPO1 erscheinen.
  • einer bedeutet: MW-Spule parallelschalten
  • zwei bedeuten: MW- und KW-Spule parallelschalten
  • drei bedeutet: nur LW-Spule verwenden

Die Auswertung der Telegramme erfolgt über einen Mikrocontroller ATtiny 13. Das erforderliche Programm besteht aus einigen Zeilen Bascom-Code:

' Attiny-13-AM-Umschalter für Si4735-USB
'
' Für den LW- Bereich liegt eine Festinduktivität 2,2 mH im Eingangskreis; 
' auf MW werden 100 µH parallelgeschaltet; für den KW- Bereich 3,3 µH.
' Die Induktivitäten werden parallelgeschaltet, indem PB3 und PB4 das 
' kalte Spulenende auf low ziehen
'
' Der Si4735 hat nur einen nutzbaren GPIO; das PC- Programm 
' erzeugt bei Bedarf 1, 2 oder 3 Impulse
' die an PB0 des Attiny geführt werden (Low aktiv).

' Geht PB0 auf low, wacht der Attiny auf und zählt die Low- Impulse mit

' Bei 1 Impuls: Umschaltung auf MW -> PB3 niederohmig
' Bei 2 Impulsen: Umschaltung auf KW -> PB3 und PB4 niederohmig
' Bei 3 oder mehr Impulsen: PB3 und PB4 hochohmig

' Änderung gegenüber Version 2:
' Ausgangspins werden nicht auf niederohmig geschaltet, sondern 
' geben ein "High" aus;
' die Spulenumschaltung erfolg mit separaten MosFETs

'---------------------------------


$regfile = "Attiny13.dat"
$crystal = 75000              ' gefust auf 1,2 MHz, auf 75 kHz wird mit CLKPR umgeschaltet
$hwstack = 32
$swstack = 8
$framesize = 16


Dim N As Byte
Dim A As Byte
Dim B As Byte



Portb = &B00000110            ' keine Pullups ausser PinB.1 und PinB.2
Ddrb = &B00011000             ' PB3 und PB4 Ausgang, Rest Eingang
Acsr.acd = 1                      ' Analog-Komparator ausschalten

Clkpr = &B10000000            ' Taktumschaltung vorbereiten
Clkpr = &B00000111            ' Umschalten auf 9,6 MHz / 128
Clkpr = &B00000111


Sreg.7 = 1                    ' Global Interrupt Enable
Pcmsk.0 = 1                   ' Pin Change Interrupt PB0 aktivieren
Gimsk.5 = 1                   ' Pin Change Interrupt Enable


'---------------------------------


A = 0

Do


If Pinb.0 = 0 Then                ' wurde wirklich PinB.0 an low gezogen?

   Gimsk.5 = 0                    ' Pin Change Interrupt Disable

   Gosub Pulse_len


   If N < 30 And N > 3 Then       ' Wenn Low- Impuls nicht zu kurz und nicht zu lang
       Incr A                     ' Pulszaehler inkrementieren

   End If


   Gosub Break_len


   If N > 30 Then                 ' Zeitfenster für weitere Impulse abgelaufen

       Select Case A              ' Ummappen der Impulszahl auf Bitmuster an PortB
          Case 1 : B = 1
          Case 2 : B = 3
          Case Is > 2 : B = 0     ' bei 4 und mehr Impulsen alles auf Null
       End Select

       Shift B , Left , 3         ' In den Bereich PortB.3 bis PortB.4 shiften
       Portb = B And &B00011000   ' die 3 gültigen Bits filtern
       Gimsk.5 = 1
       A = 0
       B = 0
       Powerdown                  ' ab hier ist der Takt aus. Aufwecken per Pin Change Interrupt

   End If

End If


Loop



Pulse_len:                        ' Misst Dauer Low- Impuls

   For N = 1 To 50
      Incr N
      If Pinb.0 = 1 Then
         Exit For
      End If
      Waitms 10
   Next

Return


Break_len:

     For N = 1 To 50              ' Misst Dauer Pause
      Incr N
      If Pinb.0 = 0 Then
         Exit For
       End If
      Waitms 10
   Next

Return

Der ATtiny 13 besitzt GPIOs, die als Ein- oder Ausgang fungieren können und im Eingangsbetrieb sehr hochohmig sind. Die Ausgänge sind über komplementäre MOSFets realisiert. Leider kann man mit ihnen die Induktivitäten nicht direkt schalten, da der ON-Widerstand dieser internen MOSFets ca. 50 Ohm beträgt und sie daher die Güte der Induktivitäten zu stark vermindern.

Als niederohmige Schalter fungieren auch hier zwei (externe) MOSfets. Der Bauteile-Aufwand hält sich aber dennoch in Grenzen (Abb.2), so dass die gesamte Schaltung auf die Lochrasterfläche der PC-Radioplatine passt.


Abb. 2: Schaltplan Preselector-Lösung mit 1 GPO und ATtiny13

Als Schalt-MOSFets kann man BS170 verwenden, elektrisch besser sind BSS138, die es aber (zumindest bei Reichelt) nur im SMD-Gehäuse gibt. Die Verarbeitung ist etwas "tricky"; einerseits sind sie wegen elektrostatischer Aufladung vorsichtig zu behandeln, andererseits sind die Anschlußfähnchen aus dünnem Stahlblech; die leichtgewichtigen Beuteile bleiben an jedem nur ganz schwach magnetisierten Werkzeug kleben und die Anschlüsse federn stark. Wenn man sie mit der Pinzette andrückt und abrutscht, hüpfen sie durch die Gegend (wie die Chips des Flohspiels, das einige Ältere vielleicht noch aus ihrer Kindheit kennen)....

ATtiny 13 Firmware und Software zur Ansteuerung unter Linux

ATtiny 13 Firmware

2012/04/16 - AM-Umschalter-T13-3.hex
kompilierte Firmware für Preselector-Lösung für den ATtiny13 µC
2012/04/16 - AM-Umschalter-T13-3.bas
Bascom Quellcode des Firmware für Preselector-Lösung für den ATtiny13 µC

Versionen der Linux-Software für das USB PC Radio

Unterstützung für beide Preselector-Lösungen befindet sich ab Version 0.1e in der Linux-Software.
Derzeit wird dies noch über einen CLI Schalter aktiviert:
si4735 -G 1
startet die Unterstütung für die Lösung mit 1 GPO und Atmel &mikro;C
si4735 -G 2
startet die Unterstütung für die Lösung mit 2 GPOs

Aktueller Downloadder Linux-Software für das USB PC Radio

2012/05/09 - Version 0.1e - si4735radio-0.1e.tar.gz
fünfte veröffentlichte Version, immer noch ziemliche Baustelle, FM und AM Radio
zusätzlich umgesetzte Funktionalität:
  • Preselector-Lösung von Ralf Beesner implementiert
    zur Nutzung si4735 mit dem Parameter -G 1 für Atmel-Lösung mit 1 GPO
    oder mit -G 2 für die Lösung mit 2 GPOs starten.
    ACHTUNG: nicht just for fun verwenden, Lösung #2 kann ggf. die HW beschädigen!
  • einige Bugfixes und kleinere Änderungen an diversen Stellen

Bilder von der Preselector-Lösung


Abb. 3: AK Modul-Bus PC Radio mit Preselector-Lösung


Abb. 4: Detailansicht der Preselector-Lösung

Links und weiterführende Informationen

... kommen ggf. noch ...


Text: Ralf Beesner, mit Ergänzungen von Tobias Stöber — Erstellt: 2012/05/09 – Letzte Änderung: 2012/05/09
Bilder: Ralf Beesner (Kürzel RB, Schaltpläne), Tobias Stöber (TS bzw. ohne Kürzel)


CSS ist valide! CSS ist valide!