ايران ويج

نسخه‌ی کامل: ولت سنج 5 ولت با سون سگمنت
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4
(۱۰-آبان-۱۳۹۱, ۱۰:۴۲:۱۳)kamran0080 نوشته است: [ -> ]راستی اقا هادی چرا این برنامه تو پروتیوس کار نمی کنه . میخواستم دستوراتو بهش اضافه کنم
من با این امتحان کردم و جواب میدهWink
متن ارور پروتوسش چیه(زبان اصلیش)
تقصیر پروتیوسم بود ورژن تازه نصب کرد خیلی خیلی ممنونHappy
کامر جان یه چیزی به ذهنم رسیده
اگر می بینی سگمنت آخری چهره ی مدارتون رو زشت کرد
بیا محدودش کن یعنی فقط 0 و 5 رو نشون بده بقیه اعداد رو نمی خواد مثل ترازو های دیجیتال سوپر مارکت برای این کار
بعد از این دستور بنویس
B = B / 10000
B = B / 5
B = B * 5
البته هر چی نظر خودتهWink
موفق باشیدBiggrin
(۱۰-آبان-۱۳۹۱, ۱۹:۳۳:۱۷)hadikh73 نوشته است: [ -> ]کامر جان یه چیزی به ذهنم رسیده
اگر می بینی سگمنت آخری چهره ی مدارتون رو زشت کرد
بیا محدودش کن یعنی فقط 0 و 5 رو نشون بده بقیه اعداد رو نمی خواد مثل ترازو های دیجیتال سوپر مارکت برای این کار
بعد از این دستور بنویس
B = B / 10000
B = B / 5
B = B * 5
البته هر چی نظر خودتهWink
موفق باشیدBiggrin

