Сегодня, например, наткнулся на интересное видео про стоимость разработки и производства смартфона.
Разбор от Nothing.
https://www.youtube.com/watch?v=bny2NJkJGXc
Разбор от Nothing.
https://www.youtube.com/watch?v=bny2NJkJGXc
YouTube
We made MKBHD's Dream Phone
The Nothing team reaches out to MKBHD to see what components he'd like in his dream phone. Working out how much it would cost to develop this custom phone, and collaborating with community member Concept Central to mock up how it would look.
Huge thanks…
Huge thanks…
👍3
Пользуетесь ChatGPT?
У Atmel (ныне принадлежащей компании Microchip) есть линейка контроллеров, которые программируются с помощью интересного интерфейса UPDI (Unified Program and Debug Interface). Примечательно, что для программирования используется всего один провод, что очень удобно для контроллеров, у которых, например, всего 8 выводов.
Однако информации об этом интерфейсе и инструментов для работы с ним не так много.
Сегодня я работал с ним, всё работает. Но вот что забавно: настраивал Raspberry Pi для управления этим UPDI через Python, чтобы прошивать ATtiny1616 из системы автоматического тестирования, занимался трaблшутингом с помощью ChatGPT, и когда я попросил его сформировать команду для чтения fuse-байтов, он предложил следующую строку:
Здесь присутствует параметр -b, который в большинстве подобных библиотек задаёт baud rate (скорость обмена данными), но не в данном случае. В этой библиотеке -b означает количество байт, которые необходимо прочитать.
Так вот, мало того что он не справляется, так еще этот Advanced Reasoning o1, даже когда я ему прямо объясняю где и в чем ошибка, оказывается не способен ее пофиксить.
У Atmel (ныне принадлежащей компании Microchip) есть линейка контроллеров, которые программируются с помощью интересного интерфейса UPDI (Unified Program and Debug Interface). Примечательно, что для программирования используется всего один провод, что очень удобно для контроллеров, у которых, например, всего 8 выводов.
Однако информации об этом интерфейсе и инструментов для работы с ним не так много.
Сегодня я работал с ним, всё работает. Но вот что забавно: настраивал Raspberry Pi для управления этим UPDI через Python, чтобы прошивать ATtiny1616 из системы автоматического тестирования, занимался трaблшутингом с помощью ChatGPT, и когда я попросил его сформировать команду для чтения fuse-байтов, он предложил следующую строку:
pymcuprog -d attiny1616 -t uart -u /dev/ttyUSB0 -b 19200 read --memory fuses
Здесь присутствует параметр -b, который в большинстве подобных библиотек задаёт baud rate (скорость обмена данными), но не в данном случае. В этой библиотеке -b означает количество байт, которые необходимо прочитать.
Так вот, мало того что он не справляется, так еще этот Advanced Reasoning o1, даже когда я ему прямо объясняю где и в чем ошибка, оказывается не способен ее пофиксить.
👍2
Забавно, только что мне оказался доступен o3-mini-high (так совпало) и вот он справился.
Потестим еще.
Потестим еще.
👍2
Pogo пины для тестирующего стенда.
Надо же на чем-то закончить на сегодня и лечь спать не слишком поздно
Надо же на чем-то закончить на сегодня и лечь спать не слишком поздно
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Отлаживаю софт.
ssh + vscode + raspberry pi очень удобная связка, оказывается
ssh + vscode + raspberry pi очень удобная связка, оказывается
👍1
В общем, я завершил работу над двумя стендами для автоматического тестирования, хотя и столкнулся с некоторыми трудностями.
Дело в том, что testjig пришлось подгонять сразу под две разные платы. Формально они соответствуют одной спецификации, но, как видно на фото, на деле отличаются друг от друга. В итоге одна плата вставала в стенд свободно, а вторая не проходила и требовала дополнительной обработки. Более того, при установке иглы контактировали с платами со смещением, поэтому мне пришлось тщательно регулировать их положение, чтобы обеспечить точное попадание на обеих платах. Это не самый оптимальный подход, но в итоге всё заработало.
В будущем стоит учитывать, что лучше проектировать testjig под уже устоявшийся технологический процесс, особенно если форма платы нестандартная.
Уже после завершения работы мне пришла идея, что было бы лучше фиксировать платы не по окружности, а по четырём имеющимся отверстиям.
Подумываю в дальнейшем делать аналогичные отверстия и на своих платах.
Дело в том, что testjig пришлось подгонять сразу под две разные платы. Формально они соответствуют одной спецификации, но, как видно на фото, на деле отличаются друг от друга. В итоге одна плата вставала в стенд свободно, а вторая не проходила и требовала дополнительной обработки. Более того, при установке иглы контактировали с платами со смещением, поэтому мне пришлось тщательно регулировать их положение, чтобы обеспечить точное попадание на обеих платах. Это не самый оптимальный подход, но в итоге всё заработало.
В будущем стоит учитывать, что лучше проектировать testjig под уже устоявшийся технологический процесс, особенно если форма платы нестандартная.
Уже после завершения работы мне пришла идея, что было бы лучше фиксировать платы не по окружности, а по четырём имеющимся отверстиям.
Подумываю в дальнейшем делать аналогичные отверстия и на своих платах.
❤2👍1
Создаю устройство, которое, помимо своей основной задачи, должно ещё и более-менее точно отслеживать состояние заряда собственного аккумулятора.
Обычно принято считать, что в такой задаче нет ничего сложного: просто измеряешь напряжение, и всё. Например, если есть 4,2 В — значит, заряд 100%, а если 3 В — то 0%.
Но на практике всё гораздо сложнее. Напряжение на аккумуляторе лишь косвенно отражает реальный уровень заряда. Изучая, как лучше подойти к решению этой задачи, я наткнулся на микросхему MAX17048. Это очень простое устройство, внутри которого заложена математическая модель аккумулятора, учитывающая особенности его работы.
Интересный пример — график справа. На нём наглядно показано, что одно и то же напряжение 3,85 В может соответствовать совершенно разным уровням заряда: 2%, 50% и 72%.
Конечно, такой подход не обеспечивает абсолютной точности, зато он очень прост и дешев в реализации. При этом точность всё равно оказывается намного выше, чем при банальной аппроксимации диапазона напряжений (от 3 до 4,2 В) в шкалу от 0 до 100%. В большинстве практических задач пользователь даже не заметит этой небольшой погрешности.
Обычно принято считать, что в такой задаче нет ничего сложного: просто измеряешь напряжение, и всё. Например, если есть 4,2 В — значит, заряд 100%, а если 3 В — то 0%.
Но на практике всё гораздо сложнее. Напряжение на аккумуляторе лишь косвенно отражает реальный уровень заряда. Изучая, как лучше подойти к решению этой задачи, я наткнулся на микросхему MAX17048. Это очень простое устройство, внутри которого заложена математическая модель аккумулятора, учитывающая особенности его работы.
Интересный пример — график справа. На нём наглядно показано, что одно и то же напряжение 3,85 В может соответствовать совершенно разным уровням заряда: 2%, 50% и 72%.
Конечно, такой подход не обеспечивает абсолютной точности, зато он очень прост и дешев в реализации. При этом точность всё равно оказывается намного выше, чем при банальной аппроксимации диапазона напряжений (от 3 до 4,2 В) в шкалу от 0 до 100%. В большинстве практических задач пользователь даже не заметит этой небольшой погрешности.
👍3👀1
А вот и рендеры девайса.
Уже жду их с Китая)
Эти контакты слева для маленького OLED дисплея
Уже жду их с Китая)
Эти контакты слева для маленького OLED дисплея
❤4🔥2👍1👀1
Еще одна плата - драйвер двигателей на MOSFET транзисторах.
2 Н моста по 4 транзистора, выход для лампы, 2 входа для управления и 2 потенциометра для настройки режима работы.
Поставил драйвера на нижние плечи моста, чтобы максимально быстро заряжать/разряжать их затворы и можно было плавно управлять движками. Защита от переполюсовки на транзисторе и функция измерения тока движка, чтобы останавливать его по превышению порога тока.
Уложился в 2 слоя, компоновка получилась красивая. Нижний полигон под землю. Верхний слой по краям сверху, снизу и слева под +24В для транзисторов, а обратные токи мостов по центру платы.
Теперь, пока все эти платы едут, время писать для них прошивки)
2 Н моста по 4 транзистора, выход для лампы, 2 входа для управления и 2 потенциометра для настройки режима работы.
Поставил драйвера на нижние плечи моста, чтобы максимально быстро заряжать/разряжать их затворы и можно было плавно управлять движками. Защита от переполюсовки на транзисторе и функция измерения тока движка, чтобы останавливать его по превышению порога тока.
Уложился в 2 слоя, компоновка получилась красивая. Нижний полигон под землю. Верхний слой по краям сверху, снизу и слева под +24В для транзисторов, а обратные токи мостов по центру платы.
Теперь, пока все эти платы едут, время писать для них прошивки)
🔥4❤2👍1👀1
Последние несколько дней играл в увлекательную игру "Найди 10 причин, почему эта плата не работает".
Ко мне обратились с просьбой разобраться, откуда у них столько проблем с электроникой, и прислали платы с одной конкретной бедой — двигатель не держал обороты под нагрузкой.
В этой системе двигатель питается через преобразователь напряжения: он повышает напряжение с аккумулятора 3,7 В до 10–12 В, необходимых мотору. При этом ток аккумулятора под нагрузкой легко достигает 2 А.
В чём же дело? Когда я открыл схему и посмотрел на трассировку, я просто не знал, с чего начать. Ощущение, что компоненты просто как попало раскидали по плате и соединили как придётся.
Первое, что бросается в глаза — ужасный дизайн самого преобразователя (4). С ним связано множество проблем: неудачный выбор индуктивности (3), ужасная компоновка и разводка (конденсатор 6 и земляной полигон которого нет), плюс неэффективный режим работы.
Транзистор (2), который используется для включения преобразователя, имеет сопротивление канала 50 мОм. Предохранитель (1) — до 30 мОм, а при нагреве и больше. Добавим к этому тонюсенькую дорожку (7) с сопротивлением 20 мОм.
Итог: на входе преобразователя напряжение оказывается ниже напряжения аккумулятора на 0,1–0,3 В. А если предохранитель ещё и дефектный (а у них такое случается), то просадка становится ещё сильнее.
Это снижение входного напряжения дополнительно ухудшает КПД преобразователя, он греется ещё больше — и привет, тепловой разгон (который еще сильнее увеличивает сопротивление всего что там вокруг).
Каждый из пунктов вносит свой вклад. Когда я зашунтировал это все, поставил емкости кое-где, плата стала работать в разы лучше. Хотя преобразователь все равно прилично греется.
Написал им отчет, привел осциллограммы (на первой падение напряжения на этом участке на дефектной плате 0,4В, на второй на улучшенной <0,1В, как должно быть), вроде довольны)
Ко мне обратились с просьбой разобраться, откуда у них столько проблем с электроникой, и прислали платы с одной конкретной бедой — двигатель не держал обороты под нагрузкой.
В этой системе двигатель питается через преобразователь напряжения: он повышает напряжение с аккумулятора 3,7 В до 10–12 В, необходимых мотору. При этом ток аккумулятора под нагрузкой легко достигает 2 А.
В чём же дело? Когда я открыл схему и посмотрел на трассировку, я просто не знал, с чего начать. Ощущение, что компоненты просто как попало раскидали по плате и соединили как придётся.
Первое, что бросается в глаза — ужасный дизайн самого преобразователя (4). С ним связано множество проблем: неудачный выбор индуктивности (3), ужасная компоновка и разводка (конденсатор 6 и земляной полигон которого нет), плюс неэффективный режим работы.
Транзистор (2), который используется для включения преобразователя, имеет сопротивление канала 50 мОм. Предохранитель (1) — до 30 мОм, а при нагреве и больше. Добавим к этому тонюсенькую дорожку (7) с сопротивлением 20 мОм.
Итог: на входе преобразователя напряжение оказывается ниже напряжения аккумулятора на 0,1–0,3 В. А если предохранитель ещё и дефектный (а у них такое случается), то просадка становится ещё сильнее.
Это снижение входного напряжения дополнительно ухудшает КПД преобразователя, он греется ещё больше — и привет, тепловой разгон (который еще сильнее увеличивает сопротивление всего что там вокруг).
Каждый из пунктов вносит свой вклад. Когда я зашунтировал это все, поставил емкости кое-где, плата стала работать в разы лучше. Хотя преобразователь все равно прилично греется.
Написал им отчет, привел осциллограммы (на первой падение напряжения на этом участке на дефектной плате 0,4В, на второй на улучшенной <0,1В, как должно быть), вроде довольны)
🔥3⚡1❤1👍1🗿1