Ток нагрузки микроконтроллера ATMega328

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
По даташиту на микроконтроллер ATMega328 максимальный ток через отдельный пин — 40 мА, но при этом суммарный ток через все пины не должен превышать 200 мА. И возникает вопрос, к примеру, для схемы подключения семисегментного индикатора: Не превышает ли ток нагрузки максимальное значение? Это касается выводов подключенных к общим анодам, т.е. 9-11. Ведь при токе для отдельного сегмента в 8 мА, если зажечь все сегменты то будет течь ток 8*8 = 64 мА. Так или не так?
1764836740521.png
 

EugeneFrol

✩✩✩✩✩✩✩
17 Апр 2024
55
9
50
Поэтому правильно, наверно, подключать через ключи:
1764839181202.png
 

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
@EugeneFrol, да, и я к этому же. Но схема с прямым подключением к портам очень популярна в нете и у Гайвера так же она присутствует. Проблема еще в том, что я перебрал несколько библиотек, в том числе от Гайвера, но они не поддерживают ключи к общему аноду (катоду), потому что там нужно инвертировать сигнал, а такой опции нет.
P.S. Я уже собрал часы с вышеприведенным подключением индикатора и они несколько месяцев работают. А затем уже задался вопросом о токовой нагрузке.
 

Bruzzer

★★★★✩✩✩
23 Май 2020
752
230
@Esteriman,
Так как индикация динамическая, то при 4-x цифрах средний ток в 4 раза меньше пикового.
Как влияют большие (повышенные) токи на ресурс микросхемы (в конкретных цифрах) я информации не встречал.
 

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
@Bruzzer, на один сегмент идет 8 мА и если включить цифру «8» то ведь токи суммируются на общем аноде. Так ведь?
 

EugeneFrol

✩✩✩✩✩✩✩
17 Апр 2024
55
9
50
В прошивку я не заглядывал, но если каждую цифру выводить в 2 этапа по 4 сегмента за раз, то 4*8 = 32мА.
 

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
Если вдруг кто-то затрудняется с поиском данных в даташите, т.к. есть два даташита, один укороченный и полный на 662 стр. В полном и есть нужные данные. Привожу здесь.
1764856570234.png
 

VictorArx

★★★✩✩✩✩
22 Мар 2021
644
102
@Esteriman, видите ли в чём дело, человек видит глазами вроде, как непрерывное действие, на самом деле происходит поочерёдное действие, только с высокой скоростью. Поэтому ток потребления значительно меньше. Опрос сегментов идёт поочерёдно, вы видите, как одновременное, инертность человеческого зрения. Бегущие огни однако ж не бегут. Примерно так.
 

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
@VictorArx, в готовых библиотеках достаточно сложный код для меня, поэтому привожу то, что я написал и то что работает уже несколько месяцев в часах.

C++:
ISR(TIMER2_COMPA_vect) {
  brC++;
  if (digsCount >= numDigs) digsCount = 0;
  if (((digsCount==1) || (digsCount==3)) & (flag==0)) dp = 0; // включить точку
  else dp = 1;
  unsetAnod(); // выключить все аноды
  if (brC > bright) {
    brC = 0;
    setSeg(ind[digsCount], dp); // выставить сегменты
    setAnod(digsCount); // включить актуальный разряд
    digsCount++;
  }
}

// включить нужные сегменты
// s — номер символа в таблице digs
// dp = 1 нет точки, dp = 0 есть точка
void setSeg(uint8_t s, uint8_t dpx) {
  for (int i=0;i<7;i++) digitalWrite(segs[i], bitRead(digs[s],7-i));
  digitalWrite(segs[7], dpx); // обработать точку
}

// выключить все аноды
void unsetAnod() {
  for (int i=0;i<numSymb;i++) digitalWrite(poss[i], 0);
} 

// включить актуальный разряд
void setAnod(int a) {
  digitalWrite(poss[a], 1);
}
Здесь включаются нужные сегменты путём подачи нуля, а затем включается питание на общем аноде. Всё это работает, и когда я это делал у меня перед глазами были многочисленные схемы из инета с прямым подключением. Как оказалось МК работает с перегрузкой по току. А вот как реализовано в библиотеках (хотя бы гайверовской) может кто-нибудь скажет.
 

Bruzzer

★★★★✩✩✩
23 Май 2020
752
230
@Esteriman,
Не понятно, чего вы хотите.
Хотите уменьшить ток - ставьте больше резисторы.
Хотите поставить ключи на транзисторах, в случае самописного кода из предыдущего сообщения, это вроде очевидно, где менять.
Если считаете, что средний максимальный ток при динамической индикации (8мА*8сегм)/(4 знакоместа) = 16 мА допустим, оставьте как есть.
Или просто оставьте как есть и будет опыт, через сколько времени МК сломается или он никогда не сломается.
 

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
@Bruzzer, непонятно почему надо делить на 4 знакоместа. А если будет 16 знакомест? Каждый отдельный разряд подключается к своему пину порта и ток течет со всех восьми сегментов (включая точку).
1764863142727.png
EugeneFrol подал хорошую идею выводить цифру двумя частями.
P.S. А как поинтересоваться у Гайвера по поводу алгоритма динамической индикации в библиотеке GyverSegment?
 

Bruzzer

★★★★✩✩✩
23 Май 2020
752
230
но почему надо делить на 4 знакоместа.
При динамической индикации, по очереди горит только одна цифра(знакоместо, индикатор). Значит при 4-х цифрах в часах, каждая цифра будет гореть 1/4 часть времени, и усредненный по времени ток, будет равен 1/4 от тока во включенном состоянии. Информации о допустимости такого подхода в даташите нет, но если у вас работает, то можно успокоить себя этим расчетом.
 

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
@Bruzzer, я не настаиваю, и тему открыл только для того, чтобы пообщаться и узнать мнение других людей по сабжу.
Представьте что индикатор один. В нем восемь сегментов (плюс точка). У нас общий анод и ток втекает в светодиоды из пина порта микроконтроллера. Затем ток распределяется на восемь ветвей. На каждом светодиоде ток задан (резистором) и не меняется. Если включить один сегмент (светодиод) ток — 8 мА. Если два сегмента — 8 + 8 мА. Если четыре — 8+8+8+8 мА. Если включить восемь сегментов то суммарный ток вытекающий из пина подключенного к общему аноду будет 8*8 = 64 мА.
 

EugeneFrol

✩✩✩✩✩✩✩
17 Апр 2024
55
9
50
Прошу прощения. По поводу ключей перегнул. Но динамика та же. Не найду схему, где нет этих резисторов и ключей.
А всё что находиться действительно будет работать с перегрузками на тяжелый цифрах.
 
Изменено:

poty

★★★★★★★
19 Фев 2020
3,578
1,024
@Esteriman, а зачем сравнивать статический режим с динамическим? Вы сможете в таком режиме (статическом) отображать данные на 4-х разрядном индикаторе, который Вы привели в пример?
Для статических режимов аноды не переключаются и постоянно подключены к источнику питания, а не к выводам МП.
 
  • Лойс +1
Реакции: VictorArx

Esteriman

✩✩✩✩✩✩✩
4 Июн 2025
28
1
Вот интересно кто-нибудь тестировал МК на предмет реального максимально возможного тока (до выгорания) как в статическом так и в динамическом режимах.
 

Эдуард Анисимов

★★★★★★✩
23 Сен 2019
2,484
992
59
Марий-Эл
@Esteriman, Есть даташит. Есть максимальные значения.
Не понимаю, зачем и ради чего превышать эти значения?
Хотите увидеть как выходит священный дым?
Поставьте танталовый конденсатор наоборот и подайте напряжение в два раза больше. Вы будете неприятно удивлены. Заодно можно будет и выхлопом подышать. А можно электролит на 50 вольт воткнуть в розетку. Тоже интересный вариант. Срыв урока обеспечен.

После этого мне будут рассказывать, что Ардуина понижает порог вхождения в программирование?
100 раз ХАХА !!!!
Начинающие просто начинают думать, что всё просто. Достаточно подключить пару библиотек и корабль имени Илона Маска взлетит.
Хочу вас разочаровать. ХРЕН там !!!!
Что бы всё работало, нужно думать. Нужно читать и анализировать. Что современные жертвы ЕГЭ не умеют.
Только часть жертв понимают, что что то не так и начинают учиться. Остальные просто стонут.
А те, которые не понимают, считают что лучшего образования чем у них, в мире нет.

Вот интересно кто-нибудь тестировал МК на предмет реального максимально возможного тока (до выгорания) как в статическом так и в динамическом режимах.
Я не тестировал. Бывало ошибался.
Священный дым выходит. Больше ничего интересного. Кроме суммы на которую ты залетел.
 
  • Лойс +1
Реакции: Геннадий П