สารบัญ:

Arduino 2-in-1 Model Train Controller: 4 ขั้นตอน
Arduino 2-in-1 Model Train Controller: 4 ขั้นตอน

วีดีโอ: Arduino 2-in-1 Model Train Controller: 4 ขั้นตอน

วีดีโอ: Arduino 2-in-1 Model Train Controller: 4 ขั้นตอน
วีดีโอ: Arduino DIY DC Model Train Controller 2024, กรกฎาคม
Anonim
Arduino 2-in-1 Model Train Controller
Arduino 2-in-1 Model Train Controller

สี่สิบปีที่แล้ว ฉันได้ออกแบบเค้นโมเดลรถไฟแบบ op-amp สำหรับเพื่อนสองสามคน และเมื่อประมาณสี่ปีที่แล้ว ฉันได้สร้างมันขึ้นใหม่โดยใช้ไมโครคอนโทรลเลอร์ PIC โปรเจ็กต์ Arduino นี้สร้างเวอร์ชัน PIC ขึ้นมาใหม่ แต่ยังเพิ่มความสามารถในการใช้การเชื่อมต่อบลูทูธแทนสวิตช์แบบแมนนวลสำหรับการควบคุมปีกผีเสื้อ เบรก และทิศทาง แม้ว่าการออกแบบที่ฉันนำเสนอในที่นี้มีเป้าหมายสำหรับมอเตอร์รางรุ่น 12 โวลต์ แต่ก็สามารถปรับเปลี่ยนได้อย่างง่ายดายสำหรับการใช้งานควบคุมมอเตอร์กระแสตรงอื่นๆ ที่หลากหลาย

ขั้นตอนที่ 1: การปรับความกว้างพัลส์ (PWM)

การปรับความกว้างพัลส์ (PWM)
การปรับความกว้างพัลส์ (PWM)

สำหรับผู้ที่ไม่คุ้นเคยกับ PWM มันไม่น่ากลัวอย่างที่คิด ทั้งหมดที่มีความหมายสำหรับแอปพลิเคชันการควบคุมมอเตอร์อย่างง่ายของเราคือเราสร้างคลื่นสี่เหลี่ยมของความถี่บางอย่างแล้วเราเปลี่ยนรอบการทำงาน รอบการทำงานถูกกำหนดให้เป็นอัตราส่วนของเวลาที่เอาต์พุตสูงแบบลอจิคัลเมื่อเทียบกับช่วงของรูปคลื่น คุณสามารถเห็นได้ค่อนข้างชัดเจนในแผนภาพด้านบนด้วยรูปคลื่นบนสุดที่รอบการทำงาน 10% รูปคลื่นกลางที่รอบการทำงาน 50% และรูปคลื่นด้านล่างที่รอบการทำงาน 90% เส้นประที่ซ้อนทับกันในแต่ละรูปคลื่นแสดงถึงแรงดัน DC ที่เทียบเท่าที่มอเตอร์เห็น เนื่องจาก Arduino มีความสามารถ PWM ในตัว จึงค่อนข้างง่ายที่จะสร้างการควบคุมมอเตอร์กระแสตรงประเภทนี้ ข้อดีอีกประการของการใช้ PWM คือช่วยให้มอเตอร์ไม่สตาร์ทอัพอย่างเฉื่อยชาที่อาจเกิดขึ้นได้เมื่อใช้ DC แบบตรง ข้อเสียอย่างหนึ่งของ PWM คือบางครั้งอาจมีเสียงรบกวนจากมอเตอร์ที่ความถี่ของ PWM

ขั้นตอนที่ 2: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

ภาพแรกแสดงการเชื่อมต่อ Arduino สำหรับสวิตช์และโมดูลไดรเวอร์มอเตอร์ LM298 มีตัวต้านทานแบบดึงขึ้นที่อ่อนแอภายใน Arduino ดังนั้นจึงไม่จำเป็นต้องใช้ตัวต้านทานแบบดึงขึ้นสำหรับสวิตช์ สวิตช์ทิศทางเป็นสวิตช์ SPST (ขั้วเดียวแบบเสาเดี่ยว) แบบธรรมดา สวิตช์คันเร่งและเบรกจะแสดงเป็นปุ่มกดแบบสัมผัสที่เปิดอยู่ตามปกติชั่วขณะ

ภาพที่สองแสดงการเชื่อมต่อ Arduino สำหรับโมดูล Bluetooth และโมดูลไดรเวอร์มอเตอร์ LM298 เอาต์พุต Bluetooth TXD เชื่อมต่อโดยตรงกับอินพุตอนุกรม Arduino RX

