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.

Mittwoch, 2. September 2015

Gehäusebau mit Profilen

Der DDS Funktionsgenerator bezog vor etwa einem Jahr ein improvisiertes "Zuhause" in einem alten Stahlblechgehäuse mit handbeschrifteter Sperrholzfrontplatte. Es hat funktioniert, aber der Anblick war eher abschreckend.

In einem Artikel der Zeitschrift ct Hacks 3/2014 - ehemals ct Hardware Hacks und mittlerweile leider zur Zeitschrift Make mutiert - wurde ich auf Gehäuseprofile aufmerksam. Mit Kantenprofilen und 6 Alublechen lassen sich einfache Gehäuse bauen, die den eigenen Bedürfnissen besser gerecht werden, als so manche Konfektionsware.

Fündig wurde ich bei Bürklin, wo ich ein Meter Gerätebauprofil GB 1 Al und mehrere 100 x 200mm Alubleche bestellte ... denn bald sollte der DDS 20 in ein neues Zuhause umziehen.



Die Abmessungen wurden im Wesentlichen von den Maßen der Hauptplatine, dem Platzbedarf des Netzteils und dem Anspruch möglichst wenig Blech zu schneiden bestimmt. Ergo: Frontplatte in 100 x 200mm, Gehäusetiefe 100mm = 5 Bleche, 4 Profile, 8 Schnitte.


Seiten-, Deck- und Bodenblech werden einfach in die Nuten des Profils eingeschoben, Front- und Rückplatte verleihen durch die Verschraubung mit den Profilen der Gesamtkonstruktion ihre Stabilität.

Zunächst habe ich in die Frontplatte 2 Ausschnitte für das Display und die beiden Taster per Laubsäge und Feile eingearbeitet, gefolgt von 4 Bohrungen für die BNC-Stecker, den Encoder und das Potiometer. Es folgten die Bohrungen zur Befestigung der Frontplatte und der Hauptplatine.



Im der Rückwand wurde eine Öffnung für den Netzschalter und das Netzkabel benötigt. Die Bodenplatte erhielt Bohrungen zur Befestigung von Netzteil und Gerätefüßen.

Die Seitenteile, Boden- und Deckblech mussten zugeschnitten werden. Danach enthielten die Bleche folgende Abmessungen:

Front- und Rückblech = 100 x 200mm
Boden- und Deckblech = 100 x 183mm
Seitenbleche = 100 x 83mm

Die Kantenprofile sind jeweils 100mm lang.



Die Frontplatte wollte ich nach der Methode, die ich bereits beim Platinenbelichter erfolgreich umgesetzt habe, gestalten und beschriften. 
Da nach Aufbringen der Frontplattenfolie die Verschraubungen der Hauptplatine und der Tasterplatine nicht mehr sichtbar sein sollten, wurden M3 x 25 Senkkopfschrauben in die Bohrungen eingeklebt.




Die Frontplatte wurde mit Inkscape entworfen, ausgedruckt, auf Passgenauigkeit geprüft und etwas coloriert. 


Anschließend wurde der Ausdruck laminiert und auf die Alufront aufgeklebt



Die hellen Schnittkanten habe ich mit einem Edding geschwärzt.



Es folgte die Endmontage:





Es gibt also eine brauchbare Alternative zum Fertiggehäuse.

Sonntag, 30. August 2015

Ein Display für den Raspberry Pi

Es ist schön, wenn man bei verschiedenen Anwendungen des Raspberry nicht einen Remote Desktop oder einen Monitor nutzen muss, sondern direkt am Gerät via Display schauen kann, was der kleine so treibt.

Das C-Berry 28 von adma-tec bietet sich dafür an.



Infos zur C library:
http://www.airspayce.com/mikem/bcm2835/


Installation:
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz
tar zxvf bcm2835-1.42.tar.gz
cd bcm2835-1.42
./configure
make
sudo make check
sudo make install

Test:
wget http://admatec.de/sites/default/files/downloads/C-Berry28.tar.gz
tar zxvf C-Berry28.tar.gz
cd C-Berry28/SW/tft_test
make
sudo ./tft_test 


Ein gut dokumentiertes Projekt mit Beispielen zur Ansteuerung des Displays befindet sich hier:
http://www.7soft.de

Dienstag, 21. Juli 2015

LED Platinenbelichter (5)

Gehäusebau à la IKEA

Bei IKEA gab es mal Aufbewahrungskisten namens "Pränt" - leider gibt es die nicht mehr, aber ich hatte noch eine mit den Maßen 30 x 30 x 18 cm übrig. Darin sollte nun mein LED-Belichter sein Zuhause finden.
Eine MDF-Platte dient der räumlichen Trennung von Spannungsversorgung und Belichtungsabteil.


Auf die MDF-Platte habe ich ein vom Gehäuse befreites HP Druckernetzteil (32 V, 2500 mA) montiert und mit einem Hauptschalter versehen. Dazu kamen noch ein zweckentfremdetes USB-Ladegerät eines Mobiltelefons für die 5 V Versorgung und das Relaismodul zum Schalten der LED-Versorgungsspannung.




Den Timer habe ich mit einer Aluminium-Frontplatte versehen. Nach dem Anfertigen der entsprechenden Bauteilausschnitte, habe ich ein Frontplattedesign mit Inkscape entworfen und auf normales Papier ausgedruckt (die Farbe ist handgemalt).


Mit 80 μm Folie laminiert und Kontaktkleber aufgebracht, ist eine brauchbare Frontplatte entstanden.


Aus Aluprofilen ist noch ein Rahmen entstanden ...


... um den Timer auf der Holzkistenfront zu montieren.


Die LED-Platine wurde mit wenigen Punkten Heißkleber am Boden fixiert. Darüber habe ich umlaufend Aluwinkel als Auflage für die Trägerscheibe angeschraubt. Linkerhand wurde noch ein Mikroschalter montiert, um dem Timer zu signalisieren, ob die Klappe offen oder geschlossen ist.


Die Trägerscheibe hat die Abmessungen 180 x 240 x 2 mm und stammt von einem rahmenlosen Bilderhalter (wichtig: ohne UV-Schutzbeschichtung).
Gegen seitliches Verrutschen habe ich kleine selbstklebende Filzstreifen angebracht. Auf der Klappenunterseite ist 4 cm dicker Pulsterschaumstoff mit doppelseitigem Klebeband befestigt. Er soll mit leichtem Andruck für die plane Auflage des Platinenmaterials auf der Belichtungsvorlage sorgen.


Damit die Klappe auch satt schließt, habe ich Kistenverschlüsse verbaut.
Zur Abrundung des äußeren Erscheinungsbildes wurden noch Aluwinkel über die Kanten geklebt bzw. verschraubt und abschließend ein Möbelgriff - ebenfalls von IKEA - zum leichteren Öffnen der Klappe angebracht.


Fertig ist die Laube: