اطلاعیه

Collapse
No announcement yet.

ساخت ولتمتر دیجیتال قابل اتصال به کامپیوتر

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

    #91
    پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

    به نظر من (که هیچی نمی دونم) استفاده از ترانس اصلا منطقی نیست. من هیچ جا با همچین کاربردایی ندیدم از ترانس استفاده بشه/ :eek:

    دیدگاه


      #92
      پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

      موضوع ترانس فقط یه نظر بود.
      ببین طوری مقاومتت رو در بیار که در 250 ولت بتونه 4.5 ولت بده.بعد این 250 ولت رو اروم کم کن تا ببینی تو چند ولت به صفر میرسه.تا هرجا که رسید مثلا رو 180 ولت.حالا این سلکت رنج 250 تا 180 رو اندازه میگیره.بعد مقاومت بعدی رو طوری تنظیم کن که 180 ولت رو 4.5 ولت بده بعد دوباره کم کن تا به صفر برسی و تا آخر.ببین با این کار یه ضریب تبدیل میسازی مثل یه تابع یعنی مثلا میدونی 250 بعد از عبور از مقاومت اول تقسیم به 55 میشه.بعد خیلی راحت میشه مقدار رو گرفت.یعنی هر وقت سلکتور رو مقاومت اول باشه و ولتاژی که نشون میده 4.5 باشه تو ورودی سیستمتون 250 ولت اومده.نقشه هم به این صورته که این مقاومت ها از یک طرف همه به هم وصل و ولتاژ بالا به این گره میاد و از طرف دیگه سر هاشون آزاده و سلکتور اونها رو انتخاب میکنه.به نظرم این راه از همه بهتره.فقط یکم خطریه.بعد از مقاومت حتما باید ولتاژ وارد یک بافر کنترلی بشه تا این بفر خودش مثل یک فیوز عمل کنه.
      goodluck
      خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

      دیدگاه


        #93
        پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

        آقای روباه
        خیلی ممنون از توضیح جامعتون
        ببینید به جای این کار که میگید خطری هم هست خوب ،ما بیام از همون مدار قبلی خودمون استفاده کنیم منتها با دو تا ای سی ad620 .حالا ما ولتاژمون اول بیاد یکسو بشه ،بعد با یه تقسیم مقاومت به ضریب 0.005 کم بشه یعنی Rg توی ad620 اولمون رو طوری بگیریم که ولتاژمون رو با گین 0.05 کم کنه بعد به خروجی ببره بعد مثل مدار قبل ما توی ad620 دومی مییاد تقسیم رنج رو داشته باشه که ما فرض می کنیم ماکزیمم می خواد 5 باشه بعد همونطور که گفتید می یام 4 تا مقاومت طوری انتخاب می کنیم که توی رنج های از پیش تعیین شده ولتاز ما رو تقویت کمی کنه و اون رو تا سطح 5 ولت برسونه .این مقاومت ها از یه طرف به هم وصل اند و از طرف دیگه به یه ای سی سوییچ و بعد از ای سی سوییچ دو باره وصل به پایه ای سی می شن که قراره Rg رو بذاریم . یعنی مقاومت های موازی و سوییچ ها بین دو پایه ای که قراره Rg رو بذاریم وصل می شن .که تو برنامه میکرو می یاد ورودی adc رو می خونه و می ره چکش میکنه و می یاد به سوییچ ها دستور وصل یا قطع بودن رو می ده
        به نظرتون اگه این کارو کنیم جای اون کاری که شما می گید عملی
        گاهی دلم برای چوپان دروغگو خیلی می سوزد.بیچاره 2 بار بیشتر دروغ نگفت انگشت
        نماشد... ولی ما هنوز صادق ترینیم

        دیدگاه


          #94
          پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

          و حالا برنامه نویسی مون

          از دوستان خواهش می کنم تو این زمینه هم کمکمون کنند همچنان مثل گذشته :applause: :applause:

          ما الگوریتمشو نوشتیم ولی همونطور که مستحضرید ما یه کم لنگ می زنیم میشه کمک کنید و برنامه شو با هم بنویسیم

          بازم ممنونم :nerd: :nerd:

          الگوریتم برنامه:
          1. شروع برنامه
          2. تعریف متغییر ها
          3. برنامه ریزی پورت سریال (uart سخت افزاری)
          4. شروع حلقه
          5. بیت هفتم رجیستر ucsra را چک کن (بیت RXC)
          6. اگر RXC=0 به شروع حلقه برو
          7. در غیر این صورت رجیستر UDR را بخوان و در یک رجیستر دیگر مثل r16 بریز
          8. B=11
          9. r16 را با 01h مقایسه کن .
          10. اگر برابر بودند به lable 1 برو
          11. r16 را با 02h مقایسه کن .
          12. اگر برابر بودند به lable 2 برو
          13. r16 را با 03h مقایسه کن .
          14. اگر برابر بودند به lable 3 برو
          15. r16 را با 04h مقایسه کن .
          16. اگر برابر بودند به lable 4 برو
          17. r16 را با 05h مقایسه کن .
          18. اگر برابر بودند به lable 5 برو
          19. r16 را با 06h مقایسه کن .
          20. اگر برابر بودند به lable 6 برو
          21. برو به شروع حلقه

          lable 1:
          21. 0.1 میلی ثانیه صبر کن
          22. B-1 را در B بریز
          23. اگر B=0 برو به شروع حلقه
          24. برو به loc1

          lable 2:
          21. یک میلی ثانیه صبر کن
          22. B-1 را در B بریز
          23. اگر B=0 برو به شروع حلقه
          24. برو به loc1


          lable 3:
          25. 5 میلی ثانیه صبر کن
          26. B-1 را در B بریز
          27. اگر B=0 برو به شروع حلقه
          28. برو به loc1


          lable 4:
          29. 10 میلی ثانیه صبر کن
          30. B-1 را در B بریز
          31. اگر B=0 برو به شروع حلقه
          32. برو به loc1


          lable 5:
          33. 20 میلی ثانیه صبر کن
          34. B-1 را در B بریز
          35. اگر B=0 برو به شروع حلقه
          36. برو به loc1


          lable 6:
          37. 50 میلی ثانیه صبر کن
          38. B-1 را در B بریز
          39. اگر B=0 برو به شروع حلقه
          40. برو به loc1


          loc 1:
          41. S را صفر کن ، A را بگیر (A شمارنده)
          42. PB.0=1 وPB.1=0 و PB.2=0 و PB.2=0 ( در اینجا کمترین گین A4 پیش فرض است)

          loc 10:
          43. از ADC بخوان و در متغییر w بریز
          44. اگر w>= 1 و w<= 4.7 برو به sub 1
          45. اگر w>4.7 پیغام بده ولتاژ خارج از رنج است
          46.اگر w<1 انگاه PB.1=1 وPB.0=0 و PB.2=0 و PB.3=0


          loc 11:
          47. از ADC بخوان و در متغییر w بریز
          48. اگر w>= 1 و w<= 4.7 برو به sub 2
          49. اگر w>4.7 آنگاه PB0=1 برو به loc 10
          50.اگر w<1 انگاه PB.2=1 وPB.0=0 و PB.1=0 و PB.3=0


          loc 12:
          51. از ADC بخوان و در متغییر w بریز
          52. اگر w>= 1 و w<= 4.7 برو به sub 3
          53. اگر w>4.7 آنگاه PB1=1 برو به loc 11
          54.اگر w<1 انگاه PB.3=1 وPB.0=0 و PB.1=0 و PB.2=0

          55. از ADC بخوان و در متغییر w بریز
          56. اگر w>= 0 و w<= 4.7 برو به sub4
          57. اگر w>4.7 آنگاه PB2=1 برو به loc 12

          sub 1:
          58.W را تقسیم بر (A4*0.005 ) کن و در w بریز
          59.S+W را در S بریز
          60. A-1 را در A بریز
          61.اگر A مخالف صفر بود از ADC بخوان و در متغییر w بریز و به sub 1 برو
          62.برو به RESULT

          sub 2:
          sub 3:
          sub 4:

          RESULT:

          S/100 و در S fvdc
          print S
          اگر r16=01h برو به lable 1
          اگر r16=02h برو به lable 2
          اگر r16=03h برو به lable 3
          اگر r16=04h برو به lable 4
          اگر r16=05h برو به lable 5
          اگر r16=06h برو به lable 6

          اگر با هیچ کدام برابر نبود برو به شروع حلقه


          من تا وسطای برنامه نوشتم :nice: :nice: :wow: اگه می شه بقیش رو شما کمک کنید که بنویسیم :mrgreen: :mrgreen: :mrgreen:


          $regfile="m32def.dat"
          crystal=3646800
          buad=9600

          dim w as word,S as wod
          dim A as byte,B as byte
          ,dim A1 as byte,A2 as byte , A4 as byte,A3 as byte



          همین دیگه حالا نوبت شماست :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
          گاهی دلم برای چوپان دروغگو خیلی می سوزد.بیچاره 2 بار بیشتر دروغ نگفت انگشت
          نماشد... ولی ما هنوز صادق ترینیم

          دیدگاه


            #95
            پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

            خب اگه با بیسکام می خوای بنویسی ضرورتی نداره بخوای با رجیسترها تا این حد کار کنی.
            یک بار جزئیات برنامه رو بگو تا همه بتونن کمک کنن. من که از اول پیگیری می کردم الان دقیق نمی دونم چه برسه بقیه .

            تا اونجایی که من می دونم یه مولتی متر می خواین بسازین که چند رنج رو اندازه گیری می کنه. پس به ADC احتیاج دارین و این که بدونین سلکتور الان تو چه رنجیه. نتیجه کار هم باید از طریق پورت سریال به PC ارسال بشه.

            اگه چیز دیگه ای هم هست بگو


            ضمنا تو که همه برنامه رو نوشتی . چیزی برای ما نموند :mrgreen:

            دیدگاه


              #96
              پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

              این روش برای زبان اسمبلی هست که بیخودی وقت گیر هست.شما یک زبان High Level انتخاب کنید مثل C یا بیسیک و تو کلمپایلر اونها بنویسید.من C رو توصیه میکنم.چون هم قویتره . امکان باگ کمتره . تو تعداد خطوط زیاد برنامه مشکل ساز نمیشه . دستتون باز تره و ... باز هم میل خودتون هست.من با بیسیک کار نمی کنم.اگر با C کار کنید من در خدمتم ام بیسیک دوستان دیگه کمکتون میکنن.شما با یک زبان High Level کل این برنامه رو تو چند خط مینویسید.
              در ضمن شما به یک نرم افزار Interface هم احتیاج دارین تا داده ها رو تو PC ببینید.من تو این هم میتونم کمکتون کنم.شما میتونید دیتا رو با USB ارسال کنید.من الان برنامه ایی تو PC نوشتم که پورت متصل شده رو بطور اتوماتیک پیدا میکنه و دیتا رو میخونه.
              این آی سی سوییچ شمارش چیه؟
              بنظرم با رله سوییچ بشه خیلی بهتره.شما میتونید با رله 100 خط ارتباطی رو به یک خط بدون هیچ تلفات-تغییر در سطح ولتاژ و محدودیتی منتهی کنید.
              در کل رله بهتره.منظورم رو متوجه شدید.؟
              من تو یک پروژه مربوط به ابزار دقیق سد یک جعبه سلکتور گذاشتم که 60 سنسور جابجایی سنج با دقت 0.01 میلیمتر رو با یک سیستم کنترل و 60 عدد رله به یک خط منتهی میکرد و خروجی میگرفت
              خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

              دیدگاه


                #97
                پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

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

                ببینین من یه بار دقیقا می گم می خوایم چی کار کنیم :
                قراره یک ولتاژ آنالوگ رو با مدار آنالوگ که شامل دو تا اپ امپ و یک آی سی سوویچ (4016 یا 4066) هست و صفحه 5 همین بحث رسم شده به پایه َِADC میکرو بدیم و با برنامه ای که الگوریتمش رو می بینین ، برای پورت سریال ارسال کنیم
                توی کامپیوتر هم با ویژوال بیسیک قراره رنج ها و 6 پریود نمونه برداری مختلف نمایش و تعیین بشه
                6 تا پریود نمونه برداری از ولتاژ آنالوگ رو داریم که توی الگوریتم از LABLE1 تا LABLE6 مشخص هستند
                (0.1 و1و 5 و10 و20 و50 میلی ثانیه)
                ما پیش خودمون قرار داد کردیم اگر مثلا عدد 1 هگز از کامپیوتر برای میکرو ارسال کنیم با اولین پریود از ولتاژ آنالوگ نمونه برداری کنه (0.1ms) و اگه 2 هگز رو ارسال کردیم با مثلا پریود بعدی (1ms) نمونه برداری کنه و ...
                همینطور تا 6 امی
                ضمنا از وقفه استفاده نمی کنیم و می خوایم که با هر پریود که تعیین شد 10 بار نمونه برداری کنه و باز برگرده سرکشی کنه ببینه از کامپیوتر براش پریود جدیدی تعیین شده یا نه و دوباره بره 10 بار دیگه نمونه بیاره ... توی هر بار (از این 10 بار ) هم 100 نمونه رو می گیره و میانگین گیری می کنه تا اندازه گیری دقیق در بیاد و نتیجه رو نمایش می ده
                آهان راستی توی زیر برنامه های با عنوان sub هم که 100 بار نمونه برداری (با شمارنده A) و دنرمالیزاسیون صورت گرفته و ...
                توی زیر برنامه های با عنوان loc هم از Adc خونده شده و اگه ولتاژ اندازه گیری شده توی رنج 1 ولت تا 4.7 ولت بوده باشه می ره توی Sub مربوط به خودش و دنرمالیزه می شه و میره نمایش داده می شه
                و اگر هم ولتاژ اندازه گیری شده توی این رنج نباشه به سوییچ توسط پورت B فرمان داده می شه که گین رو عوض کنه و دوباره از ADC بخونه و ببینه توی رنج هست یا نه و ... و این داستان ادامه داره
                اگه هم تو هیچ رنجی نگنجه پیغام خارج از رنج می ده
                این کل کاریه که با این برنامه قراره انجام بشه

                خوشحال می شم راهنماییمون کنین و بگین کلیات کار همینه که من نوشتم یا جور دیگه ای باید باشه
                و اینکه برنامشو چه جوری باید بنویسیم حالا؟

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


                آقای روباه عزیز از همه نظرات و پیشنهادات و راهنمایی های کامل شما هم خیلی خیلی ممنونیم
                زبان Codvision رو که اصلا مسلط نیستیم باز با بیسکام تا حدودی آشنایی داریم
                بهرحال امیدواریم بازم از لطف شما بی بهره نمونیم
                راستی وقتمون هم رو به اتمامه و زیاد نمونده باید هر جوری هست زودتر جمعش کنیممممم :cry2:
                من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

                دیدگاه


                  #98
                  پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                  سلام
                  تنها مسله شما اینه که کل پروژه رو یه جا در نظر می گیرد
                  سعی کنید مسله کل رو به مسل های کوچکت تری تقسیم بکنید دونه دونه اونا رو حل بکنید و بعدا نتیجه اونا رو یه جا با هم ترکیب بکنید این کار واسه مبتدی های مثل خود من برای شروع به برنامه نویسی خیلی مفیده
                  شما
                  1- برنامه ای بنویسید که ولتاژ کانال 1 رو بخونه و روی ال سی دی نمایش بده این قسمت رو می تونید توی پروتیوس تست بکنید و ولتاژ مرجع رو بهتره AVCC انتخاب بکنید با فرکانس نمونه برداری کم

                  2- برنامه ای بنویسید که توی یه باد ریت مشخص یه نوشته رو به یه برنامه اسکن پورت کام بفرسته

                  3- برنامه ای بنویسید ( توی vb ) که بتونه پورت سریال رو باز بکنه و به میکرو عددی رو بفرسته میکرو براساس عدد دریافتی مثلا چند led رو روشن بکنه یا خاموش

                  حالا این سه تا رو مرحله به مرحله انجام بدی نتیجه اونا روبا هم ترکیب بکنی همه چی حله

                  موفق باشی

                  دیدگاه


                    #99
                    پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                    سلام
                    آقای حاجی زاده ممنون از راهنمایی تون ما دو تا برنامه اول رو نوشتیم و تستش هم کردیم ولی روی ارسال از کامپیوتر به میکرو کار نکردیم
                    یعنی در واقع بر این باوریم که وقتی تونستیم از میکرو به کامپیوتر ارسال کنیم برعکسش هم جواب می ده
                    بازم ممنون از راهنمایی تون

                    آقای روباه ما نمی تونیم از رله استفاده کنیم چون باید سوییچ هامون توسط میکرو ،کنترل بشن ما باید از یک سوییچ دیجیتال استفاده کنیم این ای سی 4066 که ما در نظر گرفتیم 4 تا سوییچ با 4 تا پایه کنترلی هست که این پایه های کنترلی به پایه های PB.0 ,PB.1 ,PB.2 ,PB.3 میکرو وصل می شه و ما با استفاده از برنامه تشخیص می دیم که تو چه رنجی باید بره و پایه مربوطه رو کنترل می کنیم
                    یعنی توی برانامه می یاد ADC رو می خونه و چکش می کنه اگه بین 4.7 و1 بود که رنج انتخابی توسط میکرو درسته و اگر بیشتر از 4.7 بود عدد مورد نظر زیاد تقویت شده و باید در گین کمتر ضرب بشه پس میکرو می یاد به یه پورت دیگه دستور می دی که پایه کنترلی برای گین کمتر رو فعال کن و بقیه پایه ها رو صفر کن تا سوییچ های دیگه خاموش باشند
                    A4=4 , A3=20 ,A2=200,A1=1000 این گین هامون هست که با استفاده از رنج ها و مدارمون که اول تضعیف می کنه بعد تقویت بدست آوردیم و حالا اگر عددمون کوچکتر از 1 بود میکرو می فهمه که عدد کم تقویت شده و اگه تو رنج بالایی بره بهتر نشون داده می شه پس می یاد و به پایه کنترلی با گین بیشتر دستور وصل شدن رو میده
                    در واقع همه برنامه همینطوره
                    حالا اگه نظری در موردش دارید ممنون می شم راهنمایی کنید

                    گاهی دلم برای چوپان دروغگو خیلی می سوزد.بیچاره 2 بار بیشتر دروغ نگفت انگشت
                    نماشد... ولی ما هنوز صادق ترینیم

                    دیدگاه


                      پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                      شما از ADC توی حالت single استفاده کردی یا نه توی حالت دیفرانسیلی؟؟

                      دیدگاه


                        پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                        نوشته اصلی توسط رضا حاجی زاده
                        شما از ADC توی حالت single استفاده کردی یا نه توی حالت دیفرانسیلی؟؟
                        از ADC در حالت Single استفاده کردیم.
                        من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

                        دیدگاه


                          پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                          شما اون جوری که من پائین خوندم می خواهید وقتی ولتاژتون توی یه رنج خاصی یعنی 1 تا 4.7 کار خاصی رو انجام بدید
                          ولی اینه وقتی ولتاژتون از این محدوده خارج بود با یه کلید و تقویت کننده اون رو به حد مطلوب برسونید به خاطر اینه که نمی دونید سیگنال ورودی شما توی چه حدودیه؟؟؟

                          اگه این جوری شما می تونید از مد تفاضلی استفاده بکنید اول بهره 1 رو نگاه بکنید اگه سیگنال توی محدوده نبود دوباره بهره 200 رو امتحان بکنه

                          اگه یسگنالتون توی این محدوده باز به دردتون نخورد می تونید چند مدار تقویت کننده رو با هم با یه جمع کننده ببندی به adc و این جوری مدار رو طراحی بکنی

                          یکی از تقویت کننده با استفاده از کلید انالوگ فعال باشه و اون یکی ها غیرفعال باشه اگه بهره این تقویت کننده قابل قبول بود اونی یک ها توی مسیر نباشند

                          اگه این قابل قبول نبود توسط کلید انالوگ از مسیر خارج بشه و اون یکی تقویت کننده ها ( دو می با بهره بیشتر ) وارد بشه اگه اینم توسط میکرو قابل قبول نبود اون یکی وال اخر این جوری مشکلتون حل میشه

                          موفق باشی

                          دیدگاه


                            پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                            ضمنا بهتون توصیه می کنم توی ماژول های مختلف واسه درک اونا اول با بیسکام کار بکنید ولی اگه می تونید ادامه اون رو با یکی از کامپایلرهای سی ادامه بدید
                            موفق باشید

                            دیدگاه


                              پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                              اگه نمی خواین از وقفه استفاده کنید می تونین این کار رو بکنین:
                              میکرو ابتدا یه کد به PC می فرسته(کد پریود) . PC اگه این کد رو دریافت کرد مقدار پریود رو به میکرو برمی گردونه (همون کد 1 تا 6). میکرو بعد از دریافت کد با تاخیرهای به دست اومده به تعداد 100 بار ورودی رو از ADC می خونه و هر 10 تا رو میانگین می گیره. در نهایت 10 تا عدد به دست میاد که اونا رو به PC می فرسته و دوباره کد پریود رو ارسال می کنه و ...
                              این روند می تونه ادامه داشته باشه.

                              دیدگاه


                                پاسخ : سوال برای برنامه نویسی میکرو AVR کمک

                                سلام
                                بله ما مایلیم توی رنج 1 تا 4.7 باشه و بعد ببریم و دنرمالیزه اش کنیم و نمایشش بدیم
                                این به این دلیله که :
                                (در شکل مدار آنالوگمون که توی صفحه 5 همین بحث هست) اولین اپ امپ تضعیف با ضریب 0.005 ولت را انجام می ده و اپ مپ دوممون بسته به اینکه کدوم سوئیچ وصل باشه ( چون 4 رنج داریم 4 سوئیچ با تقسیم مقاومتی های مختلف هم داریم) آره بسته به اینکه کدوم سوئیچ وصل باشه تقویت با ضریب های 4 ، 20 ، 200 یا 1000 را انجام می ده .
                                که این گین ها رو ما با توجه به این موضوع که ماکزیمم ولتاژ هر رنج رو در خروجی این مدار آنالوگ ، در حد 5 ولت داشته باشیم (برای اعمال به پایه ADC) محاسبه کرده ایم.

                                لازم به ذکر است که ما 4 رنج 0 تا 250 ولت
                                0 تا 50 ولت
                                0 تا 5 ولت
                                0 تا 1 ولت رو داریم
                                که به ترتیب گین های 4 ، 20،200 ، 1000 رو دارا هستند.
                                250*0.005*A=5

                                از اینجا گین 4 به دست میاد برای رنج 0-250
                                و به همین ترتیب بقیه گین ها هم محاسبه می شه.
                                بعد با توجه به این گین ها تقسیم مقاومتی ها که این گین ها رو ایجاد کنه طراحی کردیم
                                که با همون آی سی سوئیچ که توسط میکرو بهش فرمان داده می شه انتخاب می شه و تعیین می شه هر ولتاژ با چه رنجی تقویت بشه .

                                به صورت پیش فرض کمترین گین رو در نظر گرفتیم یعنی 4 و رنج 250 که بالاترین رنج هست.
                                چون دیود زنر 4.8 قراره توی خروجی مدار آنالوگ قرار بدیم (برای محافظت) تصمیم گرفتیم حد بالای اندازه گیری مون 4.7 تعیین بشه و بر این اساس برنامه ی میکرو رو بنویسیم .

                                در رنج 0-250 ولتاژ 240 مقدار 4.8 رو بر می گردونه و مجبوریم از اون 10 ولت چشم پوشی کنیم .
                                4*0.005*240 =4.8

                                ولی در سایر رنج ها مشکلی وجود نداره چون مثلا در رنج 0-50 اگر 50 ولت اعمال بشه و 5 ولت رو توی خروجی آنالوگ داشته باشیم می فهمیم زیاد تقویت شده و به سوئیچ فرمان می دیدم که گین رو کاهش بده (یعنی گین رو از 20 به 4 تغییر بده ) یا به عبارتی ما رو ببره توی رنج 0 تا 250 که اونجا به راحتی 50 ولت نمایش داده می شه.
                                همینطور برای رنج های دیگه.
                                آقای حاجی زاده لطفا نظرتون رو راجع به این طرح ما بدین اگه اشکال دهره بهمون بگینش ممنون.

                                آقای حامد بله ما هم تقریبا همین کار و کردیم بجز اینکه میکرو کدی رو به PC ارسال نمی کنه و فقط خودش هر 10 باری که با یک پریود نمونه گرفت و کاراش تموم شد می ره سرکشی می کنه و ...
                                ایده شما جالبه و فکر کنم بهتر باشه حالا بهش فکر می کنیم ممنون
                                بهر حال باید اون رجیستر ها چک بشه مگه نه ؟؟؟؟؟
                                من آن گلبرگ مغرورم که می میرم ز بی آبی ولی با خفت و خواری پی شبنم نمی گردم.

                                دیدگاه

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