PDA

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



m.riahi
11-10-2014, 20:23
سلام ، یه سوالی داشتم : در برنامه بسکام با استفاده از میکرو atmega16 با چه دستوری میشه از ولتاژ نمونه گیری کرد ؟مثلا فرکانس رو 100 هرتز در نظر میگیرم.زمان نمونه برداریو چطور تعیین کنم؟
میخوام از ولتاژ ورودی تعداد نمونه های زیادی بگیرم و یه عملیات ریاضی روشون انجام بدم.(میخوام همه نمونه ها رو به توان 2 برسونم و با هم جمع کنم بعد تقسیم بر یه زمانی مثل 0.5 ثانیه کنم)
یه سوال دیگه کسی میدونه سرعت adc میکرو atmega16 چنده ؟
ممنون میشم راهنمایی کنید.

m.riahi
13-10-2014, 18:25
کسی نبود کمک کنه ؟؟؟
مشکل اصلیم اینه که نمیدونم چطور زمان رو تعیین کنم ، یعنی مثلا میخوام هر 10 میکرو ثانیه یه نمونه بگیرم چطور باید این زمان رو مشخص کنم ؟؟

sadeghbakhshi
13-10-2014, 19:08
دیگه جایی واسه ماندن نیست
وقتتون رو اینجا تلف نکنید
مدتها پیش باید میرفتم

m.riahi
13-10-2014, 19:51
سلام
برای ایجاد یه پریود زمانی معین مثل 10 میکروثانیه بهتر هست
که از تایمر خود میکرو استفاده کنید
و توی وقفه ی تایمر عملیات مورد نظرتون رو (نمونه بردای ) انجام بدید
یا اینکه از مدهای تحریک که با رجیسترهای adts0:2 تعیین میشه استفاده کنید
بازه ی فرکانسی بین 50 تا 200 کیلوهرتز باید باشه تا بتونید دقت 10 بیت رو بدست بیارید
و اگر بیشتر باشه دقت نمونه برداری کاهش میابه
و برای نمونه برداری به 25 پالس ساعت نیاز هست

منظورتون از اینکه گفتین بازه ی فرکانسی بین 50 تا 200 کیلوهرتز باید باشه اینه که : فرکانس ولتاژ ورودی باید این مقدار باشه ؟،چون فرکانس مورد نظر من کمه ، حدود 100 هرتزه.
میشه یه نمونه برنامه بذارین که منظورتون رو بفهمم.

sadeghbakhshi
13-10-2014, 20:30
دیگه جایی واسه ماندن نیست
وقتتون رو اینجا تلف نکنید
مدتها پیش باید میرفتم

m.riahi
13-10-2014, 23:49
برنامه زیر برای نمونه برداری از ولتاژ با استفاده از وقفه نوشته شده .
میشه برنامه زیر رو تصحیح کنید و اشکالاتشو بگین ؟


کد: Visual Basic


$regfile = "m16def.dat"

$crystal = 8000000



Config Adc = Single , Prescaler = Auto , Reference = Avcc



Config Int0 = Rising

On Int0 Int0_int



Dim A As Word , B As Word , C As Bit , D As Single , E As Single



Do



If C = 1 Then

A = Getadc(0)

D = A

D = D ^ 2

E = E + D

Waitus 20

End If



Loop



End





Int0_int:

Toggle C

Return

sadeghbakhshi
14-10-2014, 00:34
دیگه جایی واسه ماندن نیست
وقتتون رو اینجا تلف نکنید
مدتها پیش باید میرفتم