PDA

View Full Version : کمک برای ساخت برنامه ای ک زمان روشن و خاموش شدن یک چراغ را مشخص کنه؟



چینی ساز
شنبه 12 شهریور 1390, 14:05 عصر
با سلام
من ی چراخ معمولی دارم (میشه هر نوع چراغی با هر نوع ولتاژی باشه) می خوام بکمک avr زمان روشن بودن و خاموش شدن آن در کامپیوتر را ثبت کنم
من با قسمت نوشتن برنامه در ثبت کامپیوتر و خواندن اطلاعات از پورت com مشکلی ندارم
فقط ی نفر می خوام مدار لازم جهت اینکار و برنامه نویسی AVR برام انجام بده
حتی اگه هزینه ای هم داشته باشه تقبل می کنم
کسی هست کمک کنه

singel
شنبه 12 شهریور 1390, 15:20 عصر
سلام
اگر فقط داخل کامپيوتر اطلاعات را ثبت کني احتياج به ميکرو نيست

firststep
شنبه 12 شهریور 1390, 20:19 عصر
بیین اگه قصد داری فقط اطلاعات رو تو سیستمتون ذخیره کنین دیگه نیازی به میکرو نیست فقط چیزی که می خوای اینکه (اگه ولتت 5 هست و البته طرف دیگرت بایستی زمین باشه ) از پشت LED یک سیم بگیرید و به یکی از پینهای کام وصل کنین زمانی که لامپ روشن هست اون پینتون یک میشه

البته با میکرو هم می تونین کارایی کنین که همیشه نیاز به کام نباشه

اگه حالت دوم رو می خوای پست خصوصی بزن یا داوری کن تا بیشتر توضیح بدم:چشمک:

