DRM – Volksempfänger

Tassi mit Radio? Nein, keine Angst, der kleine Racker muss jetzt nicht noch ein Radio mitschleppen. Aber von dem Bastelprojekt wollte ich trotzdem kurz erzählen:

Digitales Radio auf der Mittelwelle? Diese Woche meinte der Deutschlandfunk, die Bundestagsübertragung erfolge digital auf der Langwelle? Digital? Ja, der sagte digital. Wie es der Zufall so will, kam mir das Theme digitale Mittelwelle diese Woche gleich nochmal unter, also musste ich das doch auch mal (ver)suchen. Und siehe da, eine Suche im Netz brachte zu Tage, dass es auf der guten alten Mittelwelle (wer erinnert sich noch an DT64 auf 1044kHz?) digitalen Rundfunk gibt. Schon 2004 gab es einen Bausatz in der Elektor und irgendwie ist die Technik noch immer nicht wesentlich weiter. Es gibt wohl gerade mal ein Gerät, dass DRM – so heisst der Spass – tatsächlich kann. Alle weiteren Lösungen basieren offenbar noch auf einer Umrüstung bestehender Empfänger und einer Einspeisung des Signals in den Computer. Die Technik können Andere besser erklären. Die gegenwärtigen Lösungen teilen die Arbeit jedenfalls auf: Ein herkömmliches Radio ist für den Empfang des Signal zuständig, dieses wird in den hörbaren Frequenzbereich umgesetzt und dann über die Soundkarte in den PC eingespeist. Dort wird das Signal dann in relativ aufwendigen Berechnungen decodiert und in ein tatsächlich hörbares Signal umgewandelt. Gleichzeitig können auch noch Daten wie bei RDS übertragen werden.

Im einfachsten Fall genügt es sogar einen sehr einfachen Empfänger für eine feste Frequenz aus wenigen Teilen aufzubauen und diesen dann an die Soundkarte anzuschließen. Da mir der korrekte Quarz und einige andere Teile fehlten musste ich leider warten,
bis ich mal wieder zu meinem Elektronikhändler des Vertrauens konnte, doch dann war es soweit: Tassi’s Steckbrett kam mal wieder
zum Einsatz:

Image052

 

Mit dem Empfang schien ich aber erstmal kein rechtes Glück zu haben. Zumal ich dann auch noch feststellte, dass mir doch noch ein Kondensator fehlte. Auch mit der selbstgewickelten Spule klappte es nicht. Brummen und Rauschen, sonst war dem Computer kein Ton zu entlocken. Schliesslich kam ich auf die Idee, doch mal mein billiges Netzteil gegen billige Batterien auszutauschen und siehe da, noche ein bisschen Wackeln und plötzlich zeigte sich der charakteristische Frequenzberg und plötzlich spielte der Compi doch tatsächlich die Deutsche Welle. Zwischenzeitlich erreichte meine Schaltung auch mal ein SNR von über 20 dB in der Dream-Software und so konnte ich eine Weile ganz angenehm und in guter Qualität DW auf der Kurzwelle 3995kHz hören.

dream

 

Leider ist das Signal aber  nicht ganz stabil, immer wieder bricht die Übertragung ab. Beeindruckend ist es aber allemal, plötzlich über Kurzwelle ein digital kodiertes Programm zu empfangen. Ob sich das System letztlich durchsetzt, wird sich aber noch zeigen müssen. Zumindest müssten die Gerätepreise, die noch bei ca. EUR 200 für ein Radio(!) liegen, noch deutlich sinken. Aber auch unabhängig davon, stellt sich zumindest in Europa die Frage, ob mit einer Wiederentdeckung von KW, MW und LW tatsächlich zu rechnen ist. Immerhin scheint doch eher ein Trend zu lokalen Sendern zu bestehen, so dass (anders als etwa in einem Land wie den USA) der Bedarf nach Sendekapazitäten mit hunderten Kilometeren Reichweite beschränkt sein dürfte. Nicht zufällig ist es ja auch die DW, die hier noch nachhaltigen Gebrauch von diesen Frequenzbereichen macht. Gerade im Bereich solcher Fernausstrahlung scheint aber ein zweites Problem der Digitalübertragung zu bestehen: In seiner gegenwärtigen Ausgestaltung ist die Qualität der DRM-Übertragung zwar grundsätzlich deutlich besser als die der herkömmlichen Kurzwelle (Störgeräusche fehlen), Voraussetzung ist aber eben, dass das Signal hinreichend gut ankommt. Hier besteht die Gefahr, dass ein Analogsignal zwar stark verrauscht wäre, aber immerhin noch verständlich wäre, während die Digitalübertragung in diesem Falle völlig aussetzt. Gerade für den Empfang exotischer Stationen wäre DRM damit dann nicht geeignet.

Im Ergebnis muss ich mich da einem anderen Tester anschließen: Auch wenn die Qualität sich gegenüber meiner primitiven Schaltung wohl deutlich steigern ließe, stellt sich doch die Frage, warum man nicht einfach den livestream der DW im Internet hören sollte. Insofern bleibt DRM gegenwärtig wohl noch eine (sehr unterhaltsame) technische Spielerei.

