Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: Elec_noob on January 28, 2013, 06:15:23 PM



Title: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu ค&#
Post by: Elec_noob on January 28, 2013, 06:15:23 PM
ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu ครับ

มีอุปกรณ์อยู่ตัวนึงวัดแรงดันที่ ทำงานอยู่ที่ 0-0.5V (0ปกติ 0.5 ทำงาน) ผมต้องการนะไปต่อ input ให้กับmcu ผมต้องทำยังไงดีครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on January 29, 2013, 10:41:46 AM
ไม่ต้องแปลงแรงดันครับ ให้ใช้ขา A2D อ่่านค่าเข้ามาได้เลยครับ
อย่างเช่นขา RA0 ลองดูตัวอย่าง

(http://www.thaimicrotron.com/PIC/SERVO/Graph/ServoTest2.png)
http://www.thaimicrotron.com/PIC/SERVO/SERVO_VR.htm



Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Wiz on January 29, 2013, 12:15:55 PM
ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu ครับ

มีอุปกรณ์อยู่ตัวนึงวัดแรงดันที่ ทำงานอยู่ที่ 0-0.5V (0ปกติ 0.5 ทำงาน) ผมต้องการนะไปต่อ input ให้กับmcu ผมต้องทำยังไงดีครับ

ง่ายสุดก็ใช้ ADC อ่านเข้ามาครับ อย่างที่ท่าน Microx เสนอ หรือถ้าอยากอ่านเป็น logic ก็ใช้ comparator ช่วยครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on January 29, 2013, 06:33:22 PM
ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu ครับ

มีอุปกรณ์อยู่ตัวนึงวัดแรงดันที่ ทำงานอยู่ที่ 0-0.5V (0ปกติ 0.5 ทำงาน) ผมต้องการนะไปต่อ input ให้กับmcu ผมต้องทำยังไงดีครับ

ง่ายสุดก็ใช้ ADC อ่านเข้ามาครับ อย่างที่ท่าน Microx เสนอ หรือถ้าอยากอ่านเป็น logic ก็ใช้ comparator ช่วยครับ


ขอบคุณ คุณMicrox และคุณWiz มากครับ

และพอจะมีตัวอย่างของ วงจรcomparator หรือป่าวครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Wiz on January 29, 2013, 08:29:40 PM
(http://www.mcuwizard.com/wp-content/uploads/2013/01/comparator.png)


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on January 29, 2013, 10:33:39 PM
PIC ภายในก็มี comparator ให้ใช้งานครับ ลองไปดู datasheet เพิ่ม และ
PIC_Base_C_6.pdf  (http://www.google.co.th/url?sa=t&rct=j&q=how%20to%20use%20comparator%20in%20ccs&source=web&cd=1&ved=0CCwQFjAA&url=http%3A%2F%2Fwww.gooligum.com.au%2Ftutorials%2Fbaseline%2FPIC_Base_C_6.pdf&ei=-ukHUdTOFITIrQfM6oFY&usg=AFQjCNGc-rcf7L0zdl-s_JJT2Eie_0Bpyg&bvm=bv.41524429,d.bmk&cad=rja)

ลองทดสอบ A2D ก่อนถ้าได้จะสะดวกมาก โดยใช้ VR 10K ปรับแรงดันไปที่ 0 และ 0.5V
แล้วลองอ่านค่ามาเปรียบเทียบว่าที่แรงดัน 0.5V วัดออกมาได้เท่าไร  แล้วนำมาใช้เป็นเงื่อนไขในการทำงานอีกที
หาก 8 บิทระเอียดไม่พอลองใช้ 10 บิท โดยให้
#device ADC=10



Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on January 31, 2013, 10:23:43 AM
ขอบคุณ คุณWiz และคุณMicroX ครับ
เดี๋ยวจะลองไปหาอุปกรณ์มาต่อดูครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on February 07, 2013, 09:15:16 AM
(http://www.mcuwizard.com/wp-content/uploads/2013/01/comparator.png)
ลองต่อวงจรตามนี้แล้วแต่ค่าที่ได้ไม่เท่ากับที่ sim ในโปรแกรมเลยครับ

ไฟ ออกไม่ถึง 5v


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on February 07, 2013, 10:54:49 AM
ลองลดค่า R 1K ดูอีกทีครับ หรือใช้ VR ปรับเพื่อทดสอบก่อน

ไม่ทราบว่าคุณ Elec_noob ใช้ Compiler อะไร แล้ว PIC เบอร์ไหนครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on February 07, 2013, 06:34:53 PM
ลองลดค่า R 1K ดูอีกทีครับ หรือใช้ VR ปรับเพื่อทดสอบก่อน

ไม่ทราบว่าคุณ Elec_noob ใช้ Compiler อะไร แล้ว PIC เบอร์ไหนครับ

ผมจะโมตู้ขายขนมเก่า
 ผมใช้ PIC 18F4550 (บอร์ดของ ETT) ในการรับค่าจาก การกดkey ตัวเลขที่มากับตู้ ครับ ยังไงช่วยแนะนำให้ด้วยนะครับ
(https://photos-2.dropbox.com/t/0/AAA8ysL5XGBzG4Dcme0xO270QYZP9tbX-5_bI8SLK_qqOw/10/36065406/jpeg/1024x768/2/1360242000/0/2/01mo.jpg/zr9A_g9SxQ0s9adb0raGnnHrrcwVkvjtkG5T2vRBfRo)
(https://photos-4.dropbox.com/t/0/AADqMHJUUcfX6u_vi8pIoKaG8BgI9YVK0ZLWg1ZJTxl1XQ/10/36065406/png/1024x768/2/1360242000/0/2/02.png/BnXdoDiFQS8MDviNwejzZQlggMYec0bC2m2kFEEkyUc)
(https://photos-5.dropbox.com/t/0/AACPeV6iW35GtbE8N6L1QO3KRCGUePxaHzcdVHWm4ZUaZg/10/36065406/png/1024x768/2/1360242000/0/2/03.png/SHgqcrHwE0tL4FsUtIScBTMnhQLg5aQu5Hh0CzmMLvg)


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on February 07, 2013, 07:13:43 PM
(http://upic.me/i/kn/2pic2.jpg)

จากรูปผมขอตัดต่อ เฉพาะส่วนที่ใช้งานนะครับ จะเห็นว่าประกอบไปด้วย 8 input กับ 2 output

การใช้งานเป็นลักษณะ scankey ครับ ซึ่งลักษณะสัญญาณ จะมีลักษณะเป็น pulse  หากคุณวัดมันเมื่อเทียบกับ Ground มันจะเป็นแรงดันเฉลี่ย ค่ามันเลยต่ำ หากจะรู้ค่าที่แท้จริงต้องจับด้วย scope แล้ววัด Vpp

ลักษณะเป็นการ tab สัญญาณออกมา จะต้องรู้ความสำพันธ์ของการ scankey ด้วยไม่เช่นนั้นคุณจะอ่านค่า key ออกมาไม่ถูกครับ

รูปที่คุณ Attach มามันมองเห็นบ้างไม่เห็นบ้าง ตอนนี้ไม่เห็นแล้วให้ใช้ web ฝากรูปอื่นดีกว่าครับ
http://www.thaimicrotron.com/webboard2/index.php/topic,867.0.html


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on February 08, 2013, 09:45:28 AM
(http://upic.me/i/kn/2pic2.jpg)

จากรูปผมขอตัดต่อ เฉพาะส่วนที่ใช้งานนะครับ จะเห็นว่าประกอบไปด้วย 8 input กับ 2 output

การใช้งานเป็นลักษณะ scankey ครับ ซึ่งลักษณะสัญญาณ จะมีลักษณะเป็น pulse  หากคุณวัดมันเมื่อเทียบกับ Ground มันจะเป็นแรงดันเฉลี่ย ค่ามันเลยต่ำ หากจะรู้ค่าที่แท้จริงต้องจับด้วย scope แล้ววัด Vpp

ลักษณะเป็นการ tab สัญญาณออกมา จะต้องรู้ความสำพันธ์ของการ scankey ด้วยไม่เช่นนั้นคุณจะอ่านค่า key ออกมาไม่ถูกครับ

รูปที่คุณ Attach มามันมองเห็นบ้างไม่เห็นบ้าง ตอนนี้ไม่เห็นแล้วให้ใช้ web ฝากรูปอื่นดีกว่าครับ
http://www.thaimicrotron.com/webboard2/index.php/topic,867.0.html


ผมไม่มี scope พอจะมีทางไหนดึงสัญญาณ ออกมาได้หรอป่าวครับ

ผมจะใช้วิธีดึงค่าจาก 7segment จะได้หรือป่าวครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on February 08, 2013, 11:30:03 AM
คุณน่าจะอธิบายให้ละเอียดถึงความต้องการมากกว่านี้หน่อยครับ ดูข้อแนะนำในการตั้งหัวข้อ
http://www.thaimicrotron.com/webboard2/index.php/topic,796.0.html
เพราะจะเสียเวลามากในการถามข้อมูลของคุณในแต่ละครั้งครับ นี่ก็ไปเกือบ 2 อาทิตย์แล้ว
พึ่งทราบว่าคุณต้องการดึงข้อมูลการกดคีย์จากตู้ขยายขนมครับ

ตัวอย่างคำถามงานของคุณ
1- ต้องการดึงข้อมูลจากขายขนมเก่า โดยการอ่านค่าจาก keyboard ได้หรือไม่ เนื่องจากวัดค่าสัญาณออกมาได้ 0.5 V  โดยลงรูปหรือวงจร
2- การดึงข้อมูลจากขายขนมเพื่อที่จะทำอะไร กับมัน (ข้อมูลตรงนี้เพื่อวิเคราะห์ ดูทางอื่นๆอีก)
3- ใช้ PIC เบอร์ PIC18F4550 จาก ETT และใช้คอมไพล์เลอร์ ?  (และคุณมีความรู้ทางด้านนี้มากน้อยเพียงใด)

จากคำถามข้างบนก็จะสามารถตอบได้ในครั้งเดียวครับ

การ tab จาก 7segment ก็เป็นอีกวิธีหนึ่ง แต่ไม่ทราบวัตถุประสงค์จากข้อสองครับ



Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on February 08, 2013, 11:57:01 AM
คุณน่าจะอธิบายให้ละเอียดถึงความต้องการมากกว่านี้หน่อยครับ ดูข้อแนะนำในการตั้งหัวข้อ
http://www.thaimicrotron.com/webboard2/index.php/topic,796.0.html
เพราะจะเสียเวลามากในการถามข้อมูลของคุณในแต่ละครั้งครับ นี่ก็ไปเกือบ 2 อาทิตย์แล้ว
พึ่งทราบว่าคุณต้องการดึงข้อมูลการกดคีย์จากตู้ขยายขนมครับ

ตัวอย่างคำถามงานของคุณ
1- ต้องการดึงข้อมูลจากขายขนมเก่า โดยการอ่านค่าจาก keyboard ได้หรือไม่ เนื่องจากวัดค่าสัญาณออกมาได้ 0.5 V  โดยลงรูปหรือวงจร
2- การดึงข้อมูลจากขายขนมเพื่อที่จะทำอะไร กับมัน (ข้อมูลตรงนี้เพื่อวิเคราะห์ ดูทางอื่นๆอีก)
3- ใช้ PIC เบอร์ PIC18F4550 จาก ETT และใช้คอมไพล์เลอร์ ??? (และคุณมีความรู้ทางด้านนี้มากน้อยเพียงใด)

จากคำถามข้างบนก็จะสามารถตอบได้ในครั้งเดียวครับ

การ tab จาก 7segment ก็เป็นอีกวิธีหนึ่ง แต่ไม่ทราบวัตถุประสงค์จากข้อสองครับ



ผมต้องการรับข้อมูลจากการกด Key เลข 0-9 และ reset
มาประมวลผล ว่ากดอะไปเช่น 12, 48,33 ถ้าค่าไหนไม่มีก็จะส่งสัญญาณ reset ไปที่ตู้ แตะถ้าค่าไหนมีก็จะทำการเก็บบันทึกขอมูลลง SD-Card

ผมใช้ mcu 18f4550 เขียนด้วย CCS C ตอนนี้ ติดในส่วนการรับค่าkey จากตู้นี้เท่านั้นครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on February 08, 2013, 02:22:38 PM
จากรูปที่คุณให้มา

(http://upic.me/i/wv/apic3.png)

- มี 8 Input (1-8)  กับอีก 2 Output (A,B)
- มี Input ร่วมกัน 3 ตัวคือ 1,2,3 + 9,0,R
- Output สัญญาณเป็น Active High ดูจากการต่อไดโอด
- จุดที่ใช้ตรวจจับสัญญาณ (Tab ออกมา) คือ จุด 8 Input (จุดเขียว) และ 2 จุด Output (จุดแดง)
- เนื่องจากวงจรไมโครเดิม มีระดับสัญญาณ 5 V ออกมาทาง Output A,B ผ่านไดโอด (คาดว่าเป็น 1N4148) ระดับแรงดันคร่อมไดโอด 0.6V ดังนั้นแรงดันที่วัดได้ควรจะเป็น 5-0.6  = 4.2V ที่จุด Input ทั้ง 8 แต่เนื่องจากการ scankey แรงดันที่วัดได้จะมีลักษณะเป็น pulse
- ดังนั้นจึงเป็นระดับสัญญาณที่น่าจะตรวจสอบได้ด้วยไมรโครเช่นกัน
- ค่าที่อ่านได้จาก Input 4-8 จุดใดเป็น High ก็ต่อเมื่อ จุด A เป็น High เท่านั้น
- ส่วนการอ่านค่าที่จุด 1,2,3 (bit ใด bit หนึ่ง Active) เมื่อ จุด A เป็น High, B เป็น Low
- และค่าจะเป็น 9,0,R (bit ใด bit หนึ่ง Active) เมื่อ จุด B เป็น High, A เป็น Low




Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on February 08, 2013, 05:23:36 PM
จากรูปที่คุณให้มา

(http://upic.me/i/wv/apic3.png)

- มี 8 Input (1-8)  กับอีก 2 Output (A,B)
- มี Input ร่วมกัน 3 ตัวคือ 1,2,3 + 9,0,R
- Output สัญญาณเป็น Active High ดูจากการต่อไดโอด
- จุดที่ใช้ตรวจจับสัญญาณ (Tab ออกมา) คือ จุด 8 Input (จุดเขียว) และ 2 จุด Output (จุดแดง)
- เนื่องจากวงจรไมโครเดิม มีระดับสัญญาณ 5 V ออกมาทาง Output A,B ผ่านไดโอด (คาดว่าเป็น 1N4148) ระดับแรงดันคร่อมไดโอด 0.6V ดังนั้นแรงดันที่วัดได้ควรจะเป็น 5-0.6  = 4.2V ที่จุด Input ทั้ง 8 แต่เนื่องจากการ scankey แรงดันที่วัดได้จะมีลักษณะเป็น pulse
- ดังนั้นจึงเป็นระดับสัญญาณที่น่าจะตรวจสอบได้ด้วยไมรโครเช่นกัน
- ค่าที่อ่านได้จาก Input 4-8 จุดใดเป็น High ก็ต่อเมื่อ จุด A เป็น High เท่านั้น
- ส่วนการอ่านค่าที่จุด 1,2,3 (bit ใด bit หนึ่ง Active) เมื่อ จุด A เป็น High, B เป็น Low
- และค่าจะเป็น 9,0,R (bit ใด bit หนึ่ง Active) เมื่อ จุด B เป็น High, A เป็น Low




มีตัวอย่างโปรแกรมมั้ยครับ ไม่ค่อยเข้าใจวิธีการอ่านค่าครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on February 08, 2013, 06:15:45 PM
การแสกนคีย์เป็นความรู้พื้นฐานของไมโครนะครับ คุณน่าจะผ่านตามาบ้างแล้ว

ลองดูที่ไปพรางๆ ก่อน

http://highlyliquid.com/hl2012/blog/52

search Keyword: pic scan keypad
แล้วไปที่ ค้นรูป จะดูได้ง่ายกว่า
การแสกนคีย์มีหลายแบบ ให้คุณเข้าใจถึงหลักการณ์ครับ แล้วคุณจะค่อยๆมองออกเอง

ลองค้นไปพรางๆ ก่อนต้องกลับบ้านแล้วครับ
วันจันทร์ค่อยคุยกันใหม่




Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on February 09, 2013, 07:06:20 PM
การเขียนโปรแกรม scan key เข้าใจ แต่การเขียนเพื่อดึงสัญญาณแบบนี้ไม่เข้าใจ

ต้องใช้การ interrupt หรือป่าว


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on February 11, 2013, 01:54:35 PM
- เนื่องจากวงจรไมโครเดิม มีระดับสัญญาณ 5 V  ดังนั้นจึงเป็นระดับสัญญาณที่น่าจะตรวจสอบได้ด้วยไมรโครเช่นกัน
- ในขั้นแรกคุณเขียนโปรแกรมวนลูปอ่านค่าคีย์ธรรมดาเสียก่อน โดยสนใจที่ Input 1 ก็ได้ แล้วให้ Output ต่อกับ
LED สักดวง  และเมื่อ Input 1มีค่า = "1" ก็ให้ LED ติด  แล้วลองกดที่ปุ่ม 1 ดู หาก LED ติดก็แสดงว่าผ่าน MCU สามารถอ่านโลจิก 1 ได้
- ต่อมาก็อ่าน Input เข้ามาทั้ง 8 ตัว โดยใช้ portb ก็ได้ โดยการตรวจสอบว่า bit ใดเป็น 1 หรือไม่ ถ้ามี คุณก็ไปตรวตสอบที่ output A และ B ส่วนจะเป็น bit ใดก็ให้ตรวจสอบจากค่าที่อ่านเข้ามา
   หาก A เป็น 1 ค่าคีย์ก็อยู่ในกลุ่ม 1-9
   หาก B เป็น 1 ค่าคีย์ก็อยู่ในกลุ่ม 9,0,R

- การใช้ interrupt ผมคิดว่าไม่จำเป็น เพราะงานของคุณ ตรวจสอบสนใจการ scan key เพียงอย่างเดียว
นอกเสียจากคุณไปทำงานที่สำคัญอย่างอื่นอีก


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: x-robot on February 11, 2013, 10:07:32 PM
การแสกนคีย์แบบมีไดโอด ต่างกับการแสกนคีย์แบบไม่มีไดโอดอย่างไรครับ

(http://upic.me/i/ak/keypad-schematic.gif)
ปกติเคยเห็นแต่แบบนี้

ขอบคุณครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on February 14, 2013, 04:13:57 PM
(http://upic.me/i/wv/apic3.png)
key แบบนี้สามารถกดได้หลายคีย์พร้อมกันครับ โดยไม่ทำให้พอร์ตเสียหาย

(http://upic.me/i/ak/keypad-schematic.gif)
ส่วน key แบบนี้ อ่านคีย์ได้ครั้งละปุ่มครับ กดมากกว่า 1 ปุ่มไม่ได้จะทำให้พอร์ตช๊อตและเสียหายได้
การป้องกันก็คือต่อ R ไว้ที่พอร์ตที่เป็นเอาต์พุตครับ
 


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on March 07, 2013, 04:21:00 PM
ผมลองเขียนโปรแกรมตามนี้ แต่สามารถรับค่าได้บ้างไม่ได้บ้าง เบิ้ลก็มี พอจะมีวิธีอื่นอีกหรือป่าวครับ

Code:
#include <18F4550.h>
//#DEVICE ICD=TRUE
#include <stdlib.h>
#fuses HSPLL,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGEN,NOWDT
#use delay(clock=48000000)
#use rs232(uart1, baud=9600, stream=CH1,BITS = 8, STOP = 1, PARITY = N, ERRORS)
#use    fast_io(A)
#define LCD_E     PIN_A3
#define LCD_CLK   PIN_A4
#define LCD_DIN   PIN_A5
#include <lcd_3_pins.c> //74HC595

// global variables
BYTE blink = 0;
BYTE kreset = 0;
int kbuff[3];
int kindex = 0;

void main(void) {
   delay_ms(100);
   SETUP_ADC_PORTS(NO_ANALOGS);
   set_tris_a(0x03);       // Set Pin A0-A1 as input
   set_tris_b(0xFF);       // Set Pin B0-B7 as input
   output_drive(PIN_D2);   // Set Pin D2 as output
   output_drive(PIN_D3);   // Set Pin D3 as output
   output_low(PIN_D2);
   output_low(PIN_D3);
   lcd_init();                // initialize the LCD
   printf(lcd_putc,"\fLoading...");
   printf("Loading...\n\r");
   delay_ms(12500);
   kreset=1;
   while(true){
         if(!blink){
            if(!input(PIN_B0)){
               if(!input(PIN_A0))
                  {printf(lcd_putc,"1");printf("KEY---1\n\r");kbuff[kindex++]=1;}
               else if(!input(PIN_A1))
                  {printf(lcd_putc,"9");printf("KEY---9\n\r");kbuff[kindex++]=9;}
            }
            else if(!input(PIN_B1)){
               if(!input(PIN_A0))
                  {printf(lcd_putc,"2");printf("KEY---2\n\r");kbuff[kindex++]=2;}
               else if(!input(PIN_A1))
                  {printf(lcd_putc,"8");printf("KEY---8\n\r");kbuff[kindex++]=8;}
            }
            else if(!input(PIN_B2)){
               if(!input(PIN_A0))
                  {printf(lcd_putc,"3");printf("KEY---3\n\r");kbuff[kindex++]=3;}
               else if(!input(PIN_A1))
                  {printf(lcd_putc,"\fReset!");printf("KEY---Reset\n\r");kreset=1;}
            }
            else if(!input(PIN_B3) && !input(PIN_A0))
               {printf(lcd_putc,"4");printf("KEY---4\n\r");kbuff[kindex++]=4;}
            else if(!input(PIN_B4) && !input(PIN_A0))
               {printf(lcd_putc,"5");printf("KEY---5\n\r");kbuff[kindex++]=5;}
            else if(!input(PIN_B5) && !input(PIN_A0))
               {printf(lcd_putc,"6");printf("KEY---6\n\r");kbuff[kindex++]=6;}
            else if(!input(PIN_B6) && !input(PIN_A0))
               {printf(lcd_putc,"7");printf("KEY---7\n\r");kbuff[kindex++]=7;}
            else if(!input(PIN_B7) && !input(PIN_A0))
               {printf(lcd_putc,"8");printf("KEY---8\n\r");kbuff[kindex++]=8;}
         }
         if(kindex==1 && (kbuff[0]==9 || kbuff[0]==0))
            {kindex=0;kreset=1;}
         if(kindex==2 && (kbuff[1]==5 || kbuff[1]==9 || kbuff[1]==0))
            {kindex=0;kreset=1;}
         else if(kindex==2){
            printf(lcd_putc,"\nSelect [%d%d]",kbuff[0],kbuff[1]);
            printf("\n\rSelect [%d%d] \n\r",kbuff[0],kbuff[1]);
            blink=1;
            kindex=0;
         }
         if(kreset){
            printf(lcd_putc,"\fStart:");
            printf("Start:\n\r");
            output_high(PIN_D3);
            delay_ms(1000);
            output_low(PIN_D3);
            kreset=0;
            kindex=0;
            blink=0;
         }
         if(blink){
            printf(lcd_putc,"\nGet item   ");
            printf("Get item\n\r");
            output_high(PIN_D2);
            delay_ms(1000);
            output_low(PIN_D2);
            kindex=0;
            blink=0;
            kreset=1;
            delay_ms(5000);
         }
         delay_ms(20);
     }
}


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: MicroX on March 08, 2013, 07:27:33 AM
ที่ว่ารับได้บ้างไม่ได้บ้าง แสดงว่ามีได้ใช่ไหมครับ
แล้วที่ได้ นั้นถูกต้องตามที่กดหรือเปล่าครับ

แล้วจาก http://www.thaimicrotron.com/webboard2/index.php/topic,1031.msg2787.html#msg2787
เป็นเรื่องเดียวกันหรือเปล่าครับ

เพราะถ้าค่าที่รับได้แล้วถูก แสดงว่ามาถูกทางแล้ว
ส่วนที่รับไม่ได้ หรือ มาสองครั้งติดกัน ก็ต้องไล่หากันอีกที

ข้อมูลที่ให้มาก็ไม่ได้อธิบายว่าเป็นมาอย่างไร pin ไหนต่อจุดไหน
เพราะผมไม่มี HW อยู่ ต้องในจิตนาการครับ

(http://upic.me/i/wv/apic3.png)

เช่นคุณใช้ pin ใดเป็น Input บ้าง ต้องมาไล่โค๊ดเอาเอง
แล้วตัวอย่างค่าที่ได้เมื่อกดปุ่มอะไร อ่านได้ค่าอะไรออกมา ประมาณนี้ครับ
เริ่มแรกก็ต้อง compile ก่อน เพื่อดูว่ามันฟ้องอะไรบ้าง ก็คอมไพล์ไม่ผ่าน
เพราะ lcd_3_pins.c  ก็ไม่มีครับ

แล้วโค๊ด ที่เป็นลักษณะ if-else if-else ค่อนข้างทำความเข้าใจยากครับ
comment ก็ไม่ได้เขียนไว้ ว่าช่วงในทำอะไรบ้าง

ในในโค๊ดเห็นมีตัวแปรที่ใช้เป็น flag เช่น kreset blink จุดประสงค์ไว้ทำอะไรครับ
แล้วการสแกน input พร้อมทั้งมีการแสดงผลบน LCD ไปด้วย อาจทำให้ไปรับ Input ใหม่ไม่ทัน
เพราะ LCD จะทำงานค่อนค่างช้า ข้อมูลส่วนนั้นก็จะหายครับ





Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on March 08, 2013, 12:31:35 PM
Quote
ที่ว่ารับได้บ้างไม่ได้บ้าง แสดงว่ามีได้ใช่ไหมครับ
แล้วที่ได้ นั้นถูกต้องตามที่กดหรือเปล่าครับ
ค่าที่ได้ถูกต้องครับ

Quote
แล้วจาก http://www.thaimicrotron.com/webboard2/index.php/topic,1031.msg2787.html#msg2787
เป็นเรื่องเดียวกันหรือเปล่าครับ
กระทู้นี้ คือก่อนที่จะต่อวงจรเพิ่มครับ ตอนนี้กลับด้านแล้วครับ

Quote
ข้อมูลที่ให้มาก็ไม่ได้อธิบายว่าเป็นมาอย่างไร pin ไหนต่อจุดไหน
เพราะผมไม่มี HW อยู่ ต้องในจิตนาการครับ
เช่นคุณใช้ pin ใดเป็น Input บ้าง ต้องมาไล่โค๊ดเอาเอง
แล้วตัวอย่างค่าที่ได้เมื่อกดปุ่มอะไร อ่านได้ค่าอะไรออกมา ประมาณนี้ครับ
เริ่มแรกก็ต้อง compile ก่อน เพื่อดูว่ามันฟ้องอะไรบ้าง ก็คอมไพล์ไม่ผ่าน
เพราะ lcd_3_pins.c  ก็ไม่มีครับ

อันนี่ผมต้องขอโทษที่ให้ข้อมูลไม่หมด และที่ไม่ได้ให้มาเพราะผมคิดว่ามันไม่จำเป็น และcodeที่เขียนเป็นcode ง่ายๆ และส่วน  lcd_3_pins.c ก็สามารถตัดได้เพราะก่อนหน้านี้ก็ไม่ได้ใส่ ก็ทำงานได้
เหมือนตอนที่ใส่มา

Quote
แล้วโค๊ด ที่เป็นลักษณะ if-else if-else ค่อนข้างทำความเข้าใจยากครับ
comment ก็ไม่ได้เขียนไว้ ว่าช่วงในทำอะไรบ้าง
ครับผมก็ไม่ค่อยเก่งในการเขียนเท่าไหรผมจึงได้สอบถามว่าพอจะที่วิธีอื่นอีกหรือป่าวครับ

ตัวอย่าง code

Code:
if(!input(PIN_B3) && !input(PIN_A0))
               {printf("KEY---4\n\r");kbuff[kindex++]=4;}
ถ้า b3และa0 เป็น 0 (b3 ก็คือเลข 4ครับ a0 ก็คือ สัญญาณจาก A)
ให้แสดงค่า "KEY---4" และเก็บค่าใน kbuff[kindex++] ส่วน index ก็จะขึ้นอยู้กับครั้งที่กด ถ้าครั้งแรก index=0 ถ้าครั้งที่ 2  index=1


Quote
ในในโค๊ดเห็นมีตัวแปรที่ใช้เป็น flag เช่น kreset blink จุดประสงค์ไว้ทำอะไรครับ
แล้วการสแกน input พร้อมทั้งมีการแสดงผลบน LCD ไปด้วย อาจทำให้ไปรับ Input ใหม่ไม่ทัน
เพราะ LCD จะทำงานค่อนค่างช้า ข้อมูลส่วนนั้นก็จะหายครับ

ผมต้องการรับค่ามา 2 ตัวเลข แล้วจึงสั่งให้ relay ทำงาน
และที่บอกว่า สแกน input พร้อมทั้งมีการแสดงผลบน LCD ไปด้วย อาจทำให้ไปรับ Input ใหม่ไม่ทัน อันนี้ไม่เกี่ยวแน่นอนครับ
เพราะมันสามารถรับเค่า เบิ้ลได้ทั้งที่กดไปครั้งเดียว


ผมอาจจะอธิบายไม่ค่อยเก่งก็ขออภัยด้วยครับ
รูปที่แนบมาอาจจะวาดไม่ครบครับ ไม่ได้ใส่ c และแก้ ค่า r ครับ แต่ทั้งหมดต่อตามนี้ครับ


Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: gundam on March 12, 2013, 06:54:48 AM

เห็นด้วยกับคุณ MicroX ที่ว่าโค๊ดที่ให้มาควรให้มาให้ครบ
เพราะพวกเราไม่ได้มี HW เหมือนกับคุณ  เพราะต้องใช้โปรแกรม simulate
อย่างเช่น proteus โหลด hex ไฟล์เข้ามา เพื่อทดสอบ
เก่งแค่ไหน การเขียนโปแกรมแบบแห้ง ทำได้ลำบากครับ ยิ่งพวกผมทำงานแล้ว
นานๆ เขียนโปรแกรมที ที่พอจะช่วยได้ ก็แนะนำจากประสบการณ์เก่าๆ ทั้งนั้นครับ
เหตุที่ compile ไม่ผ่านก็เพราะ คุณใช้ทำสั่ง lcd_putc ไว้มากมาย
ไม่เช่นนั้นต้องมานั่ง comment บรรทัดที่มี lcd_putc ออกให้หมด
คุณลองลบบรรทัด #include <lcd_3_pins.c> ออกดูสิครับ






Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on March 12, 2013, 08:54:37 AM

เห็นด้วยกับคุณ MicroX ที่ว่าโค๊ดที่ให้มาควรให้มาให้ครบ
เพราะพวกเราไม่ได้มี HW เหมือนกับคุณ  เพราะต้องใช้โปรแกรม simulate
อย่างเช่น proteus โหลด hex ไฟล์เข้ามา เพื่อทดสอบ
เก่งแค่ไหน การเขียนโปแกรมแบบแห้ง ทำได้ลำบากครับ ยิ่งพวกผมทำงานแล้ว
นานๆ เขียนโปรแกรมที ที่พอจะช่วยได้ ก็แนะนำจากประสบการณ์เก่าๆ ทั้งนั้นครับ
เหตุที่ compile ไม่ผ่านก็เพราะ คุณใช้ทำสั่ง lcd_putc ไว้มากมาย
ไม่เช่นนั้นต้องมานั่ง comment บรรทัดที่มี lcd_putc ออกให้หมด
คุณลองลบบรรทัด #include <lcd_3_pins.c> ออกดูสิครับ



ผมได้อธิบายไปแล้วว่าสามารถลบออกไปได้ ครับ
ผลที่ได้ไม่ต่างกัน

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



Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: x-robot on March 12, 2013, 07:24:21 PM
ผมดูจากช่วงหลังๆ ของโปรแกรมมีการใช้
delay_ms(1000);
.
.
.
delay_ms(5000);

การหน่วงเวลานานๆ อาจไปรับค่าคีย์ใหม่ไม่ทัน หรือเปล่าครับ





Title: Re: ใช้วงจรอะไรเพิ่มแรงดัง จาก 0.5v เป็น5v เข้า mcu Ŧ
Post by: Elec_noob on March 12, 2013, 11:54:06 PM
ผมดูจากช่วงหลังๆ ของโปรแกรมมีการใช้
delay_ms(1000);
.
.
.
delay_ms(5000);

การหน่วงเวลานานๆ อาจไปรับค่าคีย์ใหม่ไม่ทัน หรือเปล่าครับ





เป็นช่วงที่รับข้อมูลครบแล้ว จึงสั่งให้ relay ทำงานครับ