- ส่วนประกอบที่ต้องการ:
- คำอธิบาย:
- แผนภาพวงจรและคำอธิบายการทำงาน:
- การออกแบบวงจรและ PCB โดยใช้ EasyEDA:
- การคำนวณและการสั่งซื้อตัวอย่าง PCB ทางออนไลน์:
- คำอธิบายการเขียนโปรแกรม:
ในโครงการนี้เราจะไปทำให้PIC ตามแบตเตอรี่รถยนต์ระบบการตรวจสอบบน PCB ที่นี่เราได้ออกแบบ PCB โดยใช้โปรแกรมจำลองและออกแบบ PCB ออนไลน์ของ EASYEDA นี้การตรวจสอบแบตเตอรี่รถยนต์วงจรถูกนำมาใช้ในการตรวจสอบการใช้พลังงานของแบตเตอรี่รถยนต์โดยเพียงแค่เสียบเข้ากับปลั๊กไฟบนแผงหน้าปัดของรถ PCBยังมีตัวเลือกที่จะใช้เป็นเครื่องมือในการวัดแรงดันไฟฟ้าโวลต์มิเตอร์หรือโดยไม่ต้องใช้ชาร์จไฟในรถ USB เราได้ติดตั้งแผงขั้วต่อที่นี่เพื่อวัดแรงดันไฟฟ้าของแหล่งจ่ายไฟอื่น ๆ เพียงแค่เชื่อมต่อสายไฟสองเส้นจากแหล่งจ่ายไฟ
ส่วนประกอบที่ต้องการ:
- ไมโครคอนโทรลเลอร์ PIC PIC18F2520 -1
- ประดิษฐ์บอร์ด PCB -1
- ขั้วต่อ USB -1
- ขั้วต่อเทอร์มินัล 2 พิน (อุปกรณ์เสริม) -1
- จอแสดงผลแอโนดทั่วไปเจ็ดส่วน (4 in 1) -1
- BC557 ทรานซิสเตอร์ -4
- ตัวต้านทาน 1k -6
- ตัวต้านทาน 2k -1
- ตัวต้านทาน 100R -8
- ตัวเก็บประจุ 1000uF -1
- ตัวเก็บประจุ 10uF -1
- ฐาน IC 28 พิน -1
- หัวขโมยหญิง -1
- 7805 ตัวควบคุมแรงดันไฟฟ้า -1
- ที่ชาร์จ USB ในรถยนต์ -1
- LED -1
- ซีเนอร์ไดโอด 5.1v -2
- สาย USB (เข้ากันได้กับ B-type หรือ Arduino UNO) -1
- คริสตัล 20MHz -1
- 33pF ตัวเก็บประจุ -2
คำอธิบาย:
โดยทั่วไปไม่สำคัญที่จะต้องวัดพลังงานแบตเตอรี่รถยนต์ทุกครั้ง แต่เรามักจะต้องรู้เกี่ยวกับแรงดันไฟฟ้าของแบตเตอรี่ในระหว่างการชาร์จเพื่อตรวจสอบว่ามีการชาร์จหรือไม่ ด้วยวิธีนี้เราสามารถป้องกันความล้มเหลวของแบตเตอรี่เนื่องจากระบบการชาร์จที่ผิดพลาด แรงดันไฟฟ้าของแบตเตอรี่รถยนต์ 12v ระหว่างการชาร์จอยู่ที่ประมาณ 13.7v ดังนั้นเราจึงสามารถระบุได้ว่าแบตเตอรี่ของเราชาร์จได้ดีหรือไม่และสามารถตรวจสอบสาเหตุของความล้มเหลวของแบตเตอรี่ได้ ในโครงการนี้เราจะใช้เครื่องวัดแรงดันไฟฟ้าสำหรับแบตเตอรี่รถยนต์โดยใช้ไมโครคอนโทรลเลอร์ PIC ไฟแช็กในรถหรือที่ชาร์จ USB ในรถยนต์ใช้สำหรับรับแรงดันไฟฟ้าของแบตเตอรี่ไปยังขา ADC ของไมโครคอนโทรลเลอร์ด้วยความช่วยเหลือของวงจรแบ่งแรงดันไฟฟ้า จากนั้นจะแสดงส่วนเจ็ดหลัก 4 หลักใช้เพื่อแสดงค่าแรงดันไฟฟ้าของแบตเตอรี่ วงจรนี้สามารถวัดแรงดันไฟฟ้าได้สูงสุด 15v
เมื่อแบตเตอรี่รถยนต์กำลังชาร์จแรงดันไฟฟ้าที่ขั้วแบตเตอรี่นั้นมาจากเครื่องกำเนิดไฟฟ้ากระแสสลับ / วงจรเรียงกระแสซึ่งเป็นสาเหตุที่ระบบอ่าน 13.7 โวลต์ แต่เมื่อแบตเตอรี่ไม่ชาร์จหรือเครื่องยนต์ของรถไม่ติดแรงดันไฟฟ้าที่ขั้วแบตเตอรี่คือแรงดันแบตเตอรี่จริงประมาณ 12v
นอกจากนี้เรายังสามารถใช้วงจรเดียวกันในการวัดแรงดันไฟฟ้าของแหล่งพลังงานอื่น ๆ ได้ถึง 15v เพื่อจุดประสงค์นี้เราได้ทำการบัดกรี Terminal Block (บล็อกพลาสติกสีเขียว) ใน PCB ซึ่งคุณสามารถเชื่อมต่อสายไฟสองเส้นจากแหล่งจ่ายไฟและสามารถตรวจสอบแรงดันไฟฟ้าได้ ตรวจสอบวิดีโอในตอนท้ายซึ่งเราได้แสดงให้เห็นโดยการวัดแรงดันไฟฟ้าของแหล่งจ่ายไฟแบบแปรผันธนาคารพลังงาน USB และอะแดปเตอร์ AC-DC 12v ตรวจสอบวงจรตรวจสอบแบตเตอรี่อย่างง่ายและวงจรเครื่องชาร์จแบตเตอรี่ 12v
แผนภาพวงจรและคำอธิบายการทำงาน:
ในวงจรตรวจสอบแรงดันแบตเตอรี่นี้เราได้อ่านแรงดันไฟฟ้าของแบตเตอรี่รถยนต์โดยใช้ขาอะนาล็อกในตัวของไมโครคอนโทรลเลอร์ PIC และที่นี่เราได้เลือกพิน AN0 (28) ของไมโครคอนโทรลเลอร์ผ่านวงจรแบ่งแรงดันไฟฟ้า นอกจากนี้ยังใช้ซีเนอร์ไดโอด 5.1v เพื่อป้องกัน
จอแสดงผล 7 ส่วน 4 ใน 1 ใช้สำหรับแสดงค่าแรงดันแบตเตอรี่รถยนต์ที่เชื่อมต่อที่ PORTB และ PORTC ของไมโครคอนโทรลเลอร์ ตัวควบคุมแรงดันไฟฟ้า 5v คือ LM7805 ใช้เพื่อจ่ายไฟให้กับวงจรทั้งหมดรวมถึงการแสดงผลเจ็ดส่วน คริสตัลออสซิลเลเตอร์ 20 MHz ใช้ในการตอกบัตรไมโครคอนโทรลเลอร์ วงจรใช้พลังงานจากที่ชาร์จในรถ USB โดยใช้ LM7805 เราได้เพิ่มพอร์ต USB ใน PCB ดังนั้นเราจึงสามารถเชื่อมต่อเครื่องชาร์จ USB ในรถยนต์เข้ากับวงจรได้โดยตรง
ที่ชาร์จ USB ในรถยนต์หรือที่จุดบุหรี่ให้แหล่งจ่ายไฟที่มีการควบคุม 5v จากเต้าเสียบไฟ 12v ของรถยนต์ แต่เราจำเป็นต้องวัดแรงดันไฟฟ้าที่แท้จริงของแบตเตอรี่รถยนต์ดังนั้นเราจึงได้ปรับแต่งที่ชาร์จในรถยนต์ คุณต้องเปิดที่ชาร์จ USB ในรถยนต์จากนั้นหาขั้วต่อ 5v (เอาต์พุต) และ 12v (อินพุท) จากนั้นจึงถอดการเชื่อมต่อ 5v ออกโดยถูด้วยกระดาษทรายหรือด้วยสิ่งที่แข็งและทำให้ขั้วเอาต์พุต USB สั้นลงเป็น 12v โดยตรง ขั้นแรกให้เปิดการเชื่อมต่อ 5v จากพอร์ต USB ในที่ชาร์จ USB ในรถยนต์จากนั้นเชื่อมต่อ 12v เข้ากับพอร์ต USB ที่เชื่อมต่อ 5v ดังที่แสดงในรูปด้านล่างเราได้ตัดการเชื่อมต่อแบบวงกลมสีแดงซึ่งอาจแตกต่างกันในที่ชาร์จในรถของคุณ
ในการกำหนดค่า ADC ที่นี่เราได้เลือกขาอะนาล็อก AN0 ที่มีแรงดันอ้างอิงภายใน 5v และ f / 32 นาฬิกาสำหรับการแปลง ADC
ในการคำนวณแรงดันแบตเตอรี่รถยนต์จากค่า ADC เราได้ใช้สูตรที่กำหนด:
แรงดันไฟฟ้า = (ค่า ADC / ตัวต้านทาน) * แรงดันอ้างอิงโดยที่: ค่า ADC = เอาต์พุตของตัวแบ่งแรงดันไฟฟ้า (แปลงเป็นดิจิตอลโดยไมโครคอนโทรลเลอร์) ตัวต้านทาน = 1023.0 / (R2 / R1 + R2) // 1023 คือค่า ADC สูงสุด (10- bit) แรงดันอ้างอิง = 5 โวลต์ // เลือกอ้างอิง 5v ภายใน
การคำนวณค่าตัวต้านทาน:
ในโครงการนี้เรากำลังอ่านแรงดันแบตเตอรี่รถยนต์ที่ (โดยทั่วไป) ประมาณ 12v-14v ดังนั้นเราจึงได้ทำโปรเจ็กต์นี้โดยสมมติว่า max 15v หมายความว่าระบบนี้สามารถอ่านได้สูงสุดไม่เกิน 15v
ดังนั้นในวงจรเราจึงใช้ตัวต้านทาน R1 และ R2 ในส่วนและค่าตัวแบ่งแรงดันคือ:
R1 = 2K
R2 = 1K
ตัวต้านทาน = 1023.0 * (1000/2000 + 1,000)
ตัวต้านทาน = 1023.0 * (1/3)
ตัวต้านทาน = 341.0 ได้ถึง 15 โวลต์
ดังนั้นสูตรสุดท้ายสำหรับการคำนวณแรงดันไฟฟ้าจะเป็นดังนี้ซึ่งเราได้ใช้รหัสที่ระบุไว้ในตอนท้ายของบทความนี้:
แรงดันไฟฟ้า = (ค่า ADC / 341.0) * 5.0
การออกแบบวงจรและ PCB โดยใช้ EasyEDA:
ในการออกแบบวงจรสำหรับการตรวจสอบแรงดันแบตเตอรี่รถยนต์เราได้ใช้ EasyEDA ซึ่งเป็นเครื่องมือ EDA ออนไลน์ฟรีสำหรับการสร้างวงจรและ PCB อย่างราบรื่น ก่อนหน้านี้เราได้สั่งซื้อ PCB จาก EasyEDA เพียงไม่กี่ชิ้นและยังคงใช้บริการของพวกเขาเนื่องจากเราพบกระบวนการทั้งหมดตั้งแต่การวาดวงจรไปจนถึงการสั่งซื้อ PCBs สะดวกและมีประสิทธิภาพมากขึ้นเมื่อเปรียบเทียบกับผู้ผลิต PCB อื่น ๆ EasyEDA นำเสนอการวาดวงจรการจำลองการออกแบบ PCB ฟรีและยังมีบริการ PCB ที่กำหนดเองคุณภาพสูง แต่ราคาต่ำ ดูบทช่วยสอนที่สมบูรณ์เกี่ยวกับวิธีใช้ Easy EDA สำหรับการสร้างแผนผังโครงร่าง PCB จำลองวงจร ฯลฯ
EasyEDA พัฒนาขึ้นทุกวัน พวกเขาได้เพิ่มคุณสมบัติใหม่มากมายและปรับปรุงประสบการณ์การใช้งานโดยรวมซึ่งทำให้ EasyEDA ง่ายขึ้นและใช้งานได้สำหรับการออกแบบวงจร เร็ว ๆ นี้พวกเขากำลังจะเปิดตัวเวอร์ชันเดสก์ท็อปซึ่งสามารถดาวน์โหลดและติดตั้งบนคอมพิวเตอร์ของคุณเพื่อใช้งานแบบออฟไลน์
ใน EasyEDA คุณสามารถทำให้การออกแบบวงจรและ PCB ของคุณเป็นแบบสาธารณะเพื่อให้ผู้ใช้รายอื่นสามารถคัดลอกหรือแก้ไขได้และสามารถใช้ประโยชน์จากที่นั่นได้เราได้ทำให้รูปแบบวงจรและ PCB ทั้งหมดของเราเป็นแบบสาธารณะสำหรับการตรวจสอบแรงดันแบตเตอรี่รถยนต์ตรวจสอบลิงก์ด้านล่าง:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
ด้านล่างนี้เป็นภาพรวมของเลเยอร์บนสุดของเลย์เอาต์ PCB จาก EasyEDA คุณสามารถดูเลเยอร์ใดก็ได้ (บน, ล่าง, ท็อปซิล, พื้นและอื่น ๆ) ของ PCB โดยเลือกเลเยอร์จากหน้าต่าง 'เลเยอร์'
การคำนวณและการสั่งซื้อตัวอย่าง PCB ทางออนไลน์:
หลังจากออกแบบ PCB เสร็จแล้วคุณสามารถคลิกไอคอนของ Fabrication output ซึ่งจะนำคุณไปสู่หน้าคำสั่งซื้อ PCB ที่นี่คุณสามารถดู PCB ของคุณใน Gerber Viewer หรือดาวน์โหลดไฟล์ Gerber ของ PCB ของคุณและส่งไปยังผู้ผลิตรายใดก็ได้นอกจากนี้ยังง่ายกว่ามาก (และถูกกว่า) ในการสั่งซื้อโดยตรงใน EasyEDA ที่นี่คุณสามารถเลือกจำนวน PCB ที่คุณต้องการสั่งจำนวนชั้นทองแดงที่คุณต้องการความหนาของ PCB น้ำหนักทองแดงและแม้แต่สี PCB หลังจากที่คุณเลือกตัวเลือกทั้งหมดแล้วให้คลิก“ บันทึกลงในรถเข็น” และดำเนินการสั่งซื้อให้เสร็จสิ้นคุณจะได้รับ PCBs ของคุณในอีกไม่กี่วันต่อมา
คุณสามารถสั่งซื้อ PCB นี้ได้โดยตรงหรือดาวน์โหลดไฟล์ Gerber โดยใช้ลิงค์นี้
หลังจากไม่กี่วันของการสั่งซื้อ PCB ฉันได้รับตัวอย่าง PCB
หลังจากได้รับ PCB แล้วฉันได้ติดตั้งส่วนประกอบที่จำเป็นทั้งหมดบน PCB และในที่สุดเราก็มีระบบตรวจสอบแบตเตอรี่รถยนต์ของเรา พร้อมแล้วให้ตรวจสอบวงจรนี้ในการทำงานในวิดีโอที่ให้ไว้ในตอนท้าย
คำอธิบายการเขียนโปรแกรม:
โปรแกรมของโครงการนี้ค่อนข้างยากสำหรับผู้เริ่มต้น ในการเขียนโค้ดนี้เราจำเป็นต้องมีไฟล์ส่วนหัว ที่นี่เรากำลังใช้ MPLAB X IDE สำหรับการเข้ารหัสและคอมไพเลอร์ XC เพื่อสร้างและคอมไพล์โค้ด รหัสถูกเขียนด้วยภาษาซี
ในรหัสนี้เราได้อ่านแรงดันไฟฟ้าของแบตเตอรี่โดยใช้พินอนาล็อกและสำหรับการควบคุมหรือส่งข้อมูลไปยังจอแสดงผลเจ็ดส่วน 4 หลักเราได้ใช้ Timer Interrupt Server Routine ในไมโครคอนโทรลเลอร์ PIC การคำนวณทั้งหมดสำหรับการวัดแรงดันไฟฟ้าจะทำในรูทีนของโปรแกรมหลัก
อันดับแรกในโค้ดเราได้รวมส่วนหัวแล้วกำหนดค่าไมโครคอนโทรลเลอร์ PIC โดยใช้ configuration Bits
# รวม
จากนั้นประกาศตัวแปรและหมุดที่กำหนดไว้สำหรับการแสดงเจ็ดส่วน
int counter2 ที่ไม่ได้ลงนาม; ตำแหน่งถ่านที่ไม่ได้ลงนาม = 0; ถ่าน k ที่ไม่ได้ลงนาม = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISAbits.TRISA2 #define TRIS_led2 TRISAbits.TRISA5 #define TRIS_led3 TRISAbits.TRISA0 #define TRIS_led4 TRISAbits.TRISA1 #define TRIS_led5 TRISAbits.TRISA………………
ตอนนี้เราได้สร้างรูทีนการขัดจังหวะตัวจับเวลาสำหรับการขับเคลื่อนการแสดงเจ็ดส่วน:
โมฆะขัดจังหวะ low_priority LowIsr (โมฆะ) {if (TMR0IF == 1) {counter2 ++; ถ้า (counter2> = 1) {if (ตำแหน่ง == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;…….. ป…..
ขณะนี้อยู่ในฟังก์ชัน void main () เราได้เริ่มการจับเวลาและขัดจังหวะ
GIE = 1; // GLOBLE INTRRUPT เปิดใช้งาน PEIE = 1; // แฟล็ก intrupt อุปกรณ์ต่อพ่วง T0CON = 0b000000000; // ค่า prescaler ใส่ TMR0IE = 1; // ขัดจังหวะเปิดใช้งาน TMR0IP = 0; // ขัดจังหวะลำดับความสำคัญ TMR0 = 55536; // เริ่มตัวนับหลังจากค่านี้ TMR0ON = 1;
จากนั้นใน ขณะที่ วนซ้ำเราอ่านอินพุตอะนาล็อกที่พินอนาล็อกและเรียกใช้ฟังก์ชันบางอย่างเพื่อการคำนวณ
ในขณะที่ (1) {adc_init (); สำหรับ (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = มูลค่า; } adcValue = (ลอย) adcValue / 40.0; แปลง (adcValue); ล่าช้า (100); }
กำหนด adc_init () ฟังก์ชันใช้สำหรับเริ่มต้น ADC
เป็นโมฆะ adc_init () {ADCON0 = 0b00000011; // เลือกช่อง adc ADCON1 = 0b00001110; // เลือกอะนาล็อกและดิจิตอล i / p ADCON2 = 0b10001010; // เวลา eqisation ถือเวลาสูงสุด ADON = 1; }
ระบุฟังก์ชัน adc_value เพื่ออ่านอินพุตจากพินอนาล็อกและคำนวณแรงดันไฟฟ้า
ลอย adc_value (โมฆะ) {float adc_data = 0; ในขณะที่ (GO / DONE == 1); // ข้อมูลบิตที่สูงขึ้นเริ่มการแปลงค่า adc adc_data = (ADRESL) + (ADRESH << 8); // จัดเก็บเอาต์พุต 10 บิต adc_data = ((adc_data / 342.0) * 5.0); ส่งคืน adc_data; }
และฟังก์ชันการ แปลงที่ กำหนดใช้เพื่อแปลงค่าแรงดันไฟฟ้าเป็นค่าที่รองรับ
โมฆะแปลง (float f) {int d = (f * 100); หลัก 1 = d% 10; d = d / 10; หลัก 2 = d% 10; d = d / 10; หลัก 3 = d% 10; หลัก 4 = d / 10; }
ตรวจสอบรหัสที่สมบูรณ์สำหรับโครงการนี้ด้านล่างด้วยวิดีโอสาธิต