Und wenn sich DRM (oder DAB) eines Tages doch durchsetzen werden, dann kann ich jedenfalls mit Recht sagen, dass ich schon seit den ganz frühen Anfängen mit dabei war.

Tassi mit Infrarotschnittstelle

Seit neuestem sollte Tassi in der Lage sein über Infrarot mit dem Computer zu kommunizieren!

Eigentlich kann der Asuro ja von Haus aus bereits per Infrarot kommunizieren. Allerdings funktioniert der originale Transceiver nicht zuverlässig am Laptop. Zunächst habe ich deshalb eine Kabelverbindung zur seriellen Schnittstelle gebastelt und nun habe ich das Kabel durch eine eigene Infrarot Verbindung ersetzt.

Image027

Man beachte, dass die Platine zwar wieder nur Lochraster ist, aber doch ziemlich effektiv genutzt wird – hat mich einiges an extra Zeit gekostet!

Temperaturmessung mit DS1822 – 1-Wire Protokoll

Auf der Suche nach “Aufgaben” für meinen Roboter bin ich ziemlich schnell auf die Temperaturmessung gestoßen. Nun kann man die Raumtemperatur grundsätzlich mit jedem Bauteil messen, dass seine elektischen Eigenschaften ändert. Ich habe es auch mal mit einem 22k Heißleiter probiert, den ich noch herumliegen hatte – allerdings ist der so unempfindlich, dass ich mit meiner einfachen Schaltung kaum Temperaturänderungen erfassen konnte.

Deutlich komfortabler geht die Messung demgegenüber mit einem DS1822 vonstatten. Es handelt sich um ein kleines Bauteil in der Form eines Transistors, welches als digitales Thermometer funktioniert. Insbesondere wird nicht nur ein Spannungswert ausgegeben, der dann noch in eine Temperatur umgerechnet werden muss, vielmehr wird die Temperatur unmittelbar in Form von zwei Byte in Grad Celsius ausgegeben. Die Besonderheit liegt dabei aber in der Ansteuerung.  Neben Stromversorgung (die ggf. auch parasitär gestaltet werden kann, was ich hier aber nicht behandele) ist nur ein einziger Anschluss vorhanden. Damit kommt der DS1822 nicht nur mit minimaler externer Beschaltung aus, zusätzlich ist auch am Mikrocontroller nur ein einzelner Pin erforderlich.

ds1822 ds1822

Dallas 1-Wire Protokoll

Schlüssel des Ganzen ist ein eigenes Protokoll, welches mit 1-Wire ziemlich treffend beschrieben ist. Anfangs hatte ich auch einige Bedenken, wie die Programmierung funktionieren würde – immerhin muss über die eine Leitung bi-direktional kommuniziert werden. Hatte auch schon gelesen, dass das 1-Wire relativ zeitabhängig ist. Aber probieren geht über studieren.

Das Datenblatt zum Chip ist recht ordentlich und erklärt auch das Protokoll recht umfassend. Wie sich herausstellt ist das Timing kein unlösbares Problem. Insbesondere wird der DS1822 als Slave betrieben und die gesammte Kommunikation wird vom Mikrocontroller gesteuert: Sämtliche Datenübertragungen werden vom Master initiiert. Wenn man sich an die vorgegebene Reihenfolge hält, gibt es keine unüberwindbaren Probleme.

Programmbeispiel

Die hier vorgestellte Routine stellt eine sehr einfache Umsetzung des 1-Wire Protokolls dar. Insbesondere erfolgt keine Unterscheidung verschiedener Thermometer – es kann also nur ein DS1822 angeschlossen sein – für einen mobilen Roboter sollte das aber reichen. Durch die Routinen ds_read_byte() und ds_write_byte() ist prinzipiell auch eine Erweiterung möglich. Da die Messung abhängig von der Auflösung bis fast eine Sekunde dauern kann, ist es zweckmäßig Start der Messung und Auslesen der Daten im Programm zu trennen. Durch Aufruf von ds_start_convert() wird eine neue Messung gestartet. Diese kann dann mit ds_read_temp() auslesen werden. Der Temperaturwert liegt sodann in Form von zwei Bytes in den Variablen ds_byte[0] undds_byte[1] vor. Dabei stellen die ersten 4 Bits von ds_byte[0] die Nachkommastellen dar. Mittels

ds_tmp_byte = (ds_byte[0] >> 4);

 ds_tmp_byte |= ((ds_byte[1]] & 0x07) << 4);

kann man also recht einfach auf den ganzzahligen Temperaturwert zugreifen. Dieser liegt unmittelbar in Grad Celsius vor. Die Funktion ds_show_temp() dient dazu, den Temperaturwert auf einem Display anzuzeigen – dies müsste natürlich spezifisch angepasst werden. Einfaches Programmbeispiel zur Ansteuerung eines DS1822 am 1-Wire-Bus folgt demnächst. Ach ja, zu Fragen oder Rückmeldungen, einfach hier irgendwo auf der Seite ein paar Zeilen hinterlassen – ich kümmere mich dann drum… (bin aber nicht sicher, ob das technisch schon geht…)