هادی جان راستش این مدارو برا سنسور هشدار دهنده گاز میخوام . چون خروجی سنسور های گاز mq بین 0 تا 4.75 ولت است پس اگه این مقدار رو با شکل خاصی رو سگمنت نشون بدیم و بعدش یک مرزی رو مرز خطر در نظر بگیریم اگه ولتاژ به اون حد رسید اژیری چیزی بکشه خیلی جالت میشه . این سنسور های گاز به ازای هوای تمیز بیرون 0.14 ولت بیرون میدن و در هوای کاملا الوده 4.75 یعنی تقریبا تمام تغذیه 5 ولتشو بیرون میده . خودم این فکر تو ذهنمه بیاییم این 4.75 رو همون 5 ولت درنظر بگیریم و 0 تا 5 ولت رو به 100 بخش تقسیم کنیم و به اضای هر بخش یک عدد رو رو سون سگمنت نشون بده . این پروژه رو هیچ جا ندیدم خیلی دنبالش گشتم . برا هشدار دهنده منازل جالب میشه .
اگه 5 ولت خروجی رو تقسیم بر 100 بخشی که در نظر گرفته بودیم تقسیم کنیم میشه 0.05
پس باید به اضای 0.05 ولت یک واحد اضافه بشه
(۱۰-آبان-۱۳۹۱, ۲۰:۲۹:۴۳)kamran0080 نوشته است: [ -> ]هادی جان راستش این مدارو برا سنسور هشدار دهنده گاز میخوام . چون خروجی سنسور های گاز mq بین 0 تا 4.75 ولت است پس اگه این مقدار رو با شکل خاصی رو سگمنت نشون بدیم و بعدش یک مرزی رو مرز خطر در نظر بگیریم اگه ولتاژ به اون حد رسید اژیری چیزی بکشه خیلی جالت میشه . این سنسور های گاز به ازای هوای تمیز بیرون 0.14 ولت بیرون میدن و در هوای کاملا الوده 4.75 یعنی تقریبا تمام تغذیه 5 ولتشو بیرون میده . خودم این فکر تو ذهنمه بیاییم این 4.75 رو همون 5 ولت درنظر بگیریم و 0 تا 5 ولت رو به 100 بخش تقسیم کنیم و به اضای هر بخش یک عدد رو رو سون سگمنت نشون بده . این پروژه رو هیچ جا ندیدم خیلی دنبالش گشتم . برا هشدار دهنده منازل جالب میشه .
اگه 5 ولت خروجی رو تقسیم بر 100 بخشی که در نظر گرفته بودیم تقسیم کنیم میشه 0.05
پس باید به اضای 0.05 ولت یک واحد اضافه بشه
بله فکر خیلی جالبیه
ولی روشی که شما استفاده می کنید یکم سخته مثل اینه که لقمه رو دور سرتون بچرخونید و بعد توی دهان بگذارید
به نظر من این کار رو بکنید
اگر 1023 رو بر 5 تقسیم کنید میشه204.6 حالا این عدد رو در 4.75 ضرب کنید میشه تقربا میشه 971 این یعنی عددی که adc به ما میده هیچوقت از 971 بیشتر نمیشه خوب حالا این عدد رو بر 10 تقسیم کنید میشه یه عدد بین 0 تا 97 یا 100 که دیگه مشکل حله برای اطمینان خاطر یه دستور شرطی می گذاریم که هر وقت این عدد از 100 بیشتر شد بشه 100 خوب حالا یه شرط تو حلقه اصلی بگذار که هر موقع به نقطه بهرانی رسید آژیر بکشه
موفق باشیدWink
بعدش بهتر نیست سگمنت ها رو 2 تا کنید (من 3 تایی رو درست کردم)
کد php:
$regfile "m8def.dat"
$crystal 500000
Config Adc 
Single Prescaler Auto Reference Off
Config Portb 
Output
Config Portd 
Output
Dim A 
As Word
Dim B 
As Long
Dim C 
As Word
Dim D 
As Word
Dim E 
As Word
Dim F 
As Byte
Dim G 
As Byte
Dim I 
As Byte
Dim J 
As Word
Declare Sub Yekan
Y Alias Portb.3
D0 Alias Portb.2
S Alias Portb.1
Enable Adc
Start Adc
'*******************************************************************************
Do
A = Getadc(0)
B = A / 10
If B > 100 Then B = 100
'
*******************************************************************************
Call Yekan
Portb.4 
1
1
Portd 
F
Waitms 4
0
If => 10 Then
D0 
1
Portd 
G
Waitms 4
D0 
0
End 
If
If 
100 Then
1
Portd 
I
Waitms 4
0
End 
If
Loop
End 
'end program
'
*******************************************************************************
Hadi:
Data &B1000000 , &B1111001 , &B0100100 , &B0110000
Data 
&B0011001 , &B0010010 , &B0000010 , &B1111000
Data 
&B0000000 , &B0010000
'*******************************************************************************
Sub Yekan
C = B / 10
C = C * 10
C = B - C
F = C
F = Lookup(f , Hadi)
D = B / 100
D = D * 100
D = B - D
D = D / 10
G = D
If B => 10 Then
G = Lookup(g , Hadi)
E = B / 100
I = E
End If
If B = 100 Then
I = Lookup(i , Hadi)
End If
End Sub 
ممنونم ازتون اقا هادی میخوام رو سگمنت سمنت راست p بنویسم یا اینکه رو سگمنت سمت چپ p جلوش = بعدم مقدار نمایش گاز اینجوری
p=25 یه 25PP یا 25P
که ppm واحد اندازه گیری گازو اینجور چیزاست . راستش فقط سون سگمن 4 تایی دارم
از راهنمایی هاتون سپاس گذارم
این واحدش درصده و ppm نیست به نظر من ppm مشکله چون یه کمی شیمی قاطیش میشه که کار رو خیلی سخت می کنه این به فکرم جور در نمی یاد چون چیزی از ppm نمی دونم (فقط خوندم که نمره بگیرم)SadConfused
من رقم آخرش رو برات p می نویسم ولی بازم میگم این واحدش درصده شما باید بگید که درصد خطرناکی هوا رو نشون میده نه ppmExclamation
از توی دیتا شیت ای سی شاید یه چیزایی بشه فهمیدAmaze
ولی همین درصد جالبتره چون همه که با ppm آشنایی ندارهWhistle
اینم برنامه با سگمنت 4 تایی و همون شماتیک پرو توسش همونه
کد php:
$regfile "m8def.dat"
$crystal 500000
Config Adc 
Single Prescaler Auto Reference Off
Config Portb 
Output
Config Portd 
Output
Dim A 
As Word
Dim B 
As Long
Dim C 
As Word
Dim D 
As Word
Dim E 
As Word
Dim F 
As Byte
Dim G 
As Byte
Dim I 
As Byte
Dim J 
As Word
Declare Sub Yekan
Y Alias Portb.2
D0 Alias Portb.1
S Alias Portb.0
Enable Adc
Start Adc
'*******************************************************************************
Do
A = Getadc(0)
B = A / 10
If B > 100 Then B = 100
'
*******************************************************************************
Call Yekan
Portb.4 
1
1
Portd 
F
Waitms 4
0
If => 10 Then
D0 
1
Portd 
G
Waitms 4
D0 
0
End 
If
If 
100 Then
1
Portd 
I
Waitms 4
0
End 
If
Portb.3 1
Portd 
= &B0001100
Waitms 4
Portb.3 
0
Loop
End                                                         
'end program
'
*******************************************************************************
Hadi:
Data &B1000000 , &B1111001 , &B0100100 , &B0110000
Data 
&B0011001 , &B0010010 , &B0000010 , &B1111000
Data 
&B0000000 , &B0010000
'*******************************************************************************
Sub Yekan
C = B / 10
C = C * 10
C = B - C
F = C
F = Lookup(f , Hadi)
D = B / 100
D = D * 100
D = B - D
D = D / 10
G = D
If B => 10 Then
G = Lookup(g , Hadi)
E = B / 100
I = E
End If
If B = 100 Then
I = Lookup(i , Hadi)
End If
End Sub 
سلام استاد هادی الان که فکرشو می کنم شما درست میگید درصد خیلی بهتره رفتم فرمولای پی پی ام رو یه نگاهی کردم راستش کار کردن باهاشون رو کاغذ هم سخته چه برسه به ....
بازم ازتون ممنونم . حرف شما درسته اقا هادی
سلام اقا هادی الان میخواستم این برنامه رو دست کاری کنم . اونی که از 0 تا 100 میره خیلی جالبه اماچیکار کنم تا وقتی به اعداد کوچک تر از 100 میره هیچ کدوم از 7 سگمنتاش خاموش نشه فقط صفر بشن ؟
سلام من جايي نيستم كه براتون برنامه بدم اين پيام هم با گوشيم نوشتم
4تا دستور شرطي هستند به شكل
If b)10 then
If b=100 then
End if
همشون حذف كن
سلام اقا هادی دست کاریش نکردم ترسیدم خرابش کنم میشه زحمتشو بکشید همکار ؟
ایشالا بعدا یه روز میام بجای شما تدریس می کنم
صفحه‌ها: 1 2 3 4