امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
dac برای میکرو
نویسنده پیام
arsalanparsa آفلاین
تازه وارد

ارسال‌ها: 8
موضوع‌ها: 2
تاریخ عضویت: آبان ۱۳۸۸

تشکرها : 15
( 8 تشکر در 5 ارسال )
ارسال: #1
dac برای میکرو
دوستان سلام
من می خوام از دو تا از پورتهای میکرو ، مقدار دیجیتال 10 بیتی را بگیرم تو کدویژن چطور مقدار با ارزش پایین و ارزش بالا را برای پورتها مشخص کنم؟
dac مناسبش چه نوعی هست؟
ممنون میشم.
۲۱-اسفند-۱۳۸۸, ۱۶:۵۸:۵۵
ارسال‌ها
پاسخ
تشکر شده توسط : sara.ee, WhiteNoise
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #2
RE: dac برای میکرو
مهندس شما واسه مقدار پایین متغیرت رو با 255 اند && کن !

واسه مقدار بالا هم عدد رو با 65280 اند and && کن و مقدار بدست آمده رو تقسیم بر 256 کن ! ( هشت بار شیف به راست )

برو بازار ببین داک ( مبدل دیجیتال به آنالوگ ) چی موجوده !
دیتاشیتهاشون ر نگاه کن و گزینه مناسبت رو بخر !
اکثر داک ها 8 بیتی هستن !!!
۲۱-اسفند-۱۳۸۸, ۱۹:۰۰:۴۰
ارسال‌ها
پاسخ
تشکر شده توسط : sara.ee, reza555, رسول, SMNsoft, WhiteNoise
sara.ee آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 5
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 94
( 15 تشکر در 10 ارسال )
ارسال: #3
RE: dac برای میکرو
با سلام
می شه علت استفاده از این عدد 65280 را بفرمایید؟ چرا شیفت؟ می تونیم LSB و MSB رو در نظر بگیریم و دیگه نیازی به شیفت نباشه. درسته؟
برای گرفتن دیجیتال 12دبیتی چطور؟
۰۷-مرداد-۱۳۸۹, ۱۴:۰۰:۴۷
ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #4
RE: dac برای میکرو
خوب آره !
msb و lsb بهتره !!

شیفت هم میشه !!

65280 در مبانی ده میشه 1111111100000000 در مبنای دو !!!
یعنی فقط بایت بالایی رو جدا کنید !!

12 بیتی هم فرقی نمی کنه !!
۰۷-مرداد-۱۳۸۹, ۱۵:۳۰:۵۶
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, sara.ee, رسول, WhiteNoise
sara.ee آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 5
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 94
( 15 تشکر در 10 ارسال )
ارسال: #5
RE: dac برای میکرو
ببینین این برنامه من درسته؟ چون توی LCD نشون نمی ده مگر اینکه از Lcd bin استفاده بشه تا مقدار باینری مستقیماً در LCD نمایش داده بشه یا اینکه از پورت سریال استفاده شه(برای نمایش؟).
درباره پورت سریال کمی توضیحات لازم دارم و اینجا برای ارسال به پورت باید چه روشی را در پیش گرفت؟ و چگونه از صحت این کار مطلع بشم.
کد:
Dim D As Byte , E As Byte , F As Word , Varl As Byte , Varh As Byte ,, A As Byte , B As Byte
B = 60 : A = 11' for example
D = Low(b)
E = Low(a)

Varl = Bin(d)
Varh = Bin(e)

Porta = Varl 'lsb
Portc = Varh 'msb
هر گونه راهنمایی سپاسگزاری می شود.
(آخرین ویرایش در این ارسال: ۰۷-مرداد-۱۳۸۹, ۲۳:۵۱:۳۵، توسط sara.ee.)
۰۷-مرداد-۱۳۸۹, ۲۳:۴۵:۰۷
ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #6
RE: dac برای میکرو
میشه بگین برنامه فوق قراره چی کار کنه و یکم توضیح بدین برنامه رو !!!
B و A باید از نوع WORD باشن که LSB و MSB واسشون معنی بده !



اینم توضیحات از کتاب آقای یه نفر ( سعید جون ) :


ارتباط سریال rs232 :


در این ارتباط از دوسیم به نام های rxd و txd استفاده میشود که خط txd وسیله اول دیتا را از ان به بیرون منتقل میکندو خط خروجی دیتا است و به ورودی دیتا دستگاه دوم ( txd ) متصل میشود و خط rxd ورودی دیتا است که به خروجی دیتای دستگاه دیگر (rxd ) متصل میشود.