چینی ساز
یک شنبه 13 شهریور 1390, 07:15 صبح
سلام
singel (http://barnamenevis.org/member.php?76721-singel) جان ممنون از جوابتون
ولی چیطور؟
میشه کامل توضیح بدین
البته من تستهای زیادی کردم ولی نتونستم

چینی ساز
یک شنبه 13 شهریور 1390, 07:27 صبح
بیین اگه قصد داری فقط اطلاعات رو تو سیستمتون ذخیره کنین دیگه نیازی به میکرو نیست فقط چیزی که می خوای اینکه (اگه ولتت 5 هست و البته طرف دیگرت بایستی زمین باشه ) از پشت LED یک سیم بگیرید و به یکی از پینهای کام وصل کنین زمانی که لامپ روشن هست اون پینتون یک میشه

البته با میکرو هم می تونین کارایی کنین که همیشه نیاز به کام نباشه

اگه حالت دوم رو می خوای پست خصوصی بزن یا داوری کن تا بیشتر توضیح بدم:چشمک:

سلام
ممنون از جوابتون
ببینین من ترجیحا می خوام از پورت کام استفاده کنم
در مورد پیشنهاد اول میشه کامل توضیح بدین به کدوم پایه و چه ولتاژی ؟
آخه من مشابه اینکار انجام دادم ولی نوسانات و نویز باعث میشد که در یک ثانیه 100 رکورد ذخیره بشه در صورتی که چراغ همچنان روشن یا خاموش بود؟
در مورد پیشنهاد دوم : میشه یک میکرو نوشت زانی که چراغ روشن هست عدد صفر و زمانی که خاموش شد عدد یک را هر یک دقیقه به کامپیوتر بفرسته فکر کنم این دقیق تر و بهتر باشه البته اگه با پورت کام هم نشد مهم نیست

farzadsw
یک شنبه 13 شهریور 1390, 13:55 عصر
اگر از میکرو کنترلر استفاده کنید قطعا جواب میگیرید (پورت کام رو همینطوری نمیشه بهش 0و1 داد ، اطلاعات باید تو یه فریم خاص باشن)
برای این کار اگر به سیمهای چراغ دسترسی دارید و ولتاژ تغذیه اون هم بین 3 تا 5 ولت هست ، کافیه تغذیه اون چراغ رو به یکی از پین های میکرو کنترلر متصل کنید (با پول دان 10 کیلو باشه بهتره) و وضعیت اون پایه رو تو برنامه میکرو کنترلر بخونید (ابتدایی ترین کاری که با میکروکنترلر انجام میشه داد و اولین چیزی هست که تو کتابهای میکروکنترلر آموزش داده میشه) . اگر تغذیه چراغ وصل باشه (مثلا 4 ولت وصل باشه) وضعیت پایه 1 خونده میشه و اگر برقش قطع باشه (ولتاژ کمتر از 2) وضعیت پایه 0 خونده میشه . با توجه به وضعیت پایه شما کد دلخواهتون رو به صورت سریال به کامپیوتر میفرستید.
اون حالت بالایی که گفتم (ولتاژ چراغ بین 3تا5 ولت و دسترسی به سیم تغذیه اون) ساده ترین حالت هست . اگر به سیم تغذیه چراغ دسترسی دارید ولی ولتاژش بیشتره (مثلا 12 ولت) به یه تقسیم مقاومتی ساده میتونید اون 12 ولت رو به مثلا 4 ولت تبدیل کنید و مثل حالت قبل استفاده کنید . تقسیم مقاوتی یعنی دوتا مقاومت سری کنید یه سرشون به تغذیه لامپ باشه ، سر دیگه به زمین و سر وسط و مشترک هم به پایه میکرو میره . مقدار مقاومت ها هم باید طوری انتخاب بشه که سر وسط همون ولتاژ 3تا5 ولت رو داشته باشه.

اگر هم هیچ دسترسی به تغذیه چراغ ندارید ، با توجه به نور چراغ (بدون تماس) میتونید وضعیتش رو تشخیص بدید . میتونید از یه فتوسل استفاده کنید و ولتاژ خروجی رو به adc میکرو بدید . یا اینکه با مدارات آپ امپ ولتاژ 3تا5 ولت رو ایجاد کنید (البته این بیشتر الکترونیکی هست) و بدید به پایه معمولی میکرو.

چینی ساز
یک شنبه 13 شهریور 1390, 14:41 عصر
اگر از میکرو کنترلر استفاده کنید قطعا جواب میگیرید (پورت کام رو همینطوری نمیشه بهش 0و1 داد ، اطلاعات باید تو یه فریم خاص باشن)
برای این کار اگر به سیمهای چراغ دسترسی دارید و ولتاژ تغذیه اون هم بین 3 تا 5 ولت هست ، کافیه تغذیه اون چراغ رو به یکی از پین های میکرو کنترلر متصل کنید (با پول دان 10 کیلو باشه بهتره) و وضعیت اون پایه رو تو برنامه میکرو کنترلر بخونید (ابتدایی ترین کاری که با میکروکنترلر انجام میشه داد و اولین چیزی هست که تو کتابهای میکروکنترلر آموزش داده میشه) . اگر تغذیه چراغ وصل باشه (مثلا 4 ولت وصل باشه) وضعیت پایه 1 خونده میشه و اگر برقش قطع باشه (ولتاژ کمتر از 2) وضعیت پایه 0 خونده میشه . با توجه به وضعیت پایه شما کد دلخواهتون رو به صورت سریال به کامپیوتر میفرستید.
اون حالت بالایی که گفتم (ولتاژ چراغ بین 3تا5 ولت و دسترسی به سیم تغذیه اون) ساده ترین حالت هست . اگر به سیم تغذیه چراغ دسترسی دارید ولی ولتاژش بیشتره (مثلا 12 ولت) به یه تقسیم مقاومتی ساده میتونید اون 12 ولت رو به مثلا 4 ولت تبدیل کنید و مثل حالت قبل استفاده کنید . تقسیم مقاوتی یعنی دوتا مقاومت سری کنید یه سرشون به تغذیه لامپ باشه ، سر دیگه به زمین و سر وسط و مشترک هم به پایه میکرو میره . مقدار مقاومت ها هم باید طوری انتخاب بشه که سر وسط همون ولتاژ 3تا5 ولت رو داشته باشه.

اگر هم هیچ دسترسی به تغذیه چراغ ندارید ، با توجه به نور چراغ (بدون تماس) میتونید وضعیتش رو تشخیص بدید . میتونید از یه فتوسل استفاده کنید و ولتاژ خروجی رو به adc میکرو بدید . یا اینکه با مدارات آپ امپ ولتاژ 3تا5 ولت رو ایجاد کنید (البته این بیشتر الکترونیکی هست) و بدید به پایه معمولی میکرو.

با سپاس فرواوان
ممنون از جواب کامل
من هیچ محدودتی در نوع ولتاژ ندارم مشکل من اینه که اصلا از میکرو کنترلر و برنامه نویسی اون اطلاعی ندارم می خوام اگه کسی بتونه اینکار رو انجام بده

singel
دوشنبه 21 شهریور 1390, 15:25 عصر
سلام
اين برنامه رو برات ميفرستم بدون نياز به ميکرو احتمالا بايد مشکلت حل بشه البته خودت هر طوري که ميخواي بايد تغييرش بدي
ri پايه شماره 9
با يک مقاومت ( با يه ولتاژ پايين تستش کن جواب ميده )

چینی ساز
شنبه 26 شهریور 1390, 08:16 صبح
سلام
اين برنامه رو برات ميفرستم بدون نياز به ميکرو احتمالا بايد مشکلت حل بشه البته خودت هر طوري که ميخواي بايد تغييرش بدي
ri پايه شماره 9
با يک مقاومت ( با يه ولتاژ پايين تستش کن جواب ميده )

سلام
ممنون از لطفتون
میشه در مورد برنامه و نحوه عملکردش ی توضیح هم بدی

singel
شنبه 26 شهریور 1390, 09:52 صبح
ببين دوست عزيز اين برنامه سه تا پايه رو چک ميکنه که ما بيشتر با پايه نهم پورت سريال ( ri يا Ring Indicator )کار داريم

پین1 و 9:

این پین ها به ترتیب Carrier Detect و Ring Indicator یا CD و RI نام دارند و مربوط به مودم می شوند که اولی برای تشخیص حامل بر روی خط و دومی برای اعلان یک تماس تلفنی به مودم شماست و معمولا در طراحی های کنترلری به ندرت مورد استفاده قرار می گیرند.
موقعي که يک ولتاژ به اين پايه وصل بشه در نرم افزار جلوي قسمتش تيک ميخوره
نهايت ولتاژي که به اين پايه ميديد 5 ولت باشه

singel
شنبه 26 شهریور 1390, 09:59 صبح
اين هم يه فايل توضيحي در مورد پورت سريال

چینی ساز
شنبه 26 شهریور 1390, 10:04 صبح
ببين دوست عزيز اين برنامه سه تا پايه رو چک ميکنه که ما بيشتر با پايه نهم پورت سريال ( ri يا Ring Indicator )کار داريم

پین1 و 9:

این پین ها به ترتیب Carrier Detect و Ring Indicator یا CD و RI نام دارند و مربوط به مودم می شوند که اولی برای تشخیص حامل بر روی خط و دومی برای اعلان یک تماس تلفنی به مودم شماست و معمولا در طراحی های کنترلری به ندرت مورد استفاده قرار می گیرند.
موقعي که يک ولتاژ به اين پايه وصل بشه در نرم افزار جلوي قسمتش تيک ميخوره
نهايت ولتاژي که به اين پايه ميديد 5 ولت باشه

ممنون از جواب
شرمنده که زیاد سئوال می کنم چون ناواردم
ببینین من دقیقا از همین روش استفاده کردم با این تفاوت ک در VB6 بود مشکلی ک اونجا ایجاد می شد این بود در زمان وصل جریان یا قطع بیش از 100 بار در ثانیه رکورد ذخیره می کرد در صورتی ک من می خوام برای هر بار قطع یک رکورد و برای هر بار وصل یک رکورد دیگه ذیره کنه از قسمت برنامه ای هم ک نوشته ودم هم مطمئن بودم ولی جواب نگرفتم
میشه اگه شما تخصص دارین بیشتر با هم صحبت کنیم
نیاز مبرم به این برنامه دارم

farzadsw
یک شنبه 27 شهریور 1390, 17:00 عصر
اون روشی که دوستمون گفتند (استفاده از ri) رو من تا حالا استفاده نکردم و جزییاتش رو هم نمیدونم . شما استفاده کردید و میگید اطلاعات رو میده ولی تعدادش زیاده ؟
چون مشکلتون رو کاملا متوجه نشدم توضیح بدید که آیا فقط در لحظه قطع و وصل تعداد رکورد زیادی ایجاد میشه یا این اتفاق همیشه و به صورت مثلا 100 بار در ثانیه (چه وصل چه قطع) رخ میده!؟
اگر فقط موقع قطع و وصل این اتفاق میوفته (یعنی به جای 1 بار مثلا 80 بار قطع و وصل رو نشون میده) راههای زیادی برای حلش هست که من 2 تاش رو میگم :
1. اگر سرعت خاموش و روشن شدن چراغ خیلی سریع نیست یا به عبارت دیگه اگر بین خاموش شدن و روشن شدن مجدد اون همیشه n ثانیه فاصله هست ، کافیه شما فقط تغییر وضعیت (اولین تغییر وضعیت)رو تشخیص بدید و حدود n ثانیه تو برنامتون تاخیر بذارید و دوباره برنامه به روال اصلی برگرده.
2.اگر مشکل به خاطر نوسانات ولتاژ موقع قطع و وصل کلید هست ، کافیه یه خازن بین زمین(منفی) و همون پایه ri قرار بدید تا زمان رد شدن این نوسانات ولتاژ تا یه حدی بمونه و بعد تغییر کنه (شبیه همون تاخیر ولی سخت افزاری) . اندازه خازن هم بسته به مدار و میزان تاخیرتون داره میتونید خازن 10 میکروفاراد رو امتحان کنید و بعدا مقدار کمتر یا بیشتر رو استفاده کنید.

چینی ساز
دوشنبه 04 مهر 1390, 10:56 صبح
اون روشی که دوستمون گفتند (استفاده از ri) رو من تا حالا استفاده نکردم و جزییاتش رو هم نمیدونم . شما استفاده کردید و میگید اطلاعات رو میده ولی تعدادش زیاده ؟
چون مشکلتون رو کاملا متوجه نشدم توضیح بدید که آیا فقط در لحظه قطع و وصل تعداد رکورد زیادی ایجاد میشه یا این اتفاق همیشه و به صورت مثلا 100 بار در ثانیه (چه وصل چه قطع) رخ میده!؟
اگر فقط موقع قطع و وصل این اتفاق میوفته (یعنی به جای 1 بار مثلا 80 بار قطع و وصل رو نشون میده) راههای زیادی برای حلش هست که من 2 تاش رو میگم :
1. اگر سرعت خاموش و روشن شدن چراغ خیلی سریع نیست یا به عبارت دیگه اگر بین خاموش شدن و روشن شدن مجدد اون همیشه n ثانیه فاصله هست ، کافیه شما فقط تغییر وضعیت (اولین تغییر وضعیت)رو تشخیص بدید و حدود n ثانیه تو برنامتون تاخیر بذارید و دوباره برنامه به روال اصلی برگرده.
2.اگر مشکل به خاطر نوسانات ولتاژ موقع قطع و وصل کلید هست ، کافیه یه خازن بین زمین(منفی) و همون پایه ri قرار بدید تا زمان رد شدن این نوسانات ولتاژ تا یه حدی بمونه و بعد تغییر کنه (شبیه همون تاخیر ولی سخت افزاری) . اندازه خازن هم بسته به مدار و میزان تاخیرتون داره میتونید خازن 10 میکروفاراد رو امتحان کنید و بعدا مقدار کمتر یا بیشتر رو استفاده کنید.
با سلام و تشکر فراوان از همه دوستان و اساتید گرامی
من ی بار دیگه مشکلم بطور خلاصه شرح می دم
من یک چراغ دارم ( ک می تونی معمولی باشه یا ال ای دی ) روشن و خاموش بودن آن نشانه وضعیت کاری هست میخوام این روشن و خاموش شدن که معلوم نیست کی هست ممکن در روز یکبار الی 20 بار خاموش و بعد از ی زمان نامشخص روشن بشه در کامپیوتر ذخیره بشه من از طریق پورت کام ی برنامه نوشتم و از چند خازن و یک میکرو استفاده کردم ک یکی از دوستان پیشنهاد داده بود ولی این درست کار نمی کنه بعضا با کوچکترین نویز مثلا تکون خوردن سیم رکورد ثبت میشه و موقعی روشن یا خاموش شدن در همون ثانیه 100 رکورد ذخیره می کنه حتی تایمر هم گذاشتم خیلی کارها کردم این اضافه رکورد ثبت کردن به حداقل رسوندم این ثبت تغییرات بی خودی ک ناشی از نویز و تکون سیم بود نشد حل کنم
من در برنامه vb6 از کامپونت mscom برای اینکار استفاده کردم
حالا پیشنهاد و راهنمایی شما در این خصوص چی هست

singel
دوشنبه 04 مهر 1390, 11:55 صبح
سلام
ميتوني توضيح بدي که چطوري قسمت سخت افزارت رو به پورت سريال وصل ميکني ؟
اگه به صورت مدار باشه خيلي بهتره !
براي اينکه راحتر بتونم توضيح بدم

چینی ساز
سه شنبه 05 مهر 1390, 15:57 عصر
با سلام
درسته با مدار بهتره فقط بدیش این هست که من هیچ اطلاعاتی در این خصوص ندارم الان هم بهمین دلیل به مشکل برخوردم
مدار پیوست و برنامه ای رو ک یکی از دوستان نوشته می فرستم
کارش اینه ک وقتی چراغ روشه بشه حرف H و وقتی خاموش بشه حرف L رو می فرسته ولی درست عمل نمی کنه
بعضی رکوردها ثبت نمیشه یا در یک ثانیه چند رکورد ذخیره می کنه
اینم برنامه ای که واسش نوشتن
$SIM
$REGFILE ="M32DEF.DAT"
$CRYSTAL= 800000
$BAUD = 4800
ENABLE INTERRUPTS
CONFIG INT0= RISING
CONFIG INT1=FALLING
ENABLE INT1
ON INT0 HIGH_LED
ON INT1 LOW_LED
CONFIG PORTC = OUTPUT
'-------------------------------------------
'DIM A AS BYTE ,B AS BYTE
DO
'DO
' A = INKEY()
'PRINT CHR(A)
'PRINT "ASCII CODE = " ;A
'END IF
'LOOP UNTIL A= 27
''WAIT UNTIL ESX IS PRESSED
'DO
'B = WAITKEY()
'PRINT CHAR(B)
'PRINT "ASCII CODE = " ; B
'LOOP UNTIL B= 27
'' WAIT UNTIL ESC IS PRESSED
LOOP
END
'-------------------------------------------
HIGH_LED
TOGGLE PORTC.0
PRINT "H"
RETURN
LOW_LED:
TOGGLE PORTC.1
PRINT "L"
RETURN

من از این برنامه هیچ بلد نیستم فقط وقتی وصل کردم به سیستم در VB6 چک می کنم که ارتباط وصل باشه اون حرف بخونم و در بانک ذخیره کنم

چینی ساز
سه شنبه 05 مهر 1390, 16:01 عصر
اینم ی نمونه کدی که در VB6 استفاده می کنم
""""""""""""""""""""
Public t As Boolean
Dim flag As Boolean
Private Sub Form_Load()
t = False
flag = False
With MSComm
.CommPort = 2 'Put your port
.Settings = "9600,N,8,1" 'And settings here
.Handshaking = comNone
.PortOpen = True
End With
End Sub
Private Sub MSComm_OnComm()
If comEvDSR = 4 Then
If flag = False Then
If t = False Then
Label1.Caption = "ÔÑæÚ"
t = True
Text1.Text = shamsyDate(Date, True)
Text2.Text = Format(Now, "hh:mm:ss")
flag = False
Text3.Text = flag
Timer1.Enabled = True
Else
Label1.Caption = "ÇíÇä"
t = False
Text1.Text = shamsyDate(Date, True)
Text2.Text = Format(Now, "hh:mm:ss")
Timer2.Enabled = True
flag = True
Text3.Text = flag
End If
End If
End If
End Sub
Private Sub Timer1_Timer()
If PB1.Value < 500 Then
PB1.Value = PB1.Value + 10
Else
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("STR_d") = Text1.Text
Adodc1.Recordset.Fields("STR_t") = Text2.Text
Adodc1.Recordset.Fields("tozih") = Label1.Caption
Adodc1.Recordset.Update
Timer1.Enabled = False
PB1.Value = 0
End If
End Sub
Private Sub Timer2_Timer()
If PB1.Value < 500 Then
PB1.Value = PB1.Value + 10
Else
Adodc1.Refresh
Adodc1.Recordset.MoveLast
Adodc1.Recordset.Fields("end_d") = Text1.Text
Adodc1.Recordset.Fields("end_t") = Text2.Text
Adodc1.Recordset.Fields("tozih") = Label1.Caption
Adodc1.Recordset.Fields("tIM") = Text5.Text
Adodc1.Recordset.Update
Timer2.Enabled = False
PB1.Value = 0
End If
End Sub
""""""""""""""""""""""""""""""""""""""""""""""""""""""
البته مدلهای مختلفی تست کردم

چینی ساز
سه شنبه 05 مهر 1390, 18:08 عصر
سلام
اين برنامه رو برات ميفرستم بدون نياز به ميکرو احتمالا بايد مشکلت حل بشه البته خودت هر طوري که ميخواي بايد تغييرش بدي
ri پايه شماره 9
با يک مقاومت ( با يه ولتاژ پايين تستش کن جواب ميده )
با تشکر از شما
ولی کار نکرد

ارور داد

چینی ساز
یک شنبه 10 مهر 1390, 22:39 عصر
چي شد
چرا جواب نمي دين

singel
چهارشنبه 13 مهر 1390, 13:26 عصر
سلام شرمنده زياد نميتونم به سايت سر بزنم



ولی کار نکرد

ارور داد

error چي بود
يه pdf برات ميزارم ارتباط ميکرو و ويژوال بيسيک 6 را توضيح داده
من هم در اولين فرصت برات برنامه ميکرو را مينويسم
حجم فايل در حدود 2 مگ
دانلود از سايت پرشين درايو (http://persiandrive.com/565662)

firststep
دوشنبه 25 مهر 1390, 11:18 صبح
سلام دوستان
مشکل این اقا توی استفاده از رله هست ایشون برای اینکهع ولتاژ تبدیل کنه از رله استفاده کرده
یکی از خاصیت های رله این هست ولی استفاده از رله با توجه به اینکه از نیرو های مغناطیسی برای برقراری ارتباط استفاده می کنه این سبک ارتباط پایدار نیست به این معنی که این ارتباط در ثانیه ممکنه هزار بار دیبانس داشته باشه یعنی قطع و صل بشه و این یک روند مشخصی نداره این باعث می شه که شما مشکل پیدا کنین توی قطعاتی که دقتشان بالاست مثل میکرو یا کامپیوتر ولی در کل شما از چیزه دیگه به جای رله استفاده کنین فکر کنم مشکلتون برطرف میشه

firststep
سه شنبه 03 آبان 1390, 18:15 عصر
سلام دوست عزیز بعتر شما یک ولتاژ و امپر پشت لامپ هارو بگیری تا بعد تصمیم بگیریم

mr13668248
شنبه 23 آبان 1394, 10:02 صبح
آخر به جوابی نرسیدیم:گریه: