Inhoudsopgave:

State Machine en multitasking op Arduino met SPI-expanders - Ajarnpa
State Machine en multitasking op Arduino met SPI-expanders - Ajarnpa

Video: State Machine en multitasking op Arduino met SPI-expanders - Ajarnpa

Video: State Machine en multitasking op Arduino met SPI-expanders - Ajarnpa
Video: #BB5 Moving your Arduino to a multi-tasking State Machine - Easy Intro 2024, November
Anonim
State Machine en multitasking op Arduino met SPI-expanders
State Machine en multitasking op Arduino met SPI-expanders

Vorige week vroeg ik om een systeem te maken om vuurwerk te besturen met een Arduino. Er waren ongeveer 64 uitgangen nodig om de branden te beheersen. Een manier om dit te doen is om IC-uitbreidingen te gebruiken. Er zijn dus 2 oplossingen beschikbaar:

- een I2C-uitbreiding, maar deze heeft een omvormer nodig wanneer u de IC inschakelt (zie mijn vorige instructable op finite state machine) omdat alle uitgangen snel AAN en UIT gaan: een probleem met vuurwerk.

-een SPI ook gemakkelijk te gebruiken en zonder problemen bij het inschakelen.

Dus besloot ik dit soort expanders te bestuderen. Ik gebruik ook een state-machine met multitasking om digitale 16 I/O en 2 analoge uitgangen aan te sturen. Deze kaart is ontworpen om automatiseringssystemen zoals een PLC te besturen.

Ik heb ook de verschillen en de vertaling bestudeerd tussen de tekeningen van het toestandsdiagram en een andere grafiek die veel in de automatisering wordt gebruikt: de SFC (Sequentiële Functiekaart) op basis van de voormalige petrinets.

en.wikipedia.org/wiki/Sequentiële_functie_…

fr.wikipedia.org/wiki/Grafcet

Stap 1: De kaarten en de circuits

De kaarten en de circuits
De kaarten en de circuits
De kaarten en de circuits
De kaarten en de circuits
De kaarten en de circuits
De kaarten en de circuits

Ik gebruik een arduino uno en 2 soorten DIL-chips:

- de MCP23S17, 2 x 16 I/O expander aangestuurd met SPI

-de MCP4921, DAC 12 bits, 0/5V

Deze IC's zijn erg goedkoop en betrouwbaar en ook nog eens heel makkelijk te koppelen en te programmeren. Op het schema heb ik wat extra componenten gebruikt zoals ontkoppelcondensatoren, pull-down weerstanden voor de ingangen.

Stap 2: Het programma om een Multitask State Machine uit te voeren

Het programma om een Multitask State Machine uit te voeren
Het programma om een Multitask State Machine uit te voeren
Het programma om een Multitask State Machine uit te voeren
Het programma om een Multitask State Machine uit te voeren

Het globale idee is om digitale I/O te besturen en ondertussen een fade ON/OFF-effecten te lanceren op LED's die zijn aangesloten op de beide analoge uitgangen.

Een ander ding, ik doe met opzet de aparte aansluiting van de CS-pinnen (chip select) om meer mogelijkheden te hebben voor meer IC op de SPI-bus. Dus ik gebruikte:

- een speciale bibliotheek voor de staatsmachine

-een speciale bibliotheek voor de MCP23S17

- GEEN speciale bibliotheek voor de MCP4921, de CS en de SPI-verbinding is zacht "handig" gedaan.

Je kunt op de foto's de vertaling zien tussen de verwachte toestandsmachine en SFC (ook wel GRAFCET of gr7 in het frans genoemd). Enkele veel voorkomende termen: gelijktijdige toestanden, multitasken en inkapseling.

Ik voorzie de bibliotheken en de broncode van veel commentaar. Om het te lezen en te begrijpen, moet u tegelijkertijd ook het toestandsdiagram of de SFC lezen.

Stap 3: Tot slot

Het werkt!!

Wanneer u het systeem opstart, wacht u een paar seconden en gebruikt u dan de uitbreiding (tijd om de SPI-bus te starten).

Het systeem reageert zeer snel en u moet een stroominterfacekaart maken als u welke machine dan ook wilt besturen. Zie mijn vorige instructables, het is heel gemakkelijk !!

Dank aan zeer interessante en werkende tutorials over de hele wereld.

Manu4371.

Aanbevolen: