Arduino Tachometer Circuit สำหรับการอ่านที่แม่นยำ

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





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

โดย Ankit Negi



เครื่องวัดวามเร็วประกอบด้วยตัวนับและตัวจับเวลาทั้งสองอย่างนี้ทำงานร่วมกันให้ RPM ในโครงการของเราเราจะทำเช่นเดียวกันโดยใช้ Arduino ของเราและเซ็นเซอร์บางตัวเราจะติดตั้งทั้งตัวนับและตัวจับเวลาและพัฒนาตัวจับเวลาที่สะดวกและง่ายของเรา .

ข้อกำหนดเบื้องต้น

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



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

ใน Arduino Uno ของเรามีตัวจับเวลาที่ไม่เพียง แต่ติดตามเวลา แต่ยังรักษาฟังก์ชันที่สำคัญบางอย่างของ Arduino ไว้ด้วย ใน Uno เรามีตัวจับเวลา 3 ตัวชื่อ Timer0, Timer1 และ Timer2 ตัวจับเวลาเหล่านี้มีฟังก์ชันต่อไปนี้ - • Timer0- สำหรับฟังก์ชัน Uno เช่น delay (), millis (), micros () หรือ delaymicros ()

• Timer1- สำหรับการทำงานของห้องสมุดเซอร์โว

• Timer2- สำหรับฟังก์ชั่นเช่น tone (), notone ()

นอกจากฟังก์ชั่นเหล่านี้ตัวจับเวลาทั้ง 3 ตัวนี้ยังรับผิดชอบในการสร้างเอาต์พุต PWM เมื่อใช้คำสั่ง analogWrite () ในพินที่กำหนดของ PMW

แนวคิดของการขัดจังหวะ

ใน Arduino Uno มีเครื่องมือที่ซ่อนอยู่ซึ่งสามารถให้การเข้าถึงฟังก์ชันมากมายแก่เราที่เรียกว่า Timer Interrupts การขัดจังหวะคือชุดของเหตุการณ์หรือคำสั่งที่ดำเนินการเมื่อถูกเรียกว่าขัดจังหวะการทำงานปัจจุบันของอุปกรณ์กล่าวคือไม่ว่าจะเกิดอะไรขึ้น รหัสที่ Uno ของคุณกำลังดำเนินการมาก่อน แต่เมื่อ Interrupt เรียกว่า Arduino ดำเนินการตามคำสั่งที่กล่าวถึงใน Interrupt

แม่เหล็กบนเพลามอเตอร์

ตอนนี้ Interrupt สามารถเรียกใช้ในเงื่อนไขบางอย่างที่กำหนดโดยผู้ใช้โดยใช้ Arduino Syntax ในตัวเราจะใช้ Interrupt นี้ในโครงการของเราซึ่งทำให้เครื่องวัดวามเร็วของเรามีความแน่วแน่และแม่นยำกว่าโครงการ Tachometer อื่น ๆ ที่มีอยู่ในเว็บ

ส่วนประกอบที่จำเป็นสำหรับโครงการ Tachometer นี้โดยใช้ Arduino

• Hall Effect Sensor (รูปที่ 1)

โมดูลเซ็นเซอร์ผลกระทบห้องโถง

• Arduino Uno

บอร์ด Arduino UNO

•แม่เหล็กขนาดเล็ก

แม่เหล็กขนาดเล็ก

•สายจัมเปอร์

•วัตถุหมุน (เพลามอเตอร์)

มอเตอร์กระแสตรง

การตั้งค่าวงจร

•การตั้งค่าสำหรับการสร้างมีดังนี้ -

•ในเพลาที่จะวัดความเร็วในการหมุนจะติดตั้งแม่เหล็กขนาดเล็กโดยใช้ปืนกาวหรือเทปไฟฟ้า

•เซ็นเซอร์ Hall Effect มีตัวตรวจจับด้านหน้าและ 3 พินสำหรับการเชื่อมต่อ

•หมุด Vcc และ Gnd เชื่อมต่อกับขา 5V และ Gnd ของ Arduino ตามลำดับ ขาเอาต์พุตของเซ็นเซอร์เชื่อมต่อกับพินดิจิทัล 2 ของ Uno เพื่อให้สัญญาณอินพุต

•ส่วนประกอบทั้งหมดได้รับการแก้ไขในบอร์ดยึดและเครื่องตรวจจับฮอลล์จะชี้ออกจากบอร์ด

การเขียนโปรแกรม

