پاسخ : نیاز به یک تابع در مورد شمارش سیگنال
ای ول :biggrin:
خب شما با این همتتون , انشاالله به زودی هم پروژتون رو به خوبی انجام میدین هم به میکرو مسلط میشید
فقط کمی حوصله به خرج بدین و درباره ماژول های CCP و ECCP که در میکروهای PIC هست تحقیق کنید , نمیدونم در AVR همچین چیزی هست یا خیر ! اما با توضیحاتی که دادین کار خیلی حساس هست و نباید با پردازش های اضافی ریسک کرد , ماژول های فوق کار رو بهتر میتونن انجام بدن
برای تحقیق فوق میتونید از کتاب " ساختار میکروکنترلرهای PIC " انتشارات شیخ بهائی استفاده کنید
من پیام شما رو خوندم و برای اینکه بتونم پاسخ بهتری بدم چند روزی صبر کنید تا سرم کمی خلوت تر شه
نوشته اصلی توسط ezraeell
ببنید بزارید تمام بگم چون تا الان ک کسی جز شما نیس ک راهنمایی کنه
تو هر ماشین یک دستگاهی است که قابش اندازه کف دسته و توش یک میکرو کنترلر داره با چند ترانزیستور قدرت که کار این دستگاه اینه که با توجه به داده های سنسور موقیعت میل لنگ موتور رو بسنجه و با توجه به موقیت پیستون ها در هر سیلندر ، زمان جرقه رو تعیین کنه و به ترانزیستور ها فرمان روشن و خاموش شدن بده تا کویل هر شمع در زمان خودش جرقه بزنه
یک مدل ماشین هست که این یونیت جرقه به ایران وارد نمیشه و خیلی گرونه چون کمیابه
من چند ماهه دارم روش کار میکنم تا بتونم بسازم از روش اما هیچکس نتونسته بسازه چون کارخانش ک اسکانیا هم هست نوعی رزین(چسب صنعتی) داخل قوطی این دستگاه ریخته ک هیچ حلالی نداره
من با شگردی خاص بعد جند ماه تونستم یکی از این یونیت هارو باز کنم و دیدم دقیقا مث ECU ماشین توش یک میکرو داره و چند ترانزیستور قدرت برای سوییچ و بعد با بازدید از خود ماشین متوجه شدم تنها ورودی به این یونیت یک سنسور هست ک سه تا سیم داره دو سیم برای تغذیه و یک سیم هم ک پالس ها رو میفرسته به یونیت جرقه
بعد یک اسیلوسکوپ درست کردم و باهاش شکل موج خروجی این سنسور رو دیدم و ازش عکس گرفتم
این سنسور روی یک چرخ دندانه دار هست که برای هر تعداد دندانه ها متفاوته مثلا من اسکوپم رو روی سنسور خودرو پراید تست کردم ک چرخش 360 دندانه داره اما دو دندانه حذف شده یعنی در کل 358 دندانه داره و جای دو دندانه خالیه
در عکس بالا فلش سفید نشانگر شکل پالس ایجاد شده حاصل از 358 دندانه هست و فلش قرمز نشانگر همون پالس ثابت نقطه A یا جای همون دو دندانه خالیه
اونجایی ک روی ال سی دی نوشته فرکانس یعنی دور موتور ماشین چون تقریبا دور موتور با فرکانس برابره و به ازای هر 1000 دور در دقیقه از موتور 980 هرتز فرکانس تولید میشه ک روی عکس میبینی و هرچی به عکس های بعدی میره دور موتور تغییر میکنه به فرکانس نگاه کن گاهی تا 1460 هرتز هم میره که همون دور موتور 1500 دور بر دقیقه پرایدهست که شکل و ارتفاع موج و فرکانس موج دندانه ها در اثر افزایش دور موتور بیشتر میشه اما موج نقطه A تغیر چنداد محسوسی نمیکنه
خب الان این شرح وسایل فیزیکی بود
همونطور ک گفتم داخل این یونیت یک میکرو پی ای سی بود اما چون با هات ایر من رزین رو سوزوندم میکرو هم از بین رفت
منم صبور هستم و میتونستم برم دنبال پی ای سی ولی هم بقول شما مث ای وی ار اموزش های فارسی و روان و ساده کم داره و هم قیمت پروگرمر هاش خیلی گرونه و تا بخوام یاد بگیرم ک کلی زمان میره
ای وی ار قابلیت های صنعتی پی ای سی مث همون سگ نگهبان رو نداره تازه همین سگ رو هم با یک مطالعه کوتاه فهمیدم حدودا ک معنیش چیه
من تاحالا برای برنامه نویسی از فلورچارت استفاده نکردم دقیقا چطوری باید بکشم
و اگر شما سوالی دارید تا تفهیم پروژه بهتر بشه بفرمایید تا من بگم
من الان یک برنامه نوشتم با وقفه ها و جملات شرطی که میتونه تعداد دندانه ها و زمان بین دندانه ها رو بشماره اما یا برنامه من مشکل داره یا روش چیز دیگه ای باید باشه چون من اومدم یک میکرو رو به عنوان تولید کننده پالس استفاده کردم یعنی میکرو شماره یک بعد از راه اندازی وارد یک حلقه محدود میشه یعنی این حلقه فقط 360 بار تکرار میشه و تو این حلقه یک پین از میکرو که به عنوان خروجی هست هر یک میلی ثانیه روشن و هر یک میلی ثانیه خاموش میشه تا بتونه در 360 بار تکرار ، 360 پالس مربعی ایجاد کنه که دقیقا تو شبیه ساز پروتیوس روی اسکوپ ک میزنی موج مربی نشون میده
تا اینجا این میکرو کارش شده تولید پالس برای تست ازمایشی برنامه در کامپیوتر
خب بعد از تولید پالس 360 ام از حلقه تکرار خارج میشه و یک پالس سه میلی ثانیه ای تولید میشه و دوباره به حلقه تکرار 360 برمیگرده
یعنی بعد از تولید 360 پالس مربعی ، بلافاصله یک پالس بزرگ ایجاد میشه ک تاخیرش سه برابر سایر پالس هاست تا نقش نقطه A رو بازی کنه
این شد برنامه میکرو شماره یک که کارش تولید پالس دندانه ها و پالس نقطه A بود
تا اینجا خوبه؟برای تست ازمایشی
حالا میکرو دوم ک شما راهنمایی کردین ک کارش انالیز یا شمارش پالس ها و پیدا کردن نقطه A هست
این میکرو رو طبق گفته شما اول یک تایمر میکرو را در مد کانتر معرفی کردم و خاصیت مقایسه گر کانتر و وقفه آن را فعال کردم
یعنی تا اینجا میکرو قادر هست با دریافت هر مقدار پالس ، اون رو بشماره و به ازای هر عددی ک اول برنامه به وقفه کانتر بدیم بلا فاصله وقتی تعداد پالس های شمرده شده به اون مقدار رسید ، پرش میزنه به لیبل مشخص شده در وقفه
اما از اون جایی که به محض روشن شدن میکرو ، کانتر هرچی پالس دریافت کنه میشماره و ما میخوایم هر پالس رو ک دریافت کرد وقفه بخوره و پرش کنه به لیبل
خب پس باید در عدد نوشته شده در مقایسه گر کانتر ، عدد یک رو نوشت یعنی به محضی ک یک پالس رو شمارش کرد یعنی یک پالس دریافت کرد به لیبل وقفه پرش کنه
خب تا به لیبل پرش میکنه اونجا یک جمله شرطی نوشتم که اگر x مساوی صفر بود تایمر استارت بخوره (چون دفعه اوله که وارد لیبل میشه عدد x از قبل صفر بوده پس وارد میشه) تایمر شماره دو میکرو استارت میخوره(درضمن تایمر شماره دو میکرو هم قبلا پیکر بندی شده با دقت بالا و در مد مقایسه گر با وقفه معرفی شده) خب به محض استارت خوردن تایمر عدد x رو هم بعد از استارت خوردن تایمر مساوی یک میشه تا دفعه بعد که وارد این لیبل شد تایمر استارت مجدد نخوره یا هنگ نکنه
بعد یک واحد به متغیر y که تعداد دندانه ها هست اضافه میشه و میشه یک ک یعنی دندانه شماره یک و بعد یک واحد به متغیر x اضافه میشه و میشه دو جمله شرطی دوم که نوشتم اگر x مساوی سه شد تایمر رو استپ کن و عدد تایمر رو بریز تو متغیر تایم اما چون الان متغیر x دو هستش وارد این شرط نمیشه و کانتر مساوی صفر میشه خارج میشه و بر میگرده به ادامه شمارش پالس و به محض دریافت پالس دوم یا دندانه دوم که میشه پالس شمرده شده یک دوباره وارد همین لیبل میشه و چون x مساوی دو هست وارد شرط استارت تایمر نمیشه و میاد پایین و یک واحد به متغیر y ک تعداد دندانه ها است اضافه میش و میشه 2 که یعنی دندانه دوم و بعد یک واحد به x اضافه میشه ک یعنی x مساوی سه میشه و شرط دوم ک استاپ تایمر هست اجرا میشه و تایمر متوقف میشه و میزان تایم بین دو دندانه شمارده شده داخل متغیر تایم ریخته میشه و روی ال سی دی نشون میده و متغیر x مساوی صفر میشه و همینطور ادامه پیدا میکنه و با وقفه بعدی وارد لیبل میشه و شرط استارت تایمر اجرامیشه و باز دفعه بعد ک میاد تو لیبل شرط استاپ تایمر اجرامیشه و الا اخر
این برنامه ای هست ک من نوشتم اما ب نظرم اصولی نیس
تو هر ماشین یک دستگاهی است که قابش اندازه کف دسته و توش یک میکرو کنترلر داره با چند ترانزیستور قدرت که کار این دستگاه اینه که با توجه به داده های سنسور موقیعت میل لنگ موتور رو بسنجه و با توجه به موقیت پیستون ها در هر سیلندر ، زمان جرقه رو تعیین کنه و به ترانزیستور ها فرمان روشن و خاموش شدن بده تا کویل هر شمع در زمان خودش جرقه بزنه
یک مدل ماشین هست که این یونیت جرقه به ایران وارد نمیشه و خیلی گرونه چون کمیابه
من چند ماهه دارم روش کار میکنم تا بتونم بسازم از روش اما هیچکس نتونسته بسازه چون کارخانش ک اسکانیا هم هست نوعی رزین(چسب صنعتی) داخل قوطی این دستگاه ریخته ک هیچ حلالی نداره
من با شگردی خاص بعد جند ماه تونستم یکی از این یونیت هارو باز کنم و دیدم دقیقا مث ECU ماشین توش یک میکرو داره و چند ترانزیستور قدرت برای سوییچ و بعد با بازدید از خود ماشین متوجه شدم تنها ورودی به این یونیت یک سنسور هست ک سه تا سیم داره دو سیم برای تغذیه و یک سیم هم ک پالس ها رو میفرسته به یونیت جرقه
بعد یک اسیلوسکوپ درست کردم و باهاش شکل موج خروجی این سنسور رو دیدم و ازش عکس گرفتم
این سنسور روی یک چرخ دندانه دار هست که برای هر تعداد دندانه ها متفاوته مثلا من اسکوپم رو روی سنسور خودرو پراید تست کردم ک چرخش 360 دندانه داره اما دو دندانه حذف شده یعنی در کل 358 دندانه داره و جای دو دندانه خالیه
در عکس بالا فلش سفید نشانگر شکل پالس ایجاد شده حاصل از 358 دندانه هست و فلش قرمز نشانگر همون پالس ثابت نقطه A یا جای همون دو دندانه خالیه
اونجایی ک روی ال سی دی نوشته فرکانس یعنی دور موتور ماشین چون تقریبا دور موتور با فرکانس برابره و به ازای هر 1000 دور در دقیقه از موتور 980 هرتز فرکانس تولید میشه ک روی عکس میبینی و هرچی به عکس های بعدی میره دور موتور تغییر میکنه به فرکانس نگاه کن گاهی تا 1460 هرتز هم میره که همون دور موتور 1500 دور بر دقیقه پرایدهست که شکل و ارتفاع موج و فرکانس موج دندانه ها در اثر افزایش دور موتور بیشتر میشه اما موج نقطه A تغیر چنداد محسوسی نمیکنه
خب الان این شرح وسایل فیزیکی بود
همونطور ک گفتم داخل این یونیت یک میکرو پی ای سی بود اما چون با هات ایر من رزین رو سوزوندم میکرو هم از بین رفت
منم صبور هستم و میتونستم برم دنبال پی ای سی ولی هم بقول شما مث ای وی ار اموزش های فارسی و روان و ساده کم داره و هم قیمت پروگرمر هاش خیلی گرونه و تا بخوام یاد بگیرم ک کلی زمان میره
ای وی ار قابلیت های صنعتی پی ای سی مث همون سگ نگهبان رو نداره تازه همین سگ رو هم با یک مطالعه کوتاه فهمیدم حدودا ک معنیش چیه
من تاحالا برای برنامه نویسی از فلورچارت استفاده نکردم دقیقا چطوری باید بکشم
و اگر شما سوالی دارید تا تفهیم پروژه بهتر بشه بفرمایید تا من بگم
من الان یک برنامه نوشتم با وقفه ها و جملات شرطی که میتونه تعداد دندانه ها و زمان بین دندانه ها رو بشماره اما یا برنامه من مشکل داره یا روش چیز دیگه ای باید باشه چون من اومدم یک میکرو رو به عنوان تولید کننده پالس استفاده کردم یعنی میکرو شماره یک بعد از راه اندازی وارد یک حلقه محدود میشه یعنی این حلقه فقط 360 بار تکرار میشه و تو این حلقه یک پین از میکرو که به عنوان خروجی هست هر یک میلی ثانیه روشن و هر یک میلی ثانیه خاموش میشه تا بتونه در 360 بار تکرار ، 360 پالس مربعی ایجاد کنه که دقیقا تو شبیه ساز پروتیوس روی اسکوپ ک میزنی موج مربی نشون میده
تا اینجا این میکرو کارش شده تولید پالس برای تست ازمایشی برنامه در کامپیوتر
خب بعد از تولید پالس 360 ام از حلقه تکرار خارج میشه و یک پالس سه میلی ثانیه ای تولید میشه و دوباره به حلقه تکرار 360 برمیگرده
یعنی بعد از تولید 360 پالس مربعی ، بلافاصله یک پالس بزرگ ایجاد میشه ک تاخیرش سه برابر سایر پالس هاست تا نقش نقطه A رو بازی کنه
این شد برنامه میکرو شماره یک که کارش تولید پالس دندانه ها و پالس نقطه A بود
تا اینجا خوبه؟برای تست ازمایشی
حالا میکرو دوم ک شما راهنمایی کردین ک کارش انالیز یا شمارش پالس ها و پیدا کردن نقطه A هست
این میکرو رو طبق گفته شما اول یک تایمر میکرو را در مد کانتر معرفی کردم و خاصیت مقایسه گر کانتر و وقفه آن را فعال کردم
یعنی تا اینجا میکرو قادر هست با دریافت هر مقدار پالس ، اون رو بشماره و به ازای هر عددی ک اول برنامه به وقفه کانتر بدیم بلا فاصله وقتی تعداد پالس های شمرده شده به اون مقدار رسید ، پرش میزنه به لیبل مشخص شده در وقفه
اما از اون جایی که به محض روشن شدن میکرو ، کانتر هرچی پالس دریافت کنه میشماره و ما میخوایم هر پالس رو ک دریافت کرد وقفه بخوره و پرش کنه به لیبل
خب پس باید در عدد نوشته شده در مقایسه گر کانتر ، عدد یک رو نوشت یعنی به محضی ک یک پالس رو شمارش کرد یعنی یک پالس دریافت کرد به لیبل وقفه پرش کنه
خب تا به لیبل پرش میکنه اونجا یک جمله شرطی نوشتم که اگر x مساوی صفر بود تایمر استارت بخوره (چون دفعه اوله که وارد لیبل میشه عدد x از قبل صفر بوده پس وارد میشه) تایمر شماره دو میکرو استارت میخوره(درضمن تایمر شماره دو میکرو هم قبلا پیکر بندی شده با دقت بالا و در مد مقایسه گر با وقفه معرفی شده) خب به محض استارت خوردن تایمر عدد x رو هم بعد از استارت خوردن تایمر مساوی یک میشه تا دفعه بعد که وارد این لیبل شد تایمر استارت مجدد نخوره یا هنگ نکنه
بعد یک واحد به متغیر y که تعداد دندانه ها هست اضافه میشه و میشه یک ک یعنی دندانه شماره یک و بعد یک واحد به متغیر x اضافه میشه و میشه دو جمله شرطی دوم که نوشتم اگر x مساوی سه شد تایمر رو استپ کن و عدد تایمر رو بریز تو متغیر تایم اما چون الان متغیر x دو هستش وارد این شرط نمیشه و کانتر مساوی صفر میشه خارج میشه و بر میگرده به ادامه شمارش پالس و به محض دریافت پالس دوم یا دندانه دوم که میشه پالس شمرده شده یک دوباره وارد همین لیبل میشه و چون x مساوی دو هست وارد شرط استارت تایمر نمیشه و میاد پایین و یک واحد به متغیر y ک تعداد دندانه ها است اضافه میش و میشه 2 که یعنی دندانه دوم و بعد یک واحد به x اضافه میشه ک یعنی x مساوی سه میشه و شرط دوم ک استاپ تایمر هست اجرا میشه و تایمر متوقف میشه و میزان تایم بین دو دندانه شمارده شده داخل متغیر تایم ریخته میشه و روی ال سی دی نشون میده و متغیر x مساوی صفر میشه و همینطور ادامه پیدا میکنه و با وقفه بعدی وارد لیبل میشه و شرط استارت تایمر اجرامیشه و باز دفعه بعد ک میاد تو لیبل شرط استاپ تایمر اجرامیشه و الا اخر
این برنامه ای هست ک من نوشتم اما ب نظرم اصولی نیس
خب شما با این همتتون , انشاالله به زودی هم پروژتون رو به خوبی انجام میدین هم به میکرو مسلط میشید
فقط کمی حوصله به خرج بدین و درباره ماژول های CCP و ECCP که در میکروهای PIC هست تحقیق کنید , نمیدونم در AVR همچین چیزی هست یا خیر ! اما با توضیحاتی که دادین کار خیلی حساس هست و نباید با پردازش های اضافی ریسک کرد , ماژول های فوق کار رو بهتر میتونن انجام بدن
برای تحقیق فوق میتونید از کتاب " ساختار میکروکنترلرهای PIC " انتشارات شیخ بهائی استفاده کنید
من پیام شما رو خوندم و برای اینکه بتونم پاسخ بهتری بدم چند روزی صبر کنید تا سرم کمی خلوت تر شه
دیدگاه