สารบัญ:

State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน
State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน

วีดีโอ: State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน

วีดีโอ: State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน
วีดีโอ: #BB5 Moving your Arduino to a multi-tasking State Machine - Easy Intro 2024, กรกฎาคม
Anonim
State Machine และมัลติทาสกิ้งบน Arduino ด้วย SPI Expanders
State Machine และมัลติทาสกิ้งบน Arduino ด้วย SPI Expanders

สัปดาห์ที่แล้ว ฉันขอให้สร้างระบบเพื่อขับดอกไม้ไฟด้วย Arduino มันต้องการประมาณ 64 เอาต์พุตเพื่อควบคุมไฟ วิธีหนึ่งที่ทำได้คือการใช้ตัวขยาย IC มี 2 โซลูชั่นให้เลือก:

- ตัวขยาย I2C แต่ต้องใช้อินเวอร์เตอร์เมื่อคุณเปิด IC (ดูคำสั่งก่อนหน้าของฉันบนเครื่องสถานะ จำกัด) เพราะเอาต์พุตทั้งหมดเปิดและปิดอย่างรวดเร็ว: ปัญหากับดอกไม้ไฟ

-SPI ยังใช้งานง่ายและไม่มีปัญหาในการเปิดเครื่อง

ดังนั้นฉันจึงตัดสินใจศึกษาตัวขยายประเภทนี้ ฉันยังใช้เครื่องสถานะที่มีการทำงานหลายอย่างพร้อมกันเพื่อควบคุม 16 I/O แบบดิจิตอลและ 2 เอาต์พุตแบบอะนาล็อก การ์ดใบนี้ออกแบบมาเพื่อควบคุมระบบอัตโนมัติ เช่น PLC

ฉันยังศึกษาความแตกต่างและการแปลระหว่างภาพวาดของไดอะแกรมสถานะและกราฟอีกอันที่ใช้ในระบบอัตโนมัติ: SFC (Sequential Function Chart) ตาม Petri nets เดิม

th.wikipedia.org/wiki/Sequential_function_…

fr.wikipedia.org/wiki/Grafcet

ขั้นตอนที่ 1: การ์ดและวงจร

การ์ดและวงจร
การ์ดและวงจร
การ์ดและวงจร
การ์ดและวงจร
การ์ดและวงจร
การ์ดและวงจร

ฉันใช้ Arduino uno และชิป DIL 2 ประเภท:

- MCP23S17 ตัวขยายสัญญาณ I/O 2 x 16 ที่ควบคุมด้วย SPI

-MCP4921, DAC 12 บิต, 0/5V

IC เหล่านี้มีราคาถูกและเชื่อถือได้ และยังเชื่อมโยงและตั้งโปรแกรมได้ง่ายมาก ในแผนผังฉันใช้ส่วนประกอบเพิ่มเติมบางอย่าง เช่น ตัวเก็บประจุแบบแยกส่วน ตัวต้านทานแบบดึงลงสำหรับอินพุต

ขั้นตอนที่ 2: โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์

โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์
โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์
โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์
โปรแกรมเรียกใช้เครื่องสถานะมัลติทาสก์

แนวคิดระดับโลกคือการควบคุม I/O แบบดิจิทัล และในขณะเดียวกันก็เปิดใช้เอฟเฟกต์เปิด/ปิดแบบเฟดบน LEDS ที่เชื่อมต่อกับเอาท์พุตแอนะล็อกทั้งสอง

อีกสิ่งหนึ่งฉันทำโดยมีวัตถุประสงค์เพื่อเชื่อมต่อหมุด CS แยกต่างหาก (การเลือกชิป) เพื่อให้มีความเป็นไปได้มากขึ้นใน IC เพิ่มเติมบนบัส SPI ดังนั้นฉันจึงใช้:

- ห้องสมุดพิเศษสำหรับเครื่องรัฐ

- ห้องสมุดพิเศษสำหรับ MCP23S17

- ไม่มีไลบรารีพิเศษสำหรับ MCP4921, CS และซอฟต์การเชื่อมต่อ SPI นั้น "สะดวก" เสร็จแล้ว

คุณสามารถเห็นภาพการแปลระหว่างเครื่องสถานะที่คาดหวังและ SFC (เรียกอีกอย่างว่า GRAFCET หรือ gr7 ในภาษาฝรั่งเศส) คำศัพท์ทั่วไปบางคำ: สถานะพร้อมกัน มัลติทาสก์ และการห่อหุ้ม

ฉันให้ความคิดเห็นมากมายแก่ไลบรารีและซอร์สโค้ด หากต้องการอ่านและทำความเข้าใจ คุณต้องอ่านแผนภาพสถานะหรือ SFC พร้อมกัน

ขั้นตอนที่ 3: เพื่อสรุป

มันได้ผล!!

เมื่อคุณเปิดเครื่อง คุณต้องรอสองสามวินาทีแล้วใช้ตัวขยาย (เวลาเริ่มต้นบัส SPI)

ระบบมีปฏิกิริยาที่รวดเร็วมาก และคุณจำเป็นต้องสร้างการ์ดอินเทอร์เฟซสำหรับพลังงาน หากคุณต้องการควบคุมเครื่องใดก็ตาม ดูคำแนะนำก่อนหน้าของฉัน มันง่ายมาก!!

ขอบคุณบทเรียนที่น่าสนใจและใช้งานได้ทั่วโลก

มนู4371.

แนะนำ: