ايران ويج

نسخه‌ی کامل: مشکل در مبدل انالوگ به دیجیتال
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من یه مبدل انالوگ به دیجیتال رو به میکرو وصل کردم درضمن تو میکرو خروجی پالس با فرکانس مثلا 200 هرتز هم دارم.(از pwm نمیخوام استفاده کنم)اما مشکل من اینه که مقادیر رو دقیق نمیخونه.میشه برنامه رو چک کنید و بگید مشکل از کجاست؟یه سوال دیگه اگه مبدل من 12 بیتی باشه ایا تو نوشتن برنامه باید تغییراتی بدم؟یا واسه 10 بیت و یا 12 بیت فرقی نمیکنه
سلام
اسم مبدل چیه؟
باید ترتیب بیت های خروجیشو از دیتاشیت دنبال کنید.
به ازای ولتاژ ثابت، یه عدد تقریبا ثابت بدست میاد؟ یا...؟

الان پروتیوس ندارم، تا اسم adc رو ببینم....
یه مبدل 10 بیتی.mcp3001 من فقط میخوام اونچه در ورودی دارم رو در خروجی از 0 تا 1024 داشته باشم.نیاز نیست خود ولتاژ رو نشون بده.فقط تغییرات جز به جز ولتاژ رو ال سی دی نشون بده.اما اوی که من نوشتم دقیقا تغییرات رو نشون نمیده.در حقیقت هر 150 میلی رو به تغییر نشون میده
سلام

طبق دیتاشیت اصلاح شد

polarity هم اشتباه بود باید low باشه(البته طبق بقیه ی برنامه)
و اینکه اطلاعات باید در 2 بایت خونده بشه و بین این عملیات cs یک نشه... و صفر بمونه

به تاخیر لازم بعد صفر شدن cs هم توجه کنید(اون waitms )


موفق باشید
ممنون دوست من.اما چند تا مشکل:اول اینکه من با polarity high میخواستم. نه low.حالا با high هم انجام دادم مشکلی نداشت.میخواستم بدونم با high مشکلی پیش میاد؟دوم اینکه شما در این قسمت برنامه
کد php:
Reset Portb.4
aitms 50
Spiin Adc_value2 
1
Spiin Adc_value1 
1
Set Portb.4 

زمان رو 50 میلی در نظر گرفتید میشه بگید چرا؟اخه فرکانس تولیدی من رو خیلی کم میکنه.و در آخر اینکه polarity چه high باشه و چه low با تغییر ولتاژ فرکانس(پالس تولیدی) کم و زیاد میشه.میشه کاری کرد که این قسمت برنامه ثابت باشه.ممنون میشم راهنماییم کنید
کسی نیست مارو یاری کنه؟؟؟؟
نقل قول: ممنون دوست من.اما چند تا مشکل:اول اینکه من با polarity high میخواستم. نه low.حالا با high هم انجام دادم مشکلی نداشت.میخواستم بدونم با high مشکلی پیش میاد؟
درود
گفتم که بخاطر بقیه ی برنامه، polarity باید low باشه
منظورم از بقیه برنامه، phase هست...

اگه polarity با high مقدار دهی بشه، اون وقت باید phase هم 1 انتخاب بشه...( طبق دیتاشیت adc )

طرف میکرو این مشخصات با CPHA و CPOL شناخته میشن...
اینترنت کلی مطلب هست در موردش...
[تصویر:  400px-SPI_timing_diagram2.svg.png]

نقل قول: دوم اینکه شما در این قسمت برنامه
کد php:
Reset Portb.4
aitms 50
Spiin Adc_value2 
1
Spiin Adc_value1 
1
Set Portb.4 

زمان رو 50 میلی در نظر گرفتید میشه بگید چرا؟اخه فرکانس تولیدی من رو خیلی کم میکنه.و در آخر اینکه polarity چه high باشه و چه low با تغییر ولتاژ فرکانس(پالس تولیدی) کم و زیاد میشه.میشه کاری کرد که این قسمت برنامه ثابت باشه.ممنون میشم راهنماییم کنید
من فکر کردم اون پایه ای رو که مدام NOT میکنید، بخاطر سنجش سرعت هست،

خب اگه شما پالس لازم دارین، میتونید از تایمر یا تایمر تو مد pwm استفاده کنید خب....

ببخشید اون waitms لزومی نداره، باشه...
تاخیر t_sample زمانی اهمیت پیدا میکنه که شما مثل figure 5-1 توی دیتاشیت، باهاش (باadc ) رفتار کنید/
ولی ما 2 بایت بهش میفرستیم که چندتا بیت اش اضافه هست... و اون تاخیر t_sample اونجا برآورده میشه




اینم برنامه با polarity ی high و phase هه 1 و بدون تاخیر waitms

کد:
$regfile = "m32def.dat"
$crystal = 16000000 : Cursor Off
Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1_
    , Db7 = Pinc.0 , Rs = Pinc.5 , E = Pinc.4



Dim Adc_value1 As Byte , Adc_value2 As Byte , Result As Word , Tmp As Byte , Tmp1 As Word
Dim A As Word , B As Word
Dim C As Word , D As Word
Config Portd.7 = Output
Config Portb.4 = Output

Cursor Off Noblink

Config Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes _
          , Polarity = high , Phase = 1 , Clockrate = 16 , Noss = 1

Config Single = Scientific , Digits = 3
Cls
Spiinit
Reset Portd.7

Do
B = 20
Set Portd.7
Do
Incr A
Loop Until A = B
Reset Portd.7

A = 0
Reset Portb.4
Spiin Adc_value2 , 1
Spiin Adc_value1 , 1
Set Portb.4

'Adc_value2 = 214
'Adc_value1 = 163
Tmp1 = Adc_value2 And 31

Shift Tmp1 , Left , 5

Shift Adc_value1 , Right , 3

Result = Tmp1 Or Adc_value1


Locate 1 , 1
Lcd Result ; "*  "
Loop
خیلی ممنون بابت جواب.من نمیخوام از pwm استفاده کنم.راستی 2 تا سوال.اگه تو میکرو همزمان هم از pwm هم از capture تو مد وقفه و هم از همین برنامه بالا که واسه مبدل هستش استفاده کنم،سرعت میکرو خیلی پایین میاد؟سوال دوم اینه که اگه مبدل من 12 بیت باشه تو فرم برنامه تغییراتی بوجود میاد؟
چی شد کسی نبود؟؟
نقل قول: 2 تا سوال.اگه تو میکرو همزمان هم از pwm هم از capture تو مد وقفه و هم از همین برنامه بالا که واسه مبدل هستش استفاده کنم،سرعت میکرو خیلی پایین میاد؟

سلام
تجربه ی من در مورد وقفه ها کمه،
دوستان بهتر می تونند کمک کنن(دوستان، کجایید؟)Biggrin
نقل قول: سوال دوم اینه که اگه مبدل من 12 بیت باشه تو فرم برنامه تغییراتی بوجود میاد؟
نمیشه گفت
باید دیتاشیت قطعه بررسی بشه
کلا این برنامه هم به کمک نمودار های دیتاشیت، نوشته شده که قبلا روش بحث کردیم...

راستی بابت تاخیر، عذر میخوام.

موفق باشی