สารบัญ:
วีดีโอ: เครื่องวัดความเร็วรถ RC ที่ใช้งานได้: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
นี่เป็นโครงการสั้นๆ ที่ฉันสร้างขึ้นโดยเป็นส่วนหนึ่งของโครงสร้าง RC ขนาดใหญ่ของ Land Rover รุ่น Lightweight ฉันตัดสินใจว่าฉันอยากจะมีมาตรวัดความเร็วที่ใช้งานได้บนแดชบอร์ด แต่ฉันรู้ว่าเซอร์โวจะไม่ตัดมัน มีเพียงตัวเลือกเดียวที่เหมาะสม: ปรับใช้ Arduino!
เริ่มต้นด้วยพื้นฐานเล็กน้อย… ฉันไม่ใช่คนเขียนโค้ดหรืออุปกรณ์อิเล็กทรอนิกส์ ฉันยังคงนึกถึงไฟฟ้าในแง่ของการไหลของน้ำและค่อนข้างประหลาดใจกับตัวต้านทาน ที่กล่าวว่าแม้ว่าฉันจะสามารถทำงานนี้ได้คุณก็ควรทำได้เช่นกัน!
ส่วนรายการ:
ไมโครคอนโทรลเลอร์: ฉันใช้ชิป ATTiny85 ซึ่งราคาตัวละประมาณ 1 ปอนด์
โปรแกรมเมอร์ไมโครคอนโทรลเลอร์: ในการรับรหัสบนชิป คุณต้องมีวิธีตั้งโปรแกรม สำหรับ Arduino ปกติ นี่เป็นเพียงสาย USB แต่สำหรับชิป ATTiny คุณต้องมีสิ่งพิเศษเพิ่มเติม คุณสามารถใช้อาร์ดิโนตัวอื่นทำสิ่งนี้ หรือใช้โปรแกรมเมอร์ Tiny AVR จาก Sparkfun อย่างฉัน
learn.sparkfun.com/tutorials/tiny-avr-prog…
ฉันจะแนะนำสิ่งนี้ เนื่องจากฉันได้ลองเขียนโปรแกรมด้วยวิธีการต่างๆ และวิธีนี้ง่ายที่สุด บอร์ดมีราคาแพงเล็กน้อย แต่เป็นการลงทุนที่ดี ถ้าคุณทำโครงการ ATTiny เป็นจำนวนมาก
ซ็อกเก็ตชิป 8 พิน: หากคุณใส่ชิปลงในซ็อกเก็ตแทนที่จะบัดกรีโดยตรง คุณสามารถทำผิดพลาดในการประกอบได้ พูดจากประสบการณ์ - ไม่มีใครอยาก desolder ชิปเพื่อตั้งโปรแกรมใหม่
ตัวเก็บประจุ: ใช้ตัวเก็บประจุแบบแยกส่วนขนาด 100nF (รหัส 104) ฉันไม่เข้าใจว่าทำไม แต่ฉันอ่านมาว่าตัวเก็บประจุแบบแยกส่วนมีความสำคัญบนอินเทอร์เน็ต ดังนั้นมันต้องเป็นความจริง…
ตัวต้านทาน: ตัวต้านทาน 10kΩ ใช้เพื่อดึงสายเข้าไปใน Arduino อีกครั้งที่ความลึกลับอีกอย่างของอุปกรณ์อิเล็กทรอนิกส์
Perfboard/Stripboard: กระดานข้างก้นบางตัวสำหรับประกอบวงจรของคุณ
ลวดม้วน: ลวดที่มีเปลือกหุ้มธรรมดาหนาเกินไปที่จะบัดกรีบนมอเตอร์ การใช้ลวดเคลือบชั้นดีจะช่วยลดความเครียดที่ขั้วมอเตอร์และทำให้ชีวิตของคุณง่ายขึ้นมาก
เซอร์โว ไวร์: ริบบ้อนสามสายที่ต่อเข้ากับปลั๊กตัวเมีย JR แบบ 3 พิน ฉันได้ของฉันจากเซอร์โวที่ถูกไฟไหม้ซึ่งฉันกำลัง 'แก้ไข'
สเต็ปเปอร์มอเตอร์: ฉันใช้สเต็ปเปอร์มอเตอร์ไบโพลาร์ Nidec ขนาด 6 มม. สเต็ปเปอร์ขนาดเล็กใด ๆ ควรใช้งานได้แม้ว่าจะมีขนาดเล็กก็ตาม เนื่องจากสเต็ปเปอร์นั้นถูกขับเคลื่อนโดยตรงจาก Arduino
Header Pins: ไม่จำเป็น แต่ถ้าคุณต่อ stepper ของคุณกับ 4 header pins และวางซ็อกเก็ตบนวงจรของคุณ คุณสามารถถอดปลั๊กแดชบอร์ดของคุณออกได้อย่างง่ายดายเพื่อให้ติดตั้งได้ง่าย
คอมพิวเตอร์: หากต้องการตั้งโปรแกรมบอร์ด คุณจะต้องมีคอมพิวเตอร์ เป็นไปได้ด้วย Arduino IDE และอาจจะเป็นสาย USB ถ้ามีสายไฟด้วยยิ่งดี
ขั้นตอนที่ 1: ระบบ
โครงร่างพื้นฐานของระบบที่ฉันสร้างขึ้นคือวิธีการที่สัญญาณ Pulse Width Modulation (PWM) ที่มาจากเครื่องรับ RC จะถูกแปลงเป็นสเต็ปเปอร์มอเตอร์กวาดผ่านไมโครคอนโทรลเลอร์ ATTiny 85 (uC)
นี่คือแหล่งข้อมูลเกี่ยวกับสัญญาณ PWM และ RC แต่คุณไม่จำเป็นต้องเข้าใจสิ่งนี้เพื่อทำซ้ำ
en.wikipedia.org/wiki/Servo_control
ATTiny เป็น Arduino ที่ฉันชอบเพราะมีขนาดเล็กและมีพิน I/O เพียงพอสำหรับทำสิ่งพื้นฐาน จึงเข้ากันได้ดีกับโมเดลขนาดเล็กและโปรเจ็กต์ RC ข้อเสียเปรียบหลักของ ATTiny คือมันต้องมีการตั้งค่าเพิ่มเติมเล็กน้อยเพื่อตั้งโปรแกรมหนึ่งรายการ แต่เมื่อคุณได้ตั้งค่าแล้ว มันราคาถูกมาก คุณสามารถซื้อกองซ้อนสำหรับโครงการทุกประเภทได้
ขนาดของแป้นหมุนมาตรวัดความเร็วมีขนาดเล็กเกินไปที่จะมีมอเตอร์แบบมีเกียร์ป้อนกลับ ดังนั้นเพื่อให้มีการตอบสนองตามสัดส่วนจึงต้องใช้สเต็ปเปอร์มอเตอร์ สเต็ปเปอร์มอเตอร์เป็นมอเตอร์ที่เคลื่อนที่ในปริมาณที่ไม่ต่อเนื่อง (หรือขั้น…!) ซึ่งทำให้เหมาะอย่างยิ่งสำหรับระบบที่ไม่มีการตอบสนองเช่นนี้ ข้อแม้เพียงอย่างเดียวคือ 'ขั้นตอน' จะทำให้การเคลื่อนไหวที่เกิดขึ้นกระตุกแทนที่จะราบรื่น หากคุณได้ stepper ที่มีจำนวนก้าวต่อการหมุนที่เพียงพอ นั่นจะมองไม่เห็น แต่ด้วย stepper ที่ฉันใช้ในโปรเจ็กต์นี้มีเพียง 20 ก้าวหรือมากกว่านั้นในการหมุนเต็มที่ การกระโดดของมุมจึงค่อนข้างแย่
เมื่อเปิดเครื่อง ระบบจะวิ่งสเต็ปเปอร์ถอยหลังสองรอบ เพื่อให้เข็มเป็นศูนย์ มาตรวัดความเร็วต้องการหมุดพักตรงที่คุณต้องการให้เครื่องหมายศูนย์เป็น หรือมิฉะนั้น มันจะหมุนไปตลอดกาล จากนั้นจะจับคู่สัญญาณ PWM ไปข้างหน้าและย้อนกลับกับจำนวนขั้นตอนที่กำหนดไว้ของมอเตอร์ ง่ายใช่มั้ย…?
ขั้นตอนที่ 2: ซอฟต์แวร์
ข้อจำกัดความรับผิดชอบ: ฉันไม่ใช่โปรแกรมเมอร์ สำหรับโปรเจ็กต์นี้ ฉันเทียบเท่ากับดร.แฟรงเกนสไตน์ในด้านดิจิทัล โดยรวบรวมบางสิ่งที่ทำงานจากโค้ดต่างๆ ที่พบ
ดังนั้นขอขอบคุณจากใจจริงไปยัง Duane B ผู้สร้างรหัสสำหรับการตีความสัญญาณ RC:
rcarduino.blogspot.com/
และสำหรับ Ardunaut ผู้สร้างโค้ดสำหรับการรัน stepper เป็นเกจอนาล็อก:
arduino.com/2012/04/22/arduino-driving-a…
และสำหรับทั้งคู่ ฉันขอโทษอย่างจริงใจที่สุดสำหรับสิ่งที่ฉันทำกับโค้ดของคุณ
เสร็จแล้ว นี่คือสิ่งที่ต้องอัปโหลดไปยัง ATTiny:
#define THROTTLE_SIGNAL_IN 0 // INTERRUPT 0 = DIGITAL PIN 2 - ใช้หมายเลขขัดจังหวะในไฟล์แนบInterrupt#define THROTTLE_SIGNAL_IN_PIN 2 // INTERRUPT 0 = DIGITAL PIN 2 - ใช้หมายเลข PIN ใน digitalRead #define NEUTRAL_THROTTLE 1500 // นี่คือระยะเวลาในหน่วยไมโครวินาที ของเค้นเป็นกลางบนรถ RC ไฟฟ้า #define UPPER_THROTTLE 2000 // นี่คือระยะเวลาเป็นไมโครวินาทีของเค้นสูงสุดบนรถ RC ไฟฟ้า #define LOWER_THROTTLE 1000 // นี่คือระยะเวลาเป็นไมโครวินาทีของ nminimum throttle บนรถ RC ไฟฟ้า #define DEADZONE 50 // นี่คือเดดโซนของคันเร่ง Deadzone ทั้งหมดเป็นสองเท่านี้ #include #define STEPS 21 // ขั้นตอนต่อรอบ (จำกัดที่ 315°) เปลี่ยนแปลงสิ่งนี้เพื่อปรับระยะการเดินทางสูงสุดของมาตรวัดความเร็ว #define COIL1 3 // หมุดคอยล์ ATTiny ใช้หมุด 0, 1, 3, 4 สำหรับสเต็ปเปอร์ พิน 2 เป็นพินเดียวที่สามารถรองรับการขัดจังหวะ ดังนั้นจึงต้องเป็นอินพุต #define COIL2 4 // ลองเปลี่ยนสิ่งเหล่านี้หากสเต็ปเปอร์มอเตอร์ทำงานไม่ถูกต้อง #define COIL3 0 #define COIL4 1 // สร้างอินสแตนซ์ของคลาส stepper: Stepper stepper (STEPS, COIL1, COIL2, COIL3, COIL4); int pos = 0; //ตำแหน่งในขั้นตอน (0-630)= (0°-315°) int SPEED = 0; ลอย ThrottleInAvg = 0; int MeasurementsToAverage = 60; float Resetcounter = 10; // เวลารีเซ็ตในขณะที่ไม่ได้ใช้งาน throttle int Resetval = 0; ความผันผวน int ThrottleIn = LOWER_THROTTLE; StartPeriod แบบยาวที่ไม่ได้ลงนามแบบผันผวน = 0; // ตั้งค่าในการขัดจังหวะ // เราสามารถใช้ nThrottleIn = 0 ในลูปแทนตัวแปรแยกต่างหาก แต่ใช้ bNewThrottleSignal เพื่อระบุว่าเรามีสัญญาณใหม่ // จะชัดเจนกว่าสำหรับตัวอย่างแรกนี้ void setup() { // บอก Arduino เราต้องการให้ฟังก์ชัน calcInput ถูกเรียกใช้เมื่อใดก็ตามที่ INT0 (พินดิจิทัล 2) เปลี่ยนจาก HIGH เป็น LOW หรือ LOW เป็น HIGH // การจับการเปลี่ยนแปลงเหล่านี้จะทำให้เราสามารถคำนวณระยะเวลาที่พัลส์อินพุตถูกแนบInterrupt(THROTTLE_SIGNAL_IN, calcInput, CHANGE); stepper.setSpeed(50); // ตั้งค่าความเร็วมอเตอร์เป็น 30 RPM (360 PPS aprox.) stepper.step(ขั้นตอน * 2); // รีเซ็ตตำแหน่ง (X ขั้นตอนทวนเข็มนาฬิกา) } วงเป็นโมฆะ () { Resetval = มิลลิวินาที; สำหรับ (int i = 0; i (NEUTRAL_THROTTLE + DEADZONE) && ThrottleInAvg < UPPER_THROTTLE) { SPEED = แผนที่ (ThrottleInAvg, (NEUTRAL_THROTTLE + DEADZONE), UPPER_THROTTLE, 0, 255); ค่ารีเซ็ต = 0; } // การทำแผนที่แบบย้อนกลับหาก (ThrottleInAvg LOWER_THROTTLE) { SPEED = map (ThrottleInAvg, LOWER_THROTTLE, (NEUTRAL_THROTTLE - DEADZONE), 255, 0); ค่ารีเซ็ต = 0; } // อยู่นอกช่วงบนหาก (ThrottleInAvg > UPPER_THROTTLE) { SPEED = 255; ค่ารีเซ็ต = 0; } // อยู่นอกช่วงต่ำกว่าถ้า (ThrottleInAvg Resetcounter) { stepper.step (4); // ฉันกำลังพยายามบอกให้ stepper รีเซ็ตตัวเองใหม่ หากสัญญาณ RC อยู่ใน deadzone เป็นเวลานาน ไม่แน่ใจว่าส่วนนี้ของรหัสใช้งานได้จริงหรือไม่ } } int val = ความเร็ว; // รับค่าโพเทนชิออมิเตอร์ (ช่วง 0-1023) val = map (val, 0, 255, 0, STEPS * 0.75); // แผนที่ pot range ในช่วง stepper if (abs(val - pos) > 2) { //ถ้าความแตกต่างมากกว่า 2 ขั้นตอน ถ้า ((val - pos) > 0) { stepper.step (-1); // เลื่อนไปทางซ้ายหนึ่งก้าว ตำแหน่ง ++; } if ((val - pos) < 0) { stepper.step(1); // เลื่อนไปทางขวาหนึ่งก้าว โพส--; } } // ล่าช้า(10); } void calcInput() { // ถ้าพินสูง มันจะเป็นจุดเริ่มต้นของการขัดจังหวะ if (digitalRead(THROTTLE_SIGNAL_IN_PIN) == HIGH) { // ใช้เวลาโดยใช้ micros - เมื่อโค้ดของเรายุ่งมาก สิ่งนี้จะไม่ถูกต้อง แต่สำหรับแอปพลิเคชันปัจจุบัน // เข้าใจง่ายและใช้งานได้ดีมาก StartPeriod = micros(); } อื่น { // ถ้าพินต่ำ มันจะเป็นขอบตกของพัลส์ ดังนั้นตอนนี้เราสามารถคำนวณระยะเวลาพัลส์โดยลบ // เวลาเริ่มต้น ulStartPeriod จากเวลาปัจจุบันที่ส่งคืนโดยไมโคร () ถ้า (StartPeriod) { ThrottleIn = (int)(micros() - StartPeriod); ระยะเวลาเริ่มต้น = 0; } } }
อ้างถึงสิ่งนี้สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเขียนโปรแกรม ATTiny85:
learn.sparkfun.com/tutorials/tiny-avr-prog…
ขั้นตอนที่ 3: ฮาร์ดแวร์
ดูแผนภาพวงจรสำหรับสร้างวงจร วิธีประกอบขึ้นอยู่กับคุณ แต่ฉันขอแนะนำให้ใช้แผ่น Stripboard/perfboard เล็กน้อยสำหรับสร้างต้นแบบแผงวงจร และติดตั้งชิปในซ็อกเก็ต
C1 = 100nF
R1 = 10kΩ
ควรติดตั้งตัวเก็บประจุใกล้กับชิปมากที่สุดเพื่อให้มีประสิทธิภาพสูงสุด
เมื่อทำการบัดกรีลวดเคลือบกับมอเตอร์ ให้ระมัดระวังอย่างยิ่ง เนื่องจากขั้วของมอเตอร์ชอบที่จะหลุดออกและตัดลวดคอยล์เข้ากับมอเตอร์ วิธีแก้ไขที่ดีคือการบัดกรีสายไฟ แล้ววางอีพ็อกซี่ 2 ส่วนขนาดใหญ่บนข้อต่อ ปล่อยให้แห้ง จากนั้นบิดสายไฟเข้าด้วยกัน ซึ่งจะช่วยลดความเครียดที่ข้อต่อของขั้วต่อแต่ละตัวและควรหยุดไม่ให้หลุดออก ถ้าคุณไม่ทำเช่นนี้พวกเขาจะปิดในเวลาที่สะดวกน้อยที่สุดรับประกัน
หากคุณสร้างขั้วต่อพินส่วนหัวและตั้งค่าพินดังนี้: [Ca1, Cb1, Ca2, Cb2] โดยที่ Ca1 ย่อมาจากคอยล์ A, สาย 1 เป็นต้น วิธีนี้ทำให้คุณสามารถเปลี่ยนทิศทางการหมุนของเกจได้โดยการเปลี่ยนปลั๊ก รอบ ๆ.
เกจจะต้องใช้เอ็นด์สต็อปเพื่อปรับเทียบตำแหน่งศูนย์เทียบกับ ฉันแนะนำให้ทำเข็มจากโลหะถ้าเป็นไปได้ สิ่งนี้จะหยุดการโค้งงอเมื่อกระทบกับจุดสิ้นสุด วิธีทำให้เข็มอยู่ในตำแหน่งที่ดีคือการติดเข็มไว้กับแกนชั่วคราว เปิดโมดูล ปล่อยให้พัก จากนั้นจึงถอดและติดกาวเข็มบนแกนอีกครั้ง โดยให้เข็มวางชิดกับแกน เอ็นด์สต็อป สิ่งนี้จะจัดแนวเข็มให้ตรงกับฟันเฟืองแม่เหล็กของมอเตอร์ และทำให้แน่ใจว่าเข็มของคุณควรวางชิดกับเอ็นสต็อปเสมอ
ขั้นตอนที่ 4: บทส่งท้าย
หวังว่าคุณจะชอบคำแนะนำสั้น ๆ นี้และพบว่ามีประโยชน์ หากคุณสร้างสิ่งเหล่านี้ โปรดแจ้งให้เราทราบ!
ขอให้โชคดี!
แนะนำ:
Rubiks Cube แฟลชไดรฟ์ USB ที่ใช้งานได้: 7 ขั้นตอน (พร้อมรูปภาพ)
Rubiks Cube แฟลชไดรฟ์ USB ที่ใช้งานได้: ในบทช่วยสอนนี้ ฉันจะแสดงให้คุณเห็นถึงวิธีการสร้าง Rubik USB Flash Drive ของคุณเอง คุณสามารถดูผลิตภัณฑ์สำเร็จรูปได้ในวิดีโอต่อไปนี้:
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
อะแดปเตอร์ชาร์จ USB ที่ใช้งานได้ 100% สำหรับเครื่องเล่น MP3 Creative ZEN V Plus: 5 ขั้นตอน
อะแดปเตอร์ชาร์จ USB ที่ใช้งานได้ 100% สำหรับเครื่องเล่น Creative ZEN V Plus MP3: ที่นี่ฉันจะอธิบายสิ่งที่คุณต้องการจริงๆ เพื่อชาร์จ ZEN V plus ของคุณกับแหล่งจ่ายไฟ 5VDC ทุกตัว!1. คุณต้องมีชิ้นส่วนต่อไปนี้: - ขั้วต่อ Mini-USB ที่มีหมุดบัดกรี 5 ตัวอยู่ภายในจากสาย USB-A ไปเป็น Mini-USB มาตรฐาน (ดูรูปที่ 2) - สำหร
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-