Inhaltsverzeichnis:

State Machine und Multitasking auf Arduino mit SPI-Expandern - Gunook
State Machine und Multitasking auf Arduino mit SPI-Expandern - Gunook

Video: State Machine und Multitasking auf Arduino mit SPI-Expandern - Gunook

Video: State Machine und Multitasking auf Arduino mit SPI-Expandern - Gunook
Video: Livetutorial Arduino: Statemachine 2024, Juli
Anonim
State Machine und Multitasking auf Arduino mit SPI Expandern
State Machine und Multitasking auf Arduino mit SPI Expandern

Letzte Woche bat ich darum, ein System zum Steuern von Feuerwerkskörpern mit einem Arduino zu erstellen. Es brauchte etwa 64 Ausgänge, um die Brände zu kontrollieren. Eine Möglichkeit, dies zu tun, ist die Verwendung von IC-Expandern. Es stehen also 2 Lösungen zur Verfügung:

- ein I2C-Expander, aber er benötigt einen Inverter, wenn Sie den IC einschalten (siehe meine vorherige Anleitung zur endlichen Zustandsmaschine), da alle Ausgänge schnell EIN- und AUSGESCHALTET werden: ein Problem mit Feuerwerkskörpern.

-ein SPI auch einfach zu laufen und ohne Probleme beim Einschalten.

Also beschloss ich, diese Art von Expandern zu studieren. Ich verwende auch eine Zustandsmaschine mit Multitasking, um digitale 16 I/O und 2 analoge Ausgänge zu steuern. Diese Karte wurde entwickelt, um Automatisierungssysteme wie eine SPS zu steuern.

Ich habe auch die Unterschiede und die Übersetzung zwischen den Zeichnungen des Zustandsdiagramms und einem anderen in der Automatisierung häufig verwendeten Graphen untersucht: dem SFC (Sequential Function Chart) basierend auf den früheren Petri-Netzen.

en.wikipedia.org/wiki/Sequential_function_…

fr.wikipedia.org/wiki/Grafcet

Schritt 1: Die Karten und die Schaltkreise

Die Karten und die Schaltungen
Die Karten und die Schaltungen
Die Karten und die Schaltungen
Die Karten und die Schaltungen
Die Karten und die Schaltungen
Die Karten und die Schaltungen

Ich verwende ein Arduino Uno und 2 Arten von DIL-Chips:

- der MCP23S17, 2 x 16 I/O-Expander gesteuert mit SPI

-der MCP4921, DAC 12 Bit, 0/5V

Diese ICs sind sehr günstig und zuverlässig und auch sehr einfach zu verknüpfen und zu programmieren. Auf den Schaltplänen habe ich einige zusätzliche Komponenten wie Entkopplungskondensatoren und Pulldown-Widerstände für die Eingänge verwendet.

Schritt 2: Das Programm zum Ausführen einer Multitask-Zustandsmaschine

Das Programm zum Ausführen einer Multitask-Zustandsmaschine
Das Programm zum Ausführen einer Multitask-Zustandsmaschine
Das Programm zum Ausführen einer Multitask-Zustandsmaschine
Das Programm zum Ausführen einer Multitask-Zustandsmaschine

Die globale Idee ist, digitale I/O zu steuern und währenddessen einen Fade-ON/OFF-Effekt auf LEDs zu starten, die an die beiden analogen Ausgänge angeschlossen sind.

Eine andere Sache, ich mache absichtlich die separate Verbindung der CS-Pins (Chip Select), um mehr Möglichkeiten zu haben, mehr IC auf dem SPI-Bus zu haben. Also habe ich verwendet:

- eine spezielle Bibliothek für den Zustandsautomaten

-eine spezielle Bibliothek für den MCP23S17

-Keine spezielle Bibliothek für den MCP4921, die CS und die SPI-Verbindungssoft ist "praktisch" gemacht.

Sie können auf den Bildern die Übersetzung zwischen der erwarteten Zustandsmaschine und SFC (auf Französisch auch GRAFCET oder gr7 genannt) sehen. Einige gebräuchliche Begriffe: Nebenläufige Zustände, Multitask und Kapselung.

Ich versorge die Bibliotheken und den Quellcode mit vielen Kommentaren. Um es zu lesen und zu verstehen, müssen Sie gleichzeitig auch das Zustandsdiagramm oder den SFC lesen.

Schritt 3: Zum Abschluss

Es klappt!!

Wenn Sie das System einschalten, warten Sie einige Sekunden und verwenden dann den Expander (Zeit zum Initiieren des SPI-Busses).

Das System reagiert sehr schnell und Sie müssen eine Stromschnittstellenkarte erstellen, wenn Sie eine beliebige Maschine steuern möchten. Siehe meine vorherigen instructables, es ist sehr einfach !!

Dank sehr interessanter und funktionierender Tutorials auf der ganzen Welt.

Handbuch4371.

Empfohlen: