Хотя Nissan Leaf почти не требует ремонта и обслуживания, иногда что-то сделать всё-таки требуется.
А официальные дилеры обычно заряжают за смену только салонного фильтра цену полного обслуживания бензинового автомобиля.

Что-то простое можно и сделать самому. Если знать как

1. Самостоятельное обслуживание тормозов, замена тормозных колодок и тормозных дисков Nissan Leaf

 

Введение

Очень сложно найти характеристики (тип химии, напряжение, ёмкость, температурный диапазон) старых модулей от NissanLeaf ZE0 и новых от Ниссан Лиф AZE0, обычно везде указывается характеристики всей высоковольтной батареи. Поэтому я попробовал собрать всю информацию в одном месте.

Зачем нужны отдельные модули

Модули от Nissan Leaf очень хорошо подходят для самоделок. При просадке ёмкости до 60-70% машиной уже сложно пользоваться, владельцы авто либо покупают новую батарею либо перепаковывают старую, а старые модули при этом девать некуда. По этой причине их можно довольно дёшево купить. В разы дешевле LiIon, LiPo, NMC и свинцово-кислотных аккумуляторов такой же остаточной ёмкости.

Что из них можно делать:

  • Хранить энергию вырабатываемую солнечной электростанцией
  • Если у вас биржевой тариф на электричество (а уже такое бывает!) то можно запасать очень дешёвое электричество по низкой цене, и тратить его в часы пик. При наличии в доме электрического бойлера - экономия будет очень заметной.
  • Собрать дополнительную батарею для Nissan Leaf из старых элементов. Лучше, конечно собирать батарею из новых, т.к. вес всё-таки очень важен, но это безумные деньги. А вот со старыми элементами получится не такая уж большая ёмкость, но очень бюджетно

Чем отличаются модули Nissan Leaf Gen1, Gen2, Gen3, Gen4. Корпус.

Модули Gen1 - это модули аккумулятора 24 кВтч Nissan Leaf ZE0. Одинарный размер. Корпус гладкий. Модули Gen1 могут иметь разную полярность (разное расположение плюсовой клеммы. Положительный вывод можно легко опознать по красному ободку вокруг клеммы).

Модули Gen2 - модули аккумулятора той же ёмкости  24 кВтч, но от более нового Nissan Leaf AZE0. Напомню, что в AZE0 была переделана электрическая система автомобиля. Аккумулятор тоже немного изменился при неизменной ёмкости. Как минимум поменялся высоковольтный разъём, который не совместим с ZE0. Модули внутри абсолютно такого же размера, и такой же ёмкости. Разница только в продавленных выемках в защитном металлическом кожухе.

Модули Gen3 - модули от высоковольтного аккумулятора ZE1. Ёмкость аккумулятора 30 кВтч или 40 кВтч. Двойной размер.

Модули Gen4 - модули от нового NissanLeaf e+ с аккумулятором 62 кВтч. Упакованы в большие блоки. Блоки бывают 3х размеров в зависимости от того в какой части аккумулятора они находятся.

 Nissan Leaf Gen1 battery moduleNissan Leaf Gen2 battery ModuleNissan Leaf Gen3 battery ModuleNissan Leaf Gen4 battery Module

 

Модули Gen1 и Gen2.

Электрические характеристики

С электрической точки зрения модули Gen1 и Gen2 ничем не отличаются.

Каждый модуль внутри содержит 4 ячейки. Две параллельные группы по 2 ячейки (конфигурация 2s2p). Средняя точка выведена на средний выходной контакт.

Nissan Leaf схема ячейки высоковольтной батареи

Химия ячеек: LMO (Lithium Manganese Oxide).

Номинальное напряжение: 3.65 В на ячейку, 7.3 В - напряжение модуля
Номинальная ёмкость (А*ч): 64 Ач весь модуль, 32 Aч - ёмкость одной ячейки
Номинальная ёмкость (Вт*ч) : 467 Вт*ч

Диапазон рабочих напряжений

   Разряд/Заряд
  0-100%
20-80% 
1 ячейка
 3.0 В - 4.15 В  3.3 В - 4.0 В
 Весь модуль
 6.0 В - 8.3 В  6.6 В - 8.0 В

Выводные терминалы:

  • Токовые выводы - винт M6
  • Измерительный вывод (средняя точка) - винт M4

Размеры и вес модуля (Gen1 и Gen2)

Размеры ДхШхВ: 303х223х35 мм

Вес: 3.8 кг (4 ячейки по 800 г + корпус 600 г)

Диаметр крепёжных отверстий: 9.1 мм

Nissan LEAF Gen1 модуль размеры

Модули Nissan Leaf Gen3 (батарея 30кВтч и 40кВтч)

Электрические характеристики

Химия ячеек: NMC (Lithium nickel manganese cobalt oxides)

В модулях третьего поколения 8 ячеек. Наружу выведено 6 контактов.

В батареи 24 модуля.

Номинальное напряжение ячейки: 3.65 В
Номинальное напряжение модуля: 14.6 В
Конфигурация ячеек: 4s2p.
Ёмкость одной ячейки (Ач): 42.8 Ач для 30кВтч и 57.1 для 40 кВтч [Приблизительные значения. Точных данных нет]
Ёмкость модуля (Ач): 85.6 Ач для 30кВтч и 114.3 для 40 кВтч [Приблизительные значения. Точных данных нет]
Ёмкость одной ячейки (Втч): 156 Втч для 208 Втч и 1.67 кВтч для 40 кВтч [Приблизительные значения. Точных данных нет]
Ёмкость модуля (Втч): 1.25 кВтч для 30кВтч и 1.67 кВтч для 40 кВтч [Приблизительные значения. Точных данных нет]

Значения приблизительные - т.к. значения были пересчитаны исходя из ёмкости всей батареи. Точные данные по ёмкости найти не удалось.

Размеры и вес

Размеры ДхШхВ: 300х222х68 мм

Вес: 8.7 кг

Модули Nissan Leaf Gen 4 (62 кВтч)

Мало кто разбирал эти батареи на отдельные модули, поэтому информации по модулям пока очень мало.

Первое поколение Nissan Leaf было выпущено в 2010 году. Это ZE0. Я не буду рассматривать эту версию. Лишь упомяну о том, что модуль зарядки там стоял за задними сидениями.

В 2013 году была большая переделка, и с этого времени это уже совсем другой Лиф - AZE0, по крайней мере с точки зрения электрической части. От более старой версии его можно отличить по отсутствию электронного тормоза между водительским и пассажирским сидением (то место, где обычно ручник). И по отдельной педали стояночного тормоза (третья педаль слева).

Если вы покупаете старый Nissan Leaf, то лучше брать AZE0 - там и лучше продумана электрическая часть, и проще делать апгрейд батареи.

Где расположен блок зарядки и инвертор у Ниссан Лиф.

У поколения AZE0 и ZE1 Всё расположено под капотом, и крепится на блок двигателя и редуктора. То, что на первый взгляд выглядит большим монолитным двигателем - на самом деле три блока: двигатель с редуктором, блок зарядки, и инвертор (преобразует постоянный ток в частотный сигнал подающийся на двигатель).

Есть очень хорошее видео разборки двигателя от Nissan Leaf, на котором видно где что расположено.

Nissan Leaf резистор предзарядки вместе с контакторами

На картинке блок контакторов который находится внутри аккумулятора Nissan Leaf. По краям контакторы, а в центре керамический резистор предзарядки.

Как можно спалить PreCharge resistor

В статье про дополнительную батарею для Nissan Leaf я уже рассказывал про автора ютуб-видео, который подключился к высоковольтной шине машины (не к соединению за контакторами внутри батареи, а именно к высоковольтной шине). И выключил сначала машину, а потом батарею. В итоге у него сгорел резистор предзарядки, и машина перестала заряжаться.

Я видел и другие сообщения на форумах. Но как они спалили резистор - подробностей не знаю.

Что такое pre-charge резистор и от чего он горит

Если вкратце, то резистор предзарядки нужен чтобы не сжечь контакты и электронику большим током при переключении высоковольтной нагрузки. Допустим у вас есть аккумулятор 400В и остальная часть системы с очень большой ёмкостью (конденсатор большой ёмкости, чтобы сгладить скачки напряжения), которая находится не под напряжением. Если вы сразу подключите аккумулятор к остальной системе, то аккумулятор должен будет зарядить конденсатор с 0 до 400В почти мгновенно. В идеальной системе ток будет бесконечным. В реальной он будет определяться сопротивлением на пути тока (в основном это провода).

Чтобы не быть голословным можно хоть как-то это прикинуть. Можно принять сопротивление проводов за 0.01 Ом (поправьте меня если моя прикидка далека от истины). В сам момент включение на концах провода будет разница в 400В. Ток будет 400 В / 0.01 Ом = 40 тыс. ампер. Такой ток не выдержат ни контакторы ни тем более полупроводники (если они будут в цепи). Даже при 0.1 Ом, ток будет 4 000 А, что тоже много.

Поэтому чтобы не убить электронику таким огромным током, сначала, на долю секунды,ток подают через резистор предзарядки. У Nissan Leaf номинал precharge resistor 40W 30 Ом. Давайте посчитаем. 200 В / 30 Ом = 6.7 А. А это уже не нормальный ток. За короткое время конденсатор заряжается. После чего замыкаются уже основные контакты, но громадный ток уже не течёт т.к. напряжения выровнялись.

Вот видео, в котором показывается последовательность сигналов на высоковольтном реле и реле включающем резистор предзарядки:

Чем страшна дополнительная батарея в багажник?

В России есть много мастерских, которые предлагаю установку дополнительной батареи в багажник. В Европе существенно меньше, но таким тоже занимаются. Я видел три разные конструкции

  • Подключение в параллель к основной батареи + отдельная BMS для дополнительной батареи
  • Подключение в параллель к ячейкам батареи. Это много дополнительных проводов (96, если не ошибаюсь), но используется родная BMS Лифа.
  • Подключение в параллель к основной батареи, но без всякой BMS. Обладатель этого решения пишет, что за год использования всё нормально... но лично мне кажется что это как-раз хороший способ сжечь свою машину! Если первые два варианта ещё имеют право на жизнь, но вариант без BSM уже из разряда "не делайте так никогда".

Это типовые три варианта, и много кто так делал и остался доволен. Но мне они совсем не по душе. А вот почему.

Нужно снимать основную батарею

Меньшая из проблем состоит в том, что нужно выводить кабель из основной батареи, подключая его к клеммам за контакторами основной батареи. И для этого батарею нужно снимать. В домашней мастерской это не сделаешь: вес батареи около 300 кг. Но эта меньшая из проблем т.к. обычно владельцы отдают свой Nissan Leaf в мастерскую, и через неделю получают готовую машину с дополнительной батареей в багажнике.

Необратимые изменения

А большая из проблем состоит в том, это необратимые изменения: при необходимости нельзя просто взять всё это и снять, это уже становится частью машины.

Подключаем дополнительную батарею без необходимости снимать основной аккумулятор

Я нахожусь под впечатлением видео 6-летней давности, в котором человек подключился к высоковольтной шине самой машины, поставив тройник на высоковольтный провод идущий к аккумулятору.

Да, забегая вперёд скажу, что он спалил резистор предварительной зарядки (pre-charge resistor), и его машина перестала заряжаться. Но, это был только прототип, и если довести его до ума, то получится очень красивое решение!

Я написал отдельную статью про то что такое резистор предзарядки и как его можно спалить.

А касательно подключения батареи к высоковольтной шине - вот 2 видео от Leaf Xpack. Первое про то как он подключил дополнительную батарею. А второе - драйв тест прототипа.

И второй успешный тест прототипа:

 

В чём преимущества решения подключиться к высоковольтной шине Ниссан Лиф

Как я уже упоминал - главное преимущество - всё можно вернуть в первоначальное состояние, как будто ничего и не было. Аккумулятор никто не дырявил, и для отключения нужно просто залезть под машину, даже не нужно ничего откручивать.

Второе преимущество - Модульность! Отключаемые батареи могут быть модулями, которые можно снимать и ставить в любое время,  апгрейдить на большую ёмкость, и держать несколько штук. Если вы где-то застряли и у вас кончился заряд - достаточно вытащить модуль, и зарядить его от розетки, либо попросить друга привезти вам запасной модуль из дома.

Третье преимущество - это можно сделать самому. 300 килограммовую батарею вытаскивать не нужно. И все подключения можно сделать самому (конечно если вы понимаете что делаете. Всё-таки там 400В, и в отличие от 220В из розетки 400В в разы смертельнее)

В чём недостатки

Да, недостатков много.

  • Нет штатной зарядки. Доп батарею придётся заряжать отдельно. (В некоторых вариантах она есть, см. ниже)
  • Можно сжечь резистор предварительной зарядки. Случается это когда машина отключается, а вот внешняя батарея остаётся подключенной к высоковольтной шине. Как-раз это важный этап при переходе от прототипа к реальному продукту. Нужна дополнительная плата, которая будет отключать дополнительную батарею при отключении основной.
  • Нужна сложная электроника. Сложная не значит дорогая. В моём понимании хватит дешёвого микроконтроллера за 10 долларов. Контроллер подключается к CAN шине, и включает и отключает дополнительную батарею. Сложно тут в написании прошивки. Кто-то должен это сделать, после чего будет готовое решение - плата, которая будет управлять доп. батареей. И это уже будет простое и надёжное решение.

Какую внешнюю батарею подключать

Первый вариант

Leaf Xpack, автор предыдущих ютуб видео, собрал самодельную батарею из ячеек 18650. И у него очень интересное решение: 2 половины по 200В, которые при зарядке он подключает параллельно, а для питания машины они через реле подключаются последовательно, на выходе будет 400В. Думаю это очень трудоёмко собирать из отдельных ячеек, но вариант интересный, особенно переключение последовательно-параллельно для зарядки.

Второй вариант

Можно набрать 96 ячеек с такой же химией, что и основная батарея Nissan Leaf. Это Nickel Manganese Cobalt (NMC), в западных статьях ещё называют это Ternary battery.

Тут можно купить новые ячейки CATL. Притом не отдельные ячейки, а блоки 4SP1 (4 последовательно соединённые ячейки). Таких блоков понадобится 32 шт. И они бывают разных размеров и разной ёмкости.
Можно собрать либо маленькую лёгкую батарею которую можно вытаскивать, либо же большую и тяжёлую которую уже нужно прикручивать к багажнику (помните про безопасность).

Обязательно нужно BMS, которое будет выравнивать напряжение отдельных ячеек. Можно использовать BMS от NissanLeaf, а можно найти стороннее. Но я, так и не смог найти Bluetooth BMS на такое большое количество ячеек. Если вы знаете - киньте ссылку в комментарии, буду вам очень благодарен.

Преимущество данного метода в том, что батарея батарею можно будет заряжать вместе с основной батареей. Т.е. это будет полным аналогом описанного в начале варианта с параллельным присоединением к штатной батареи Ниссан, за исключением того факта, что конструкция разборная, легко отключаемая, и не нужно дырявить корпус основной батареи.

Третий вариант

Этот вариант более экзотический, но тоже хочется его упомянуть, т.к. у него тоже есть свои преимущества. Можно поставить батарею 12В, 24В, 48В ... 72В любой химии. Хоть дешёвые свинцовые аккумуляторы 12В или батарею от электромотоцикла 72В. Либо же взять два модуля CATL 4s1p и собрать из них компактную батарею с очень нестандартным напряжением 29.6V

Потенциально ту же самую батарею можно заряжать от домашней солнечной электростанции, а потом утром ставить в машину и использовать (400В от обычного солнечного контроллера не зарядишь. А 12В или 24В - вполне. 72В тоже можно, если купить специальный контроллер).

Но для преобразования 12В-400В нужен повышающий DC-DC преобразователь + некая электроника, которая будет за ним следить. И здесь автоматически решается проблема выравнивания потенциалов: если в предыдущем варианте всё-таки нужен precharge resistor (Да, доп. батарея тоже способна создавать огромные токи, даже если она небольшой ёмкости). В варианте с дополнительным преобразователем, этот самый DC-DC будет следить за выходным током и ограничивать его.

Готового решения для преобразователя пока нет, но есть китайские модули, способные делать 400В из 12В при мощности 1000Вт (если не обманывают), их вполне можно использовать как основу. Возможно их придётся переделать для поддержки более высоких входных напряжений, и для этого придётся либо перепаять транзисторы, либо взять из китайской платы только трансформатор, а остальное сделать на своей плате.

С чего начать

  • Нужен переходник для подключения к высоковольтной линии. Нужен разъём со стороны аккумулятора + штекер со стороны машины. Не знаю сколько это будет стоить и боюсь, что найти будет очень сложно.
  • Нужна плата обрабатывающая команды CAN шины. Есть проект Dalla (Daniel Öster) - CAN bridge, который на лету модифицирует сообщения между машиной и аккумулятором, что позволяет ставить на Nissan Leaf аккумулятор от новой модели (производитель это не поддерживает). Плату можно купить на алиэкспрессе, пример прошивки уже есть, нужно только научиться ловить нужные сообщения, и подавать сигнал на внешнюю ногу контроллера, которая будет управлять реле / контакторами.
  • Нужен контактор + резистор предзарядки. Наверное можно взять блок целиком из того же Nissan Leaf. В варианте с DC-DC думаю, что можно подключить через дешёвое 10А реле (напрямую всё-таки не советую), токи там будут не такие большие (1000 Вт / 400 В = 2.5А ). Сложнее найти реле именно на 400В (на 220В не рекомендуется т.к. там меньше зазоры между контактами и может проскакивать искра).
  • Нужна плата управления контактором. Она принимает сигнал 3.3В от микроконтроллера, и подаёт 12В напряжение на катушку контактора.

Давайте делиться информацией

Я вдохновился опытом Dalla и опытом Leaf Xpack и загорелся идеей сделать такую внешнюю батарею себе. Не знаю сколько у меня уйдёт на это времени и сил. Буду держать вас в курсе.

Пишите комментарии: предлагайте решения, указывайте на мои ошибки и рассказывайте о своих успехах!

Переход с Artister на Cassiopeia

Joomla 4 не поддерживает старый шаблон Artister. Как быть?

Эпоха использования Artisteer (программы конструктора шаблонов) ушла: Артистер больше не экспортирует шаблоны в формат Joomla 4, а старые шаблоны не совместимы с Joomla 4. Есть несколько онлайн сервисов, позволяющих сделать шаблон для Joomla 4, но они не стоят нашего внимания. Лучший способ - кастомизация стандартного шаблона Cassiopeia.

Чем Cassiopeia лучше шаблонов Artister

Casslipea - модульный легковесный шаблон. Он написан с использованием библиотеки Bootstrap 4 - популярной фронтенд библиотеки, оптимизированной как под десктоп, так и под мобильные телефоны.

Artister - весьма старый генератор шаблонов. Он появился ещё в 2008 году, и действительно был прорывом. А сейчас он уже давно не обновляется и устарел. Поддержка мобильных устройств у него есть. Но гугл ругается что сайт не оптимизирован под мобильные устройства.õ

Настраиваем Кассиопею

Только на первый взгляд Cassiopeia выглядит примитивно и не идёт ни в какое сравнение с Artister.
На самом деле всё очень хорошо настраивается. Да, порог вхождения выше: это не кнопочки тыкать, а придётся разбираться в CSS.

Но одним CSS файлом можно превратить этот невзрачный шаблон во что угодно!
Очень хорошо это описано в англоязычной статье.

Вы создаёте файл /media/templates/site/cassiopeia/user.css, в котором вы можете переопределить всё, что угодно: фон, меню, заголовок, шрифты, цвета. А Cassiopea сама подхватывает новый css.

Как сменить шрифт в Joomla Cassiopeia

Можно загружать шрифты прямо на сайт. Но лучшее решение - использовать https://fonts.google.com.

После выбора подходящего шрифта его можно применить следующим образом.

Смена шрифтов для всего сайта

@import url('https://fonts.googleapis.com/css2?family=Titillium+Web:wght@400;600&;display=swap');
:root {
--cassiopeia-font-family-body: "Titillium Web", sans-serif;
--cassiopeia-font-family-headings: "Titillium Web",sans-serif;
--cassiopeia-font-weight-headings: 600;
--cassiopeia-font-weight-normal: 400;
}

Смена шрифтов для нужного модуля (например главного меню)

@import url('https://fonts.googleapis.com/css2?family=Vina+Sans:wght@400&display=swap');
 .container-header .mod-menu {
font-family: "Vina Sans", sans-serif;
font-weight: 400;
font-size: 30px;
}

И шрифт меняется:
Пример смены шрифта для Cassiopeia

 

Как программировать STM32 без программатора

Во многих микроконтроллерах STM32 есть бутплоадер. Для большинства моделей (есть исключения) нужно соединить ножку микроконтроллера BOOT c VCC (напряжением питания 3.3V), и после этого подать питание (или, как вариант, нажать на кнопку RESET, если питание уже подано). В результате микроконтроллер загрузится в режиме bootloader. Bootloader умеет прошивать микроконтроллер по UART и I2C. Достаточно купить у китайцев какой-нибудь преобразователь USB->serial (есть много разных, не буду рекламировать ничего конкретного), и можно прошивать микроконтроллер без программатора.
А если микроконтроллер поддерживает и USB, то можно и обойтись без преобразователя.

К каким ножкам STM32F030 подключаться для программирования UART

stm32f0 serial programming

У большинства микроконтроллеров это ножки PA9 и PA10.
PA9 - нужно подключать к RXD (или RX)
PA10 - нужно подключать TXD (или TX)

Бывают и альтернативные ножки PA14, PA15 (их нет в корпусе с 20 ножками) :
PA14- нужно подключать к RXD (или RX)
PA15 - нужно подключать TXD (или TX)

Какими программами пользоваться для программирования STM32F030

Я пользователь линукса и пользуюсь stm32flash, возможно и под Windows есть что-то аналогичное

stm32flash -w Release/my-firmware.bin -v /dev/ttyUSB0

Обратите внимание, что расширение прошивки *.bin, если вы пользуетесь CubeIDE, то по умолчанию там генерируется только файл прошивки *.elf, для генерации *.bin нужно поставить соответствующую галочку в настройках проекта.

Хватит ли мне 16 Кб Flash памяти. Это мало или много?

STM32F030 один из простых и дешёвых контроллеров. И на первый взгляд 16Кб очень даже много. Но если вы используете CubeIDE/CubeMx, то генерированный код занимает довольно много места. Конечно, всё зависит от того, что именно вы используете. Лично мой опыт показал, что даже довольно простой код, забирающий данные из микросхемы по SPI, и выдающий их по запросу UART/MODBUS, с небольшой обработкой чисел float, всё-таки не влез в 16 кБ флеш памяти микроконтроллера, а уж об обработке double и речи быть не могло.

Есть способы всё-таки уменьшить итоговый размер прошивки. О них - в отдельной статье.

А в целом я бы рекомендовал не рисковать, и для новых разработок, когда трудно предсказать размер будущего кода, взять микроконтроллер чуть дороже с 32 кБ flash памяти. Например - STM32F060.

Введение

внутренняя схема микросхемы акселерометра

Со времени последнего моего обзора акселерометров прошло 13 лет. И как ни странно, мало что поменялось: adxl345 всё ещё в продаже, и пользуется большой популярностью. Но появилось ли что-то новое? Лучше, и дешевле?
ADXL345 я решил поставить первой строкой в таблице, чтобы было видно, что за эти 13 лет изменилось.

Курс рубля скачет, поэтому цену будем писать в долларах.

Общие характеристики акселерометров

 Модель Наличие
гироскопа
Наличие
датчика
магнитного
поля
Напряжение
питания, В
Интерфейсы Пределы 
измерений
Частота
выборки,
(samples/s)
Цена, USD
(2023 г)
ADXL345  -  - 2.0-3.6  I2C, SPI  ±2g, ±4g, ±8g,±16g  0.1-3200  $1.8
QMI8658C  +  - 1.71-3.6  I2C, SPI, I3C, MIPI  ±2g, ±4g, ±8g,±16g  1-1000  $1.6
LSM6DS3 + -  1.71-3.6  I2C, SPI  ±2g, ±4g, ±8g,±16g 1-6667  $0.7
LSM6DSR  + - 1.71-3.6  I2C, SPI, I3C, MIPI  ±2g, ±4g, ±8g,±16g  1.6-6667  $1.7
STK8321  -  -  1.71-3.6  I2C, SPI  ±2g, ±4g, ±8g  7.8-1000  $0.6
BMI160  + -  1.71-3.6  I2C, SPI  ±2g, ±4g, ±8g,±16g  12.5-1600  $2.6
LIS2DW12TR  -  -  1.62-3.6  I2C, SPI  ±2g, ±4g, ±8g,±16g  12.5-1600  $0.8
QMI8610 + - 2.7-3.47  I2C, SPI  ±2g, ±4g, ±8g,±16g  8-1000 $1.6
LIS3DHTR - -  1.71-3.6 I2C, SPI  ±2g, ±4g, ±8g,±16g 1-5000 $0.7
ADXL355  -  -  2.25 - 3.6  I2C, SPI  ±2g, ±4g, ±8g  1-1000  $26.5

Метрологические характеристики

Погрешности, устраняемые калибровкой

В теории погрешность нуля и погрешность чувствительности можно устранить калибровкой. На практике всё сложнее. Для калибровки погрешности нуля нужно располагать акселерометр строго перпендикулярно одной из осей, и калибровать две другие оси при условии полной неподвижности, затем калибровать. Как обеспечить строгую перпендикулярность, чтобы проекция вектора G не попадала на другие две оси в домашних условиях - не очень понятно. Калибровку чувствительности калибровать ещё сложнее: можно калибровать по значению G, но это не константа, значение G разное в разных точках нашей планеты.

Модель Погрешность нуля, mg Приведённая погрешность нуля, %
(приведённая к концу наименьшего диапазона)
Погрешность чувствительности
ADXL345  150  7.5  10
QMI8658C  100  5  6
LSM6DS3  40    -
LSM6DSR  10  0.5  1
STK8321  50  2.5  -
BMI160  150  7.5  -
LIS2DW12TR  20 1  -
QMI8610  150 7.5  1
LIS3DHTR 40 2 -
ADXL355 75  3.75  -

Температурные погрешности

Модель Температурный
дрейф нуля, mg/°C 
 Температурная нестабильность
коэффициента преобразования, %/°C
 ADXL345  1 0.02
QMI8658C  0.5 0.04
LSM6DS3  0.5 0.03
LSM6DSR  0.1 0.01
STK8321  1 0.02
BMI160  1 0.03
LIS2DW12TR  0.2 0.01
QMI8610  0.5 0.01
LIS3DHTR 0.5 0.01
ADXL355 0.02 0.01

Другие метрологические характеристики

Модель Разрешение, mg/LSB межосевая
чувствительность, % 
Нелинейность,
% от максимума

Выходной шум

ADXL345  3.9  1 0.5 1.1 LSB
QMI8658C  0.061  2  0.75 0.2 mg/√Hz
LSM6DS3 0.061  - - 0.09 mg/√Hz
LSM6DSR  0.061  -  - 0.06 mg/√Hz
STK8321  0.98  1  0.5 0.2 mg/√Hz
BMI160  0.061  1  0.5 0.3 mg/√Hz
LIS2DW12TR  0.244  -  -  0.09 mg/√Hz
QMI8610  0.061  1  1  50 g√Hz (ошибка в даташите?)
LIS3DHTR 1 - - 0.22 mg/√Hz
ADXL355 0.004 1 0.1 0.022 mg/√Hz

Выводы

Хотя, в продаже появились и акселерометры хуже ADXL345 13 летней давности, есть и акселерометры с весьма впечатляющими характеристиками.

Если не брать дорогой и не всегда доступный ADXL355, то явный лидер обзора LSM6DSR. Если правда всё то, что написано в даташите, то у него невероятно низкие шумы, очень низкая погрешность нуля и довольно низкий температурный дрейф. Настораживает то, что в даташите не указана межосевая чувствительность, очень надеюсь, что она стандартно 1% (маловероятно, что со всеми остальными отличными характеристиками межосевая чувствительность огромная, и производитель её скрывает)

Stm32 Nuxleo board Ethernet cable

Введение

CubeMx (или уже обновлённая Cube IDE) предоставляет удобный интерфейс для библиотеки lwip: за несколько минут можно настроить полноценный сервер или клиент.

Неожиданная проблема возникает позже, когда у вас есть готовое отлаженное приложение, и вы решаете сделать мелкую серию: оказывается у всех устройств одинаковый MAC-адрес сетевого адаптера, и соответственно в одной сети они существовать не могут. Откуда брать уникальные мак-адреса?

Правильное решение

Выдачей MAC-адресов заведует соответствующая организация. И по-правильному нужно купить определённый диапазон адресов. Во-первых, по началу мак-адреса можно определить что устройство выпущенно именно вашей компанией. Во-вторых, у вас будет гарантия уникальности MAC адреса.

Даже если вы так поступили - далее возникает вопрос как на программном уровне обеспечить "распределение" этих адресов вашим устройствам. Об этом читайте ниже.

Менее правильное решение