ภาพที่สามคือโมดูล L298N dual H-bridge โมดูล LM298 มีตัวควบคุมออนบอร์ด 5 โวลต์ที่จัมเปอร์เปิดใช้งานได้ เราต้องการ +5 โวลต์สำหรับ Arduino และ Bluetooth แต่เราต้องการ +12 โวลต์เพื่อขับเคลื่อนมอเตอร์ ในกรณีนี้ เราใช้ +12 โวลต์กับอินพุต "กำลัง +12V" ของ L298N และเราจะปล่อยให้จัมเปอร์ "เปิดใช้งาน 5V" อยู่กับที่ ซึ่งจะช่วยให้ตัวควบคุม 5 โวลต์สามารถส่งออกไปยังการเชื่อมต่อ "+5 power" บนโมดูลได้ เชื่อมต่อกับ Arduino และ Bluetooth อย่าลืมเชื่อมต่อสายกราวด์สำหรับอินพุต +12 และเอาต์พุต +5 เข้ากับโมดูล "power GND"

เราต้องการให้แรงดันเอาต์พุตของมอเตอร์แตกต่างกันไปตาม PWM ที่สร้างโดย Arduino แทนที่จะเปิดหรือปิดเต็มที่ ในการทำเช่นนั้น เราจะถอดจัมเปอร์ออกจาก "ENA" และ "ENB" และเชื่อมต่อเอาต์พุต Arduino PWM ของเรากับ "ENA" บนโมดูล โปรดทราบว่าพินที่เปิดใช้งานจริงนั้นอยู่ใกล้กับขอบบอร์ดมากที่สุด (ถัดจากพิน "อินพุต") พินด้านหลังสำหรับการเปิดใช้งานแต่ละครั้งคือ +5 โวลต์ ดังนั้นเราจึงต้องการให้แน่ใจว่าเราจะไม่เชื่อมต่อกับสิ่งนั้น

หมุด "IN1" และ "IN2" บนโมดูลเชื่อมต่อกับหมุด Arduino ตามลำดับ หมุดเหล่านั้นควบคุมทิศทางของมอเตอร์ และใช่ มีเหตุผลที่ดีที่จะให้ Arduino ควบคุมแทนที่จะเพียงแค่เชื่อมต่อสวิตช์เข้ากับโมดูล เราจะเห็นเหตุผลในการอภิปรายซอฟต์แวร์

ขั้นตอนที่ 3: โมดูลบลูทูธ

โมดูลบลูทูธ
โมดูลบลูทูธ

รูปภาพที่แสดงนี้เป็นแบบฉบับของโมดูล Bluetooth ที่มีจำหน่าย เมื่อต้องการซื้อ คุณสามารถค้นหาคำว่า “HC-05” และ HC-06” ความแตกต่างระหว่างทั้งสองอยู่ในเฟิร์มแวร์และโดยปกติแล้วจะอยู่ที่จำนวนพินบนบอร์ด ภาพด้านบนเป็นโมดูล HC-06 และมาพร้อมกับเฟิร์มแวร์แบบง่ายที่อนุญาตการกำหนดค่าพื้นฐานเท่านั้น มันยังถูกตั้งค่าเป็นอุปกรณ์บลูทูธ “ทาส” เท่านั้น พูดง่ายๆ ก็คือ มันสามารถตอบสนองต่อคำสั่งจากอุปกรณ์ “Master” เท่านั้น และไม่สามารถออกคำสั่งได้ด้วยตัวเอง โมดูล HC-05 มีความเป็นไปได้ในการกำหนดค่าที่มากกว่า และสามารถตั้งค่าเป็นอุปกรณ์ “หลัก” หรือ “อุปกรณ์รอง” HC-05 มักจะมีหกพินแทนที่จะเป็นเพียงสี่ตัวที่แสดงด้านบนสำหรับ HC-06 หมุดสถานะไม่สำคัญจริงๆ แต่ต้องใช้หมุดคีย์ (บางครั้งใช้ชื่ออื่นเช่น “EN”) หากคุณต้องการกำหนดค่าใดๆ โดยทั่วไป โมดูลไม่จำเป็นต้องมีการกำหนดค่าใดๆ หากคุณพอใจกับอัตราการส่งข้อมูลเริ่มต้นที่ 9600 และไม่สนใจที่จะให้ชื่อเฉพาะกับโมดูล ฉันมีหลายโครงการที่ฉันใช้สิ่งเหล่านี้ ดังนั้นฉันจึงชอบตั้งชื่อตามนั้น

การกำหนดค่าโมดูล Bluetooth คุณต้องซื้อหรือสร้างอินเทอร์เฟซสำหรับพอร์ตอนุกรม RS-232 หรือพอร์ต USB ฉันจะไม่ครอบคลุมถึงวิธีการสร้างมันในโพสต์นี้ แต่คุณควรจะสามารถหาข้อมูลบนเว็บได้ หรือเพียงแค่ซื้ออินเทอร์เฟซ คำสั่งการกำหนดค่าใช้คำสั่ง AT แบบเดียวกับที่ใช้ในสมัยก่อนกับโมเด็มโทรศัพท์ ฉันได้แนบคู่มือผู้ใช้ที่นี่ซึ่งมีคำสั่ง AT สำหรับโมดูลแต่ละประเภท สิ่งหนึ่งที่ควรทราบคือ HC-06 ต้องใช้คำสั่ง UPPERCASE และสตริงคำสั่งต้องดำเนินการให้เสร็จสิ้นภายใน 1 วินาที นั่นหมายความว่าสตริงที่ยาวกว่าบางรายการ เช่น การเปลี่ยนอัตราบอด จะต้องถูกตัดและวางลงในโปรแกรมเทอร์มินัลของคุณ ไม่เช่นนั้นคุณจะต้องตั้งค่าไฟล์ข้อความเพื่อส่ง ข้อกำหนดตัวพิมพ์ใหญ่จะใช้ได้ก็ต่อเมื่อคุณพยายามส่งคำสั่งการตั้งค่าคอนฟิก โหมดการสื่อสารทั่วไปสามารถรับข้อมูล 8 บิตใดก็ได้

