تغییر سیستمهای مکانیکی و برقی به سیستمهای الکترونیکی روز به روز در حال افرایش است.
در بیشتر تکنولوژیهای عمده، سیستمهای الکترونیکی جایگزین بخشهای مکانیکی شده و از آن پیش افتادهاند .امروزه چاپ الکترونیکی شده است.
تلویزیون، کامپیوتر و بسیاری از ابزارهای دیگر نیز که در زندگی روزمره از آن استفاده میکنیم همین گونهاند.
سیستمهای الکترونیکی مسلماً بر تکنولوژی فکری متکی هستند زیرا محاسبات ریاضی و نوشتن نرمافزار و برنامهها کارکرد آنها را ممکن میگرداند.
یکی از برجستهترین تغییرات، کوچک شدن وسایلی است که هادی برق هستند یا تکانههای برقی را منتقل میکنند.
اختراع ترانزیستور تغییری شگرف را به دنبال داشت: توانایی تولید وسایل میکروالکترونیک با صدها کارکرد از جمله کنترل، تنظیم، هدایت و حافظه که میکروپرسسورهاومیکروکنترلرها به اجرا درمیآورند.
در آغاز هر تراشه 4 کیلو بایت حافظه داشت که بعدها به 8، 16، 32، 64 کیلو بایت افزایش یافت و امروزه سازندگان میکروپروسسور تراشههایی تولید میکنند که ظرفیت ذخیرهسازی آنها چندین مگابایت یا حتی گیگا بایت است.
امروزه یک تراشهی ریز سیلیکنی(میکروپروسسوریا میکرو کنترلر) حاوی مدارهای الکترونیکی دارای صدها هزار ترانزیستور و همهی اتصالات لازم و بهای آن فقط چند دلار است.
مداربندی روی این تراشه میتواند خود میکروکامپیوتری باشد با ظرفیت پردازش ورودی / خروجی و حافظهی دستیابی تصادفی و...
.
نحوه عملکرد ترموستات
ترموستات طراحی شده قابلیت برنامه ریزی در رنج های دمایی بین C°0 تا C°150 را دارد و می توان از آن برای تعدیل دمایی محیط استفاده نمود برای راه اندازی آن به ولتاژی بین 6 تا 9 ولت نیاز است یک رنج دمایی خاصC° 32 C°(250 به عنوان پیش فرض در برنامه این ترموستات در نظر گرفته شده است که در ابتدای راه اندازی و همچنین به هنگام بروز خطا، خود به خود این رنج عملیاتی پیش فرض فعال میشود باتوجه8 به شکل صفحه بعد مشاهده می شود که یک صفحه نمایش ،چهار کلید و سه LED در نظر گرفته شده است که کاربر می تواند با استفاده از این کلید ها رنج های دمایی مورد نظر را انتخاب نماید و LED ها برای نشان دادن وضعیت دما و همچنین خطاهای احتمالی در حین کار با ترموستات تعبیه شده است.
وقتی ترموستات فعال می شود رنج دمایی پیش فرض بر روی صفحه نمایش نشان داده می شود و کاربر می تواند با استفاده ار کلید START آن را فعال نموده و یا با استفاده از کلید DOWN, UP,CHANGE آن را تغییر دهد تغییرات مورد نظر برای رنج های دمایی را درحین کار ترموستات نیز با زدن کلید change می توان اعمال نمود بازدن کلید change رنج دمایی ابتدا به صورت خودکار بر روی MAX رفته و کاربر می تواند با استفاده ارکلید up آن را زیاد و توسط کلید down آن را کم نماید البته توجه داشته باشید که رنج دمایی کمتر از c °0 را نمی توان به آن اعمال نمود و پس از تنظیم max و زدن کلید start می توان رنج min را انتخاب نمود.
حال با زدن کلید start صفحه نمایش رنج دمایی مورد نظر شما را نمایش داده وشما می توانید آن را فعال نمایید پس از فعال شدن رنج مورد نظر اگر دمای محیط بین رنج min و max باشد LED زرد به منزله متعادل بودن دما روشن می شود چنانچه دمای محیط بین minو max باشد .
LED قرمز به منزله نا متعادل بودن دما روشن می شود و اگر دمای محیط از min کمتر شود LED سبز به منزله نامتعادل بودن دما روشن می شود با اتصال این ترموستات به وسایل جانبی مانند بخاری و کولر در محیط می توان دمارا در شرایط متعادل نگهداری نمود.
نمایش خطاهای احتمالی به هنگام انتخاب رنج های خاص:
- چنانچه در رنج دمایی انتخاب شده minو max برابر باشند، هر سه LED به صورت چشمک زن فعال شده و ترموستات به صورت خودکار رنج پیش فرض را انتخاب می نماید.
- چنانچه min بیشتر از max انتخاب شود هر سه LED به صورت چشمک زن فعال شده و ترموستات به صورت خودکار، رنج پیش فرض را انتخاب می نماید.
از مشکلات این ترموستات وجود نداشتن اشمیت تر مگیر نرم افزاری در برنامه آن است.
مبدل آنالوگ به دیجیتال(ANALOG TO DIGITAL COVERTOR)
متداول ترین انواع ADC ها به قرار زیر است:
1- مبدل ADC نوع شمارشی (COUNTING ANALOG TO DIGITAL CONVERTOR)
2- مبدل ADC نوع تقریبهای متوالی (SUCCESSIVE – APROXIMATION CONVERTOR)
3- مبدل ADC با مقایسه موازی(PARALLEI-CIMPARATOR ADC)
4- مبدل ADC دو شیبه (DUAL- SLOP OR RATIOMETRIC ADC)
مبدل نوع SUCCESSIVE- APPROXIMATION
مبدل آنالوگ به دیجیتال داخلی میکروهای AVR که ADC دارند از این نوع است به همین دلیل قصد داریم در مورد این نوع ADC مختصری توضیح دهیم.
بجای شمارنده در این طرح از یک میکروکنترلر یا میکروپروسسور استفاده می شود.
با برنامه ای MSB یک شده و در یک DAC بزرگتر باشد MSB صفر شده و MSB بعدی 1 می شود و مقایسه می شود واگر کوچکتر باشد MSB 1 باقی مانده و MSB بعدی 1 می شود واین عمل به همین ترتیب ادامه پیدا می کند تا سیگنال آنالوگ خروجی DAC با سیگنال آنالوگ حاضر در پایه ADC برابر شود.
مبدل آنالوگ به دیجیتال داخلی میکرو خصوصیات مبدل آنالوگ به دیجیتال داخلی AVR به شرح زیر است : * وضوح 10بیتی * صحت مطلق 2LSB * زمان تبدیل 65-260(CONWERSION TIME) * وضوح 15KSPS در بالاترین حد * کانالهای مولتی پلکس شده * مدهای تبدیل SINGLE .FREE * ولتاژ ورودی از 0V تا VCC * پرچم وقفه پایان تبدیل ADC * حذف کننده نویز(NOISE CACELER) ADC بسته به میکرو به چند کانال آنالوگ مالتی یلکس شده که به هر یک از پایههای پورت اجازه می دهد که به عنوان یک ورودی مبدل آنالوگ به دیجیتال عمل نماید.
مبدل داخلی میکرو دارای وضوح 10 بیتی است و برای تبدیل با این وضوح،نیاز به فرکانس کلاکی بین 50KHZ بین 200KHZ دارد و این کلاک را از تقسیم فرکانس کریستال تامین می کند.
در صورت که نیاز به وضوح بالا ( کمتر از 10 بیت ) نیست می توان کلاکی بالاتر از 200KHZ به آن اعمال کرد.
ADC دارای یک SAMPLE AND HOLD است که باعث می شود ولتاژ ونرودی ADC در زمان تبدیل در سطح ثابت نگه داشته شود تا عملیات تبدیل با دقت بیشتری انجام شود.
ADCدارای دومنبع ولتاژ آنالوگ مجزا است.AVCC و AGND که AGVD بایستی به زمین یا ولتاژ زمین آنالوگ متصل شود و AVCC نباید بیشتر از 0.3V نسبت به VCC اختلاف داشته باشد ولتاژ مرجع (VOLTAGE REFERENCE) خارجی در صورت وجود باید به پایه AREF وصل شود که این ولتاژ بایستی بین ولتاژ موجود بر روی پایه های AGND-AVCC باشد در غیر این صورت به VCC وصل می شود ADC مقدار آنالوگ ورودی را باتقریب متوالی به مقدار دیجیتال 10 بیتی تبدیل می کند.
کمترین مقدار نشان دهنده مقدار آنالوگ موجود در پایه AGVD و بالاترین مقدار، نشان دهنده ولتاژ پایه AREF منهای یک LSB است.
به طور مثال اگر پایه به ولتاژ AREF=3.5V و AGND=0V وصل شده باشد مقدار دیجیتال شده 1023 نشان دهنده ولتاژ 3.5V و مقدار 0نشان دهنده ولتاژ 0.0V بر روی پایه مبدل ADC انتخاب شده است.ADC دارای دو مد تبدیل SINGLE و FREE است مد SINGLE بایستی توسط کاربر پیکره بندی وکانال دلخواه برای نمونه برداری انتخاب شود درمد FREE و ADC بایک ثابت نمونه برداری رجیستر داده ADCرا UPDATEمی کند.
نرم افزار ترموستات - برنامه اصلی $regfile = "m16def.dat" $crystal = 1000000 Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinc.4 , Db7 = Pinc.5 , Rs = Pinc.0 , E = Pinc.1 Config Lcd = 16 * 2 '*******************' Config Pinb.0 = 0 'input Config Pinb.1 = 0 'input Config Pinb.2 = 0 'input Config Pinb.3 = 0 'input Config Pinb.4 = 1 'output Config Pinb.5 = 1 'output Config Pinb.6 = 1 'output '*******************' Ok Alias Pinb.3 Downn Alias Pinb.2 Upp Alias Pinb.1 Change Alias Pinb.0 '*******************' Cursor Off Cls 'Lcd " YASER HASHEMI" 'Lowerline 'Lcd " TEMP PROJECT" 'Wait 2 Config Adc = Single , Prescaler = Auto Dim A As Word , Maxim As Byte , Minim As Byte , Ch As Byte , Testing As Byte Dim I As Word , Bish As Byte , Kam As Byte , Kodam As Byte Dim Maximtest As Byte , Minimtest As Byte , Jk As Byte Bish = 0 : Kam = 0 : Kodam = 0 '******************************************************************************' : Readeeprom Testing , 10 If Testing > 150 Then Goto Getfirst Else Readeeprom Maxim , 0 Readeeprom Minim , 2 Cls Lcd " " ; Minim ; " Lowerline Lcd "Start Change" Do If Ok = 0 Then Ddq: If Ok = 0 Then Goto Ddq Readeeprom Maxim , 0 Readeeprom Minim , 2 Cls Goto Temptest End If If Change = 0 Then Ddq3: If Change = 0 Then Goto Ddq3 Goto Changetemp End If End If End 'end program '***************************** Temptest *********************************' Temptest: Start Adc Do A = Getadc(1) Waitms 100 A = A / 2 Locate 1 , 1 Lcd " Temp=" ; " " ; A ; "'c" Select Case A Case Is Reset Portb.4 : Reset Portb.5 : Set Portb.6 Cls Locate 1 , 1 Lcd " Temp=" ; " " ; A ; "'c" Lowerline Lcd " LOW" Case Minim To Maxim: Reset Portb.4 : Set Portb.5 : Reset Portb.6 Cls Locate 1 , 1 Lcd " Temp=" ; " " ; A ; "'c" Lowerline Lcd " NORMAL" Case Is > Maxim Set Portb.4 : Reset Portb.5 : Reset Portb.6 Cls Locate 1 , 1 Lcd " Temp=" ; " " ; A ; "'c" Lowerline Lcd " HIGH" End Select For I = 1 To 3000 Waitms 1 If Change = 0 Then Dd1: If Change = 0 Then Goto Dd1 Reset Portb.4 : Reset Portb.5 : Reset Portb.6 Goto Changetemp End If Next If Change = 0 Then Dd2: If Change = 0 Then Goto Dd2 Goto Changetemp End If '***************************** ChangeTemp *********************************' Changetemp: Readeeprom Maxim , 0 Readeeprom Minim , 2 Cls Lcd " " ; Minim ; " Waitms 1500 Cls Gosub Templcd '****************** MAX ********************' If Kodam = 0 Then Fgh: If Upp = 0 Then Fd: If Upp = 0 Then Goto Fd Cls Incr Bish If Bish > 100 Then : Bish = 0 : End If Gosub Templcd End If If Downn = 0 Then Fd1: If Downn = 0 Then Goto Fd1 Cls Decr Bish If Bish = 255 Then : Bish = 0 : End If Gosub Templcd End If If Ok = 0 Then Fd2: If Ok = 0 Then Goto Fd2 Ch = Bish : Writeeeprom Ch , 0 : Waitms 5 Ch = Kam : Writeeeprom Ch , 2 : Waitms 5 Kodam = 1 Goto Dfghj End If Goto Fgh End If '****************** MIN ********************' Dfghj: Cls Gosub Templcd If Kodam = 1 Then Fgh1: If Upp = 0 Then Fdd: If Upp = 0 Then Goto Fdd Cls : Incr Kam If Kam > 100 Then : Kam = 0 : End If Gosub Templcd End If If Downn = 0 Then Fdd1: If Downn = 0 Then Goto Fdd1 Cls : Decr Kam If Kam = 255 Then : Kam = 0 : End If Gosub Templcd End If If Ok = 0 Then Fdd2: If Ok = 0 Then Goto Fdd2 Ch = Bish : Writeeeprom Ch , 0 : Waitms 5 Ch = Kam : Writeeeprom Ch , 2 : Waitms 5 Readeeprom Maximtest , 0 Readeeprom Minimtest , 2 If Minimtest > Maximtest Then Ch = 32 : Writeeeprom Ch , 0 : Waitms 5 Ch = 25 : Writeeeprom Ch , 2 : Waitms 5 Cls Lcd " " Lowerline Lcd " Min>Max ???" Set Portb.4 : Set Portb.5 : Set Portb.6 Waitms 500 Reset Portb.4 : Reset Portb.5 : Reset Portb.6 Waitms 500 Set Portb.4 : Set Portb.5 : Set Portb.6 Waitms 500 Reset Portb.4 : Reset Portb.5 : Reset Portb.6 Waitms 500 Set Portb.4 : Set Portb.5 : Set Portb.6 Waitms 500 Reset Portb.4 : Reset Portb.5 : Reset Portb.6 Cls Kodam = 0 Goto Main End If If Minimtest = Maximtest Then Ch = 32 : Writeeeprom Ch , 0 : Waitms 5 Ch