RPM Meter พร้อม STM32: 8 ขั้นตอน
RPM Meter พร้อม STM32: 8 ขั้นตอน
RPM เมตรพร้อม STM32
RPM เมตรพร้อม STM32

แม้ว่าจะค่อนข้างน่ารำคาญที่จะซื้อ (เพราะไม่มีร้านอินเทอร์เน็ตหลายแห่ง) ฉันพบว่าจำเป็นต้องหารือเกี่ยวกับ STM32 L432KC ชิปนี้สมควรได้รับความรักเป็นพิเศษ เนื่องจากเป็นชิปที่ใช้พลังงานต่ำมาก อย่างไรก็ตาม สำหรับผู้ที่ไม่ได้เป็นเจ้าของ STM32 Arduino Uno สามารถแทนที่ได้ในโปรเจ็กต์นี้ เมื่อต้องการทำสิ่งนี้ เพียงแค่เปลี่ยนพินของอินพุตขัดจังหวะ

มาสร้างเครื่องวัด RPM โดยใช้ STM32 L432KC และเซ็นเซอร์อินฟราเรดกัน โปรแกรมเดียวกันนี้สามารถใช้วัดความเร็วลมได้เช่นกัน คุณลักษณะพลังงานต่ำของไมโครคอนโทรลเลอร์นี้เหมาะสำหรับ IOT

ขั้นตอนที่ 1: โมดูล

โมดูล
โมดูล
โมดูล
โมดูล

สำหรับโครงการของเราวันนี้ เราใช้ MAX7219CWG 8 หลัก เช่นเดียวกับโมดูลอินฟราเรด

ขั้นตอนที่ 2: STM32 NUCLEO-L432KC

STM32 NUCLEO-L432KC
STM32 NUCLEO-L432KC

ขั้นตอนที่ 3: การสาธิต

สาธิต
สาธิต

ในชุดประกอบของเรา เรามี STM32 จอแสดงผล 8 หลัก และอินพุตพัลส์ การ์ดอินฟราเรดมีโฟโตทรานซิสเตอร์และไฟ LED ที่รับแสงโดยการสะท้อนริบบิ้นสีขาว เทปนี้ติดอยู่กับวงล้อและในแต่ละเทิร์นจะสร้างพัลส์ซึ่งจะถูกดักจับโดย STM32 ขัดจังหวะ

เรามีไดโอดและตัวเก็บประจุในแอสเซมบลีซึ่งใช้กันเสียงของสัญญาณการอ่านเทปไม่ให้ไปถึง STM32 ซึ่งจะทำให้มันตีความการเปิดและปิด

การสาธิตแสดงให้เห็นโครงการของเรา เช่นเดียวกับมิเตอร์ Minipa (ทั้งที่กำลังทำงานอยู่)

ขั้นตอนที่ 4: การประกอบ

การประกอบ
การประกอบ

ขั้นตอนที่ 5: โปรแกรม

เราจะทำโปรแกรมที่โมดูลอินฟราเรดจะทริกเกอร์การขัดจังหวะใน STM32 L432KC ทุกๆ "เทิร์น" และเราจะทำการคำนวณเพื่อแสดง RPM บนจอแสดงผล

ขั้นตอนที่ 6: ห้องสมุด

ห้องสมุด
ห้องสมุด

เพิ่มไลบรารี "DigitLedDisplay" ต่อไปนี้

เพียงเข้าไปที่ "Sketch >> Include Libraries >> Manage Libraries …"

ขั้นตอนที่ 7: รหัสที่มา

ไลบรารีและตัวแปร

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

/* รวมไลบรารี DigitLedDisplay */#include "DigitLedDisplay.h" /* Arduino Pin to Display Pin 7 ถึง DIN, 6 ถึง CS, 5 ถึง CLK */ // DigitLedDisplay ld = DigitLedDisplay (7, 6, 5); //arduino DigitLedDisplay ld = DigitLedDisplay (4, 2, 3); //STM32 L432KC int pin = 12; //pino de interrupção (módulo IR) int rpm ที่ไม่ได้ลงนามแบบระเหยได้; //contador de rpm ระเหย unsigned นาน timeold; //จังหวะ

ติดตั้ง

ในการตั้งค่า เรากำหนดค่าการดำเนินการแสดงผล รวมทั้งกำหนดค่าการหยุดชะงักเป็น Rising

การตั้งค่าเป็นโมฆะ () {Serial.begin (115200); /* ตั้งค่าความสว่าง min:1, max:15 */ ld.setBright(10); /* กำหนดจำนวนหลัก */ ld.setDigitLimit(8); ld.printDigit(0); AttachInterrupt(digitalPinToInterrupt(pin), interruptPin, RISING); รอบต่อนาที = 0; หมดเวลา = มิลลิวินาที (); }

ห่วง

สุดท้าย เรากำหนดช่วงเวลา 1 ใน 1 นาทีเพื่ออัปเดตการแสดงผล หลังจากทำความสะอาดหน้าจอ เราจะพิมพ์ RPM เราทำหน้าที่ที่ขัดจังหวะจะเรียก เราคำนวณ RPM และอัปเดตเวลา

วงเป็นโมฆะ () { ล่าช้า (1000); ld.clear(); ld.printDigit (รอบต่อนาที); } โมฆะ interruptPin() { รอบต่อนาที = 60*1000/(มิลลิวินาที () - หมดเวลา); หมดเวลา = มิลลิวินาที (); }

ขั้นตอนที่ 8: ไฟล์

ดาวน์โหลดไฟล์:

ไฟล์ PDF

ฉันไม่

แนะนำ: