اطلاعیه

Collapse
No announcement yet.

یه سوال درباره برنامه راه اندازی SMt 160 ؟

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

    یه سوال درباره برنامه راه اندازی SMt 160 ؟


    چرا وقتی کریستال 4Mhz میزاریم دما ی اتاق میشه 12 و وقتی کریستال 16Mhz میزاریم دما میشه 21 درجه ؟
    من تو برنامه از یه کریستال خارجی استفاده کردم ولی وقتی کریستالو عوض میکنم این اتفاق میوفته
    کسی دلیلشو میدونه؟؟؟
    ذكات علم ياد دادنه ....

    #2
    پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

    برای اینکه شما با تغییر کریستال در واقع دارید شمردن تایمر را تحت تاثیر قرار می دید.




    دیدگاه


      #3
      پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

      پس به نظر شما از کدوم کریستال استفاده کنم .
      یکم سوالمو بد گفتم من تو برنامم از یه کریستال 4 مگا استفاده کردم دمای اتاقو 13 درجه نشون میده که یکم عجیبه ولی همینکه 16Mhz کردم
      شد 21 -22 که با یه دماسنج دیگه که دمای اتاقو گرفتم تقریبا درست بود یعنی 16 مگاهه درستر از 4MHz بود.(یعنی الان دمای اتاقا 13 درجه هست )
      نظر شما چیه؟؟
      ذكات علم ياد دادنه ....

      دیدگاه


        #4
        پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

        ذكات علم ياد دادنه ....

        دیدگاه


          #5
          پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

          دوست عزیز شما با تغییر کریستال میکرو کلاک داخلی میکرو را انتخاب می کنید. همانطور که آقا مجید گفتن شما در برنامه از تایمر استفاده کرده اید و وقتی کریستال را عوض می کنید مدت زمانی که تایمر سر ریز می شود متفاوت است.

          دیدگاه


            #6
            پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

            احتمالا شما دارین زمان on یا off بودن پالس خروجی رو برای تعیین دما استفاده می کنین که با تغییر کریستال و عدم در نظر گرفتن تغییر اون مقدار خونده شده متفاوت خواهد بود بهتره با استفاده از دیوتی سایکل استفاده کنین

            دیدگاه


              #7
              پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

              احتمالا شما دارین زمان on یا off بودن پالس خروجی رو برای تعیین دما استفاده می کنین که با تغییر کریستال و عدم در نظر گرفتن تغییر اون مقدار خونده شده متفاوت خواهد بود بهتره با استفاده از دیوتی سایکل استفاده کنین
              نه دوست عزیز اتفاقا با استفاده از DC این کارو میکنم ...
              دوستان درست میگن اگه کریستالو عوض کنم در واقع مدت زمان تایمرو عوض کردم که باعث تغیر دما میشه...
              ولی من یه چیزی رو نفهمیدم .برنامه ایی که براش نوشتم تو code vizard از کریستال 4Mhz استفاده کردم که اصولا باید درست کار کنه ولی دمای اتاقو 13
              درجه نشون میداد با یه دماسنج دیگه دمای اتاقو اندازه گرفتم شد 21 بعد کریستالو که 16Mhz گذاشتم دیدم دما شد 22
              حالا نمیدونم 13 درسته؟یا22 ؟
              تا حالا کسی با این مشکل بر نخورده؟ oo:
              ذكات علم ياد دادنه ....

              دیدگاه


                #8
                پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

                این سنسور یکی از دقیق ترین سنسور های بازاره . قطعا در برنامه نویسی اشتباه کردید .

                منظورتون از اینکه "اتفاقا با استفاده از DC این کارو میکنم ..." چیه ؟

                دیدگاه


                  #9
                  پاسخ : یه سوال درباره برنامه راه اندازی SMt 160 ؟

                  منظورتون از اینکه "اتفاقا با استفاده از DC این کارو میکنم ..." چیه ؟
                  uukd fh
                  یعنی با استفاده از محاسبه دیوتی سایکل خوجی از سنسور دما رو محاسبه مکنم ...
                  اگه برنامشو هم می خواین یه نگاه بندازین ببینید درسته

                  /************************************************** ***
                  This program was produced by the
                  CodeWizardAVR V1.25.3 Standard
                  Automatic Program Generator
                  © Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
                  http://www.hpinfotech.com

                  Project :
                  Version :
                  Date : 3/31/2009
                  Author : F4CG
                  Company : F4CG
                  Comments:


                  Chip type : ATmega16L
                  Program type : Application
                  Clock frequency :4.000000 MHz
                  Memory model : Small
                  External SRAM size : 0
                  Data Stack size : 256
                  ************************************************** ***/

                  #include <mega16.h>
                  #include <delay.h>
                  #include <stdio.h>
                  #include <stdlib.h>
                  #define xtal 16000000

                  // Alphanumeric LCD Module functions
                  #asm
                  .equ __lcd_port=0x15 ;PORTC
                  #endasm
                  #include <lcd.h>


                  bit edge=0;
                  float t1,t2;


                  // External Interrupt 0 service routine
                  interrupt [EXT_INT0] void ext_int0_isr(void)
                  {
                  // Place your code here

                  if (edge)
                  {
                  t2=TCNT1;
                  TCNT1=0;

                  //INT0 MODE:falling edge

                  MCUCR=0X02;
                  edge=0;

                  }

                  else
                  {

                  t1=TCNT1;
                  TCNT1=0;

                  // INT0 MODE: rising edge

                  MCUCR=0X03;
                  edge=1;


                  }
                  }

                  // Declare your global variables here


                  float DC;
                  float t;
                  float temp;
                  eeprom int hi=0,low=0;
                  int i;
                  unsigned char str1 [20],str2[8],str3[20];


                  void main(void)
                  {
                  // Declare your local variables here

                  // Input/Output Ports initialization
                  // Port A initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTA=0x03;
                  DDRA=0x00;

                  // Port B initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTB=0x00;
                  DDRB=0x00;

                  // Port C initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTC=0x00;
                  DDRC=0x00;

                  // Port D initialization
                  // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
                  // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
                  PORTD=0x00;
                  DDRD=0x01;

                  // Timer/Counter 0 initialization
                  // Clock source: System Clock
                  // Clock value: Timer 0 Stopped
                  // Mode: Normal top=FFh
                  // OC0 output: Disconnected
                  TCCR0=0x00;
                  TCNT0=0x00;
                  OCR0=0x00;

                  // Timer/Counter 1 initialization
                  // Clock source: System Clock
                  // Clock value: 4000.000 kHz
                  // Mode: Normal top=FFFFh
                  // OC1A output: Discon.
                  // OC1B output: Discon.
                  // Noise Canceler: Off
                  // Input Capture on Falling Edge
                  // Timer 1 Overflow Interrupt: Off
                  // Input Capture Interrupt: Off
                  // Compare A Match Interrupt: Off
                  // Compare B Match Interrupt: Off
                  TCCR1A=0x00;
                  TCCR1B=0x01;
                  TCNT1H=0x00;
                  TCNT1L=0x00;
                  ICR1H=0x00;
                  ICR1L=0x00;
                  OCR1AH=0x00;
                  OCR1AL=0x00;
                  OCR1BH=0x00;
                  OCR1BL=0x00;

                  // Timer/Counter 2 initialization
                  // Clock source: System Clock
                  // Clock value: Timer 2 Stopped
                  // Mode: Normal top=FFh
                  // OC2 output: Disconnected
                  ASSR=0x00;
                  TCCR2=0x00;
                  TCNT2=0x00;
                  OCR2=0x00;

                  // External Interrupt(s) initialization
                  // INT0: On
                  // INT0 Mode: Falling Edge
                  // INT1: Off
                  // INT2: Off
                  GICR|=0x40;
                  MCUCR=0x02;
                  MCUCSR=0x00;
                  GIFR=0x40;

                  // Timer(s)/Counter(s) Interrupt(s) initialization
                  TIMSK=0x00;

                  // Analog Comparator initialization
                  // Analog Comparator: Off
                  // Analog Comparator Input Capture by Timer/Counter 1: Off
                  ACSR=0x80;
                  SFIOR=0x00;

                  // LCD module initialization
                  lcd_init(16);

                  // Global enable interrupts
                  #asm("sei&quot

                  while (1)
                  {
                  // Place your code here


                  for (i=0;i<100;i++)
                  {
                  DC= t1 / (t1 + t2);
                  t= (DC - 0.32);
                  t/= 0.0047;
                  temp=t+temp;
                  }
                  temp/=100;
                  delay_ms(1000);
                  lcd_clear();
                  lcd_gotoxy(2,0);
                  ftoa(temp,2,str2);
                  sprintf(str1,"temp:%s\XDFC",str2);
                  lcd_puts(str1);

                  if (PINA.0==0)
                  {
                  hi++;
                  }
                  if (hi==30)
                  {
                  hi=0;
                  delay_ms(50);
                  }
                  if (PINA.1==0)
                  {
                  low++;
                  }
                  if (low==30)
                  {
                  low=0;
                  delay_ms(50);
                  }




                  lcd_gotoxy(2,1);
                  sprintf(str3,"low:%-2u hi:%-2u",low,hi);
                  lcd_puts(str3);

                  if ( low<= temp && temp<=hi )

                  {

                  PORTD.0=1;

                  }
                  else
                  {
                  PORTD.0=0;
                  }
                  };
                  }


                  منتظر جوابتونم
                  ذكات علم ياد دادنه ....

                  دیدگاه

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