11 لایک
-
4
Post By parsd
-
1
Post By magmagmary
-
1
Post By shobeir90
-
1
Post By parsdc
-
2
Post By parsdc
-
2
Post By parsdc
-
خوب بریم سراغ ادامه موضوع
من قسمت های بالا را بصورت برنامه نویسی توضیح دوباره میدم
Const Ic_w = &HEE
Const Ic_r = &HEF
تعریف دو متغییر که در واقع آدرس سخت افزاری برا نوشتن و دیگری آدرس سخت افزاری برا خوندن هست
I2cstart
I2cwbyte Ic_w
I2cwbyte &HF4
I2cwbyte &B11111111
I2cwbyte &HF5
I2cwbyte &B10011100
I2cstop
Waitms 50
دستورات بالا تنظیمات آدرس f5 و F4 را در سنسور نوشته و باعث راه اندازی میشود که در بالا توضیح داده شد و من یه تغییر کوچولو در f5 دادم و بیت شماره 2,3,4 را یک کردم تا فیلتر فشار فعال باشه
دوستان من تست کردم فعال بودن این فیلتر بسیار در نتیجه خروجی فشار تاثیر داره و نوسانات و نویز را کامل از بین میبره
تغیراتی هم در f4 دادم تا داده هی فشار و دما بصورت 20 بیتی خوانده شود و در بالا به صورت 16 بیتی تنظیم کرده بودم
الان سنسور با دستورات فوق راه اندازی شده و داره از دما و فشار نمونه گیری میکنه حالا دما و فشار رو پشت سر هم میخونیم این پشت سر هم بودن توصیه سازنده هست
I2cstart
I2cwbyte Ic_w
I2cwbyte &HF7
I2cstart
I2cwbyte Ic_r
I2crbyte P1 , Ack
I2crbyte P2 , Ack
I2crbyte P3 , Ack
I2crbyte T1 , Ack
I2crbyte T2 , Ack
I2crbyte T3 , Nack
I2cstop
Waitms 50
با دستورات بالا فشار خونده شده و در سه بایت p1 , p2 , p3 ریخته شده که p1 پرارزشترین بایت و p3 کم ارزشترین بایت از مقدار کل فشار هست
فراموش نکنید که ما در سه بایت یعنی 24 بیت فشار رو خوندیم اما فشار یک عدد 20 بیتی هست که چهار بیت کم ارزش p3 کاربردی نداره مطابق جدول صفحه 24
برای اینکه این مقادیر را به بچسبانیم و عدد فشار را در یک متغییر بریزیم این کار رو انجام میدیم
Dim Adc_p As Long
متغییری از نوع long تعریف میکنیم
Dim Z As Single
متغییر زد هم تعریف کردم برای محاسبات و بعد از محاسبات ارزشی برا ما نخواهد داشت
Adc_p = P1 * 4096
Z = P2 * 16
Adc_p = Z + Adc_p
Adc_p.3 = P3.7
Adc_p.2 = P3.6
Adc_p.1 = P3.5
Adc_p.0 = P3.4
خط اول p1 رو در 4096 ضرب کرده تا بیت های p1 را در بیت 19 تا 10 از متغییر Adc_p ریخته شود
همین کار را برا p2 انجام میدهیم و در متغییر Adc_p میریزیم اما در 16 ضرب میکنیم تا چهار بیت شیفت به چپ کند در متغییر Adc_p که در واقع مقدار خام فشار است
چند خط آخر هم جایگاه هر بیت از pc را در متغییر Adc_p مشخص میکند
من چون مبتدی هستم روش بهتری به ذهنم نرسید اگر شما روش بهتری بلد بودید بگید تا من هم اون روش رو انجام بدم، در هر صورت دستورات فوق کار رو برا ما انجام میده بدون خطا
دقیقا روش فوق رو برای دما هم انجام میدیم
Dim Adc_t As Long
متغییر رو تعریف کرده و طبق دستورات زیر دما هم به صورت 20 بیتی شکل میدیم در متغییر Adc_t
Adc_t = T1 * 4096
Z = T2 * 16
Adc_t = Z + Adc_t
Adc_t.3 = T3.7
Adc_t.2 = T3.6
Adc_t.1 = T3.5
Adc_t.0 = T3.4
همه چیز الان حل شد، شما فشار و دما رو خوندید به صورت خام
در پست بعدی من توضیح میدم چطور مقدار دما رو به مقدار واقعی دما به سانتیگراد تبدیل کنیم که یک فرمول ساده داره
و در پست بعدی +1 هم توضیح میدم چطور فشار رو به مقدار واقعی فشار به پاسکال یا بار یا psi تبدیل کنیم
مجوز های ارسال و ویرایش
- شما نمیتوانید موضوع جدیدی ارسال کنید
- شما امکان ارسال پاسخ را ندارید
- شما نمیتوانید فایل پیوست کنید.
- شما نمیتوانید پست های خود را ویرایش کنید
-
مشاهده قوانین انجمن
SEO by vBSEO