در این روش میتوان نهایتا تا دووسیله را به هم متصل کرد .(از طریق یک پورت)

این پروتکل برای ارتباط میکرو با میکرو ، میکرو با کامپیوتر و کامپیوتر با کامپیوتر استفاده میشود ، برای ارتباط میکرو با میکرو شما نیاز به دو برنامه برای دو میکرو دارید ، برای ارتباط میکرو با کامپیوتر شما باید علاوه بر نوشتن برنامه برای میکرو یک برنامه نیز برای کامپیوتر بنویسید و در نهایت برای ارتباط دو کامپیوتر با هم شما باید با یکی از زبان های برنامه نویسی برای هر دو کامپیوتر برناه بنویسید که این موضوع از بحث ما خارج است.(برای راه اندازی این پروتکل از کریستال خارجی استفاده کنید)

دستورات این پروتکل در بسکام به شرح زیر است:

تعیین نرخ انتقال دیتا:
کد php:
$BAUD=VAR 
این دستور میزان انتقال دیتا در ثانیه را مشخص میکند وباید در هر دو وسیله ای که به هم متصل میشوند یکی باشد (در غیر این صورت ارتباط کار نمیکند) بهتر است نرخ انتقال دیتا در مناطق دارای نویز کمتر انتخاب شود.

دستور PRINT :
کد php:
PRINT  VAR 
توسط این دستور میتوان داده یا متغیری را به پورت سریال ارسال کرد. VAR یم متغیر از جنس متغیرهای گفته شده میباشد.

دستور PRINTBIN :
کد php:
PRINTBIN VAR 
توسط این دستور متغیر VAR به باینر تبدیل شده سپس به پورت سریال ارسال میشود.

دستور WAITKEY :
کد php:
VAR=WAITKEY() 
این دستور تا زمانی که متغییر توسط دستگاه دیگر به پورت سریال ارسال شود منتظر میماند و پس از دریافت متغیر برنامه از خط بعد ادامه می یابد.

دستور INKEY :
کد php:
VAR=INKEY() 
این دستور مقدار اسکی کاراکتر دریافت شده از پورت سریال را برمیگرداند.

دستور INPUTBIN :
کد php:
INPUTBIN  VAR 
این دستور داده باینری را از پورت سریال میگیرد و در متغیر VAR قرار میدهد.

دستور INPUTHEX :
کد php:
INPUTHEX  VAR 
این دستور داده هگز رااز پورت سریال دریافت میکند و در متغیر VAR قرارمیدهد. مانند:

در مثال زیر با استفاده از ارتباط سریال ، یک ارتباط دوطرفه بین دو میکرو برقرار کرده ایم ،

کد php:
$regfile "m32def.dat" $crystal 1000000
$baud 
9600
Config Portb 
Input Config Porta Output
Dim A 
As Byte As Byte
W
:
Pinb Printbin Q
Inkey() : Porta A
Goto W
End
میکرو 2
:
$regfile "m32def.dat" $crystal 1000000
$baud 
9600
Config Portb 
Input Config Porta Output
Dim A 
As Byte Dim Q As Byte
W
:
Pinb Printbin Q
Inkey() : Porta A
Goto W
End 

از انجا که ارتباط دو طرفه میباشد ( هر دو میکرو دقیقا مانند هم هستند ) برنامه دو میکرو مشابه است ،

درخط اول میکرو و کریستال معرفی شده است که میکرو مگا 32 و کریستال مورد استفاده 10 مگا هرتز میباشد .

در خط دوم نرخ انتقال دیتا مشخص گردیده است ، مقدار ان 9600 است . نرخ انتقال دیتا باید در هر دو میکرو یکسان باشد .

در خط سوم پورت b به عنوان ورودی ( برای اتصال کلید ) و پورت a به عنوان خروجی (برای اتصال led) معرفی شده اند .

در خط چهارم دو متغیر از جنس بایت برای ذخیره مقادیر معرفی شده است .

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

در خط ششم مقدار موجود بر روی پورت b در متغیر q ریخته میشود و سپس با دستور Printbin Q به پورت سریال فرستاده میشود.

در خط هفتم مقدار گرفته شده از پروت سریال در متغیر a ریخته میشود و بعد متغیر a بر روی پورت a ریخته میشود.

خط هفتم پایان حلقه میباشد ، هنگامی که cpu میکرو به این خط رسید به برچسب w پرش میکند.

خط هشتم پایان برنامه است.


در حالتی که هیچ یک از کلید ها یک نشده اند ، مقدار q صفر دسیمال و &b00000000 باینری است ، حال اگر هر یک از کلید ها فشرده شود مقدار q تغیر میکند.

دو پایه txd و rxd میکرو نقش دریافت و ارسال داده را در حالت پیشفرض برعهده دارند ، با دستور زیر شما میتوانید این دو پایه را به پایه های دلخواه تغییر دهید:

کد php:
Open "comx.y:$baud,8,n,1" For Output/input As #q 

comx.y : نام پورت و پایه ای است که باید به عنوان txd یا rxd جدید عمل کند.

:$baud نرخ داده عبوری از پایه را نشان میدهد ، این مقدار باید با نرخ انتقال دیتا ی اصلی برابر باشد.

Output/input : پایه میتواند وردی داده( rxd) یا خروجی داده( txd ) باشد.

Q : شماره کانال را مشخص میکند.
مانند:

کد php:
Open "comd.1:19200,8,n,1" For Output As #1
Open "comd.0:19200,8,n,1" For Input As #2 

در مورد بالا portd.1 به عنوان txd و portd.0 به عنوان rxd در نظر گرفته شده است ، همچنین نرخ انتقال داده برابر با 19200 است.

يه مثال :

کد php:
$regfile "m48def.dat"                                  
$crystal 10000000                                         
$baud 
19200                                               
$hwstack 
32                                               
$swstack 
10                                              
$framesize 
40                                             
Dim B 
As Byte
Waitms 100

Open 
"comd.1:19200,8,n,1" For Output As #1
Print #1 , "serial output"

Open "comd.0:19200,8,n,1" For Input As #2
Print #1 , "Number"
Input #2 , B
Print #1 , B

Do
   