ขั้นตอนที่ 4: ซอฟต์แวร์

ซอฟต์แวร์นี้ค่อนข้างง่ายสำหรับทั้งเวอร์ชันแมนนวลและเวอร์ชันบลูทูธ ในการเลือกเวอร์ชันบลูทูธ ให้ยกเลิกการใส่เครื่องหมายคำสั่ง “#define BT_Ctrl”

เมื่อฉันเขียนรหัส PIC ฉันได้ทดลองกับความถี่ PWM และสุดท้ายก็อยู่ที่ 500-Hz ฉันค้นพบว่าหากความถี่สูงเกินไป โมดูล LM298N จะไม่สามารถตอบสนองต่อพัลส์ได้เร็วพอ นั่นหมายความว่าแรงดันไฟขาออกไม่เป็นเชิงเส้นและสามารถกระโดดได้มาก Arduino มีคำสั่ง PWM ในตัว แต่อนุญาตให้คุณเปลี่ยนรอบการทำงานเท่านั้น ไม่ใช่ความถี่ โชคดีที่ความถี่อยู่ที่ประมาณ 490-Hz ซึ่งใกล้เคียงกับ 500-Hz ที่ฉันใช้กับ PIC มากพอ

"คุณสมบัติ" ประการหนึ่งของคันเร่งรถไฟคือความรู้สึกของโมเมนตัมสำหรับการเร่งความเร็วและการเบรกเพื่อจำลองการทำงานของรถไฟจริง ในการทำให้สำเร็จนั้น จะมีการใส่การหน่วงเวลาอย่างง่ายในลูปสำหรับซอฟต์แวร์เวอร์ชันแบบแมนนวล ด้วยค่าที่แสดง จะใช้เวลาประมาณ 13 วินาทีในการเปลี่ยนจาก 0 ถึง 12 โวลต์หรือจาก 12 โวลต์กลับเป็นศูนย์ การหน่วงเวลาสามารถแก้ไขได้ง่ายสำหรับเวลาที่นานขึ้นหรือสั้นลง กรณีเดียวที่ไม่มีโมเมนตัมคือเมื่อสวิตช์ทิศทางเปลี่ยนไป เพื่อวัตถุประสงค์ในการป้องกัน รอบการทำงานของ PWM จะถูกตั้งค่าเป็น 0% ทันทีทุกครั้งที่เปลี่ยนสวิตช์นี้ ส่งผลให้สวิตช์ Direction เป็นสองเท่าของเบรกฉุกเฉิน

เพื่อให้แน่ใจว่าสามารถจัดการสวิตช์ Direction ได้ทันที ฉันจึงใส่รหัสลงในตัวจัดการการขัดจังหวะ นอกจากนี้ยังช่วยให้เราใช้ฟังก์ชัน "ขัดจังหวะการเปลี่ยนแปลง" ได้ ดังนั้นไม่ว่าการเปลี่ยนแปลงจะมาจากต่ำไปสูงหรือสูงไปต่ำ

ซอฟต์แวร์เวอร์ชัน Bluetooth ใช้คำสั่งตัวอักษรเดียวเพื่อเริ่มต้นฟังก์ชัน Forward, Reverse, Brake และ Throttle คำสั่งที่ได้รับจะแทนที่สวิตช์แบบแมนนวล แต่ทำให้เกิดการตอบสนองแบบเดียวกัน แอปที่ฉันใช้ควบคุม Bluetooth เรียกว่า "Bluetooth Serial Controller" โดย Next Prototypes ช่วยให้คุณกำหนดค่าปุ่มกดเสมือนและตั้งค่าสตริงคำสั่งและชื่อของคุณเองสำหรับแต่ละคีย์ นอกจากนี้ยังช่วยให้คุณสามารถกำหนดอัตราการทำซ้ำได้ ฉันจึงตั้งค่าปุ่มเบรกและคันเร่งเป็น 50 มิลลิวินาทีเพื่อให้มีโมเมนตัมประมาณ 14 วินาที ฉันปิดการใช้งานฟังก์ชั่นทำซ้ำสำหรับปุ่มไปข้างหน้าและย้อนกลับ

แค่นี้แหละสำหรับโพสต์นี้ ตรวจสอบคำแนะนำอื่น ๆ ของฉัน หากคุณสนใจโครงการไมโครคอนโทรลเลอร์ PIC ตรวจสอบเว็บไซต์ของฉันที่ www.boomerrules.wordpress.com

แนะนำ: