اطلاعیه

Collapse
No announcement yet.

در مورد ترموکوپل و نحوه تبدیل جهت میکرو

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

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

    با سلام مجدد
    با اجازه اساتید عزیز
    من فقط یک چیزی رو گفتم بگم شاید خالی از لطف نباشه و گفتم که گفته ام رو با یک مثال بگم شاید بهترم باشه :
    مثال اگر admux = e9H طبق جداول موجود کانال AD0 به عنوان ورودی منفی و ADC1 به عنوان ورودی مثبت انتخاب می شوند ، به همراه ضریب تقویت برابر 10 و لتاژ مرجع داخلی 2.56 و همچنین طرز نمایش تبدیل در رجیستر داده ADC در حالت تنظیم چپ انتخاب می گردند .
    در این حالت مقدار دیجیتال ADC از رابطه زیر بدست می آید :
    مقدار دیجیتال = 512*( ولتاژ مثبت - ولتاژ منفی ) * ( ولتاژ مرجع /گین )
    توجه کنید که نتیجه به صورت مکمل 2 از 200H (-512( تا 1FFH (+511( تغییر خواهد کرد ، برای تعیین علامت کافیه بیت با ارزش ADC9 از رجیستر ADCH رو بخونید اگر یک بود عدد منفی و اگر صفر باشه عدد مثبت خواهد بود .
    حالا اگر ولتاژ ورودی روی پایه منفی 200میلی ولت و روی پایه مثبت 100 میلی ولت باشه ، مقدار دیجیتال ADC در رجیستر داده به صورت زیر خواهد بود :
    هگزه 338=200-=2560/512*(200-100) *10 = مقدار دیجیتال
    '------------------------------------------------------------------------------
    در این مورد از اونجا که توی بسکام هیچ چیزی براش در نظر گرفته نشده و اسم رجیستر ها هم در بسکام تعریف نشده اند باید از دستور اسمبلی استفاده بشه .
    در مورد استفاده از دستورات اسمبلی در بسکام هم :
    برای استفاده از دستوز اسمبلی در داخل برنامه از مدل زیر استفاده می کنیم :

    $asm
    ...
    $end Asm

    حالا مثلا می خواهیم به admux مقدار بدیم مثلا همون e9 :

    $asm
    LDI R16,$E9
    Out $07 , R16 'ADMUX=E9H
    $end Asm

    \\\\\\\\\\\\\\\\\\\\\\\\\
    توی کدویژن هم چون دیگه اسم رجیستر ها تعریف شده اند دیگه نیازی به دستور اسمبلی نیست و میشه مستقیما اون ها رو مقدار دهی کرد

    دیدگاه


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

      نوشته اصلی توسط سارا امامی فر

      با سلام
      ممنون از توضیحات کاملاتان،اگر امکان دارد این مبحث را برای زبان سی در codvision بیشتر توضیح دهید
      با سپاس
      با سلام
      خانوم امامی فر در صورت امکان از آموزش جامع جناب سپاس یار استفاده بکنید.

      http://www.eca.ir/forum2/index.php?topic=44175.15


      دائی جان ممنون از لطفتون :redface:

      دیدگاه


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

        سلام دوستان
        من توی بیسکام دنبال این ریجستر گشتم که آخرش به این تعریف رسیدم CONFIG ADCX که اگه بخواین میتونین توی HELP -SEARCH بنویسید DIFFERENTIAL همه تعاریف رو میاره
        اگه کسی از بیسیک کاران یا اساتید نحوه کار با این دستور رو بلدن توی تایپک بذارن ما هم یاد بگیریم .
        بخدا موندم کمک کنید.

        دیدگاه


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

          آقای حداد از چه ورژنی استفاده می کنید؟ من هرچی سرچ میکنم چیزی نمیبینم !

          دیدگاه


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

            عزیزم ورژن 1.11

            دیدگاه


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

              عزیزان این تایپیک اگه به نتیجه برسه یک روش خوب برای ساخت ترموستات با ترموکوپل میشه .
              امروزه توی بازار لوازم پانل متر مثلا ولتمتر و آمپرمتر و ....... و ترموستات همه جورش هست گران و ارزان
              من درسته قصد استفاده در پانل متر و ندارم ولی دوستان مشتاق میتونن استفاده کنن . اسرار من برای اینکه باید ترموکوپل باشه اینه که اولا صنعتیه ثانیا مقاوم در برابر مواد شیمیایی و ضربه و ... هست . وگرنه خدا برکت بده به سنسورهای دما . و اسرار من به MEGA8 بودن اینه که ترموستات چیزی نداره که بخوایم این همه ژایه رو بیکار بذاریم . من چندتا ترموستات دیجیتالی باز کردم همش با LM324 بود جز یکی که اونم با PIC بود . اگه میشه دوستان و اساتید زحمت بکشن مداری رو با OPAMP بذارن که خروجی آن از 0 الی 5 باشه و ورودیش همان ترموکوپل .
              در اخر اساتید محترم کمک کنــــــید . ممنون میشم

              دیدگاه


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

                نوشته اصلی توسط a-hadad
                سلام دوستان
                من توی بیسکام دنبال این ریجستر گشتم که آخرش به این تعریف رسیدم CONFIG ADCX که اگه بخواین میتونین توی HELP -SEARCH بنویسید DIFFERENTIAL همه تعاریف رو میاره
                اگه کسی از بیسیک کاران یا اساتید نحوه کار با این دستور رو بلدن توی تایپک بذارن ما هم یاد بگیریم .
                بخدا موندم کمک کنید.

                CONFIG ADCx

                Action
                Configures the A/D converter of the Xmega.

                این دستور مخصوص سری XMEGA س نه Mega

                دیدگاه


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

                  سلام.
                  من این برنامه رو نوشتم اما کار نمیکنه مدار, پایه های AVCC و AREF رو هم درست وصل کردم. و از پایه های 39 و 40 میکرو استفاده کردم.

                  $regfile = "m32def.dat"
                  $crystal = 8000000
                  $baud = 9600

                  Dim Temp_read As Word

                  $asm
                  LDI R16 , $CB
                  Out $07 , R16
                  $end Asm

                  Do
                  Temp_read = Adc
                  Print Temp_read
                  Wait 1
                  Loop

                  End

                  اشکال از کجاست؟

                  دیدگاه


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

                    پس اینکه میگن تقویت کننده تفاضلی فقط در مدلهای smd وجود داره اشتباه هست ؟ الان که به کاتالوگ نگاه میکنم نوشته که 7 تا تقویت کننده تفاضلی در مدلهای tqfp و 2 تا قابل برنامه ریزی . آیا منظورش در تمامی بسته بندیها 2 کانال قابل برنامه ریزی وجود داره ؟
                    سخت است حرفت را نفهمند،

                    سخت تر این است که حرفت را اشتباهی بفهمند

                    دیدگاه


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

                      نوشته اصلی توسط شازده
                      سلام.
                      من این برنامه رو نوشتم اما کار نمیکنه مدار, پایه های AVCC و AREF رو هم درست وصل کردم. و از پایه های 39 و 40 میکرو استفاده کردم.

                      $regfile = "m32def.dat"
                      $crystal = 8000000
                      $baud = 9600

                      Dim Temp_read As Word

                      $asm
                      LDI R16 , $CB
                      Out $07 , R16
                      $end Asm

                      Do
                      Temp_read = Adc
                      Print Temp_read
                      Wait 1
                      Loop

                      End

                      اشکال از کجاست؟
                      با سلام
                      دوست عزیز شما فقط admux رو مقدار دهی کردید ولی adcsra رو مقدار دهی نکردید چرا که برای فعال شدن adc باید بیت aden از این رجیستر رو یک کنید و همینطور فرکانس کار مناسب adc رو با تنظیم بیت های صفر تا 2 انتخاب کنبد
                      حالا باید برای شروع تبدیل بیت ADSC از همین رجیستر رو یک کنید بعد منتظر بمونید تا ADIF از همین رجیستر یک بشه که نشان دهنده اتمام تبدیل هست و پس از اون بیایید برای انجام مجدد تبدیل این بیت رو صفر کنید ، خوب به این ترتیب تبدیل مقدار آنالوگ به دیجیتال صورت میگیره و مقدار دیجیتال سیگنال ورودی داخل رجیستر های ADCL , ADCH قرار میگیره که با توجه به اینکه ADLAR یک باشه یا صفر میتونید با خوندن بیتهای این دورجیستر به ترتیب از چپ و راست مقدار دیجتال سیگنال ورودی رو بدست بیارید.

                      دیدگاه


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

                        نوشته اصلی توسط mojtaba_led
                        با سلام
                        دوست عزیز شما فقط admux رو مقدار دهی کردید ولی adcsra رو مقدار دهی نکردید چرا که برای فعال شدن adc باید بیت aden از این رجیستر رو یک کنید و همینطور فرکانس کار مناسب adc رو با تنظیم بیت های صفر تا 2 انتخاب کنبد
                        حالا باید برای شروع تبدیل بیت ADSC از همین رجیستر رو یک کنید بعد منتظر بمونید تا ADIF از همین رجیستر یک بشه که نشان دهنده اتمام تبدیل هست و پس از اون بیایید برای انجام مجدد تبدیل این بیت رو صفر کنید ، خوب به این ترتیب تبدیل مقدار آنالوگ به دیجیتال صورت میگیره و مقدار دیجیتال سیگنال ورودی داخل رجیستر های ADCL , ADCH قرار میگیره که با توجه به اینکه ADLAR یک باشه یا صفر میتونید با خوندن بیتهای این دورجیستر به ترتیب از چپ و راست مقدار دیجتال سیگنال ورودی رو بدست بیارید.
                        :eek: اونوقت میشه بگی اینا یعنی چی؟!!!!!!!!!!!!!!!!!!!!!!!!!!!! :eek:

                        دیدگاه


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

                          اینو امتحان کنید فکر میکنم همچین چییزی بشه ببخشید الان نه به بسکام دسترسی دارم و نه هیچ کامپایلر دیگه ای که تست کنم :


                          LDI R16,$E9
                          OUT ADMUX, R16
                          LDI R16,$85
                          OUT ADCSRA,R16
                          CLR R16
                          OUT SFIOR,R16
                          ////READ ADC////////
                          SBI ADCSRA,ADSC;start adc
                          WAIT: SBI ADCSRA,ADIF;wait for adc finish
                          RJMP WAIT
                          SBI ADCSRA,ADIF; clear ADIF
                          LDI R16,$FF
                          OUT DDRA,R16 ;PORTA-->output
                          OUT DDRB,R16 ;PORTB-->output
                          IN R16,ADCH
                          OUT PORTB,R16
                          IN R16,ADCL
                          OUT PORTA,R16
                          RJMP WAIT

                          توی اینجا امدم ،همون کاری که توی پست بالایی گفتم کردم :
                          admux = e9H طبق جداول موجود کانال AD0 به عنوان ورودی منفی و ADC1 به عنوان ورودی مثبت انتخاب می شوند ، به همراه ضریب تقویت برابر 10 و لتاژ مرجع داخلی 2.56 و همچنین طرز نمایش تبدیل در رجیستر داده ADC در حالت تنظیم چپ انتخاب می گردند .
                          در این حالت مقدار دیجیتال ADC از رابطه زیر بدست می آید :
                          مقدار دیجیتال = 512*( ولتاژ مثبت - ولتاژ منفی ) * ( ولتاژ مرجع /گین )
                          توجه کنید که نتیجه به صورت مکمل 2 از 200H (-512( تا 1FFH (+511( تغییر خواهد کرد ، برای تعیین علامت کافیه بیت با ارزش ADC9 از رجیستر ADCH رو بخونید اگر یک بود عدد منفی و اگر صفر باشه عدد مثبت خواهد بود .
                          حالا اگر ولتاژ ورودی روی پایه منفی 200میلی ولت و روی پایه مثبت 100 میلی ولت باشه ، مقدار دیجیتال ADC در رجیستر داده به صورت زیر خواهد بود :
                          هگزه 338=200-=2560/512*(200-100) *10 = مقدار دیجیتال

                          دیدگاه


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

                            ممنون آقا مجتبی اما باز هم مشکل دارم من.
                            کسی هست این برنامه رو تو بیسکام و اسمبلی نوشته باشه به ما هم بده؟ ممنون میشم.

                            دیدگاه


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

                              آقا من اینو توی AVR STUDIO نوشتم تستش کردم جواب داد :



                              کد:
                              	.include"m16def.inc"
                              		.ORG	0
                              		RJMP	main
                              		.ORG	$0002
                              		RETI
                              		.ORG	50
                              		 		
                              main:	LDI		R16,$FF
                                  OUT		DDRC,R16 ;PORTA-->output
                                  OUT		DDRB,R16 ;PORTB-->output
                              		LDI	  R16,$E9
                                  OUT		ADMUX, R16
                                  LDI		R16,$86
                                  OUT		ADCSRA,R16
                                  CLR		R16
                                  OUT		SFIOR,R16
                              		;///READ ADC////////
                                  SBI		ADCSRA,ADSC;start adc
                              wait:  SBIS	ADCSRA,ADIF;wait for adc finish
                                  RJMP	wait
                                  SBI		ADCSRA,ADIF; clear ADIF    
                                  IN		R16,ADCL
                                  IN		R17,ADCH
                              		OUT		PORTB,R16
                                  OUT		PORTC,R17
                                  RJMP	wait

                              دیدگاه


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

                                نوشته اصلی توسط mojtaba_led
                                آقا من اینو توی AVR STUDIO نوشتم تستش کردم جواب داد :

                                .
                                .
                                .
                                SBI ADCSRA,ADIF; clear ADIF
                                .
                                .
                                .
                                فکر کنم اینجا باید بنویسیم CBI درسته؟!!!
                                برنامه عملی یکی بذاره من هر کار کردم جواب نمیده. میکرو من مگا 32 دیپ هست یکی میگفت رو دیپ کار نمیده درست میگفت؟

                                دیدگاه

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