Arduino и транзиторы (15.12.2021). |
![]() |
2021 - Декабрь | |||
15.12.2021 18:16 | |||
Процессор грелся, когда канал D2 замыкал биполярный транзистор BDX33C, а транзистор замыкал реле. Чтобы это выяснить, пришлось загибать контакты Arduino по одному, исключая их последовательно из DIP-панельки печатной платы - и, конечно же, по закону подлости, в итоге отогнуты были почти все. Загибать ножки обратно и выравнивать их - то еще удовольствие. Ток удержания реле, выведенный эмпирически ранее и сейчас наблюдаемый в реальности, - 25мА. Значит, транзистор BDX33C, имеющий коэффициент усиления минимум 750 (а по факту - больше 1000), должен потреблять управляющим контактом всего 0.033мА. Но, каким-то волшебным образом, по управляющему контакту тек ток 100мА. Таких транзистора было 3, и ток по всем трем был около 100мА, независимо от коммутируемого объекта (реле, светодиодище 63мА, модуль отправки SMS). Последствием такого тока, почему-то, стал нагрев именно процессора Arduino Nano v.3.0. Для уменьшения итогового номинала тока источника питания, данные транзисторы ранее были разнесены во времени. Не исключено, что если бы сработало хотя бы 2 одновременно, Arduino бы настал конец (неизвестно, имеет ли контроллер систему защиты от перегрева). Решений оказалось 3: - поставить на процессор радиатор. Но найти радиатор со стороной 10-15мм - лень, а ножовкой работать с 40мм - лень; - заменить биполярные транзисторы на полевые. Но открывать кассетницу - лень; - запускать каналы Arduino через подтягивающий резистор, заменив вхождения "digitalWrite(1, 255)" на "pinMode(1, INPUT_PULLUP)". Ток на канале снизился (номинал забыл - доли миллиампера) - при этом ни транзистор, ни приборы не потеряли своей работоспособности. Процессор при этом был просто теплым, если трогать его губами. Также стоит строго избегать использования контактов D0 (Rx) и D1 (Tx) для каких-либо устройств, обменивающихся данными. Единственное, что к ним корректно подключалось на практике, - светодиоды да резисторы. При этом внешние светодиоды при заливке скетча моргают в такт внутренним, а также их требуется принудительно гасить сразу после старта скетча. (добавлено 16.12.2021) На форумах темы по поводу нагревания процессора попадаются - но никто истинных причин так и не нашел. Пусть причина найдена в этом материале. Но остается другой вопрос: как биполярный транзистор мог иметь hFE <1. Ведь формула транзистора как усилителя тока работает в обе стороны (на то она и формула): если ток коллектор-эмиттер мал - то и ток база-эмиттер будет мизерным. Возможно, дело во входном сигнале - но сигнал с цифровых выходов Arduino не превышает 16МГц - а транзистор рассчитан на 20МГц. (добавлено 18.02.2022) Неожиданный отрицательный результат. При входном напряжении на Arduino 5.5В и плате Arduino одного производителя - подключение к базе транзистора подтягивающего резистора проблем не создавало. Но при входном четко 5В и Arduino другого производителя (даже тип корпуса процессора другой) - подстроечный резистор оказался номиналом больше необходимого. В итоге, транзистор не открывался до конца. Из этого выводы: - возможно, на разных печатных платах Arduino номиналы подтягивающих резисторов разные; - возможно, напряжения 5В недостаточно для работы биполярных транзисторов в связке с подтягивающими резисторами. |
|||
Обновлено ( 29.01.2024 17:48 ) |