Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: pakapong16 on November 08, 2009, 11:17:14 PM



Title: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุกค
Post by: pakapong16 on November 08, 2009, 11:17:14 PM
แก้ไขยังงัยครับ

ขอคำแนะนำด้วยครับ


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: smitdh on November 09, 2009, 12:49:37 PM
ให้ข้อมูลน้อยไปนิดครับ
- เช่นใช้เป็นอินพุตแบบไหนใช้ R pullup หรือ pull down แล้วเวลามันรีเซ็ทนะ ตอนไหน ตอนกดปุ่มหรือ ตั้งแต่เริ่มจ่ายไฟเลย
- ใช้ฟังก์ชั่นอะไรในการอ่านค่าอินพุต
- ใช้ตัวโปรแกรมอะไร แบบ PICKIT2 หรือเปล่า ขา MCLR ต่อไว้อย่างไร ใช้เบอร์อะไรในการทดลองครับ


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: pakapong16 on November 10, 2009, 08:56:07 PM
จ่ายอินพุตเป็นรูปของสัญญาณไฟฟ้า Monophasic Damped Wave ผ่านวงจรแบ่งแรงดันจาก 200-3000 Vpk. ให้เหลือเพียง 0-5 V.

ใช้ตัวโปรแกรมอะไร แบบ PICKIT2  ขา MCLR ต่อกับสวิตช์กดรีเซ็ต ใช้ PIC 16F877 ครับ

ใช้คำสั่งการอ่านค่า ADC จากอนาลอกเป็นดิจิตอล แล้วให้โชว์ค่าที่สูงสุดค้างไว้


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: smitdh on November 10, 2009, 11:00:59 PM
การอ่านค่าแรงดัน 200-3000 Vpk.(รู้สึกว่า length มันกว้างจัง) ด้วยวงจรแบ่งแรงดันให้เหลือเพียง 0-5 V
แล้วมันเป็นไฟ DC หรือ AC ครับ Source มันคืออะไรเช่น จากอุปกรณ์สร้างแรงดันเพื่อใช้ทดสอบในห้องแลป หรือ generator ประเภทใดทำไม length มันถึงได้กว้างขนาดนั้นครับ
หากเป็นแหล่งกำเนิดแรงดันสูง แล้วมาต่อกับ MCU มันไม่เสถียรอยู่แล้วครับ เพราะถ้าใช้กราวน์ร่วมกัน
- หากเป็น AC ก็ควรใช้หม้อแปลงแบ่งแรงดันลงมาดีกว่าครับ เพราะมันแยกขดกัน ทำให้กราวน์แยกจากกัน
- หากเป็น DC ก็ใช้พวก Opto เข้าช่วยก็ได้ครับ


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: pakapong16 on November 11, 2009, 09:19:46 PM
มันเป็นไฟ DC จากเครื่องกระตุกหัวใจ(Defibrillator) ครับ ที่ระดับพลังงานน้อยๆๆ(2,5,7,10J) MCU อ่านได้อยู่ครับ


แต่พอระดับพลังงาน20 J ขึ้นไป MCU ก้อเกิดการรีเซ็ต เมื่อมีการ shock ให้อินพุตเข้า MCU ขาAN0

สาเหตุเกิดจากอะไรหรอครับ



Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: smitdh on November 11, 2009, 11:50:36 PM
- การวัดไฟค่าที่สูงกว่าระดับแรงดัน VDD (+5V)ที่จ่ายให้ MCU นั้นจะต้องใช้
- ในวงจรแบ่งแรงดันประกอบไปด้วย R1 กับ R2 เราจะนำแรงดันที่ตกคร่อม R2 มาเข้ากับ MCU ซึ่งแรงดันสูงสุดที่ตกคร่อม R2 นี้จะต้องไม่เกิน 5V
- แสดงว่าแรงดัน ที่ระดับพลังงาน20 J ทำให้แรงดันที่ตกคร่อม R2 เกิน 5 V จะทำให้ MCU ทำงานผิดพลาดได้ (ถึงแม้ว่าที่ขา I/O ของ PIC จะมี Zener diode อยู่แล้วก็ตาม )
- ให้ลองลดค่า R1 ลง
- ให้ลองต่อค่า C ค่าน้อยๆ (0.001-0.1) คร่อม R1

- การต่อแหล่งกำเนิดแรงดันสูง กับ MCU ควรจะหาวิธีแยกกราวน์ให้ได้ครับ ***จำเป็น


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: pakapong16 on November 18, 2009, 01:47:26 AM
ถ้าอยากเขียนให้ mcu นับเวลาอินพุตว่าเป็นระยะนานเท่าไหร่


เริ่มต้นยังงัยดีครับ


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: smitdh on November 19, 2009, 04:57:06 PM
การนับคาบเวลาอินพุต อาจใช้ตัวแปรมานับก็ได้ครับ
หรือใช้ Timer/Counter ดูรายละเอียดจาก
http://www.thaimicrotron.com/CCS-628/Timer/TimerCounter.htm


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: pakapong16 on December 11, 2009, 02:57:51 PM
ถ้าอยากเขียน ให้มันยกกำลัง  เช่น 2.54 ยกกำลัง X-1

เขียนใน MCU ที่เป็นภาษา C ยังงัยครับ


Title: Re: จ่ายอินพุตเข้า pic16f877 แล้วมันรีเซ็ตใหม่ทุก&#
Post by: smitdh on December 14, 2009, 12:49:49 AM
ในภาษาซี เขียนเป็น 2.54e-1 ครับ