Библиотека lwip: сама умеет генерировать случайные мак-адреса. Достаточно зайти в настройки и нажать "перегенерировать".

Проблема заключается в том, что CubeMX генерирует код, и мак-адрес вставляет прямо в код программы. Получается что готовая прошивка привязана к конкретной плате. Т.е. если у вас 10 плат, нужно сделать 10 прошивок с отличающимся адресом. А потом при каждом обновлении следить, чтобы новая прошивка была с таким же адресом, как и старая. Очень сомнительное решение, которое трудно поддерживать.

Правильно было бы хранить MAC-адрес в EEPROM, и загружать его оттуда при старте. При этом обеспечивать уникальность либо вручную (заводить файлик с таблицей уникальных адресов уже выпущенных плат, и с каждой новой платой прошивать последний адрес инкрементированный на 1). Либо же можно проверять EEPROM и если он забит нулями, значит это первый запуск, и мак-адрес можно генерировать рандомно (если менять последние 3 байта, то вероятность случайно получить два одинаковых мака - один на 16 миллионов. А вероятность того, что заказчик купит несколько плат, воткнёт их в одну сеть, и среди них окажутся повторяющиеся адреса - совсем близка к нулю).

Так же в EEPROM придётся записывать адреса даже если вы заплатите деньги, и получите официальный собственный диапазон MAC-адресов.

Очень правильное решение

Если вы разводите STM32 на своей плате, или подключаете к макетке Nucleo плату со своей периферией, вам не составит труда добавить на плату ещё одну микросхему за 100 р.

Это внешний EEPROM, внутри которого зашит уникальный MAC-адрес. Это решает сразу две проблемы: вы используете легальный, официально выделенный MAC-адрес  и отпадает всякая необходимость самим следить за уникальностью адресов и самим вшивать их в EEPROM при выпуске.

Microchip предлагает несколько вариантов для I2C, SPI или UNI/O. Микросхема 25AA02E48-I для SPI стоит в рознице от 50 до 200 р.

Хорошее решение "Для бедных"

Если не хочется тратить деньги на официальный диапазон адресов, паять дополнительную микросхему, или вести в отдельном файле учёт адресов всех выпущенных плат, то есть хороший и удобный чисто софтовый вариант. Собственно это статья о нём. Да... он неправильный с точки зрения официальности, и неправильный с точки зрения обеспечения уникальности, но вполне имеет право на жизнь.

У каждого STM32 есть уникальный 32-битный номер

Идея состоит в том, чтобы использовать уникальный 96 битный ID, вшитый в каждый STM32.

Номер состоит из ID подложки + координаты чипа на этом кристалле. Очень интересно какие байты в этом уникальном ID меняются и за что отвечают.

В офисе было несколько плат STM32F7 купленных в разное время: некоторые из одной партии, некоторый гарантированно из другой. Вот какие у них адреса:

20 00 23 00 12 51 : 39 30 31 36 35 33
2d 00 46 00 12 51 : 39 30 31 36 35 33
28 00 34 00 12 51 : 39 30 31 36 35 33
28 00 19 00 12 51 : 39 30 31 36 35 33
23 00 34 00 05 51 : 39 31 33 37 37 39
18 00 38 00 0b 51 : 38 34 35 36 34 33

Адреса в hex. Для удобства разделил их на 2 половины.

Очевидно, что последние 7 байт отвечают за ID кристалла, а первые 5 - за координаты чипа на кристалле. Очень интересно, что там есть нулевые байты, могу лишь предположить, что в других сериях STM32 эти координаты могут быть не нулевыми.

Как видите, больше всего меняется байты 0, 2, 4. Их мы и возьмём.

Меняем последние 3 байта мак-адреса

Мак-адрес состоит из 6 байт: первые 3 байта это ID производителя + 2 флага, последние 3 байта - это уникальный номер самого устройства. Вот их то мы и будем перезаписывать.

Как вычитать уникальный ID для STM32

В таблице представлены начальные адреса для уникального ID процессора. По этому адресу расположено 12 байт.

Серия процессор
STM32
Адрес начала уникального
96-битного ID
 STM32F0, STM32F3 0x1FFFF7AC
 STM32F1 0x1FFFF7E8
 STM32F2, STM32F4  0x1FFF7A10
 STM32L0, STM32L1 (Cat.1, Cat.2)  0x1FF80050
 STM32L1 (Cat.3, Cat.4, Cat.5, Cat.6)  0x1FF800D0

Ниже приведён код для чтения ID для STM32F7

#define STM32F7_UNIQUE_ID_START_ADDR 0x1FF0F420;
const uint8_t *idBytes = (const uint8_t*) STM32F7_UNIQUE_ID_START_ADDR;

Куда вставить код для перезаписи MAC-адреса сетевого адаптера STM32

Мак-адрес нужно менять при инициализации адаптера. Инициализация происходит в сгенерированном файле ethernetif.c:low_level_init().
После константного задания мак-адреса там должна быть секция от /* USER CODE BEGIN MACADDRESS */ до /* USER CODE END MACADDRESS */. Напомню, что свой код можно вставлять только в пользовательские секции, в противном случае при следующем запуске CubeMX при генерации кода из *.ioc проекта ваш код перезатрётся.

