สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
แม้ว่าจะค่อนข้างน่ารำคาญที่จะซื้อ (เพราะไม่มีร้านอินเทอร์เน็ตหลายแห่ง) ฉันพบว่าจำเป็นต้องหารือเกี่ยวกับ STM32 L432KC ชิปนี้สมควรได้รับความรักเป็นพิเศษ เนื่องจากเป็นชิปที่ใช้พลังงานต่ำมาก อย่างไรก็ตาม สำหรับผู้ที่ไม่ได้เป็นเจ้าของ STM32 Arduino Uno สามารถแทนที่ได้ในโปรเจ็กต์นี้ เมื่อต้องการทำสิ่งนี้ เพียงแค่เปลี่ยนพินของอินพุตขัดจังหวะ
มาสร้างเครื่องวัด RPM โดยใช้ STM32 L432KC และเซ็นเซอร์อินฟราเรดกัน โปรแกรมเดียวกันนี้สามารถใช้วัดความเร็วลมได้เช่นกัน คุณลักษณะพลังงานต่ำของไมโครคอนโทรลเลอร์นี้เหมาะสำหรับ IOT
ขั้นตอนที่ 1: โมดูล
สำหรับโครงการของเราวันนี้ เราใช้ MAX7219CWG 8 หลัก เช่นเดียวกับโมดูลอินฟราเรด
ขั้นตอนที่ 2: 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
ฉันไม่