Прочитайте мій запис у блозі "Байт і комутатор" - він висвітлює цей точний сценарій.
Коротка відповідь полягає в тому, що вам потрібен вільнодіючий діод для проведення струму, коли MOSFET вимикається; соленоїд має індуктивність, яка акумулює енергію в магнітному полі, і коли ви вимкнете MOSFET, індуктивність буде генерувати, однак велика кількість напруги необхідна для продовження потоку цього струму. Отриманий імпульс напруги призведе до поломки MOSFET, що спричинить збитки, які ви бачите.
Ви також повинні додати пару резисторів, один - від виходу мікроконтролера на землю, щоб переконатися, що він вимкнений, коли мікроконтролер перезавантажений, а другий - від мікроконтролера до затвора MOSFET, щоб додати деяку резистивну ізоляцію між вашим вимикачем живлення та вашим мікроконтролер.
редагувати: Я щойно помітив, що ви використовуєте MSFET BS170. Ви подивилися на таблицю даних? Це поганий вибір для MOSFET, що використовується як перемикач живлення від мікроконтролера.
Перш за все, MOSFET вказаний на 10 Vgs. Ви постачаєте його від 5В мікроконтролера. Вам потрібно переконатися, що ви використовуєте MOSFET, які є "логічним рівнем" та мають опір, вказаний у 4,5 V або 3,3 V Vgs. (Я пропоную вам не використовувати наднизькі напруги MOSFET, оскільки є можливість його слабкого включення, коли ви думаєте, що це вимкнено.)
Що ще важливіше, це невеликий TO-92 MOSFET, вказаний на 5 Ом макс. Rdson при 10 V Vgs. Цей MOSFET чудово підходить для дуже малих навантажень, таких як світлодіоди, що малюють кілька міліампер. Але соленоїди зазвичай малюють десятки або сотні міліампер, і вам потрібно обчислити втрати I2R у вашому MOSFET за поточним навантаженням і переконатися, що це не призведе до перегріву вашого транзистора. Подивіться на тепловий опір R theta JA на аркуші, і ви зможете оцінити, скільки підйом температури у цій частині.
Використовуйте MOSFET в діапазоні 20V-60V, який має менший опір - як я вже говорив у своєму коментарі, нам потрібно знати, скільки струму притягує ваш соленоїд, якщо ми збираємось допомогти вам.