نمایش نتایج: از 1 به 10 از 29
Like Tree9 لایک

موضوع: ساخت تایمر با آردیونو+کنترل با میکروسوئیچ

Hybrid View

  1. #1
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط abbasjavanmardi نمایش پست ها
    سلام
    بنده با استفاده از کدی ک خودم نوشته بودم مدار رو روی برد بورد بستم و امتحان کردم تمامی شروط خیلی عالی کار میکنه و مشکلی با عدم وجود else ندارم .تنها مشکل باقی مونده اینه ک مدتی ک رله به واسطه حرکت کند موتور هنوز روشنه(4 دقیقه)تابع millis همچنان در حالت شمارشه در حالی ک من میخوام بعد از فشرده شدن کلید ها شمارش انجام بشه.آیا باز هم تابع millis جوابگو هست؟
    تو اینترنت زیاد گشتم چیزهایی ک به زهنم خطور میکنه:
    1. این ک از ی مازول ساعتds3231 استفاده کنم (اما نمیدونم چطوری بر اساس ساعت اون دستورات رو از میکرو دریافت کنم)
    2.استفاده از کریستال ساعت32.768 و دریافت ساعت دقیق(اینم مثل بالایی بلد نیستم)

    فلوچارت:http://s6.picofile.com/file/8255108634/000.JPG
    نه تابع MILLIS این حرفا سرش نمیشه
    از وقتی پاور میدی میشماره

    برای ماژول های ساعت ترجیحا از دقیقش استفاده کن
    البته من اخیرا این تایمر رو کشف کردم :
    Make an accurate Arduino clock using only one wire - NO external hardware needed! - All
    لایک کردن

  2. #2
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    نه تابع millis این حرفا سرش نمیشه
    از وقتی پاور میدی میشماره

    برای ماژول های ساعت ترجیحا از دقیقش استفاده کن
    البته من اخیرا این تایمر رو کشف کردم :
    make an accurate arduino clock using only one wire - no external hardware needed! - all
    ممنون جالب بود ،
    چنتا سوال
    1- اینکه فرکانس pwm همیشه ثابته و با گرم شدن و در طول زمان تغییر نمیکنه؟
    2- به جای اینکه pwm رو روی 127 قرار بده ، اگه مثلا روی 50 یا هر عدد دیگه ای غیر از 0 و 255 قرار میداد نتیجه فرق میکرد؟
    3- الان تو این برد آردوینو چنتا نوسان ساز هست کلا و کدوم دقتش بیشتره؟

  3. #3
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    ممنون جالب بود ،
    چنتا سوال
    1- اینکه فرکانس pwm همیشه ثابته و با گرم شدن و در طول زمان تغییر نمیکنه؟
    2- به جای اینکه pwm رو روی 127 قرار بده ، اگه مثلا روی 50 یا هر عدد دیگه ای غیر از 0 و 255 قرار میداد نتیجه فرق میکرد؟
    3- الان تو این برد آردوینو چنتا نوسان ساز هست کلا و کدوم دقتش بیشتره؟

    اگه روی هر عددی به جز 127 قرار می داد جای لبه های بالا رونده دیکه سر ضرب در نمیومد و اون عددی که توی تابع اینتراپتش نوشته عملا دیگه معنی نداشت.

  4. #4
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    اگه روی هر عددی به جز 127 قرار می داد جای لبه های بالا رونده دیکه سر ضرب در نمیومد و اون عددی که توی تابع اینتراپتش نوشته عملا دیگه معنی نداشت.
    منظورتون از "سر ضرب در اومدن" نفهمیدم ، من با اعداد مختلف امتحان کردم نتیجه یکسان بود
    اینتراپت رو هم این شکلی نوشتم : (attachInterrupt(digitalPinToInterrupt(2),timer,FA LLING
    timer هم تابعی هست که کار شمارش نوسان ها رو انجام میده

  5. #5
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    منظورتون از "سر ضرب در اومدن" نفهمیدم ، من با اعداد مختلف امتحان کردم نتیجه یکسان بود
    اینتراپت رو هم این شکلی نوشتم : (attachInterrupt(digitalPinToInterrupt(2),timer,FA LLING
    timer هم تابعی هست که کار شمارش نوسان ها رو انجام میده
    نمیدونم چطوری این اتفاق افتاد براتون
    چون با نوشتن عدد 127 در واقع قصد داشته شکل موجی با dutycycle برابر 50 درصد بوجود بیاره ولی وقتی عدد تغییر کنه شکل موج های زیر بوجود میاد در واقع
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 512e869bce395fbc64000002.JPG
مشاهده: 189
حجم: 26.5 کیلو بایت
    بعد داستانی که هست اینه که اینتراپت میاد روی لبه های بالارونده تابه اینتراپتوش صدا میزنه
    اگه قرارباشه با عددهای به جز 127 هم این کار رو بکنه زمان مساوی از بین میره چون در دو شکل پایین یک پریود به صورت مساوی زمانی پخش نمیشه

    این برای من بسیار عجیبه !

    کار یکه شما کردید با لبه پایین رونده فعال کردید که باز هم همین ایده تکرار میشه !
    طبق چیزی که من از کد متوجه شدم کاری که شما کردید تغییر 127 باید داغون کنه برنامه رو

    شما از کد چه چیزی متوجه شدید؟

  6. #6
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    نمیدونم چطوری این اتفاق افتاد براتون
    چون با نوشتن عدد 127 در واقع قصد داشته شکل موجی با dutycycle برابر 50 درصد بوجود بیاره ولی وقتی عدد تغییر کنه شکل موج های زیر بوجود میاد در واقع
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 512e869bce395fbc64000002.JPG
مشاهده: 189
حجم: 26.5 کیلو بایت
    بعد داستانی که هست اینه که اینتراپت میاد روی لبه های بالارونده تابه اینتراپتوش صدا میزنه
    اگه قرارباشه با عددهای به جز 127 هم این کار رو بکنه زمان مساوی از بین میره چون در دو شکل پایین یک پریود به صورت مساوی زمانی پخش نمیشه

    این برای من بسیار عجیبه !

    کار یکه شما کردید با لبه پایین رونده فعال کردید که باز هم همین ایده تکرار میشه !
    طبق چیزی که من از کد متوجه شدم کاری که شما کردید تغییر 127 باید داغون کنه برنامه رو

    شما از کد چه چیزی متوجه شدید؟
    شما هم اگه بخواین میتونین امتحان کنین
    خب تصور من اینه که این عدد هرچیزی باشه فرکانس موج مقدار ثابتی هست(490 هرتز) و همینطور دوره (T=1/490)،
    و در همه حالات هم ( pwm های متفاوت) در مدت زمان T یک نوسان اتفاق میوفته و اون تابع شمارنده زمان هم داره این نوسان ها رو میشماره
    چه اینکه ولتاژ بره بالا زود بیاد پایین یا بره بالا و بیشتر بمونه و بعد بیاد پایین از اون جایی که در هر دورهT یه بار فقط بالا میره و تابع شمارنده فقط بالا رفتن (یا پایین اومدن ها رو میشماره) مقدار pwm روی نتیجه شمارش تاثیر نداره

  7. #7
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    شما هم اگه بخواین میتونین امتحان کنین
    خب تصور من اینه که این عدد هرچیزی باشه فرکانس موج مقدار ثابتی هست(490 هرتز) و همینطور دوره (T=1/490)،
    و در همه حالات هم ( pwm های متفاوت) در مدت زمان T یک نوسان اتفاق میوفته و اون تابع شمارنده زمان هم داره این نوسان ها رو میشماره
    چه اینکه ولتاژ بره بالا زود بیاد پایین یا بره بالا و بیشتر بمونه و بعد بیاد پایین از اون جایی که در هر دورهT یه بار فقط بالا میره و تابع شمارنده فقط بالا رفتن (یا پایین اومدن ها رو میشماره) مقدار pwm روی نتیجه شمارش تاثیر نداره

    درسته که فرمانسش ثابته ولی با تغییر 127 اونجاهایی که لبه میزنه تغییر می کنه و همین عاملی میشه تا تابع وقفه با زمان های نا مساوی اجرا بشه

  8. #8
    Senior Member
    تاریخ عضویت
    Nov 2015
    نوشته ها
    229
    نقل قول نوشته اصلی توسط magmagmary نمایش پست ها
    نه تابع MILLIS این حرفا سرش نمیشه
    از وقتی پاور میدی میشماره

    برای ماژول های ساعت ترجیحا از دقیقش استفاده کن
    البته من اخیرا این تایمر رو کشف کردم :
    Make an accurate Arduino clock using only one wire - NO external hardware needed! - All
    قبلا با millis() که ساعت رو اجرا کردم توی هر ساعت 4 ثانیه خطا داشت و آردوینو از زمان واقعی جلو میفتاد ، یا این سیم هم که اجرا کردم (با توجه به اینکه فرکانس pwm معمول برای پایه های آردیونو 490 هست) خطایی که به دست اومد 5 ثانیه بود و باز هم آردوینو جلو افتاد از زمان واقعی ، به نظر میاد این هم اونقدا دقیق نیست
    و اونقدری که من میدونم همون millis() هم با استفاده از وقفه و یه کانتر داخلی داره شمرده میشه

  9. #9
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    قبلا با millis() که ساعت رو اجرا کردم توی هر ساعت 4 ثانیه خطا داشت و آردوینو از زمان واقعی جلو میفتاد ، یا این سیم هم که اجرا کردم (با توجه به اینکه فرکانس pwm معمول برای پایه های آردیونو 490 هست) خطایی که به دست اومد 5 ثانیه بود و باز هم آردوینو جلو افتاد از زمان واقعی ، به نظر میاد این هم اونقدا دقیق نیست
    و اونقدری که من میدونم همون millis() هم با استفاده از وقفه و یه کانتر داخلی داره شمرده میشه
    من به تازگی دستور tone رو کشف کردم

    خوشم اومد ازش

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

  10. #10
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط siib نمایش پست ها
    قبلا با millis() که ساعت رو اجرا کردم توی هر ساعت 4 ثانیه خطا داشت و آردوینو از زمان واقعی جلو میفتاد ، یا این سیم هم که اجرا کردم (با توجه به اینکه فرکانس pwm معمول برای پایه های آردیونو 490 هست) خطایی که به دست اومد 5 ثانیه بود و باز هم آردوینو جلو افتاد از زمان واقعی ، به نظر میاد این هم اونقدا دقیق نیست
    و اونقدری که من میدونم همون millis() هم با استفاده از وقفه و یه کانتر داخلی داره شمرده میشه
    .

    این مشکل دقیقا به خود atmega و البته کریستال بر می گرده

    کریستال هر چی دماش بره بالا انحراف معیارش از فرکانس اصلیش بیشتر میشه
    لایک کردن

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO