AdSense

Mittwoch, 21. August 2013

Arduino als Logic Analyzer

Wie in einem meiner "Home Automation"-Beiträge versprochen, erkläre ich in diesem Beitrag, wie man ganz einfach in wenigen Schritten das Arduino-Board als einen Logic Analyzer verwenden kann.

Zuerst muss die nötige Software für den Arduino herunter geladen werden. Diese ist HIER erhältlich. Je nachdem, ob ihr Sampling-Raten von 2 oder 4 Mhz benötigt oder ob euch maximal 1 Mhz ausreichen, muss dort der passende Sketch herunter geladen und auf den Arduino gespielt werden. Außerdem muss muss noch die Datei "ols.profile-agla.cfg" herunter geladen werden. Diese wird später benötigt.

Nachdem ihr den Sketch auf euren Arduino gespielt habt, könnte ihr probehalber den Serial Monitor öffnen, eine Baud-Rate von 115200 einstellen und entweder eine 1 oder eine 2 über die serielle Schnittstelle an den Arduino schicken. Wenn er mit einer Statusmeldung antwortet, hat soweit alles geklappt.

Als nächstes brauchen wir eine Software, die die analysierten Daten sauber auf dem PC darstellt. Dazu verwenden wir das Programm "Logic Sniffer". Das Programm basiert auf Java, kann also sowohl unter Windows als auch unter Linux verwendet werden. Ladet unter "Download" die neueste Version herunter und entpackt sie. In den Ordner "plugins" kommt die vorher herunter geladene Datei "ols.profile-agla.cfg. Nun kann das Programm gestartet werden - je nach OS mit run.bat oder run.sh. Es öffnet sich die Benutzeroberfläche:
Mit einem Klick auf "Capture"-"Begin capture" öffnet sich folgendes Fenster:
Hier stellt ihr den COM-Port ein, an dem der Arduino hängt. Im Zweifel muss auch die Baud-Rate noch passend eingestellt werden. Bei "Device type" muss der Arduino ausgewählt werden. Ein Klick auf "Show device metadata" sollte dann diverse Daten zum Vorschein bringen.
Im folgenden Reiter "Acquisition" können Details zur Datenerfassung wie z.B. die Sampling-Rate oder die Aufnahmegröße eingestellt werden.
Im letzten Reiter "Triggers" kann nun noch eingestellt werden, ob die Aufnahme durch einen Trigger gestartet werden soll. Ein Haken in der Mask-Reihe gibt an, welcher Kanal getriggert werden soll. Value gibt an, ob bei einem HIGH-Pegel (Haken gesetzt) oder bei einem LOW-Pegel (kein Haken gesetzt) aufgenommen werden soll. Die "Before/After ratio" gibt an, welcher Zeitraum vor und nach dem Trigger ausgegeben werden soll. Im abgebildeten Beispiel werden also 5% der Zeit VOR dem Trigger und 95% der Zeit NACH dem Trigger ausgegeben.

Falls noch nicht geschehen, schließt nun das zu untersuchende Signal an den Arduino an. Dabei entspricht der Kanal 0 dem Pin 8 am Arduino, Kanal 1 ist Pin 9 usw. 6 Kanäle werden unterstützt.

Wenn alles passend eingestellt und angeschlossen ist, kann der "Capture"-Knopf gedrückt werden. Wenn ihr alles richtig gemacht habt, solltet ihr nun euer Signal auf dem Bildschirm vor euch sehen:

Natürlich kann dieser Logic Analyzer nicht mit "großen" Geräten mithalten. Vorallem der Speicher für eure Aufnahmen ist begrenzt. Man kann also nur recht kurze Signale bei geringen Sampling-Raten untersuchen. Für kleine Projekte sollte es aber auf jeden Fall reichen.

1 Kommentar:

  1. Sollte noch erwähnt werden, wie der serielle UART des Arduino mittels Pegelwandler an die serielle Schnittstelle des PC (USB RS232 5V TTL Adapter) angeschlossen wird und dass die digitalen I/O Pins des UNO mit TTL - Logik arbeiten (0-5V) und nicht LVTTL (0-3,3V).

    AntwortenLöschen