ISP-Soundinterface V3
Im Laufe der Experimente vieler Betatester hat sich
gezeigt, dass die Soundkarten der vielen Geräte unterschiedlicher sind
als wir
zuerst angenommen hatten. Insbesondere die Ausgangsamplitude ist sehr
unterschiedlich und reicht von ca. 1 Vss bis 5 Vss. Die ursprüngliche
Transistorschaltung kommt damit nicht klar. Deshalb jetzt ein anderer
Versuch:
Mit Komparatoren sollte man einen größeren Bereich verarbeiten können.
Wer sich selbst ein Interface bauen will, sollte besser die
Transistorschaltung überschlagen und gleich mit Komparatoren arbeiten.
Ein typischer Komparator wie der LM393 hat offene Kollektoren am Ausgang. Damit
ist der Ausgang ähnlich wie beim Transistor-Interface. Am Eingang können aber
schon Signale mit wenigen mV verarbeitet werden. Damit eindeutige Ruhepegel
herrschen werden die nichtinvertierten Eingänge über den Spannungsabfall der
Eingangsströme an 1 MOhm um einige mV hochgelegt. Weil die Eingangsspannung
nicht über ca. 0,6 V gehen soll (um ein Übersprechen auf den jeweils anderen
Eingang zu vermeiden) ist ein 3 : 1 Spannungsteiler vorgeschaltet. Hier ist
auch gleich das für manche Soundkarten erforderliche Tiefpassfilter eingefügt.
Die Resetschaltung vereinfacht sich und wird nun direkt vom
Datenkanal abgeleitet. Damit nicht später im Betrieb B0 einen
Reset auslösen
kann sind zwei Dioden nötig. Das RC-Glied erzeugt wie die alte
Schaltung einige
Impulse am Anfang der Übertragung. Die Zeitkonstante ist in dieser
Schaltung relativ klein und reicht nur für die die neuen Sound-Files,
die keine Lücken im MOSI-Datensignal mehr aufweisen. Mit der alten
Version dürfte die Schaltung nicht mehr funktionieren.
Die Schaltung wurde zuerst mit dem Doppel-Komparator LM393 getestet, dabei war
die Diode am Clock-Ausgang nicht nötig. Mit dem Komparator hat man den Vorteil,
dass das Interface komplett abgeschaltet werden darf, weil die
Ausgangstransistoren dann gesperrt sind.
Wer gerade keinen Komparator hat kann die Schaltung auch mit dem Doppel-OPV
LM358 aufbauen, dessen Eingangsschaltung ganz ähnlich ist wie beim Komparator
LM393. Dann sind allerdings alle drei Dioden nötig. Die Spannungsverhältnisse
sind nicht ganz so günstig, weil der Ausgangsspannungsbereich begrenzt ist.
Außerdem kann man nicht einfach die Betriebsspannung abschalten, weil dann
insbesondere Reset heruntergezogen würde. Aber wenn man den Doppel-OPV an der
Versorgungsspannung lässt, funktioniert es gut. Die Übertragung wurde im Bereich 1 Vss bis 3 Vss erfolgreich getestet.
Das Bild
zeigt einen Testaufbau mit dem LM358. Am besten wären Schottkydioden, aber
verwendet wurden Si-Dioden 1N4148, das funktioniert auch. Die 4,7-k-Widerstände
wurden aus je zwei 10-k-Widerständen in Parallelschaltung gebildet. Die ganze
Schaltung ist an B0, B2 und Reset angeschlossen. Man kann nun wahlweise beide
Soundeingänge testen, den auf der Platine und den auf dem Steckboard. Kein
Interface behindert das andere. AND-Verknüpfung…
Ralf
Beesner wies auf eine Schwäche der Schaltung hin. Wenn ein
Anwenderprogramm PB0 hochschaltet muss der Komparator dagegen
ankämpfen, um einen Reset auszulösen. Ein Test hat zwar gezeigt, dass
der Komparator stärker war, aber das ist keine saubere Lösung. Besser
ist eine Schaltung ganz ohne die Dioden und nur mit offenen
Kollektoren. Dafür werden drei Komparatoren benötigt, z.B. mit der
folgenden Schaltung:
Schaltung mit Vierfach-Komparator LM339
In
dieser Schaltung wurde auf die Spannungsteiler am Eingang
verzichtet. Damit hat man die größte Empfindlichkeit. Andererseits kann
die Schaltung übersteuert werden. Man muss also die Lautstärke passend
einstellen.
Komparator-Übersteuerungsprobleme
Die
Komparatorschaltung ist auch noch fehleranfällig und neigt zu
Fehlfunktionen bei einer Übersteuerung. Um der Sache auf den Grund zu
gehen habe ich einen Sinusgenerator am Soundeingang angeschlossen. Der
Eingangs-Spannungsteiler hatte 10 k und 10 k. Gemessen wurde direkt am
invertierten Komparatoreingang und am Ausgang. Das erste Oszillogramm
zeigt noch eine korrekte Funktion. Allerdings sieht man, dass der Sinus
unten etwas begrenzt wird.
Ein
Blick ins Datenblatt erklärt das Messergebnis. Die
Basis-Kollektor-Diode des PNP-Eingangstransistors beginnt zu leiten,
wenn man am Eingang tiefer als -0,5 V geht. Tatsächlich gibt das
Datenblatt einen Common Mode Bereich von 0 V bis 1,5 V bei 5 V
Betriebsspannung an. Unter Null ist nicht vorgesehen, funktioniert aber
in Maßen trotzdem.
Und
es kommt noch schlimmer. Wenn man sehr stark in den negativen Bereich
geht und einen Strom von mehr als ca. 10 µA durch die
Basis-Kollektor-Diode schickt, kehrt sich die Funktion des Komparators
um! Dann arbeitet der PNP-Transistor nämlich invers, d.h. mit
vertauschtem Emitter und Kollektor bei geringerer Stromverstärkung. Nun
entstehen auch für die negative Halbwelle Low-Signale.
Gibt
man noch mehr Gas, dann werden die falschen Impulse länger, weil der
kritische Begrenzungsstrom länger überschritten wird. Jedenfalls mache
solche zusätzlichen Impulse die Programmierung unmöglich. Man muss also
eine Übersteuerung unbedingt vermeiden.
Einen
Sparrow habe ich mit einem Vierfach-Komparator LM339 umgerüstet. Gegen
die Übersteuerung sind jeweils zwei Schottkydioden antiparallel an die
Eingänge gelegt. Damit wird die Eingangsspanung auf +/-0,3 V begrenzt.
Allerdings gibt es auch bei zu schwacher Aussteuerung Probleme,
weil die Ausgangsspannung des Komparators dann etwas flatterhaft ist.
An einer Lösung wird noch gearbeitet. Die Idee ist, dass Reset erst bei
ausreichend großer Eingangsspannung aktiv werden soll.
Soundinterface V3.1 mit Komparator
Dieser
Sparrow sollte gegen alle Grenzfälle immun werden und funktioniert nun
hoffentlich an jedem System. Der erste Aufbau wurde mit einem Steckboard
realisiert, damit ihn jeder leicht nachbauen kann. Die Suche nach einem
besseren Komparator brachte keine brauchbaren Ergebnisse. Bei Nachfolgern des
LM393 ist ebenfalls keine Spannung weit unter -0,3 V erlaubt. Deshalb wurden
nun zwei Dioden-Begrenzer eingebaut. Eigentlich gehören da Schottkydioden hin,
aber normale 1N4148 liegen eher in der Bastelkiste und gehen auch, wenn man
zusätzliche 100-k-Widerstände zu den Eingängen vorsieht. Wer hier
Schottkydioden einsetzt kann auf die 100-k-Widerstände verzichten.
(Achtung,
der Widerstand von 4,7 k an der Reset-Leitung ist kritisch und kann zu
Upload-Störungen im Zusammenhang mit einem zuvor geladenen App mit 9.6
MHz-betrieb führen. Die Reset-Schaltung muss noch verbessert
werden. Eine Lösung ist in Arbeit, möglicherweise von der
Sound-Software her.)
Die neue Schaltung verwendet
1o-k-Ableitwiderstände am Eingang, damit eine eventuelle Gleichspannung am
Soundkarten-Ausgange entladen werden kann. Es folgen die bewährten
Tiefpassfilter gegen Verzerrungen, die durch übersteuerte Endverstärker (wie
beim Nexus-Table bei 100% Lautstärke) entstehen können. Das gefilterte Signal
wird dann auf +/-0,6 V begrenzt und gelangt über die 100-k-Widerstände an die
invertierenden Komparatoreingänge. Es gibt daher auch bei extremen Signalspannungen keine
Übersteuerung der Komparatoren mehr. Weil die Schaltung keinen Eingangs-Spannungsteiler hat
kommt sie auch mit kleinen Signalen klar. Insgesamt können nun Signalspannungen
zwischen 0,5 Vss und 5 Vss fehlerfrei verarbeitet werden.
Die nichtinvertierenden Eingänge sind an einen Spannungsteiler gelegt, der bei
einer Betriebsspannung von 3 V etwa +30 mV für MOSI und SCK festlegt und etwa
+90 mV für Reset. Dieser Unterschied löst ein manchmal
beobachtetes Problem bei zu kleinen Eingangsspannungen
mit unzuverlässigen digitalen Signalen. Erst bei Eingangspegeln über
90 mV gibt es ein Reset-Signal. Dann sind auch die Daten- und Clock-Signale
bereits sauber und eindeutig.
Als Faustregel kann nun gelten, dass die Lautstärke bei allen System auf 80 %
eingestellt werden soll. Aber auch übersteuerte Signale oder extrem kleine
Signale können keine fatalen Fehler wie zufällige Änderungen der Fuses mehr
bewirken.
Das
Oszillogramm zeigt ein stark verzerrtes Clocksignal (Nexus 7, 100 %
aufgedreht) direkt am Eingang der Schaltung und nach der Filterung und
Begrenzung. Mit diesem Ergebnis hat der Komparator keine Probleme mehr.
Damit
das ganze möglichst stabil und ohne künftige Kontaktprobleme
arbeitet habe ich eine zweite Version der gleichen Schaltung auf der
Steckboardplatine von Modul-Bus aufgebaut. Die Hoffnung ist, dass
dieses System nun an allen Soundkarten problemlos läuft. Über
Rückmeldungen würde ich mich sehr freuen.
Soundinterface V3.2
Die entscheidende Verbesserung bringt ein kleiner Kondensator mit 47 pF an
der SCK-Leitung. Das Problem waren die besonders steilen fallenden Flanken des
Komparator-Ausgangs. Durch Streukapazitäten konnten falsche Impulse von der
Datenleitung auf die Cklockleitung streuen. Weil es extrem kurze Spikes waren
konnten sich diese Störungen nur auswirken, wenn der Controller mit 9,6 MHz
lief und fielen im Normalfall mit 1,2 MHz nicht auf. Es gab schon vorher mal
Rückmeldungen ähnlicher Probleme: Wenn ich die Oszi-Messspitze dranhalte
funktioniert es. Im Nachhinein ist klar, auch da waren schon solche Spikes die
Ursache.
Im Laufe der Fehlersuche war zuerst die Reset-Schaltung in Verdacht geraten und
wurde deshalb umgebaut. Der kurze positive Impuls nach dem ersten Reset wird
nun durch Software erzeugt. Das neue Soundverfahren ist bereits im Fuse-Editor
und im Hex2Wav-Konverter eingebaut und ist kompatibel zum Transistor-Sparrow. Wenn
es sich weiter bewährt soll das Verfahren auf alle Sparrow-Apps übertragen
werden.
Geändert wurde auch die Eingangsschaltung, jetzt mit Schottkydioden, wobei zwei
Widerstände entfallen. Und die letzte Änderung betrifft die LED2, die jetzt
ganz konventionell an Masse liegt. Damit ist B4 frei für beliebige Anwendungen.
Der Sparrow R2
Die
neue Platine ist da und wurde natürlich sofort mal aufgebaut. Der erste
Test war erfolgreich. Spannend bleibt noch, was unsere Betatester
sagen. Die Schaltung wurde noch leicht angepasst. Es gibt jetzt zwei
Entstörkondensatoren an B0 und B2. Am Spannungsteiler wird noch eine
Feinabstimmung getestet. Mit R8 = 10 kOhm statt 27 kOhm steigt die
Empfindlichkeit, was bisher noch keinen Nachteile gezeigt hat.
Achtung,
R und L haben die Plätze getauscht. Das Kabel muss gegenüber der ersten
Version nun anders herum aufgesteckt werden. Außerdem gibt es jetzt
zwei Anschlüsse für die Betriebsspannung. Der Anschluss "+"
versorgt den Controller (Vcc). Der Anschluss "U" versorgt das
Programmier-Interface und den LM339 (Vcc2). Damit hat man die
Möglichkeit, den Controller allein sehr stromsparend zu betreiben. Ein
Programmierstecker würde dagegen Vcc und Vcc2 verbinden und damit beide
Teile versorgen. Ein weiterer Vorteil dieser Trennung besteht
darin, dass ein versehentliches Ansprechen der Schnittstelle ohne VCC2
leicht verhindert werden kann.
Erste Erfahrungen mit dem Sparrow R2
Alter und neuer Sparrow im Einsatz bei Hermann Nieder
Der
Erfahrungen mit der neuen Platine sind überwiegend positiv. Sie kommt
jetzt mit sehr viel kleineren Signalpegeln aus, man muss nicht immer voll
aufdrehen. Einige wenige Geräte machen noch Probleme. Nach den Ursachen wird
gesucht. Bei einer Platine hatte ich ein paar Lötpunkte vergessen, wonach sie
trotzdem meinen ersten Test bestanden hatte, später dann aber Ärger
verursachte. Deshalb der Tipp an alle Betatester: Einmal scharf mit der Lupe
kontrollieren...
Dann ist noch ein Software-Problem aufgefallen. Die ersten Apps bis Nr.
23 und
der Fuse-Editor waren noch nach dem alten Standard programmiert. Neu
ist, dass
Reset am Anfang einmal kurz zurück genommen wird und länger
gehalten wird.
Vor allem das letzte ist bei R2 wichtig, weil die Reset-Zeitkonstante
kürzer
ist. Jetzt sollen die Apps erneuert werden, auch der Fuse-Editor.
Derzeit sollte man beim Testen des Sparrow R2 bevorzugt die neueren
Apps nutzen.
In Bezug auf die Reset-Impulskette ist die neue Platine anspruchsvoller als die
alte. Wenn z.B. durch einen Schluckauf des Betriebssystems oder eine schwache
Netzverbindung kurze Aussetzer im Datenstrom passieren, geht Reset kurz hoch
und unterbricht das weitere. Und das Ende muss >5 ms nach der Übertragung
Reset low halten, damit die letzten Daten gebrannt werden. Ein Blick mit dem
Oszi auf die Reset-Leitung zeigt ob alles richtig läuft. Während der
Übertragung sollte die Spannung immer deutlich unter 0,2 V bleiben.
Der Spannungsverlauf am Reset-Pin
Beim
Start der Übertragung wird Reset heruntergezogen und geht dann noch einmal für
weinige Millisekunden hoch. Diese Reset-Unterbrechung hilft dafür zu sorgen,
dass beim zweiten Reset klare Zustände an MOSI und SCK herrschen. Danach aber
wird Reset mit jedem Impuls an der Datenleitung wieder heruntergezogen. Man
sieht ganz kleine Sägezahnimpulse bis ca. 0,1 V.
Weitere Infos zur Software-Emtwicklung und zu positiv getesteten Endgeräten: Der Sparrow R2 im Test