สารบัญ:

การวัดความเร็วมอเตอร์ด้วย Arduino: 6 ขั้นตอน
การวัดความเร็วมอเตอร์ด้วย Arduino: 6 ขั้นตอน

วีดีโอ: การวัดความเร็วมอเตอร์ด้วย Arduino: 6 ขั้นตอน

วีดีโอ: การวัดความเร็วมอเตอร์ด้วย Arduino: 6 ขั้นตอน
วีดีโอ: สอน เขียนโปรแกรม ภาษาซี Arduino | Uno R3 การต่อ และควบคุม มอเตอร์ 1 ตัว #EP11 2024, กรกฎาคม
Anonim
การวัดความเร็วมอเตอร์ด้วย Arduino
การวัดความเร็วมอเตอร์ด้วย Arduino
การวัดความเร็วมอเตอร์ด้วย Arduino
การวัดความเร็วมอเตอร์ด้วย Arduino
การวัดความเร็วมอเตอร์ด้วย Arduino
การวัดความเร็วมอเตอร์ด้วย Arduino

วัดรอบมอเตอร์ยากไหม ??? ผมว่าไม่นะ นี่เป็นวิธีแก้ปัญหาง่ายๆ

มีเพียงเซ็นเซอร์ IR และ Arduino ในชุดของคุณเท่านั้นที่สามารถทำได้

ในโพสต์นี้ ฉันจะให้บทช่วยสอนง่ายๆ ที่อธิบายวิธีวัด RPM ของมอเตอร์โดยใช้เซ็นเซอร์ IR และ Arduino UNO/นาโน

เสบียง:

1. Arduion uno(อเมซอน) / Arduion นาโน(อเมซอน)

2. เซ็นเซอร์อินฟราเรด (อเมซอน)

3. มอเตอร์ DC ใดๆ (Amazon)

4. LCD 16*2 (อเมซอน)

เครื่องมือที่ใช้

1. หัวแร้ง (อเมซอน)

2. คีมปอกสายไฟ (อเมซอน)

ขั้นตอนที่ 1: ขั้นตอนที่: 1 ตรวจสอบสภาพการทำงานของเซ็นเซอร์และอุปกรณ์

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

มอเตอร์กระแสตรงคืออะไร? มอเตอร์กระแสตรง (DC) เป็นเครื่องจักรไฟฟ้าชนิดหนึ่งที่แปลงพลังงานไฟฟ้าเป็นพลังงานกล มอเตอร์กระแสตรงใช้พลังงานไฟฟ้าผ่านกระแสตรง และแปลงพลังงานนี้เป็นการหมุนทางกล

มอเตอร์กระแสตรงใช้สนามแม่เหล็กที่เกิดขึ้นจากกระแสไฟฟ้าที่สร้างขึ้น ซึ่งให้พลังงานแก่การเคลื่อนที่ของโรเตอร์ที่ติดอยู่ภายในเพลาขาออก แรงบิดและความเร็วของเอาต์พุตขึ้นอยู่กับทั้งอินพุตไฟฟ้าและการออกแบบของมอเตอร์

Arduino คืออะไร?

Arduino เป็นแพลตฟอร์มอิเล็กทรอนิกส์แบบโอเพ่นซอร์สที่ใช้ฮาร์ดแวร์และซอฟต์แวร์ที่ใช้งานง่าย บอร์ด Arduino สามารถอ่านอินพุต - ไฟบนเซ็นเซอร์, นิ้วบนปุ่มหรือข้อความ Twitter - และเปลี่ยนเป็นเอาต์พุต - เปิดใช้งานมอเตอร์, เปิด LED, เผยแพร่บางสิ่งทางออนไลน์ คุณสามารถบอกบอร์ดของคุณว่าต้องทำอะไรโดยส่งชุดคำสั่งไปยังไมโครคอนโทรลเลอร์บนบอร์ด ในการทำเช่นนี้คุณใช้ภาษาการเขียนโปรแกรม Arduino (ตาม Wiring) และซอฟต์แวร์ Arduino (IDE) ตามการประมวลผล

ดาวน์โหลด ARDUINO IDE

ขั้นตอนที่ 2: มันทำงานอย่างไร

แล้วตรรกะที่อยู่เบื้องหลังนี้คืออะไร ??

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

ในกรณีนี้ เซ็นเซอร์ IR จะส่งพัลส์ไปยัง Arduino เมื่อลำแสง IR ของมันถูกสกัดกั้นด้วยใบพัดของมอเตอร์ ปกติเราใช้ใบพัดแบบ 2 ใบพัด แต่ผมใช้ใบพัดแบบ 3 ใบพัด ดังรูป ขึ้นอยู่กับจำนวนใบพัดที่เราจำเป็นต้องแก้ไขค่าบางอย่างในขณะที่คำนวณ RPM

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

ตอนนี้ เราต้องเขียนโปรแกรมที่สามารถวัดจำนวนพัลส์ที่สร้างโดยเซ็นเซอร์ IR ในช่วงเวลาหนึ่งๆ

มีวิธีแก้ปัญหามากกว่าหนึ่งวิธี แต่เราต้องเลือกวิธีที่ดีที่สุดในรหัสนี้ ฉันได้วัดระยะเวลาระหว่างการขัดจังหวะ (เซ็นเซอร์ IR) ฉันใช้ฟังก์ชัน micros() เพื่อวัดระยะเวลาของพัลส์ในหน่วยไมโครวินาที

คุณสามารถใช้สูตรนี้เพื่อวัด RPMRPM = ((1/duration)*1000*1000*60)/blades

โดยที่ ระยะเวลา - ช่วงเวลาระหว่างพัลส์

60 - วินาที เป็น นาที

1000 - มิลลิวินาที ถึง มิลลิวินาที

1,000 - ไมโครถึงมิลลิวินาที

ใบมีด - ไม่มีปีกในใบพัด

จอแสดงผล LCD - Arduino อัปเดตคำสั่งและการลงทะเบียนข้อมูลของจอ LCD ซึ่งแสดงอักขระ ASCII บนจอ LCD

ขั้นตอนที่ 3: ตั้งโปรแกรม Arduino ของคุณโดยใช้ Arduino IDE

#รวม

LiquidCrystal LCD (9, 8, 7, 6, 5, 4); const int IR_IN = 2; // เซ็นเซอร์ IR INPUT ไม่ได้ลงนาม prevmicros แบบยาว // เพื่อเก็บระยะเวลานานที่ไม่ได้ลงนาม; // เพื่อเก็บความแตกต่างของเวลาที่ไม่ได้ลงนาม lcdrefresh แบบยาว // เพื่อจัดเก็บเวลาสำหรับ LCD เพื่อรีเฟรช int rpm; // ค่า RPM บูลีนสถานะปัจจุบัน; // สถานะปัจจุบันของอินพุต IR สแกนบูลีน prevstate; // สถานะของเซ็นเซอร์ IR ในการตั้งค่าโมฆะการสแกนก่อนหน้า () { pinMode (IR_IN, INPUT); lcd.begin(16, 2); prevmicros = 0; prevstate = ต่ำ; } วงเป็นโมฆะ () { ////////////////////////////////////////// //////////////////////////////////// RPM วัดค่าสถานะปัจจุบัน = digitalRead (IR_IN); // อ่านสถานะเซ็นเซอร์อินฟราเรด if (prevstate != currentstate) // หากมีการเปลี่ยนแปลงอินพุต { if (currentstate == LOW) // หากอินพุตเปลี่ยนจาก HIGH เป็น LOW เท่านั้น (duration = (micros () - prevmicros); // ความแตกต่างของเวลาระหว่างการปฏิวัติในไมโครวินาที rpm = ((60000000/duration)/3); // รอบต่อนาที = (1/ มิลลิวินาที)*1000*1000*60; prevmicros = ไมโคร (); // เก็บเวลาสำหรับการคำนวณ nect Revolution } } prevstate = currentstate; // เก็บข้อมูลการสแกนนี้ (การสแกนก่อนหน้า) สำหรับการสแกนครั้งต่อไป /////////////////////////////////// /////////////////////////////////////////////// จอแสดงผล LCD ถ้า ((มิลลิวินาที()-lcdrefresh) >= 100) { lcd.clear(); lcd.setCursor(0, 0); lcd.print("ความเร็วของมอเตอร์"); lcd.setCursor(0, 1); lcd.print ("รอบต่อนาที = "); lcd.print(รอบต่อนาที); lcdrefresh = มิลลิวินาที (); } }

ขั้นตอนที่ 4: การจำลองโดยใช้ Proteus

การจำลองโดยใช้ Proteus
การจำลองโดยใช้ Proteus

โปรเจ็กต์นี้ทำงานได้ดีอย่างสมบูรณ์เมื่อฉันพยายามจำลองสิ่งนี้ด้วยความช่วยเหลือของโพรทูส

แทนที่จะใช้เซ็นเซอร์ IR ฉันใช้เครื่องกำเนิดพัลส์ DC ซึ่งจะจำลองพัลส์ IR คล้ายกับที่สร้างขึ้นเมื่อรังสีอินฟราเรดกระทบใบพัด

คุณต้องทำการเปลี่ยนแปลงโปรแกรมของคุณขึ้นอยู่กับเซ็นเซอร์ที่คุณใช้

IR sensor กับ LM358 ต้องใช้คำสั่งนี้

if(currentstate == HIGH) // ถ้าอินพุตเปลี่ยนจาก LOW เป็น HIGH

IR sensor กับ LM359 ต้องใช้คำสั่งนี้

if(currentstate == LOW) // ถ้าอินพุตเปลี่ยนจาก HIGH เป็น LOW

ขั้นตอนที่ 5: การดำเนินการฮาร์ดแวร์

การดำเนินการฮาร์ดแวร์
การดำเนินการฮาร์ดแวร์
การดำเนินการฮาร์ดแวร์
การดำเนินการฮาร์ดแวร์
การดำเนินการฮาร์ดแวร์
การดำเนินการฮาร์ดแวร์

สำหรับแผนผังให้ใช้ภาพจำลองหรืออ้างอิงรหัสโปรแกรมและทำการเชื่อมต่อตามลำดับ อัปโหลดรหัสโปรแกรมไปยัง Arduino และวัด RPM ของมอเตอร์ใด ๆ คอยติดตามโพสต์ต่อไปของฉันและดูช่อง YouTube ของฉัน

แนะนำ: