X
تبلیغات
TAKNET - تبدیل آنالوگ به دیجیتال و فرستادن خروجی به PC توسط پورت سریال با استفاده از Microcontroller

تبدیل آنالوگ به دیجیتال و فرستادن خروجی به PC توسط پورت سریال با استفاده از Microcontroller

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

برای تبدیل آنالوگ به دیجیتال از آی سی ADC0804 استفاده می کنیم سپس خروجی آن که 8 بیت می باشد به میکروکنترل داده می شود که از خانواده 8051 می باشد و مدل آن 89C2051  می باشد و توسط این میکروکنترلر دستورات به آی سی ADC0804 ارسال می شود ، ارتباط ما با پورت سریال کامپیوتر از طریق پورت سریال میکرو می باشد ولی به دلیل اینکه خروجی سریال میکرو TTL است و استاندارد کامپیوتر RS232 از آی سی Max232 برای تغییر سطح ولتاژ استفاده می کنیم یعنی خروجی سریال ما بعد از میکرو به آی سی Max232 رفته و خروجی این آی سی به کامپیوتر وصل می گرد

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

بخش اول - تبدیل آنالوگ به دیجیتال توسط آی سی ADC0804
ساده ترین راه برای تبدیل آنالوگ به دیجیتال استفاده از آی سی هایی مشابه ADC0804 می باشد . ورودی دیجیتال از پین شماره 6 وارد شده و خروجی از پین های 11 تا 18 خارج می شود . برای اینکه این ای سی همیشه فعال باشد و پین شماره یک را به گراند وصل می کنیم اما در صورتی که بشتر از یک آی سی ADC داشته باشیم آن را با میکرو کنترل می کنیم
پین 7 را به گراند وصل می کنیم
این آی سی دارای نوسان ساز داخلی می باشد اما برای فعالیت به خازن و مقاومت نیاز دارد . یک خازن 150pF بین پین شماره 4 و گراند قرار می دهیم سپس پین 4 را با یک مقاومت 10کیلو اهم به پین 19 وصل می کنیم
 برای تغذیه مدار
پین 20 را به VCC یا همان برق 5 ولت وصل کرده
پین های 8 و 10 را به گراند وصل می کنید

بخش دوم : نحوه وصل کردن میکرو کنترولر به آی سی ADC0804 و توضیحات درباره چگونگی استفاده

میکروکنترل AT89C2051 از خانواده 8051 می باشد و از نوع 20 پایه است دارای 2 پورت می باشد و مقدار رم آن 2 کیلوبایت است

برای کنترل ADC0804 ما از 3 خط فرمان استفاده می کنیم و به شرح زیر است
پین 2 ( خواندن ) از آی سی ADC0804 را پین 7 یعنی P3.3 میکروکنترلر 2051 وصل می کنیم
پین 3 ( نوشتن ) را به پین 8 یعنی P3.4
پین 5 ( وقفه ) را به پین 9 یعنی P3.5 وصل می کنیم

8 بیت خروجی آی سی ADC0804 را به پورت 1 میکروکنترلر 2051 وصل می کنیم
پین 18 ( دیتای 0 ) از  آی سی ADC0804 را پین 12 یعنی P1.0  از میکروکنترلر 2051 وصل می کنیم
پین 17 ( دیتای 1 ) از  آی سی ADC0804 را پین 13 یعنی P1.1 
پین 16 ( دیتای 2 ) از  آی سی ADC0804 را پین 14 یعنی P1.2
پین 15 ( دیتای 3 ) از  آی سی ADC0804 را پین 15 یعنی P1.3
پین 14 ( دیتای 4 ) از  آی سی ADC0804 را پین 16 یعنی P1.4
پین 13 ( دیتای 5 ) از  آی سی ADC0804 را پین 17 یعنی P1.5
پین 12 ( دیتای 6 ) از  آی سی ADC0804 را پین 18 یعنی P1.6
پین 11 ( دیتای 7 ) از  آی سی ADC0804 را پین 19 یعنی P1.7 وصل می کنیم
 

در 2051 پین شماره 12 و 13 دارای مقاومت پول آپ داخلی نیستند و به مقاومت پول آپ خارجی نیاز دارند
یک مقاومت 2.2 کیلو اهم از پین شماره 12 به برق 5 ولت یا همان VCC وصل می کینم
یک مقاومت 2.2 کیلو اهم از پین شماره 13 به برق 5 ولت یا همان VCC وصل می کینم

منبع تغذیه آی سی AT89C2051
از پین 20 به برق 5 ولت وصل کرده و از پین 10 به گراند وصل می کنیم

برای نوسان ساز 8051
یک کریستال 11/0592 مگاهرتزی را به پایه های 4 و 5 میکرو وصل کرده و از ادامه پایه های کریستال به 2 خازن 33 پیکو فاراد و در ادامه به گراند متصل می شود مطابق شکل بالا
به دلیل اینکه می خواهیم از سریال پورت میکرو استفاده کنیم نمی توانیم از کریستال 12 مگاهرتز استفاده کرد

برای مدار Reset
از پین 1 یک مقاوت 8.4 کیلو اهم به گراند وصل می کنیم
از پین 1 یک خازن 10 میکروفاراد به VCC وصل می کنیم مطابق شکل
این مدار به خاطر ریست اولیه شروع کار میکرو می باشد
 

نحوه کنترل پردازشکر آنالوگ به دیجیتال توسط 8051 . این پردازش شامل چندین مرحله است

مرحله اول : برای شروع عملیات تبدیل باید پین 3 ( نوشتن ) را 0 ( Low ) کرده و سپس آن را 1 ( High ) کنیم با 1 شدن عملیات تبدیل شروع می شود
مرحله دوم : زمانی که پردازش تبدیل کامل شد پایه 5 ( وقفه )  0  ( Low )  می شود
مرحله سوم : زمانی که پایه 5 ( وقفه ) 0 شد ما باید پایه 2 ( خواندن ) را 0 کنیم تا خط انتقالی دیتای 0 تا دیتای 7 فعال شود و مقدار به دست آوردن ارسال شود
مرحله چهارم : مقدار پورت 1 را می خوانیم ( که مقدار تبدیل شده است ) که یک عدد بین 0 تا 255 می باشد
مرحله پنجم : در نهایت دوباره مقدار پایه 2 (خواندن ) را به حالت 1 ( High ) تبدیل کرده تا برای خواندن مقدار های بعدی آماده باشد

توجه : مقدار های پیش فرض پین های کنترلی 1 ( High ) می باشد

بخش سوم : ارسال اطلاعات به کامپیوتر از طریق پورت سریال توسط ای سی Max232

ما اکنون 8 بیت اطلاعات را به دست آورده ایم و می خواهیم آن را برای کامپیوتر ارسال کنیم برای هیمن ار رابط سریال 2051 استفاده می کنیم اما ولتاژ پورت سریال میکرو منطقی می باشد یعنی 0 و 5 ولی کامپیوتر با استاندارد RS232  یعنی  10 و -10 ولت کار می کند بنابر این از یک مبدل ولتاژ منطقی به RS232 استفاده می کنیم که همان آی سی Max232 می باشد که نقشه پایه های آن به صورت زیر است

این آی سی به 5 خازن برای ذخیره و رها سازی و رها سازی ولتاژ های 10 و -10 ولت نیاز دارد که مطابق شکل بالا وصل می شود
این ای سی امکان دارای 2 ورودی و 2 خروجی است که در اکثر اوقات فقط از یک ورودی و یک خروجی آن استفاده می شود

نکته بسیار مهم :

برای وصل کردن پورت سریال به مدار از 3 سیم ارسال می شود : 1- گراند 2 - RXT   ( دریافت ) 3- TXT (ارسال )

دقت کنید که سیم RXT از مدار به TXT کامپیوتر وصل شود و TXT از مدار به RXT  کامپیوتر وصل شود

گراند پین شماره 5 ، RXT پین شماره 2  و TXT پین شماره 3 می باشد در پورت سریال رایانه

گراند پین شماره 5 ، RXT پین شماره 3  و TXT پین شماره 2 می باشد در مدار

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

 

آشنایی با مبدل آنالوگ به دیجیتال ADC804

ADC يك مبدل آنالوگ به ديجيتال مي باشد كه با استفاده از پايه 9 يعني Vref مي توان مقدار دامنه سيگنال ورودي را با توجه به مقدار ولتاژ اين پايه تنظيم كرد.

به اين صورت كه اگر اين پايه را رها كنيم و به جايي وصل نكنيم  ولتاژ دامنه سيگنال ورودي مي تواند در محدوده 0 تا 5 ولت باشد كه در اين صورت گام هر پله برابر با 19.23=256÷5 ميلي ولت خواهد شد. براي ديگر ولتاژ ها هم در زير مشخص شده است:

Verf=2v        -> vin=0v-4v   4/255=15.62mv

Verf=1.5v     -> vin=0v-3v   3/255=11.71mv

Verf=1.28v    -> vin=0v-2.56v   2.56/255=10mv

Verf=1v        -> vin=0v-2v   2/255=7.81mv

Verf=.5v       -> vin=0v-1v   1/255=3.90mv

گام پله يعني اينكه به ازاي چه مقداري از دامنه ورودي خروجي يك واحد باينري بالا يا پايين برود. مثلا با ولتاژ پايه 2ولت خروجي ديجيتال ما به ازاي هر 15.62 ميلي ولت ورودي يك واحد افزايش مي يابد يعني 18.62=00000001B و 37.24=00000010B خواهد شد و در ساير ولتاژ ها هم همين طور مي باشد. البته اگر قادر به توليد اين ولتاژ هاي پايه نباشيم مي توانيم توسط يك پتانسيومتر 10 كيلو و با تنظيم آن يك ولتاژ مبنا ايجاد كرد.

تشريح پايه ها:

1)     CS اين پايه در واقع انتخاب كننده چيپ مي باشد. كار برد اين پايه در مدارتي كه نياز به دو يا چند سنسنور باشد كه براي هر سنسور يك ADC استفاده مي كنيم و در ميكرو ما مي توانيم توسط اين پايه مشخص كنيم كه كدام يك از ADC ها انتخاب شوند و ميكرو زير برنامه چه سنسوري را اجرا كند. البته در مداراتي كه از يك سنسور استفاده مي كنيم چون ما يك آيسي داريم مي توانيم آن را زمين كنيم.

2)     RD همون طوري كه از معني آن پيدا است يعني خواندن. وقتي ما مي خواهيم يك سيگنال آنالوگ را به ديجيتال تبديل كنيم اگر پايه CS=0 باشد و پايه RD را هم صفر كنيم آيسي معادل ديجيتال سيگنال ورودي را در خروجي قرار مي دهد يعني D0-D7 . البته بايد از قبل توسط پايه WR كه در زير توضيح داده شده است سيگنال آنالوگ را براي تبديل آماده كنيم.

3)     WR يعني نوشتن. اگر پايه CS=0 باشد و WR را در يك لحظه صفر كنيم در واقع آغاز روند تبديل را به ADC اطلاع مي دهد. كه ADC بعد از متوجه شدن به سراغ سيگنال ورودي رفته و آن را تبديل كرده و در يك ثبات داخلي ذخيره مي كند تا زماني كه RD=0 شود و محتواي اين ثبات را به خروجي انتقال مي دهد.

4)     CLK IN اگر بخواهيم از يك منبع پالس ساعت بيروني استفاده كنيم پالس ساعت را به اين پايه اعمال مي كنيم و اگر بخواهيم از پالس ساعت داخلي خود ADC استفاده كنيم بايد اين پايه و پايه 19 را به يك مقاومت و خازن متصل كنيم. فركانس آن از طريق فرمول زير مي باشد: f=1/(1.1*RC)   مقادير پيشنهادي براي اين آيسي مقاومت 10 كيلو اهم و خازن 150 پيكو فاراد مي باشد كه زمان تبديل ADC با توجه به فرمول بالا 110 ميكرو ثانيه خواهد شد. يعني در زمان 110 ميكرو ثانيه اي مي تواند يك سيگنال را از ورودي بخواند و معادل ديجيتال آن را تحويل دهد.

5)     INTR همون وقفه هست. اين پايه هميشه در وضعيت يك قرار دارد و هرگاه سيگنالي در ورودي باشد و CS=0 و WR=0 باشد پس از پايان تبديل اين پايه صفر مي شود كه اگر اين پايه را به پايه وقفه بيروني 8051 وصل كنيم و آن را برنامه ريزي كنيم  در اين صورت مي توانيم از CPU ميكرو كارهاي ديگري انجام دهيم و هرگاه عمل تبديل به اتما رسيد ميكرو متوجه مي شود و براي خواندن خرجي ADC مي رود و بعد از خواندن به كار قبلي خود خواهد برگشت. در كل براي صرفه جويي در وقت ميكرو مي باشد شما مي تواند اصلا استفاده نكنيد.(منظورم  روش وقفه هست) البته من در اين مثال از روش وقفه سركش استفاده كردم يعني CPU كل خود را روي اين پايه مي گذارد و هرگاه صفر شده عمل فرائت را انجام مي دهد.

6)     VIN(+)

7)     VIN(-) اين دو پايه ورودي هاي تفاضلي هستند كه خروجي برابر با VIN=VIN(+)-VIN(-) خواهد بود. ولي ما اغلب از ورودي تفاضلي استفاده نمي كنيم و VIN(-) را به زمين وصل كرده و VIN(+) را هم سيگنال ورودي را به آن متصل مي كنيم.

8)     A GND زمين آنالوگ كه به زمين وصل مي كنيم.

9)     Vref/2 كه در بالا توصيح داديم

10)GND  زمين آيسي

11)پايه 11 تا 18 به ترتيب D0-D7 خطوط داده 8 بتي هستند. (D0=18…D7=11).

19)CLK R كه در بالا توضيح داديم.

20)VCC تغذيه آيسي.

 

راه اندازی مبدل آنالوگ به دیجیتال در حالت تبدیل-آزاد

در اين حالت ADC با باز كردن SW شروع به نمونه گيري مي كند و بعد از پايان هر تبديل به خودش يه Interrupt مي دهد و مدام نمونه گيري ادامه پيدا مي كند. تنها كاري كه شما مي كنيد اين است كه توسط ميكروكنترلر يا كامپيوتر مدام اطلاعات را از خروجي ADC می خوانید

+ نوشته شده در Fri 11 Jun 2010ساعت 23 توسط تک نت |