اطلاعیه

Collapse
No announcement yet.

کمک در ساختن دماسنج دیجیتال

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

    #31
    پاسخ : کمک در ساختن دماسنج دیجیتال

    نوشته اصلی توسط hossein.m98 نمایش پست ها
    پروگرامر توسط کامپیوتر شناسایی میشه؟ برنامه قبلی روی برد چی؟ کار میکنه؟
    اگر این موارد درست باشن احتمالا مشکل خاصی نیست و لود نشدن فلش احتمالا به خاطر این هستش که از پین های مربوط به پروگرامر داخل برنامه قبلی لود شده روی میکروکنترلر استفاده کردید. کافیه یک بار با بوت لودر برنامه جدیدی روی میکروکنترلر بریزید تا درست بشه.
    سلام این قسمت رو متوجه نمیشم میشه لطف کنید توضیحی بدید.ممنون

    دیدگاه


      #32
      پاسخ : کمک در ساختن دماسنج دیجیتال

      نوشته اصلی توسط masoume&sajjad نمایش پست ها
      سلام این قسمت رو متوجه نمیشم میشه لطف کنید توضیحی بدید.ممنون
      سلام
      باید ببینید پروگرامر توسط کامپیوتر شناسایی میشه یا نه. اگر به Device Manager کامپیوتر برید، اونجا لیست تمام سخت افزارها هست. باید مطمئن بشید پروگرامر توی قسمت ناشناخته ها نباشه که اگر باشه باید درایور مناصب براش نصب کنید.
      اگر پروگرامر شناسایی شده بود، احتمالا از پین های مخصوص به پروگرامینگ توی میکروکنترلر استفاده دیگه ای شده. در این صورت تنها راه پروگرام کردن استفاده از بوت لودر هستش.

      دیدگاه


        #33
        پاسخ : کمک در ساختن دماسنج دیجیتال

        نوشته اصلی توسط hossein.m98 نمایش پست ها
        سلام
        باید ببینید پروگرامر توسط کامپیوتر شناسایی میشه یا نه. اگر به Device Manager کامپیوتر برید، اونجا لیست تمام سخت افزارها هست. باید مطمئن بشید پروگرامر توی قسمت ناشناخته ها نباشه که اگر باشه باید درایور مناصب براش نصب کنید.
        اگر پروگرامر شناسایی شده بود، احتمالا از پین های مخصوص به پروگرامینگ توی میکروکنترلر استفاده دیگه ای شده. در این صورت تنها راه پروگرام کردن استفاده از بوت لودر هستش.
        سلام خیلی خیلی ممنون از کمکتون.درست شد.یک سوال؟؟توبرنامه keil ایا دستوری هست ک اچهنگام ران کردن برنامه هرجا اون دستور رو بنویسیم جواب رو بیاره.مثل sprintf برای نمایش دستور بصورت رشته ای؟؟؟؟؟

        دیدگاه


          #34
          پاسخ : کمک در ساختن دماسنج دیجیتال

          نوشته اصلی توسط masoume&sajjad نمایش پست ها
          سلام خیلی خیلی ممنون از کمکتون.درست شد.یک سوال؟؟توبرنامه keil ایا دستوری هست ک اچهنگام ران کردن برنامه هرجا اون دستور رو بنویسیم جواب رو بیاره.مثل sprintf برای نمایش دستور بصورت رشته ای؟؟؟؟؟
          منظورتون رو واضح تر بگید. من که نفهمیدم منظورتون چیه!
          من خودم برای دیباگینگ از پورت سریال و تابع printf استفاده میکنم. البته باید یک قطعه کد به برنامه اضافه کرد تا کار کنه. خواستید بگید تا کد رو بذارم اینجا.

          دیدگاه


            #35
            پاسخ : کمک در ساختن دماسنج دیجیتال

            نوشته اصلی توسط hossein.m98 نمایش پست ها
            منظورتون رو واضح تر بگید. من که نفهمیدم منظورتون چیه!
            من خودم برای دیباگینگ از پورت سریال و تابع printf استفاده میکنم. البته باید یک قطعه کد به برنامه اضافه کرد تا کار کنه. خواستید بگید تا کد رو بذارم اینجا.
            من تو برنامه ای که نوشتم led همیشه روشن هست تو هر دمایی میخوام مقدار دما ببینم چنده که led همش روشنه ومشکل برنامم چیه.خواستم ببینم دستوری هست که من بعد از Temp = T1 *0.080586;
            تو برنامم بنویسم که مقدار دما رو اون پایین صفحه برنامهkeil
            تو (build output) بهم بیاره؟؟؟؟
            ممنون اونی هم که خودتون میگید بذارید

            دیدگاه


              #36
              پاسخ : کمک در ساختن دماسنج دیجیتال

              نوشته اصلی توسط masoume&sajjad نمایش پست ها
              من تو برنامه ای که نوشتم led همیشه روشن هست تو هر دمایی میخوام مقدار دما ببینم چنده که led همش روشنه ومشکل برنامم چیه.خواستم ببینم دستوری هست که من بعد از Temp = T1 *0.080586;
              تو برنامم بنویسم که مقدار دما رو اون پایین صفحه برنامهkeil
              تو (build output) بهم بیاره؟؟؟؟
              ممنون اونی هم که خودتون میگید بذارید
              ببینید keil صرفا یک IDE هستش و فکر نمیکنم مثل آردوینو ترمینال سریال داشته باشه. این چیزی که شما احتیاج دارید همون ترمینال سریاله. متاسفانه فعلا به اون کدی که گفتم دسترسی ندارم. شما اگر چهارشنبه دوباره یاد آوری کنید، کد رو براتون میذارم اینجا. فعلا میتونید از همون توابع مخصوص به UART استفاده کنید.

              دیدگاه


                #37
                پاسخ : کمک در ساختن دماسنج دیجیتال

                سلام خیلی خیلی ممنون از راهنمایی هاتون.من بالاخره تونستم دما رو با UART و در ترمینال مشاهده کنم .
                اما دما از 47 به بعد خونده میشه.با اینکه دمای محیط این نیست.بنظرتون چکار کنم ؟؟؟؟؟چرا این مقدار دما داره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/
                اینم از برنامم:
                hadc1.Init.NbrOfConversion=1;//rank1
                HAL_ADC_Init(&hadc1);
                HAL_ADC_Start(&hadc1);
                if(HAL_ADC_PollForConversion(&hadc1,500)==HAL_OK)
                {

                T1=HAL_ADC_GetValue(&hadc1);
                T1=T1*0.080586;//(T1/4095.00)*330;
                sprintf(Temp,"Themp=%5.2f\t",T1);
                put_str(Temp);

                }
                HAL_Delay(1000);
                HAL_ADC_Stop(&hadc1);

                HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET) ;
                HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET) ;
                if(T1<52)
                {
                HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);

                }

                if(T1>55)
                {
                HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);

                }

                جدیدترین ویرایش توسط masoume&sajjad; ۰۷:۵۰ ۱۳۹۸/۰۹/۲۳.

                دیدگاه


                  #38
                  پاسخ : کمک در ساختن دماسنج دیجیتال

                  نوشته اصلی توسط masoume&sajjad نمایش پست ها
                  سلام خیلی خیلی ممنون از راهنمایی هاتون.من بالاخره تونستم دما رو با UART و در ترمینال مشاهده کنم .
                  اما دما از 47 به بعد خونده میشه.با اینکه دمای محیط این نیست.بنظرتون چکار کنم ؟؟؟؟؟چرا این مقدار دما داره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟/
                  اینم از برنامم:
                  hadc1.Init.NbrOfConversion=1;//rank1
                  HAL_ADC_Init(&hadc1);
                  HAL_ADC_Start(&hadc1);
                  if(HAL_ADC_PollForConversion(&hadc1,500)==HAL_OK)
                  {

                  T1=HAL_ADC_GetValue(&hadc1);
                  T1=T1*0.080586;//(T1/4095.00)*330;
                  sprintf(Temp,"Themp=%5.2f\t",T1);
                  put_str(Temp);

                  }
                  HAL_Delay(1000);
                  HAL_ADC_Stop(&hadc1);

                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET) ;
                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET) ;
                  if(T1<52)
                  {
                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);

                  }

                  if(T1>55)
                  {
                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);

                  }

                  سلام
                  اینطور که متوجه شدم باید سنسور مورد استفاده LM35 باشه. اگر کانفیگ ADC مشکل نداشته باشه، احتمالا متغیر T1 درست تعریف نشده که برنامه کار نمیکنه. بهتره این قطعه کد رو هم یه امتحانی بکنید:
                  uint32_t ADCvalue;
                  float T1;


                  hadc1.Init.NbrOfConversion=1;//rank1
                  HAL_ADC_Init(&hadc1);
                  HAL_ADC_Start(&hadc1);
                  if(HAL_ADC_PollForConversion(&hadc1,500)==HAL_OK)
                  {
                  ADCvalue=HAL_ADC_GetValue(&hadc1);
                  T1=ADCvalue*0.080586; //(ADCvalue/4095.00)*3.3*100;
                  sprintf(Temp,"Themp=%5.2f\t\n",T1);
                  put_str(Temp);
                  }
                  HAL_Delay(1000);
                  HAL_ADC_Stop(&hadc1);


                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);


                  if(T1<52)
                  {
                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
                  }


                  if(T1>55)
                  {
                  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
                  }



                  ضمنا سعی کنید هر موقع قراره کد زبان C داخل انجمن قرار بدید، حتما از تگ ++C استفاده کنید که خوانایی کد بیشتر بشه.
                  جدیدترین ویرایش توسط hossein.m98; ۱۹:۴۸ ۱۳۹۸/۰۹/۲۳.

                  دیدگاه


                    #39
                    پاسخ : کمک در ساختن دماسنج دیجیتال

                    نوشته اصلی توسط hossein.m98 نمایش پست ها
                    سلام
                    اینطور که متوجه شدم باید سنسور مورد استفاده LM35 باشه. اگر کانفیگ ADC مشکل نداشته باشه، احتمالا متغیر T1 درست تعریف نشده که برنامه کار نمیکنه. بهتره این قطعه کد رو هم یه امتحانی بکنید:
                    uint32_t ADCvalue;
                    float T1;


                    hadc1.Init.NbrOfConversion=1;//rank1
                    HAL_ADC_Init(&hadc1);
                    HAL_ADC_Start(&hadc1);
                    if(HAL_ADC_PollForConversion(&hadc1,500)==HAL_OK)
                    {
                    ADCvalue=HAL_ADC_GetValue(&hadc1);
                    T1=ADCvalue*0.080586; //(ADCvalue/4095.00)*3.3*100;
                    sprintf(Temp,"Themp=%5.2f\t\n",T1);
                    put_str(Temp);
                    }
                    HAL_Delay(1000);
                    HAL_ADC_Stop(&hadc1);


                    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
                    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_RESET);


                    if(T1<52)
                    {
                    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
                    }


                    if(T1>55)
                    {
                    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
                    }



                    ضمنا سعی کنید هر موقع قراره کد زبان C داخل انجمن قرار بدید، حتما از تگ ++C استفاده کنید که خوانایی کد بیشتر بشه.

                    ممنون از پاسخ دهی شما.بازم دما رو 45-46هست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
                    شما گفتید شاید مشکل از کانفیگ ADC باشه. چطوری میتونم متوجه بشم که ایا مشکل از این هست یا نه؟فقط sampling time رو میتونم تغییر بدم که چنان تغییری تو دما دیده نمیشه تو همون رنج 40 به بالاست تغییراتش.
                    جدیدترین ویرایش توسط masoume&sajjad; ۰۹:۴۴ ۱۳۹۸/۰۹/۲۴.

                    دیدگاه


                      #40
                      پاسخ : کمک در ساختن دماسنج دیجیتال

                      ببخشید بستن مدار از لحاظ سخت افزاری هم میتونه تو اندازگیری دما موثر باشه؟؟؟؟؟؟؟؟؟؟؟؟؟

                      دیدگاه


                        #41
                        پاسخ : کمک در ساختن دماسنج دیجیتال

                        نوشته اصلی توسط masoume&sajjad نمایش پست ها
                        ممنون از پاسخ دهی شما.بازم دما رو 45-46هست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
                        شما گفتید شاید مشکل از کانفیگ ADC باشه. چطوری میتونم متوجه بشم که ایا مشکل از این هست یا نه؟فقط sampling time رو میتونم تغییر بدم که چنان تغییری تو دما دیده نمیشه تو همون رنج 40 به بالاست تغییراتش.
                        ببینید شما باید مد ADC رو روی independent mode تنظیم کنید، رزولوشن هم که باید روی 12 بیت باشه. Data Alignment هم بهتره به صورت Right alignment باشه. چیز دیگه ای از پارامترها خاطرم نیست فعلا.
                        نوشته اصلی توسط masoume&sajjad نمایش پست ها
                        ببخشید بستن مدار از لحاظ سخت افزاری هم میتونه تو اندازگیری دما موثر باشه؟؟؟؟؟؟؟؟؟؟؟؟؟
                        سخت افزار LM35 چیز خاصی نداره آخه. مگر اینکه بخوایید دمای منفی رو سنس کنید. یک پایه تغذیه داره، یک زمین و یک خروجی؛ مطمئنا باید خروجی به ورودی ADC متصل بشه.

                        دیدگاه


                          #42
                          پاسخ : کمک در ساختن دماسنج دیجیتال

                          [QUOTE=hossein.m98;708465]ببینید شما باید مد ADC رو روی independent mode تنظیم کنید، رزولوشن هم که باید روی 12 بیت باشه. Data Alignment هم بهتره به صورت Right alignment باشه. چیز دیگه ای از پارامترها خاطرم نیست فعلا.

                          سخت افزار LM35 چیز خاصی نداره آخه. مگر اینکه بخوایید دمای منفی رو سنس کنید. یک پایه تغذیه داره، یک زمین و یک خروجی؛ مطمئنا باید خروجی به ورودی ADC متصل بشه.


                          این پارامترها دیفالت همین هستند فقط باید
                          رو enable =continuous conversion mode
                          تغییر داد.
                          منظورم یعنی پایه ورودی lm35 رو به خازن وصل کرد؟؟؟؟یا اینطور مواردی ربطی داره تو اندازگیری دما؟؟؟؟؟؟؟/

                          دیدگاه


                            #43
                            پاسخ : کمک در ساختن دماسنج دیجیتال

                            [QUOTE=masoume&sajjad;708476]
                            نوشته اصلی توسط hossein.m98 نمایش پست ها
                            ببینید شما باید مد ADC رو روی independent mode تنظیم کنید، رزولوشن هم که باید روی 12 بیت باشه. Data Alignment هم بهتره به صورت Right alignment باشه. چیز دیگه ای از پارامترها خاطرم نیست فعلا.

                            سخت افزار LM35 چیز خاصی نداره آخه. مگر اینکه بخوایید دمای منفی رو سنس کنید. یک پایه تغذیه داره، یک زمین و یک خروجی؛ مطمئنا باید خروجی به ورودی ADC متصل بشه.


                            این پارامترها دیفالت همین هستند فقط باید
                            رو enable =continuous conversion mode
                            تغییر داد.
                            منظورم یعنی پایه ورودی lm35 رو به خازن وصل کرد؟؟؟؟یا اینطور مواردی ربطی داره تو اندازگیری دما؟؟؟؟؟؟؟/
                            ببینید گذاشتن اون خازن برای بحث نویز و اینجور مسائله. اولا اینکه نویز کاملا تصادفیه و دائما تغییر میکنه، ثانیا دامنه محدودی هم داره. اینکه شما بجای دما 20 تا 30 درجه اتاق، عدد 40 تا 50 روی خروجی میبینید، این یعنی یک جای کار مشکل داره!
                            شما با ولت متر خروجی سنسور رو اندازه بگیرید ببینید همون مقداری که باید هست یا نه. توی دمای اتاق باید خروجی چیزی حدود 0.2 تا 0.3 ولت باشه.

                            دیدگاه


                              #44
                              پاسخ : کمک در ساختن دماسنج دیجیتال

                              ببخشید در اندازهگیری دما با lm35 مدار من اول دما رو 40 درجه نشون میده بعد از مدتی که نرم افزار ترمینال رو قطع میکنم و دوباره کانکت میزنم دما رو از 26 به بالا نشون میده بنظرتون چرا اینجوری نشون میده؟

                              دیدگاه


                                #45
                                پاسخ : کمک در ساختن دماسنج دیجیتال

                                نوشته اصلی توسط masoume&sajjad نمایش پست ها
                                ببخشید در اندازهگیری دما با lm35 مدار من اول دما رو 40 درجه نشون میده بعد از مدتی که نرم افزار ترمینال رو قطع میکنم و دوباره کانکت میزنم دما رو از 26 به بالا نشون میده بنظرتون چرا اینجوری نشون میده؟
                                قبل از هر کاری مطمئن بشید پایه های رفرنس به جای درستی متصل شدن (در صورت وجود). این دمای 26 که میگید، با گرم و سرد کردن سنسور کم و زیاد میشه؟

                                دیدگاه

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