Что делать если в функции low_level_init() нет USER CODE BEGIN MACADDRESS? Пользовательская секция появилась там не так давно, в FW_F7 v1.16.1 пользовательская секция уже есть. Если у вас её нет - попробуйте установить последний Firmware Package для вашей серии процессора.

Финальный код будет выглядеть как-то так (автогенерированный код может быть другим):

static void low_level_init(struct netif *netif)
{
uint32_t regvalue = 0;
HAL_StatusTypeDef hal_eth_init_status;
/* Init ETH */
uint8_t MACAddr[6] ;
heth.Instance = ETH;
heth.Init.AutoNegotiation = ETH_AUTONEGOTIATION_ENABLE;
heth.Init.Speed = ETH_SPEED_100M;
heth.Init.DuplexMode = ETH_MODE_FULLDUPLEX;
heth.Init.PhyAddress = LAN8742A_PHY_ADDRESS;
MACAddr[0] = 0x04;
MACAddr[1] = 0x45;
MACAddr[2] = 0x26;
MACAddr[3] = 0x4B;
MACAddr[4] = 0x10;
MACAddr[5] = 0x33;
heth.Init.MACAddr = &MACAddr[0];
heth.Init.RxMode = ETH_RXINTERRUPT_MODE;
heth.Init.ChecksumMode = ETH_CHECKSUM_BY_HARDWARE;
heth.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;
/* USER CODE BEGIN MACADDRESS */

#define STM32F7_UNIQUE_ID_START_ADDR 0x1FF0F420;
const uint8_t *idBytes = (const uint8_t*) STM32F7_UNIQUE_ID_START_ADDR;
// Replace 3 last bytes of autogenerated MAC by 3 bytes
// from stm32 unique id (chosen 3 bytes that really
// unique among a devices of the same seria)
MACAddr[3] = idBytes[4];
MACAddr[4] = idBytes[2];
MACAddr[5] = idBytes[0];

/* USER CODE END MACADDRESS */
hal_eth_init_status = HAL_ETH_Init(&heth);

Фиолетовым выделен фрагмент который необходимо вставить.

Заключение

Я попытался охватить все возможные подходы к заданию уникального MAC-адреса. И по моему личному мнению и правильного и удобного среди них нет: у каждого метода есть какие-то недостатки. Надеюсь данная статья сэкономила хоть немного вашего времени.

Материнская плата для майнинга Asus Formula Maximus

Введение

Если запросить в гугле "материнские платы для майнинга", то вылезет несколько сайтом TOP-10, TOP-20 и т.д. и во всех будут современные материнские платы начиная от 7 тыс рублей. Проблема только в том, процессоры под современные сокеты стоят достаточно дорого (intel i3 на авито начиная с 4 тыс. А новый в магазине начиная с 12 тыс). А с учётом радиатора, вентилятора и оперативной памяти - выходит 20-30 тысяч. Да... это сравнимо с GTX 1070, и почему бы материнской плате не стоить как четверть всей установки.... но действительно ли нужно платить так много за то, что не используешь? Может комплект за 3-4 тыс (материнская плата + процессор + радиатор + оперативная память) справится с задачей не хуже?

Нужен ли для майнинга хороший процессор?

Майнинг идёт на GPU, процессор только выполняет управляющую программу. На это обычно уходит порядка 10-20% процессора. И от производительности процессора хешрейт не зависит. Т.е. покупка современного процессора ничего не меняет.

Старые сокеты и цена на платы и процессоры

На 2021 год цена на процессоры примерно такие:

  • AM3 - 500 р.
  • LGA775 - 500 р.
  • LGA1155 - 500 р.
  • LGA1150 - 1000 р.
  • LGA1151 - 5000 р.

Как выбирать материнские платы для майнинга

Главный показатель на который нужно ориентироваться - это количество слотов PCI-E (PCI Express). Подходят как PCI-E x16 (куда и вставляются карты), так и x1. На специальных платах для майнинга бывает и 12 слотов PCI-E x1. На обычных офисных и геймерских платах от 1 до 6 слотов.

Самые дешёвые материнские платы для майнинга

Пока в моём списке только одна плата

Asus Formula Maximus - 5 слотов PCI-E

Изначально это просто старая хорошая геймерская материнская плата. Довольно дорогая в своё время. Существует много более поздних моделей, но по цене интересна только самая первая модель - с сокетом LGA755.

Asus Formula Maximus поддерживает подключение 5 видеокарт одновременно (проверено на GTX 1060). На старых прошивках биоса, возможно будет ограничение 3-4 карты. Последняя прошивка биоса 1403 (2009 год). Скачать можно либо на странице поддержки продукта, либо по прямой ссылке. Прошивается с помощью флешки с файловой системой FAT32 (NTFS не подойдёт).

 

 

Поиск