اطلاعیه

Collapse
No announcement yet.

اندازه گیری ولتاژ DC در رنج 0 الی 100 ولت DC

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    اندازه گیری ولتاژ DC در رنج 0 الی 100 ولت DC

    با سلام ، من برنامه ای نوشتم که ولتاژ 0 الی 100 ولت رو بتونم نمایش بدم
    برای اندازه گیری ولتاژ 0 الی 30 ولت مشکلی پیش نمی یاد و ولتاژ نمایش می دم ولی زمانی که برنامه رو به رنج ولتاژ 0 الی 100 تغییر می دم اعداد بی ربطی نمایش می ده ، از دوستانی که در این زمینه تخصص دارن درخواست راهنمایی دارم
    [img width=67 height=100]http://dc365.4shared.com/img/pGCA8eEE/30607875402595991224.jpg[/img]
    1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
    2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
    3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

    #2
    پاسخ : اندازه گیری ولتاژ DC در رنج 0 الی 100 ولت DC

    نوشته اصلی توسط kazemihossein33 نمایش پست ها
    با سلام ، من برنامه ای نوشتم که ولتاژ 0 الی 100 ولت رو بتونم نمایش بدم
    برای اندازه گیری ولتاژ 0 الی 30 ولت مشکلی پیش نمی یاد و ولتاژ نمایش می دم ولی زمانی که برنامه رو به رنج ولتاژ 0 الی 100 تغییر می دم اعداد بی ربطی نمایش می ده ، از دوستانی که در این زمینه تخصص دارن درخواست راهنمایی دارم
    سلام برای اینکه کسی بتونه کمک کنه برنامتون رو قرار بدین
    قصه زندگی همیشه با مدادی که ما دوست داریم نوشته نمی شه .....

    دیدگاه


      #3
      پاسخ : اندازه گیری ولتاژ DC در رنج 0 الی 100 ولت DC

      سلام ، ممنونم مشکل حل شده
      اینم برنامه گفتم شاید کسی بخواد استفاده کنه ، البته من به دلیل نیاز خودم مقداری تغییرات در برنامه دادم





      #include <mega16.h>
      #include <delay.h>

      /* ------------------ Define List ------------------ */

      //#define ADC_VREF_TYPE 0x40
      #define ADC_VREF_TYPE 0xC0
      #define n1 PORTD.0
      #define n2 PORTD.1
      #define n3 PORTD.2
      #define n4 PORTD.3

      /* ------------------------------------------------- */

      void startup();
      void seven_sho(unsigned int seven_time);
      void Hex2Dec(unsigned int Convert);
      void slide(unsigned int slid_time,unsigned char slid_num);
      float V_sens(unsigned char V_sens_input,unsigned char V_sens_mod);

      /* ------------------ Data Types ------------------ */

      unsigned char a0=9,a1=9,a2=9,a3=9,slid_cont=0;
      unsigned int cont_main_loop=0,seven_cont=0,volt_Measured=0;
      int volt_Measured_temp=0;
      float V_sens_temp=0;

      unsigned char seg[]= {
      0xc0,0xf9,0xa4,
      0xb0,0x99,0x92,
      0x82,0xf8,0x80,
      0x90
      };

      unsigned char sega[]= {
      0xfe,0xfd,0xfb,
      0xf7,0xef,0xdf,
      0xbf,0x7f
      };

      /* ----------- Analog To Digital Function ---------- */

      unsigned int read_adc(unsigned char adc_input)
      {
      ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
      delay_us(10);
      ADCSRA|=0x40;
      while ((ADCSRA & 0x10)==0);
      ADCSRA|=0x10;
      return ADCW;
      }

      /* ------------------ Main Loop ------------------ */

      void main(void)
      {
      startup();
      slide(100,5);
      while (1)
      {
      cont_main_loop++;
      if(cont_main_loop==10)
      {
      cont_main_loop=0;
      volt_Measured_temp =( 10*((unsigned int)V_sens(0,2)))-600;
      if(volt_Measured_temp > 0)
      {
      volt_Measured = (unsigned int)volt_Measured_temp;
      }
      if(0 > volt_Measured_temp)
      {
      volt_Measured = 0;
      }

      }

      seven_sho(5);
      Hex2Dec(volt_Measured*2);
      delay_ms(1);
      }
      }

      void Hex2Dec(unsigned int Convert)
      {
      a0 = (Convert%10);
      a1 = (Convert/10)%10;
      a2 = (Convert/100)%10;
      a3 = (Convert/1000)%10;

      }

      void seven_sho(unsigned int seven_time)
      {

      n1=1; n2=0; n3=0; n4=0;
      PORTC=0;
      PORTC=seg[a3];

      delay_ms(seven_time);
      n1=0; n2=1; n3=0; n4=0;
      PORTC=0;
      PORTC=seg[a2];
      delay_ms(seven_time);
      n1=0; n2=0; n3=1; n4=0;
      PORTC=0;
      PORTC=seg[a1];
      PORTC.7=0;
      delay_ms(seven_time);
      n1=0; n2=0; n3=0; n4=1;
      PORTC=0;
      PORTC=seg[a0];
      delay_ms(seven_time);

      }

      float V_sens(unsigned char V_sens_input,unsigned char V_sens_mod)
      {
      return (((read_adc(V_sens_input)*5.11)/1023)*23.904);
      }

      void startup()
      {
      PORTC=0x00;
      DDRC=0xFF;
      PORTD=0x00;
      DDRD=0xFF;

      ADMUX=ADC_VREF_TYPE & 0xff; // ADC initialization
      ADCSRA=0x86; // ADC Clock frequency: 15.625 kHz
      // ADC Voltage Reference: AVCC pin
      }
      جدیدترین ویرایش توسط kazemihossein33; ۲۱:۰۱ ۱۳۹۷/۱۱/۰۲.
      [img width=67 height=100]http://dc365.4shared.com/img/pGCA8eEE/30607875402595991224.jpg[/img]
      1-مردان بزرگ اراده مي کنند و مردان کوچک آرزو
      2-افراد بزرگ، هميشه به دنبال ايده هاي بزرگند و افراد کوچک به دنبال افراد بزرگ
      3-هميشه سعي کن آنقدر کامل باشي که بزرگترين تنبيه تو براي ديگران گرفتن خودت از آنها باشد.

      دیدگاه

      لطفا صبر کنید...
      X