int sensor = 2 // Hall sensor at pin 2
volatile byte counts
unsigned int rpm //unsigned gives only positive values
unsigned long previoustime
void count_function()
{ /*The ISR function
Called on Interrupt
Update counts*/
counts++
}
void setup() {
Serial.begin(9600)
//Intiates Serial communications
attachInterrupt(0, count_function, RISING) //Interrupts are called on Rise of Input
pinMode(sensor, INPUT) //Sets sensor as input
counts= 0
rpm = 0
previoustime = 0 //Initialise the values
}
void loop()
{
delay(1000)//Update RPM every second
detachInterrupt(0) //Interrupts are disabled
rpm = 60*1000/(millis() - previoustime)*counts
previoustime = millis() //Resets the clock
counts= 0 //Resets the counter
Serial.print('RPM=')
Serial.println(rpm) //Calculated values are displayed
attachInterrupt(0, count_function, RISING) //Counter restarted
}

อัปโหลดรหัส

รู้รหัส

เครื่องวัดความเร็วรอบของเราใช้เซ็นเซอร์ Hall Effect เซ็นเซอร์ Hall Effect อิงตาม Hall effect ที่ตั้งชื่อตาม Edwin Hall ผู้ค้นพบ

Hall Effect เป็นปรากฏการณ์ของการสร้างแรงดันไฟฟ้าข้ามตัวนำที่มีกระแสไฟฟ้าเมื่อสนามแม่เหล็กถูกนำมาตั้งฉากกับการไหลของกระแสไฟฟ้า แรงดันไฟฟ้าที่สร้างขึ้นเนื่องจากปรากฏการณ์นี้ช่วยในการสร้างสัญญาณอินพุตดังที่กล่าวไว้ว่าจะใช้การขัดจังหวะในโครงการนี้เพื่อเรียกการขัดจังหวะเราต้องตั้งค่าเงื่อนไขบางอย่าง Arduino Uno มี 2 เงื่อนไขในการเรียก Interrupts-

RISING- เมื่อใช้สิ่งนี้อินเตอร์รัปต์จะถูกเรียกทุกครั้งเมื่อสัญญาณอินพุตเปลี่ยนจาก LOW ไปสูง

FALING - เมื่อใช้สิ่งนี้การขัดจังหวะจะถูกเรียกเมื่อสัญญาณจากสูงไปต่ำ

เราได้ใช้ RISING สิ่งที่เกิดขึ้นคือเมื่อแม่เหล็กที่วางอยู่ในเพลาหรือวัตถุที่หมุนอยู่ใกล้กับ Hall detector สัญญาณอินพุตถูกสร้างขึ้นและมีการเรียก Interrupt เข้ามา Interrupt จะเริ่มฟังก์ชัน Interrupt Service Routine (ISR) ซึ่งรวมถึงการเพิ่มขึ้นของ ค่านับจึงเกิดขึ้น

เราได้ใช้ฟังก์ชัน millis () ของ Arduino และ previoustime (ตัวแปร) เพื่อตั้งค่าตัวจับเวลา

ในที่สุด RPM จึงถูกคำนวณโดยใช้ความสัมพันธ์ทางคณิตศาสตร์ -

RPM = จำนวน / เวลาที่ใช้การแปลงมิลลิวินาทีเป็นนาทีและการจัดเรียงใหม่ที่เราได้รับเป็นสูตร = 60 * 1000 / (มิลลิวินาที () - previoustime) * นับ

การหน่วงเวลา (1,000) กำหนดช่วงเวลาหลังจากนั้นค่าของ RPM จะได้รับการอัปเดตบนหน้าจอคุณสามารถปรับการหน่วงเวลานี้ได้ตามความต้องการของคุณ

ค่าของ RPM ที่ได้รับนี้สามารถใช้เพิ่มเติมเพื่อคำนวณความเร็วสัมผัสของวัตถุที่หมุนได้โดยใช้ความสัมพันธ์ - v = (3.14 * D * N) / 60 m / s

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

แทนที่จะพิมพ์ค่าไปยังจอภาพอนุกรมอุปกรณ์นี้สามารถใช้ประโยชน์ได้มากขึ้นโดยเชื่อมต่อจอ LCD (16 * 2) และแบตเตอรี่เพื่อการใช้งานที่ดีขึ้น




คู่ของ: Stepper Motor Driver Circuit โดยใช้ IC 555 ถัดไป: วงจรมิเตอร์วัดความจุดิจิตอลโดยใช้ Arduino