NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3619 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 12 از 12

موضوع: کمک در مورد lm35 (نمیدانم چرا دما رو ال سی دی نشون داده نمیشه )

  1. #1
    عضو جدید
    تاریخ عضویت
    Mar 2012
    نوشته ها
    18
    تشکر
    9
    تشکر شده 0 بار در 0 پست

    Gadid کمک در مورد lm35 (نمیدانم چرا دما رو ال سی دی نشون داده نمیشه )

    سلام خدمت دوستان عزیز
    من با سنسور lm35 یک مدار بستم طوری که دما رو اندازه گیری کنه و روی ال سی دی نمایش بده اما نمیدانم چرا رو ال سی دی هیچی نشون نمیده خواهشا فایل زیر رو که هم سورس برنامه و هم فایل پروتئوس رو داره دانلود کنید و ببینید مشکل کارم کجاست.ممنونم

    temp- lm35.rar - 4shared.com - online file sharing and storage - download
    ویرایش توسط 1nafar : 03-05-2014 در ساعت 13:16 دلیل: تصحیح عنوان

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیر بخش STM32 sigma-mx آواتار ها
    تاریخ عضویت
    Nov 2009
    نام
    سعید شریفیان
    نوشته ها
    1,421
    تشکر
    804
    تشکر شده 2,520 بار در 978 پست

    پیش فرض

    مشکل حل شد مهندس ..
    یسری نکات تو رسم مدار تو پروتئوس یادت باشه .. برای میکرو نیازی به استفاده از کریستال یا خازن صافی یا نویز گیر نیست و همچنین برای السیدی . پتانسیومتر برای السیدی کار نمیکنه .چون برای قطعه السیدی در برنامش هیچ دستوری برای پایه VEE نوشته نشده . ولی پایه ریست میکرو و Vref و AVCC کار میکنه معمولا . همچنین سعی کن تو پروتئوس زیاد از label استفاده نکنی که قاط میزنه ! و نکته بسیار مهم : برای ولتاژ های میکرو هم (VDD) تعریف نشده چند ولت . فقط باید از نماد POWER استفاده کنی کافیه . که استفاده کردی . این نماد فقط به قطعه میگه که تغذیه وصل شده ولی اگه شما اسمشو عوض کنی بزاری 12 + ، اون ولتاژ 12 نمیده ! شما باید برای مواردی مثل رله یا ... که اندازه ولتاژ براشون مهمه از قطعه DC در بخش Generator ها استفاده کنی و داخلش بنویسی 12 .. یه نکته دیگه اینه که اگه میخوای از المانهایی استفاده کنی تو مدارت که باید حرکت کنند (متحرکند ) مثل رله یا موتور یا باید روشن بشن مثل LED یا لامپ ، حتما باید در موقع انتخاب از لیست قطعات نوع ACTIVE اونا رو برداری . نوع غیر از ACTIVE فقط نماد هستند . و همینطور که گفتم برای رله هم نیازی به المانهای محافظ مثل خازن یا دیود نیست . مطمئن باش حداقل تو نرم افزار نمیسوزه !! من تضمین میکنم !

    یا حق
    فايل هاي پيوست شده فايل هاي پيوست شده

  4. کاربران : 7 تشکر کرده اند از شما sigma-mx برای ارسال این پست سودمند:


  5. #3
    عضو جدید
    تاریخ عضویت
    Mar 2012
    نوشته ها
    18
    تشکر
    9
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

  6. #4
    عضو جدید
    تاریخ عضویت
    Mar 2011
    نوشته ها
    9
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام به همه
    اقایون من یه پروژه با lm35 نوشتم که دما رو رو ال سی دی نشون بده که نشون میده ولی هر ثانیه یه دمای دیگه نشون میده مثلا یکبار 0 بعد 54 بعد 2 و ... سنسور رو هم سه بار عوض کردم ولی بازم درس نشد. اینم کدشه
    #include <mega16.h>
    #include <delay.h>
    #include <stdlib.h>

    #asm
    .equ __lcd_port=0x18 ;PORTB
    #endasm

    #include <lcd.h>
    #define ADC_VREF_TYPE 0xE0

    unsigned char 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 ADCH;
    }

    char str[16];
    int tmp_adc;
    void main(void)
    {


    PORTA=0x00; DDRA=0x00;
    PORTB=0x00; DDRB=0xFF;
    PORTC=0x00; DDRC=0x00;
    PORTD=0x00; DDRD=0xFF;
    // ADC initialization
    // ADC Clock frequency: 7.813 kHz
    // ADC Voltage Reference: Int., cap. on AREF
    // ADC Auto Trigger Source: None
    // Only the 8 most significant bits of
    // the AD conversion result are used
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x87;
    lcd_init(16);

    while (1)
    {
    tmp_adc = read_adc(0);
    PORTD = tmp_adc;
    itoa(tmp_adc,str);
    lcd_clear();
    lcd_putsf("temp:");
    lcd_puts(str);
    lcd_putsf("'C");
    delay_ms(500);
    };
    }
    ممنون میشم کمک کنید

  7. #5
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    سلام
    مهندس وقتی از ADC استفاده میکنی برای اینکه مقدار ثابتی بهت بده بهتره مثلا 50 تا نمونه از ADC بگیری بعد همشون رو با هم جمع کنی در آخر هم تقسیم بر 50 کنی یه میانگین بهت میده که اینطوری مقدارت ثابت میشه
    از حلقه for هم میتونی استفاده کنی که راحت تره
    *** اللّهم عجّل لولیک الفرج ***

  8. تشکرها از این نوشته :

    KHM

  9. #6
    عضو جدید
    تاریخ عضویت
    Mar 2011
    نوشته ها
    9
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    ممنون ولی نشد میانگین 100 تا رو گرفتم فقط محدوده عوض شد حالا از 2 تا 54 متغیره هر ثانیه هم یه چیز نشون میده

  10. #7
    مدیرکل انجمنها Doloop آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    حسين
    نوشته ها
    1,964
    تشکر
    3,312
    تشکر شده 3,086 بار در 1,371 پست

    پیش فرض

    یه تاخیر بین هر بار نمونه گیری قرار بده ببین جوابش چی میشه
    تاخیرت در حد 10 یا 20 میلی ثانیه باشه
    اگه جواب داد کمترش کن ببین تا کجا پاسخش خوبه
    دقیق نمیدونم مشکل از کجاست چون من خودم هم همین چند روز پیش باهاش کار کردم (بیسیک) با همین روش مشکلش حل شد
    *** اللّهم عجّل لولیک الفرج ***

  11. تشکرها از این نوشته :


  12. #8
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mustafaa نمایش پست ها
    سلام به همه
    اقایون من یه پروژه با lm35 نوشتم که دما رو رو ال سی دی نشون بده که نشون میده ولی هر ثانیه یه دمای دیگه نشون میده مثلا یکبار 0 بعد 54 بعد 2 و ... سنسور رو هم سه بار عوض کردم ولی بازم درس نشد. اینم کدشه
    #include <mega16.h>
    #include <delay.h>
    #include <stdlib.h>

    #asm
    .equ __lcd_port=0x18 ;PORTB
    #endasm

    #include <lcd.h>
    #define ADC_VREF_TYPE 0xE0

    unsigned char 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 ADCH;
    }

    char str[16];
    int tmp_adc;
    void main(void)
    {


    PORTA=0x00; DDRA=0x00;
    PORTB=0x00; DDRB=0xFF;
    PORTC=0x00; DDRC=0x00;
    PORTD=0x00; DDRD=0xFF;
    // ADC initialization
    // ADC Clock frequency: 7.813 kHz
    // ADC Voltage Reference: Int., cap. on AREF
    // ADC Auto Trigger Source: None
    // Only the 8 most significant bits of
    // the AD conversion result are used
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x87;
    lcd_init(16);

    while (1)
    {
    tmp_adc = read_adc(0);
    PORTD = tmp_adc;
    itoa(tmp_adc,str);
    lcd_clear();
    lcd_putsf("temp:");
    lcd_puts(str);
    lcd_putsf("'C");
    delay_ms(500);
    };
    }
    ممنون میشم کمک کنید
    سلام
    مهندس يه جاي برنامه يه چيزي رو كم گذاشتي.
    شما اومدي مستقيم مقداري كه از ADC خوندي روي LCD نشون ميدي. اما بايد قبل از نشون دادن تو السيدي، مقدار خونده شده رو تو رابطه قرار بدي و به دما تبديلش كني و بعدش رو السيدي نشون بدي.
    _____________________________________
    _____________________________________

  13. #9
    عضو جدید
    تاریخ عضویت
    Mar 2011
    نوشته ها
    9
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    الان کدم از قبلیه به این تغییر کرده
    #include <mega16.h>
    #include <delay.h>
    #include <stdlib.h>

    #asm
    .equ __lcd_port=0x18 ;PORTB
    #endasm

    #include <lcd.h>
    #define ADC_VREF_TYPE 0xE0

    unsigned char 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 ADCH;
    }

    char str[16];
    float tmp_adc;
    void main(void)
    {
    int i=0;
    float t=0;
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x87;
    lcd_init(16);

    lcd_puts(" seid mostafa mosavi imani");
    delay_ms(400);
    lcd_clear();

    while (1)
    {
    for(i=0;i<1000;i++)
    {
    tmp_adc = read_adc(0);
    PORTD = tmp_adc;
    t=t+tmp_adc;
    }
    t=t/1000;

    itoa(t,str);
    lcd_clear();
    lcd_putsf("temp:");
    lcd_puts(str);
    lcd_putsf("'C");

    };
    }

    آقای محمدی یعنی چیکار کنم؟
    ویرایش توسط mustafaa : 07-07-2012 در ساعت 16:57

  14. #10
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    سلام مهندس
    شما ولتاژ مرجع(vref) روي ولتاژ 2.56 ولت داخلي تنظيم كردي و مقدار تقسيم كننده فركانس رو براي نمونه گيري از ولتاژ ورودي رو عدد 2 تنظيم كردين، درسته؟
    پس مهندس از اين رابطه براي تبديل ولتاژ ورودي به دما استفاده كن:
    کد:
    Temperature(°C)=(tmp_adc/1024)*2.56*(100)
    ویرایش توسط sadmonew : 07-07-2012 در ساعت 18:05
    _____________________________________
    _____________________________________

  15. #11
    عضو جدید
    تاریخ عضویت
    Mar 2011
    نوشته ها
    9
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

    سلام
    ببخشید ولتاژ رو فهمیدم چیه، درسته رو ولتاژ داخلی تنظیم کردم بعد از 8 بیت هم استفاده کردم اما فرکانس اندازه گیری رو نگرفتم چیه اخه تازه دارم یاد میگیرم .
    خودم به این شکل نوشتم
    tmp_adc=((2.56*ADCH)*100)/256;
    که اشتباه نشون میده حتی تو شبیه ساز
    رابطه ای که فرمودین هم زدم باز درست نشد

  16. #12
    عضو جدید abrisham آواتار ها
    تاریخ عضویت
    Apr 2014
    نام
    محمدرضا رجب زاده
    نوشته ها
    14
    تشکر
    0
    تشکر شده 7 بار در 6 پست

    پیش فرض

    درود.
    هنگام استفاده از این سنسورها بهتره خروجی سنسور رو با یه خازن حدود 100 تا 220 میکرو به گروند متصل کنید.
    معمولا با این کار پرش های ولتاژی خروجی سنسور و نویزهای محیط کاملا حذف میشن.
    این روش اونقدر موثر هست که کافیه فقط یک بار adc رو بخونید.

  17. تشکرها از این نوشته :


موضوعات مشابه

  1. دماسنج با lm35
    توسط kavir_engineer در انجمن AVR
    پاسخ: 26
    آخرين نوشته: 17-09-2015, 13:33
  2. کنترل دما با ntc یا lm35 ؟
    توسط hamid69 در انجمن AVR
    پاسخ: 19
    آخرين نوشته: 27-09-2014, 18:53
  3. محاسبه دمای منفی با lm35
    توسط mehdi29665 در انجمن AVR
    پاسخ: 5
    آخرين نوشته: 18-02-2014, 23:02
  4. دقت lm35 در دراز مدت
    توسط M3R در انجمن سایر موارد
    پاسخ: 1
    آخرين نوشته: 07-04-2011, 15:05

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •