بیژن بینایی GitHub
بیژن بینایی Rss

ماژول های چینی را ساده نگیریم

نوشته شده توسط بیژن | در دسته مخابرات, مهندسی برق | نوشته شده در ۲۳-۰۴-۱۳۹۶

۰

هفته اخیر رو روی کشک ترین پروژه عمرم گذروندم. اگه بگذریم از اینکه چی شد که این رفت تو پاچمون این پروژه خیلی ساده از سه بخش کلی تشکیل می شه. ATmega168 که تابستون سال اول ۳ ماهی باهاش سر و کله زده بودم + FT232BL که قبلا RL اش رو راه انداخته بودم و NRF24... که بچه های مهدکودک هم بلدن راه بندازنش... به هر حال. مشکل از اونجا شروع شد که من این برد رو زیادی ساده گرفتم. زیادی که می گم یعنی چی؟ یعنی Autoroot زدم.... تمام قطعاتی که تو Datasheet گفته بود بزارید رو نگذاشتم، خازن های decoupling رو درست جانمایی نکردم. power integrity رو که کلا بیخیال.... صفحه زمین و باقی مخلفات رو همکه برای این کارای cheap سمبل می کنن. خلاصه اینکه نتیجه برخلاف تصورم افتضاح شد. این پست یه مروری هست بر مشکلاتی که بدلیل سهل انگاریم بوجود اومد و باعث شد بیش از یک هفته وقت و کلی هزینه صرف درست کردنشون بشه. امیدوارم چک لیستی بشه برا پروژه های کشک بعدی.

■ خازن های الکترولیت

همه ما می دونیم خازن های الکترولیت polar هستن. اگه بر عکس بزنیمشون می ترکن و اگر معکوس بایاس بشن در عرض چند ثانیه سوراخ(شورت) می شن. ولی هیشکی بهمون نگف که وقتی دارید شماتیک می کشین بر ندارین سمبل chip capacitror رو برای خازن الکترولیت بکار ببرید. به من اعتماد کنید، اگه این کار رو کردید احتمال اینکه وقتی مدار رو می زنید تو برق یه خازن پرت نشه تو چشتون صفر هست! صفر...اونم از نوع مطلق(اثر مورفی)

و.ن(وسط نوشت): خدا رو شکر این رو بصورت معجزه آسایی قبل اینکه اتفاق های بد بعدی بیفته فهمیدم.

■ ATmega

من ATmega رو لحیم کردم و شاد و خوشحال گفتم خب بریم تستش کنیم. سناریو هم خیلی ساده بود. ما یه ATmega داریم پین های SPI و Reset اش رو کشیدیم بیرون برای program کردن. حالا هم شاد و خوشحال سیم کشی ها رو به programmer انجام دادیم و آماده ایم که اولین hello world امون رو پروگرام کنیم. دکمه پروگرام رو می زنیم و در عین تعجب پنجره error با اون ضربدر قرمز زشتش ظاهر می شه، بله میکرو، پروگرام نمی شه..... بنظرتون مشکلش چیه (یکم فکر!)

ATmega سوخته؟ قطعا نه! ATMega سگ جون ترین IC قرن هست که تا حالا کسی نتونسته تو لحیم کاری بسوزونتش. در زیر یه پروفایل Reflow می گذارم که اگر طبقش برین جلو AD9361 رو هم می تونید بدون نگرانی از Thermal Shock با دست لحیم کنید. (جدول از استاندارد های JEDEC استخراج شده)

پس مورد سوخته شدن IC می ره کنار. به مهدی پیام دادم که مشکل بنظرت چیه و گفت یکی از پایه ها یحتمل لحیم نشدن. بله... خیلی ساده اگر برد رو زیر میکروسکوپ می دیدیم پایه MISO خوب لحیم نشده بود. یکم خمیر قلع زدم و یه هوا داغ... و voila اتمگا راه افتاد. یه نکته هم اینجا بگم، وقتی از همه پایه های میکروتون استفاده نکردین پس اجباری هم نیست همه رو لحیم کنید. به عبارت دیگه تمرکزتون رو بزارید روی پایه هایی که حتما باید لحیم بشن اینطوری هم در مصرف قلع صرفه جویی می شه p: هم پایه های مهم لیحم می شن win-win

■ FTDI

یعنی ما تو این قسمت هم شانس نیاوردیم. FTDI هم الحمدا... کار نمی کرد. خودمون رو به در و دیوار زدیم که این هزارپا چشه و بالاخره با کمک sir senator علی فرهادی یدونه رو بردبرد بستم و معلوم شد بین این همه المان که تو شکل زیر برای راه اندازی این IC نیاز هست فقط و فقط اون مقاومت ۱k5 لعنتی هست که اگه نباشه همه چی فناست.... نتیجه اینکه مجبور شدیم ۱۸۰ تومن برد چاپ سبز خورده رو بزاریم در کوزه و از آروین جان بخوایم برامون یه برد جدید از کوثر سفارش بده.

پوینت این بود که واقعا طراحای FTDI  می مردن  این ۱k5 لعنتی رو هم می بردن تو چیپ؟

بعد اومدن PCB دوم و جانمایی قطعات، FTDI هم بالاخره راه افتاد.

■ NRF24L01

خب SPI وصل. Status رو می خونیم، می نویسیم بقول خارجی ها System all green ولی وقتی می گیم NRF جان بفرست اون پکتو ...زرشک...... انگار نه انگار :|. خیلی ساده ماژول command ما رو ignore می کنه. آخه تو دیگه چه مرگته NRFجان.

اینور اونور کل نت رو بگرد. هیشکی به این مشکل بر نخورده. بعضی ها می گفتن خازن بزارید و .... ولی خب ما هم خازن ۱۰۰nF گذاشته بودیم هم ۱۰uF بیشتر از این هم عملا نمی شد گذاشت چون spec هه USB رو نقض می کردیم خلاصه.... من یه روز سر و کله زدم با این که چرا کار نمی کنه. و آخرش شب شد و پیام دادم گفتم نمی شه آقا.... باید یه فکر دیگه کرد. بعد یکم رو صندلیم لم دادم و زل زدم به برد کوفتی.... بعد یکم فکر، گفتم خب این که دیگه کار نمی کنه بزار حداقل ایده مصخره خازن ۱۰۰uF رو هم امتحان کنم گور بابای spec یو اس بی و در قعر ناامیدی، با عوض کردن خازن، ماژول بصورت معجزه آسایی کار کرد.

خلاصه نتیجه این داستان توکل بود! اگه جواد اشتباهی خازن ۱۰۰uF جای ۱۰uF نمی خرید اون شب عمرا من خازن رو عوض نمی کردم و حتی فکر کار کردن با ۱۰۰uF به ذهنمم نمی رسید و به dD Line نمی رسیدیم. بعضی وقتا واقعا جالبه خدا آدمو قشنگ می بره تا اون لبه لبه... وقتی که کاملا ناامید شدی آخرین در رو باز می کنه.

فک کنم تو زندگیم هزار بار اینطوری شده. هر جا دیگه رسیدم به اون نقطه که قبول کردم دیگه هیچ کاریش نمی شه کرد همیشه یه دری معجزه آسا باز شده.

■ نتیجه گیری

الان که این متن رو دارم می نویسم همه قسمت های برد راه افتاده اما... NRF24L01 ها اگه فاصلشون بیشتر از ۲ ۳ متر  شه دیگه کار نمی کنن :(. نتیجه اینکه اگه دارید با IC های آمریکایی کار می کنید خوش بحالتون ولی اگه احیانا روزی گذرتون به ماژول های آشغال چینی خورد، حواستون خیلی بیشتر جمع باشه. من خازن ۱۰۰nF دیکاپلینگمو دور گذاشتم، power رو هم بصورت star روت نکردم. توی مسیر خازن هم via (سلف stray گذاشتم). NRF با فرکانس ۲.۴GHz کریر می سازه. و run کردن ماژول روی USB عملا خودش یک چالش بزرگ هست. اگر چه NRF ماژول بچه بازی هست و هر کسی می تونه راه اندازیش کنه اما برای رسیدن به performance یاد شده در datasheet داشتن ground plane و power integrity مناسب قطعا لازمه چرا که ۲.۴ گیگ اصلا شوخی نیست هرچند که NRF باشه. نکته آخر هم AMS1117-3.3 هست. این قطعه head room یک و نیم ولتی می خواد یعنی حداقل ولتاژ ورودی باید ۴v8 باشه. ولتاژی که معمولا بخاطر طول کابل USB و جریان مدار، رسیدن بهش کمی چالشی هست. تو یه design خوب قطعا یا سیم رو حذف می کنند (با کانکتور Type A) یا dc-dc می گذارند.

شکل زیر روتینگ star و محل مناسب برای خازن decoupling رو نشون می ده (منبع)

پ.ن: در پست بعدی به ماجراهای من و zynq می پردازیم. تو حین این ماجراها من به به کتابی خوردم به نام FPGA For Dummies که Altera چاپ کرده، پیشنهاد می کنم بخونیدش.... کتاب ۵۲ صفحس و به رایگان از لینکی که گذاشتم قابل دانلود هست. من به عنوان کتاب داستان قبل خواب ازش استفاده کردم و خیلی راضی بودم امیدوارم شما رو هم راضی کنه