Talaan ng mga Nilalaman:

State Machine at Multitasking sa Arduino Sa Mga SPI Expander: 3 Hakbang
State Machine at Multitasking sa Arduino Sa Mga SPI Expander: 3 Hakbang

Video: State Machine at Multitasking sa Arduino Sa Mga SPI Expander: 3 Hakbang

Video: State Machine at Multitasking sa Arduino Sa Mga SPI Expander: 3 Hakbang
Video: Arduino: Using a state machine (2 Solutions!!) 2024, Hulyo
Anonim
State Machine at Multitasking sa Arduino Sa Mga SPI Expander
State Machine at Multitasking sa Arduino Sa Mga SPI Expander

Noong nakaraang linggo, humihiling ako na lumikha ng isang sistema upang mag-pilot ng mga paputok kasama ang isang arduino. Kailangan nito ng halos 64 output upang makontrol ang sunog. Ang isang paraan upang magawa ito ay ang paggamit ng mga nagpapalawak ng IC. Magagamit ang 2 mga solusyon:

- isang expander ng I2C ngunit kailangan nito ng inverter kapag nagpapatakbo ka sa IC (tingnan ang dati kong itinuturo sa may wakas na makina ng estado) dahil lahat ng mga output ay mabilis na ON at OFF: isang problema sa mga paputok.

-isang SPI din madaling patakbuhin at walang problema sa kapangyarihan sa.

Kaya't nagpasya akong pag-aralan ang ganitong uri ng mga nagpapalawak. Gumagamit din ako ng state machine na may multitasking upang makontrol ang digital 16 I / O at 2 analog output. Ang kard na ito ay idinisenyo upang makontrol ang mga system ng awtomatiko tulad ng isang PLC.

Pinag-aralan ko rin ang mga pagkakaiba at ang salin sa pagitan ng mga guhit ng diagram ng estado at isa pang grap na mabigat na ginamit sa pag-automate: ang SFC (Sequential Function Chart) batay sa dating mga Petri net.

en.wikipedia.org/wiki/Sequential_unction_…

fr.wikipedia.org/wiki/Grafcet

Hakbang 1: Ang Mga Card at ang Circuits

Ang mga Card at ang Circuits
Ang mga Card at ang Circuits
Ang mga Card at ang Circuits
Ang mga Card at ang Circuits
Ang mga Card at ang Circuits
Ang mga Card at ang Circuits

Gumagamit ako ng isang arduino uno at 2 uri ng DIL chips:

- ang MCP23S17, 2 x 16 I / O expander ay kontrolado sa SPI

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

Ang Thes IC ay napakamura at maaasahan at napakadaling mag-link at mag-program. Sa mga eskematiko ginamit ko ang ilang mga karagdagang sangkap tulad ng pag-decoupling ng mga capacitor, mga pull-down resistor para sa mga input.

Hakbang 2: Ang Programa upang Patakbuhin ang isang Multitask State Machine

Ang Programa upang Patakbuhin ang isang Multitask State Machine
Ang Programa upang Patakbuhin ang isang Multitask State Machine
Ang Programa upang Patakbuhin ang isang Multitask State Machine
Ang Programa upang Patakbuhin ang isang Multitask State Machine

Ang pandaigdigang ideya ay upang makontrol ang digital I / O at pansamantala ilunsad ang isang fade ON / OFF na mga epekto sa LEDS na konektado sa parehong mga analog output.

Isa pang bagay, gagawin ko nang sadya ang magkakahiwalay na koneksyon ng mga CS pin (chip select) upang magkaroon ng maraming posibilidad sa mas maraming IC sa SPI bus. Kaya ginamit ko:

- isang espesyal na silid-aklatan para sa makina ng estado

-isang espesyal na silid-aklatan para sa MCP23S17

-Walang espesyal na silid-aklatan para sa MCP4921, ang CS at ang malambot na koneksyon ng SPI ay "madaling gamiting" tapos na.

Maaari mong makita sa mga larawan ang translation beet pagitan ng inaasahang machine ng estado at SFC (tinatawag ding GRAFCET o gr7 sa pranses). Ang ilang mga karaniwang termino: kasabay na mga estado, multitask at encapsulation.

Nagbibigay ako ng mga aklatan at ang source code na may maraming mga puna. Upang mabasa at maunawaan ito, dapat mo ring basahin nang sabay na ang diagram ng estado o ang SFC.

Hakbang 3: Upang Magtapos

Gumagana siya!!

Kapag pinapagana mo ang system AY naghihintay ka ng ilang segundo at pagkatapos ay ginagamit ang expander (oras upang simulan ang SPI bus).

Ang sistema ay may napakabilis na reaksyon at kailangan mong lumikha ng isang power interface card kung nais mong kontrolin ang anumang makina. Tingnan ang aking nakaraang mga itinuturo, Napakadali !!

Kaysa sa napaka kawili-wili at gumaganang mga tutorial sa buong mundo.

Manu4371.

Inirerekumendang: