Freitag, 30. Oktober 2015

Saleae Logic Analyzer

... ein Low Budget Logic Analyzer mit 8 Kanälen und 24 MHz Sampling Rate.


Wenn man sich mit Mikrocontrollern beschäftigt, benötigt man ein Werkzeug, um die digitalen Signale im Fehlerfall oder einfach zur Überprüfung sichtbar zu machen.
Bei langsamen und simplen Signaländerungen genügt oft eine LED, die den Zustand optisch anzeigt. Für komplexe Signale und schnelle Änderungen, wie z.B. bei seriellen Protokollen, muss man den Datenstrom aufzeichnen, um ihn zu analysieren. Ein Speicheroszilloskop kann hier helfen.
Möchte man es komfortabler, ist der Einsatz eines Logic Analyzers sinnvoll. Schon preiswerte Geräte bieten eingebaute Protollanalysen mit an, die einem das manuelle Umrechnen der Bitfolgen und das Recherchieren deren Bedeutung abnehmen.

In meiner "Werkzeugkiste" befindet sich dazu ein kleiner 8-Kanal Logic Analyzer, der für unter 20€ erhältlich ist. Der Aufdruck vermittelt den Eindruck, dass das Gerät von Saleae stamme, es ist jedoch ein Clone.

Zum Testen habe ich am seriellen Ausgang eines Arduino Uno ASCII Zeichen mit einer Rate von 9600 bit/s ausgegeben.



Der Anschluss an die auszuwertenden Quellen ist per Adapterkabel mit Klemmprüfspitzen möglich. Mir genügten 2 Kabel mit Dupont-Steckverbindern. Die Belegung des 10-poligen Steckers ist auf der Vorderseite ersichtlich. 
Die Auswertung der Daten erfolgt am PC, die Übermittlung via USB 2.0.



Zur Analyse kann man das Programm "Logic" von Saleae nutzen. Als Alternative bietet sich PulseView (V 0.3.0) an, ein Open Source Programm, das zum sigrok Projekt gehört.


Logic 1.1.15



Via Pulldown Menü können Sample-Umfang und Sample-Rate eingestellt werden:




Ein Druck auf den Start-Button startet das Sammeln und Übertragen der Daten:



Wird dabei der Stop-Button gedrückt, bleiben die bis dahin gesammelten Daten zur Auswertung erhalten.
Die gesammelten Daten erscheinen hier in Kanal 0, der schon als Serial 0 bezeichnet ist:



Per Maustasten kann in die Darstellung vergrößert oder verkleinert werden.
Durch Auswahl eines geeigneten Analyzers - hier Async Serial - werden die Daten gedeutet:



... erkennbar an den dunklen Balken mit dem Inhalt der Daten, oberhalb des Signalverlaufs.






Bewegt man den Mauszeiger in die einzelnen Bits des Signals, so werden unter "Measurements" Pulsweite, Periodendauer und Frequenz des mit Pfeilen markierten Datenabschnitts angezeigt:



Ein nützliches Feature: durch Druck auf den Pfeil-Reiter ...



wird die aktuelle Auswertung in einer eigenen Registerkarte abgelegt und man kann parallel eine neue Auswertung starten.




PulseView 0.3.0



... wartet mit einer größeren Anzahl an Analysatoren auf.



Ich wähle UART - Universal Asynchronous Receiver Transmitter - das serielle Protokoll. Das Datensammeln wird via Run-Button gestartet. Der Datenstrom wird in der Zeile von Kanal 0 dargestellt. Die Analyse des Seriellen Signals in der UART-Zeile ganz unten



Die Betätigung des Zooms ist komfortabel per Mausrad gelöst. Die Darstellung der UART-Analyse gefällt mir besser, als bei Logic.



Pulsweiten, Periodendauern und Frequenzen kann man ebenfalls messen. Hierzu muss man jedoch manuell 2 Cursor setzen, die leider nicht am Signalverlauf einrasten. Die Messgenauigkeit hängt also von der eigenen ruhigen Hand und Sehschärfe ab.



Die weitere Praxis wird zeigen für welches Anwendungsszenario, welches Programm am nützlichsten ist. 
Schön wäre natürlich, wenn durch Weiterentwicklung eins der beiden Programme alle Vorteile vereinen würde.



Dienstag, 20. Oktober 2015

Granular Synth

... auf Grundlage der Auduino Entwicklung.



Ich plane einen neuen MIDI Step Sequencer zu bauen. Meine Entwicklungsplattform CSQ1 leistet beim Programmieren und Austesten gute Dienste, hat jedoch seine Grenzen. Eine davon ist die fehlende Audioausgabe, um das Ergebnis ohne großen Aufwand hörbar zu machen.
Eine Lösung fand ich auf den Seiten Notes and Volts*. Der dort vorgestellte Granualar Synth, auf Auduino* (eine Namensabwandlung von "Arduino") Basis, versprach eine einfache Möglichkeit, ein paar interessante Töne zu erzeugen.

Die Schaltung ist so einfach, dass ich auf eine geätzte Platine verzichtet habe und stattdessen ein Rest Labor-Lochrasterplatine verwendete.
Darauf fanden der Synth inklusive Line Out und MIDI In Platz.

Der Schaltplan:




An JP3 wir Line Out abgegriffen, X1 ist der MIDI Out, JP1 und JP5 sind die Programmierschnittstelle (ISP).


Bauteile:



Nun musste noch ein Gehäuse gefunden werden. Die Krabbelkiste gabe einen alten 10 MBit Ethernet Hub frei, dessen Gehäuse wie geschaffen schien:


Die Innereien wurden kurzerhand entfernt, Front- und Rückplatte zum Maßnehmen für neue Aluplatten genommen. 



Den meisten Platz beanspruchen die 5 Potis. Es gibt auch deutlich kleiner, diese hier hatte ich jedoch vorrätig. Im Original werden 10k Potis verwendet, diese hier haben 47k, was der Funktion nicht schadet, da sie nur als Spannungsteiler für die Analogeingänge des Controllers dienen. Im Gegenteil: der Stromverbrauch sinkt.



Bei der bestückten Platine habe ich lediglich die Stiftleisten für die Stromversorgung, den ISP-Anschluss und die MIDI Channel Ausval via Jumper in Hardware ausgeführt. MIDI In, Line Out und die Potentiometer wurden direkt verdrahtet. 



Die Platine wurde erst nach dem Verdrahten eingebaut.



Die Rückseite:



Die Frontplatte ...


... brauchte noch eine Beschriftung im "Laminierverfahren".



Die Firmware stammt von Notes and Volts [Downloadlink].
Lediglich die Zuordnung der Jumper für den MIDI Channel und die Zuordnung der Potis zu den Analogkanälen musste noch an meine Hardware angepasst werden.

Zur Programmierung des Controllers via ISP habe ich eine Arduino Uno genutzt, der mit dem entsprechenden Sketch beladen als Programmer genutzt werden kann.


Ein Test:




... funktioniert.

* Many thanks to Dave from "Notes and Volts" for the inspiration and to Peter Knight for the basics.