Inkey(#2)
   
If 0 Then
      
Print #1 , Chr(b)                                     
   
End If
Loop Until B 27

Close 
#2
Close #1

End 
۰۸-مرداد-۱۳۸۹, ۰۲:۵۳:۲۲
ارسال‌ها
پاسخ
تشکر شده توسط : رسول, sara.ee, reza555
sara.ee آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 5
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 94
( 15 تشکر در 10 ارسال )
ارسال: #7
RE: dac برای میکرو
اتفاقاً این pdf بسیار آموزنده رو دیده بودم که از نویسنده نهایت تشکر رو دارم اما به اشتباه تصور می کردم باید برای این برنامه م از ارتباط سریال یا ...استفاده بشه.(به همون علت عدم نمایش توی lcd!)
البته توضیحات شما مکملش بود، ممنون.

توضیح برنامه:
من دو عدد به صورت دهدهی کمتر از عدد 100 دارم(a=11و b=99) که می خوام این دو عدد در کنار هم رو به صورت دیجیتالی در آورم (یعنی 1199) و آنرا پس از تبدیل به دیجیتال به کانورتر dtoa ارسال کنم و از آن طرف هم اونو به صورت آنالوگ در بیارم.
البته dac من 12 بیتی است.

در ادامه: ولی باید رزولوشن هم در نظر گرفته بشه مثل ضریبی که توی adc بود و سؤال دیگه م اینه که یک مقدار دیجیتالی چطوری بر این ضریب دهدهی تقسیم بشه که فکر کنم بایستی این ضریب رو به باینری تبدیل کنم و بعدش تقسیم.درسته؟
(آخرین ویرایش در این ارسال: ۰۸-مرداد-۱۳۸۹, ۰۷:۰۳:۱۳، توسط sara.ee.)
۰۸-مرداد-۱۳۸۹, ۰۶:۴۲:۲۷
ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise
sara.ee آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 5
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 94
( 15 تشکر در 10 ارسال )
ارسال: #8
RE: dac برای میکرو
یادم رفت بگم؛ در خروجی dac عدد 11.99 رو می خوام
۰۸-مرداد-۱۳۸۹, ۱۱:۰۱:۰۱
ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #9
RE: dac برای میکرو
خوب مهندس عد اول رو در صد ضرب کن و بعلاوه عدد دوم کن !
بعد حاصل رو واسه اعشاری شدن و نمایش تا دو رقم دوباره تقسیم بر صد کن !!!
( ولی دیتایی رو که می فرستی به خروجی بدون اعشار باشه )

خروجی dac معمولا حداکثر 5 ولته و می تونی یه opamp بذاری و تقویتش کنی !!
۰۸-مرداد-۱۳۸۹, ۱۱:۵۳:۵۵
ارسال‌ها
پاسخ
تشکر شده توسط : sara.ee, رسول, WhiteNoise
sara.ee آفلاین
كاربر تک ستاره
*

ارسال‌ها: 31
موضوع‌ها: 5
تاریخ عضویت: تير ۱۳۸۹

تشکرها : 94
( 15 تشکر در 10 ارسال )
ارسال: #10
RE: dac برای میکرو
(۰۸-مرداد-۱۳۸۹, ۱۱:۵۳:۵۵)t3r!p3000 نوشته است: خوب مهندس عد اول رو در صد ضرب کن و بعلاوه عدد دوم کن !
( ولی دیتایی رو که می فرستی به خروجی بدون اعشار باشه )
تا اینجا درست،الان در پورت اعدادی از 0 تا1200 فرستاده می شه(به ورودیdac12bits)


(۰۸-مرداد-۱۳۸۹, ۱۱:۵۳:۵۵)t3r!p3000 نوشته است: بعد حاصل رو واسه اعشاری شدن و نمایش تا دو رقم دوباره تقسیم بر صد کن !!!
چی رو بر صد تقسیم کنم؟ لطفا برام روشن کنید


(۰۸-مرداد-۱۳۸۹, ۱۱:۵۳:۵۵)t3r!p3000 نوشته است: خروجی dac معمولا حداکثر 5 ولته و می تونی یه opamp بذاری و تقویتش کنی !!
توی datasheet 12 بیتی دیدم که میتونم تا 17ولت حتی بگیریم بسته به Vref داره که حداکثر می تونه 17 ولت باشه
[/quote]
(آخرین ویرایش در این ارسال: ۱۱-مرداد-۱۳۸۹, ۱۷:۴۳:۱۰، توسط t3r!p3000.)
۱۱-مرداد-۱۳۸۹, ۱۵:۵۵:۰۶
ارسال‌ها
پاسخ
تشکر شده توسط : WhiteNoise
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #11
RE: dac برای میکرو
ببخشین پستتون رو یه خورده ویرایش کردم !
نقل قولها نامشخص بودش !!


اگه dac شما 12 بیتی هستش باید حداکثر عدد 4095 رو ارسال کنین !!!
2 به توان 12 منهای یک میشه 4095


فرضا همین عدد 1200 که اگه تقسیم بر صد بشه میشه 12.00 ولت !!!


میشه شماره dac تون رو بگین !
خوبه !
فقط ورودی dac شما چجوریه !
۱۱-مرداد-۱۳۸۹, ۱۷:۴۹:۵۲
ارسال‌ها
پاسخ
تشکر شده توسط : reza555, WhiteNoise


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  حذف نویز ADC میکرو برای اعمال ولتاژ 20 میلی ولت ؟ mega16 18 3,428 ۳۱-خرداد-۱۳۹۹, ۱۱:۱۵:۳۴
آخرین ارسال: a.mehran
  معرفی یک سنسور جریان برای اتصال به میکرو ؟ mega16 6 1,738 ۲۷-اردیبهشت-۱۳۹۹, ۱۷:۳۸:۳۲
آخرین ارسال: Ambassador
  تست میکرو saber.k 10 14,048 ۰۹-شهریور-۱۳۹۵, ۰۲:۰۹:۲۷
آخرین ارسال: yadulla fazel
  اتصالات برای روشن کردن میکرو poiut 1 2,147 ۱۸-آذر-۱۳۹۴, ۱۷:۵۵:۲۹
آخرین ارسال: sharin
  سوال در مورد حافظه جانبی برای میکرو pontiac132 4 4,705 ۰۵-اسفند-۱۳۹۳, ۲۳:۵۸:۵۹
آخرین ارسال: pontiac132
  adc برای میکرو alihes 7 9,944 ۱۷-آذر-۱۳۹۳, ۰۱:۴۷:۲۸
آخرین ارسال: milad15m
  کمک برای شرط گذاشتن برای یک فرکانس خاص sinohe 5 4,170 ۱۱-آذر-۱۳۹۳, ۰۰:۱۵:۱۸
آخرین ارسال: sinohe
  میکرو و ال ای دی dostane 4 3,376 ۲۴-شهریور-۱۳۹۳, ۱۶:۳۹:۰۰
آخرین ارسال: a.mehran
  تبدیل 24V DC به 5V DC برای تشخیص میکرو nex2004 46 37,979 ۰۱-بهمن-۱۳۹۲, ۱۱:۵۸:۰۳
آخرین ارسال: EBKA
  درخواست کد تولید پالس آتش برای گیت میکرو Masood-PC 1 2,223 ۰۵-اردیبهشت-۱۳۹۲, ۱۳:۲۱:۱۶
آخرین ارسال: sharin

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 10 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS