Thai microtron community

Electronic Knowledge Base => Microcontoller & Electronics => Topic started by: pakapong16 on December 17, 2009, 05:32:06 PM



Title: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็ŧ
Post by: pakapong16 on December 17, 2009, 05:32:06 PM
รบกวนพี่ s_engine หรือ smitdh  ทีครับ

เพราะผมลองป้อนอินพุต DC ผ่าน VR ปรับค่าจ่ายเข้ากับ MCU แล้วปรากฏว่า

ป้อนค่าอินพุตเท่ากัน แต่อ่านค่าออกมาไม่เท่ากัน ผมไม่ได้เปลี่ยนค่าอินพุตเลย

เพียงแต่กดปุ่ม รีเช็ทให้ mcu อ่านค่าอีกที มันเป็นที่อะไรครับ

หรือว่า A/D ยังทำงานในครั้งแรกไม่เสร็จแล้วส่งค่ามาแสดงเลย

มีผลไหมครับ และถ้าผมเขียนโค๊ดเช็คว่า A/D ทำงานเสร็จรึยังนี้ต้องเขียนยังงัยครับ


Title: Re: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็&
Post by: s_engine on December 17, 2009, 09:55:16 PM
ลองเอาโค้ดมาแปะ ดู หน่อย

ได้วงจรที่ต่อด้วยยิ่งดี นะครับ


Title: Re: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็&
Post by: smitdh on December 18, 2009, 12:39:50 AM
เมื่อเริ่มจ่ายไฟให้ MCU หรือเมื่อ Reset MCU ยังไม่ควรติดต่อกับ I/O ในทันทีครับ
ควรจะ delay สัก 100 ms ก่อน (สำหรับอุปกรณ์ทั่วๆไป)
ลองเพิ่มทำสั่ง delay_ms(100); ไว้ใน main ก่อนที่จะใช้คำสั่ง A/D ครับ


Title: Re: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็&
Post by: pakapong16 on December 18, 2009, 06:19:12 PM
   lcd_init();
   delay_ms(1000);
   start=0;
   max1=0;
   printf(lcd_putc,"\fTEST ADC");
   printf(lcd_putc,"\nREADY...");
   delay_ms(2500);
      printf(lcd_putc,"\fTEST ADC");
      printf(lcd_putc,"\nADC1 = ");
      delay_ms(100);

   while (TRUE){

      set_adc_channel(1);
      delay_ms(2);
      ADC1 = Read_ADC();
      start=ADC1;
      if(start>max1)
      {
      max1=start;
      printf(lcd_putc,"\fTEST ADC");
      printf(lcd_putc,"\nADC1 = %ld",max1);
      delay_ms(100);


Title: Re: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็&
Post by: s_engine on December 20, 2009, 03:15:19 PM
ตอนนี้ทำงานได้หรือยังครับ


Title: Re: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็&
Post by: pakapong16 on December 21, 2009, 10:50:41 AM
มันก้อทำงานได้ครับ

แต่ค่า output แต่ละครั้งไม่ตรงกัน และไม่ใกล้เคียงเลย

พอจะมีวิธีแก้ไขอะไรได้ไหมครับ


Title: Re: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D ทำงานเสร็&
Post by: s_engine on December 21, 2009, 08:59:29 PM
ฮาร์ด แวร์ ต่ออย่างไร ใช้ R แบบปรับค่าได้หรือ ปล่าว ลองปรับ ค่า ขึ้น ลง หรือยัง
ให้เอา function ที่เอาค่าสูงสุดออก โดยให้แสดงค่า แบบ ตลอดเวลา แล้วลองปรับ R ดูผล ของ ค่าที่ได้
ตั้ง R ไว้ตำแหน่งเดิม แล้วไป รีเซต pic ปล่อยไว้ มันก็จะอ่าน ค่าแรก ก็คือ ค่าสุดท้ายก่อนกดรีเซต ดูว่าตรงกันไหม แรงดัน อนาลอค ที่จ่ายให้ pic อยู่ในช่วง 0-5 V หรือปล่าว ห้ามเกิน โดยเด็ดขาด
ลองดูอีกทีนะ ทำไปช้าๆ เริ่มไปทีละนิด เพิ่มไปทีละส่วน เอาให้ work ไปทีละอย่าง 


Title: Re: ถ้าต้องการเขียนโค๊ดเช็คว่า A/D
Post by: pakapong16 on December 22, 2009, 01:14:56 AM
ขอบคุณครับ