Категории: Компьютер

Установка Raspberry Pi в ноутбук + о аккумуляторах, зарядке и т.д.

Старая техника, компьютеры, ноутбуки, телефоны, при выходе из строя обычно утилизируется и выбрасывается. Некоторые энтузиасты пытаются эти гаджеты, каким то образом модернизировать и вернуть к жизни. В этой статье мастер поделится своим опытом по переделке старого ноутбука и установке в него Raspberry Pi. Конечно, это специфический проект предназначенный больше для опытных пользователей разбирающихся в электронике и программировании.
Это не первая его работа в этом направлении. Раньше он ставил Raspberry Pi в ноутбук Dell, используя контроллер клавиатуры Teensy и видеокарту EBay. Чего не хватало в этом проекте, так это способа зарядить оригинальный аккумулятор, чтобы сделать действительно портативный ноутбук.
У него был еще опыт работы с Sony Vaioу у которого была отдельная плата зарядного устройства. Обычно при вытаскивании старой материнской платы цепь зарядного устройства разрывается. В этом руководстве будут описаны две платы контроллера заряда аккумуляторов, которые работают с литиевыми элементами 2, 3 или 4 серии. Одна плата основана на микросхеме Max1873 вместе с микроконтроллером ATtiny85, который действует как супервизор. Другая плата использует микросхему MP26123 или MP26124 и не требует микроконтроллера. Обе платы отключат зарядку в зависимости от напряжения батареи, температуры, тока и общего времени. Шина системного управления (SMBus) управляется Pi для чтения регистров состояния, которые являются частью системы управления батареями (BMS) аккумуляторной батареи. Если заряд батареи низкий, Pi автоматически выполнит безопасное отключение. Графика Cairo используется для создания небольшого окна, в котором отображается индикатор уровня заряда аккумулятора и процент состояния заряда (SOC). Следующие шаги должны работать на большинстве старых ноутбуков для создания портативного Raspberry Pi.
Инструменты и материалы:
-Старый ноутбук;
-Raspberry Pi;
-Пульт;
-кабель LVDS;
-Понижающий преобразователь LM2596;
-Паяльные принадлежности;
Шаг первый: клавиатура, сенсорная панель и карта видеоконвертера
Клавиатура, тачпад и карта видеоконвертера управляются Teensy 3.2 с использованием тех же методов, которые описаны в ранее выложенной инструкции автора по KVM . Код Teensy для клавиатуры и тачпада Dell D630 можно скачать ниже. Если используется другой ноутбук, можно воспользоваться другим проектом USB Keyboard Instructable and Touchpad Hackster чтобы изменить код Teensy. Контакты разъема FPC и сигналы ввода-вывода Teensy подробно описаны в приведенной выше таблице. Новым в этом ноутбуке является плата управления питанием на плате зарядного устройства. Кратковременное нажатие кнопки питания над клавиатурой приводит к тому, что плата активирует регуляторы, питающие ноутбук. Чтобы выключить ноутбук, пользователь выбирает безопасное завершение работы в графическом интерфейсе или командной строке. Pi отправляет сигнал выключения на Teensy, который сбрасывает защелку питания. Teensy также контролирует кнопку питания на ноутбуке в особых случаях, когда кнопка удерживается нажатой не менее 5 секунд. Это дает возможность выключить ноутбук, если Pi заблокирован.
Плата видеоконвертера M.NT68676.2A была запрограммирована продавцом EBay под разрешения ЖК-дисплея. Был приобретен кабель LVDS длиной 40 см вместо удлинения короткого кабеля, поставляемого с картой. Этот ноутбук можно использовать в качестве клавиатуры, видео, мыши (KVM), щелкнув тумблер на левой стороне. В этом случае USB-порт от Teensy подключается к разъему Micro B USB на задней панели, а не к проводам, припаянным непосредственно к USB-разъем Pi. Это опция пригодится при изменении кода Teensy с помощью ПК. Разъем VGA на задней панели ноутбука подключен к карте видеоконвертера, так что ПК или другой источник видеосигнала может управлять дисплеем вместо Pi. Код Teensy отслеживает нажатие Fn и F8 и управляет сигналами кнопок видеокарты для выбора HDMI или VGA.
Pi напрямую управляет сигналом управления питанием видеокарты с помощью порта GPIO 4. Он используется для мгновенного отключения дисплея, если аккумулятор нуждается в зарядке. Сигнал состояния питания от видеокарты отслеживается Pi, чтобы определить, когда видеокарта была выключена.
Dell_D630_Portable_Pi_KVM.ino
Шаг второй: Raspberry Pi
Ноутбук имеет Raspberry Pi 4B, установленный в месте, которое ранее было для жесткого диска. Задняя сторона была заклеена изолентой для предотвращения короткого замыкания на алюминиевый корпус. Pi был расположен вне отсека для накопителей примерно на 0,5 см, потому что нижний край ноутбука закруглен, а выступ разъемов USB не помещается внутри корпуса. Лицевая панель жесткого диска была вырезана с помощью Dremel и вклеены другие кусочки пластика, чтобы получился пластиковый ящик, окружающий Pi. Коробка приклеена двойным скотчем к Pi, так что корпус можно будет открыть в будущем. Радиаторы были добавлены к процессору, USB-контроллеру и Ethernet-контроллеру на Pi. Оригинальный вентилятор ноутбука должен был дуть на эти радиаторы. Результаты температурных испытаний показывают, что Pi достаточно охлаждается Разъем HDMI 0 был подключен к видеокарте, а на разъем USB C подавалось напряжение 5 В от понижающего стабилизатора LM2596. Контакты GPIO были подключены следующим образом:
GPIO 2 = Data SMBus к контакту 4 батареи
GPIO 3 = Data SMBus к контакту 3 батареи
GPIO 4 = включение / выключение ЖК-дисплея, подключенного к плате видеоконвертера (обозначенной «K0»).
GPIO 17 = резистор 330 Ом к синему светодиоду (ранее был Bluetooth).
GPIO 19 = отключает зарядное устройство. Подключено к плате зарядного устройства (помечено «Pi_Cntrl»). 3,3 В = отключено, 0 В = включено
GPIO 22 = состояние питания видеокарты. 0 В = питание выключено, 3,3 В = включено
GPIO 26 = завершение работы Pi на Teensy I / O 29. Работает когда пользователь дает команду на завершение работы из графического интерфейса или командной строки. В файл /boot/config.txt был добавлен следующий dtoverlay:
dtoverlay=gpio-poweroff,gpiopin=26,active_low=»y»
Шаг третий: понижающие регуляторы на 5 и 10 вольт
В ноутбуке используются две регулируемые платы понижающего регулятора LM2596. Один регулятор был настроен на подачу 10 вольт на плату видеоконвертера. Другой был установлен на 5,1 вольт для Pi, Teensy, Fan и светодиода включения / выключения. Светодиод включения / выключения ранее использовался для работы с жестким диском и требует установки резистора 820 Ом. Контакт 5 на LM2596 обычно подключается к земле для включения регулятора. Мастер перекусил его, подогнул и припаял провод, чтобы его можно было подключить к выходу на плате зарядного устройства. Дальше добавил радиатор на обе части LM2596.
Видеокарта обычно питается от 12 вольт, но аккумуляторная батарея с 3-мя ячейками будет выдавать ниже 11 вольт, если она разряжена. С помощью LM2596 мастер устанавливает 10В. При таком напряжении видеокарта по-прежнему работает нормально. Проблема в том, что подсветка экрана работает на пониженном напряжении и экран тусклый. Скомпенсировать это можно увеличив яркость с помощью настроек. Обязательно нужно отрегулировать яркость и контраст с помощью платы кнопок, прежде чем отрезать разъем. Этот разъем будет использоваться для кабеля от видеоплаты к Pi и Teensy.
Если ваш аккумулятор состоит из 4-х проводных ячеек, вы можете поднять напряжение на LM2596 до 12 вольт вместо 10 вольт для питания видеокарты.
Шаг четвертый: входной разъем питания и разъем Micro B USB
Этот разъем мастер выпаял из материнской платы. На эту плату также был установлен USB-разъем Sparkfun micro B для прямого доступа к Teensy. 19 вольт поступают на плату Max1873, а также через два резистора 8,2 кОм на светодиод питания.
Шаг пятый: распиновка аккумулятора
Согласно Battery University, у большинства аккумуляторов ноутбуков есть один или два контакта заземления с одной стороны и равное количество контактов питания с другой стороны. Обычно сигнальный контакт должен иметь низкий логический уровень, чтобы включить твердотельный переключатель, который соединяет аккумулятор с положительным контактом разъема. Внутренняя BMS часто связывается с материнской платой с помощью 2-проводной шины SMB с тактовыми сигналами и сигналами данных, хотя иногда используются 1-проводные шины. На одном из контактов может быть термистор с отрицательным температурным коэффициентом (NTC). Обычно он измеряет около 10 кОм на землю при комнатной температуре.
Вооружившись этой общей информацией и омметром, он попробовал найти контакты заземления на разъеме аккумулятора материнской платы. На материнской плате есть несколько мест, где можно найти заземление, например, металлический экран вокруг разъема VGA. В данном случае он обнаружил 2 заземленных контакта материнской платы на одном конце разъема и еще одно заземление в середине, которое служит для сигнализации установки батареи. На противоположном конце были 2 контакта, соединенные вместе широкими медными дорожками, идущими к большому конденсатору. Остальные контакты имели тонкие медные слаботочные дорожки. Результаты тестирования разъема материнской платы показаны на фото ниже.
Затем он проверил аккумулятор омметром. Результаты проверки батареи так же на фото.
Шаг шестой: предварительная зарядка разряженной батареи
Литиевые батареи могут быть очень опасными и при работе с ними нужно соблюдать меры безопасности.
Если вы экспериментируете с аккумулятором ноутбука, который не использовался в течение некоторого времени, он мог «саморазрядиться» ниже нормального рабочего значения. На большинстве аккумуляторов для ноутбуков номинальное напряжение указано на наклейке вместе со значением ампер-часа или ватт-часа. Иногда, вместо номинального, указывается максимальное напряжение. Для блока с 3 элементами номинальное напряжение, указанное на батарее, будет составлять 11,1 В или 10,8 В в зависимости от производителя. В батарее с 3-мя ячейками никогда не должно быть ниже 9 вольт. Аккумулятор с 3-мя ячейками не следует заряжать, если в течение некоторого времени напряжение было ниже 4,5 вольт. Это предполагает, что каждая ячейка заряжена одинаково, что не обязательно так.
Используя ту же математику для 4-ячеечной аккумуляторной батареи, следует, что на ней должно быть указано номинальное напряжение 14,8 В или 14,4 В. Аккумуляторная батарея серии 4 никогда не должна опускаться ниже 12 вольт и не должна заряжаться, если она была ниже 6 вольт в течение некоторого времени.
Микросхемы контроллера заряда аккумулятора MP26123 имеют режим предварительной зарядки с низким током, который снижает ток заряда до 10%, если напряжение ниже нормального рабочего диапазона. К сожалению, микросхема контроллера заряда Max1873 не имеет этой функции, поэтому я мастер запрограммировал ATtiny так, чтобы импульс включения Max1873 осуществлялся в режиме ШИМ в зависимости от напряжения батареи. Какой бы контроллер заряда ни использовался, лучше всего выполнить предварительную зарядку вручную.
Чтобы выполнить предварительную зарядку вручную нужно подсоединить + и -, на соответствующие выводы, и резистор 1 кОм на вывод минусовой, который используется для сигнализации установки батареи. Используйте источник питания с регулировкой, например XL4015, показанный выше. Уменьшите ограничение тока примерно до 80 мА и установите напряжение на номинальное значение аккумуляторной батареи. Источник питания снизит напряжение, чтобы ограничить ток. Постоянно следите за аккумулятором во время зарядки, чтобы увидеть, не начинает ли он перегреваться. Продолжайте зарядку, пока напряжение не достигнет номинального значения аккумуляторной батареи. Выключите питание и отсоедините аккумулятор. Проверьте напряжение аккумулятора через 24 часа и посмотрите, не упало ли оно. Если сильно упало, то аккумулятор нужно заменить.
Если ваша батарея не принимает заряд, возможно, ее нужно активировать. Используйте код Pi «read_battery_loop.c», описанный в следующих шагах.
Шаг шестой: разъем аккумулятора
Разъем мастер выпаял из материнской платы. Затем вырезал кусочек платы и сделал из него держатель как на фото.
Шаг седьмой: плата зарядного устройства Max1873
Помимо зарядки литиевых аккумуляторов, Max1873 также может заряжать никель-кадмиевые или никель-металлогидридные аккумуляторы. В таблице данных есть полное описание всех контактов, а также типовая схема использования.
Плату мастер изготавливал на специализированном сервисе. Список запчастей со ссылками на Digikey и процедуру тестирования можно скачать ниже.
Обратите внимание, Max1873 выпускается в трех версиях: R, S или T, в зависимости от того, имеет ли аккумуляторный блок 2, 3 или 4 ячейки. Все версии поддерживают напряжение регулирования батареи до ± 0,75%.
Обычные литиевые батареи рассчитаны на максимальное напряжение 4,2 вольта и номинальное напряжение 3,6 вольт, но многие производители указывают номинальное значение 3,7 вольт. Существуют более новые литиевые батареи с максимальным напряжением 4,35 вольт. Max1873 может работать со всеми этими батареями, установив максимальное напряжение ячейки с помощью резисторов R5 и R6. Использование формул в техническом паспорте Max1873 дает следующие значения резисторов:
Максимальное напряжение ячейки 4,1 В: R5 = 54,9 кОм и R6 = 147 кОм.
Максимальное напряжение ячейки 4,2 В: R5 = 100 кОм и R6 = 100 кОм.
Максимальное напряжение ячейки 4,35 В: R5 = 169 кОм и R6 = 32,4 кОм.
Если вы не уверены, какое у вас максимальное напряжение на ячейке, используйте значения резистора 4,1 В на всякий случай.
R9 = 0,033 Ом и устанавливает ограничение входного тока на уровне 3А. Max1873 снижает ток заряда аккумулятора, чтобы он не превышал 3 А.
R1 = 0,2 Ом и устанавливает ограничение тока заряда 1 ампер.
Список деталей зарядного устройства.pdf
Charge_Controller.brd
Charge_Controller.sch
Процедура тестирования платы зарядного устройства Max1873.pdf
Шаг восьмой: ATtiny85 для Max1873
ATtiny85 управляет разрешающим сигналом микросхемы Max1873 и выполняет многие из задач, которые могут быть встроены в более сложную микросхему контроллера заряда. Tiny питается от регулятора 5,4 В платы Max1873. 8-контактный разъем DIP на плате Max1873 позволяет использовать программатор Tiny AVR. Код для аккумуляторной батареи 3-й или 4-й серии можно скачать ниже.
ATtiny85 отслеживает время зарядки и отключает зарядку аккумулятора через 300 минут. Это значение можно изменить.
Полную информацию о зарядном устройстве Max1873 можно посмотреть здесь.
Max1873_Supervisor_3series.ino
Max1873_Supervisor_4series.ino
Шаг девятый: плата зарядного устройства литиевой батареи MP26123 или MP26124
Мастер разработал еще одну плату, MP26123, для аккумуляторных блоков с 2 или 3 последовательными элементами.
Плата также может использоваться с MP26124 для пакетов с 4 ячейками серии. Значения деталей, которые необходимо изменить для различных конфигураций батарей, показаны на схеме ниже.
MP26123 / 4 можно использовать только с литиевыми элементами на 4,2 В. Старые аккумуляторные блоки для ноутбуков, в которых используются элементы на 4,1 В, должны использовать контроллер заряда, такой как Max1873. В отличие от Max1873, микросхемы MP26123 / 4 не уменьшают ток заряда, чтобы ограничить входной ток. Конструкция платы включает в себя плавкий предохранитель на 5А на входе в целях безопасности.
MP26123 / 4 выполнит предварительную зарядку, если напряжение аккумуляторной батареи ниже 3В на элемент. Время предварительной зарядки ограничено 30 минутами при токе заряда 100 мА. Если напряжение батареи поднимается выше 3В на элемент в течение 30 минут, ток заряда увеличивается до уровня полного заряда, который был установлен на 1 ампер с помощью резистора R12. Когда напряжение достигает максимального уровня (4,2 В x количество последовательных ячеек), зарядное устройство переходит из режима постоянного тока в режим постоянного напряжения..
Raspberry Pi может отключить зарядное устройство, подав на GPIO 19 напряжение 3,3 В. Этот вывод GPIO должен быть подключен, к сигналу «Отключить» на плате MP26123 / 4. Pi может отслеживать статусный сигнал «CHGOK» с платы MP26123 / 4, используя запасной вывод GPIO. Низкий логический уровень означает, что MP26123 / 4 заряжается нормально. Высокий логический уровень вызван рядом условий; конец заряда, неисправность NTC, ограничение по времени, тепловое отключение, вывод отключения, пониженное напряжение Vin.
Файлы схемы и компоновки Eagle приведены ниже. Файл макета Eagle можно отправить в OSH Park для изготовления. Для изготовления на JLCPCB, используйте архивный файл Gerber «MPS_Charge_Controller_2021-02-23.zip» из репозитория мастера. Список запчастей со ссылками на Digikey можно скачать ниже.
MP26123_4_partslist.pdf
MPS_Charge_Controller.brd
MPS_Charge_Controller.sch
Шаг десятый: управление включением / выключением
Плата MP26123 / 4 имеет ту же схему управлением питания, что и плата Max1873 (см. схему).
Плата Max1873 и плата MP26123 / 4 потребляют около 315ua, когда ноутбук выключен. Также есть внутренний саморазряд аккумуляторной батареи (2% в месяц) плюс схема защиты (3% в месяц), которые расходуют около 363ua. В целом, полностью заряженная батарея на 58 ватт-часов будет разряжена примерно за 324 дня, если ноутбук не подключен к розетке.
Шаг одиннадцатый: использование оверлея для I2C / SMBus
SMBus (последовательный протокол обмена данными для устройств питания) аккумулятора полностью задокументирован в «Спецификации данных Smart Battery». Он охватывает синхронизацию шины и определения регистров. Протокол шины I2C очень похож на протокол SMBus за некоторыми исключениями, касающимися тактовой частоты и таймаута. У мастера были проблемы с использованием оборудования Pi I2C для связи с батареей, но при использовании наложения дерева устройств i2c-gpio проблем не было. Этот оверлей управляет тактовыми сигналами GPIO и сигналами данных в программном обеспечении. Следующую строку необходимо добавить в файл /boot/config.txt.
dtoverlay=i2c-gpio,bus=7,i2c_gpio_delay_us=20,i2c_gpio_sda=2,i2c_gpio_scl=3
Так же можно получить доступ к регистрам BMS напрямую с помощью i2c-tools. Введите в окне терминала следующее:
i2cdetect -y 7
Команда i2cget запишет байтовый указатель на батарею, который определяет, к какому 16-битному регистру вы хотите получить доступ следующим. Введите в окне терминала следующее:
i2cget -y 7 0x0b 0x?? w
Шаг двенадцатый: код
Код мастер написал самостоятельно.
У пользователя должна быть версия wiringPi 2.52 или более поздняя, если используется Raspberry Pi 4B.
Для корректной работы используются некоторые программы.
1. «read_battery.c» считывает регистры в батарее для отображения напряжения, тока, температуры, SOC, времени до полного / разряженного состояния и битов состояния в окне терминала, как показано выше. После того, как вы создали и отладили код в Geany, вы можете запустить его из окна терминала (путь — / home / pi / C_Code) с помощью:
./read_battery
Он добавил имя «bat» к файлу .bashrc, чтобы можно было запускать эту программу из любого каталога.
alias bat=’/home/pi/C_Code/read_battery’
Также можно создать значок на рабочем столе, который запускает эту программу.
2. «read_battery_loop.c» такой же, как указано выше, но выполняется в непрерывном цикле, который повторяется каждые 15 секунд. Это полезно при предварительной зарядке аккумулятора, которому необходимо регулярно считывать коды активации или регистр. Он также предоставляет удобный способ контролировать температуру и процесс зарядки.
3. «monitor_battery.c» — это подмножество программы read_battery. Он не отображает никаких результатов в окне терминала, но будет мигать синим светодиодом, на мгновение выключать ЖК-дисплей и выдавать команду выключения в зависимости от состояния заряда батареи. Синий светодиод управляется Pi GPIO 17, а управление питанием ЖК-дисплея — GPIO 4. Программа monitor_battery запускается при запуске с использованием файла модуля systemd. Файл bat_monitor.txt можно скачать ниже и переименовать в bat_monitor.service. Сохраните файл bat_monitor.service в / lib / systemd / system. Вы должны загрузить и включить службу с помощью команд терминала:
sudo systemctl daemon-reload
sudo systemctl enable bat_monitor —now
При 15% и ниже светодиод горит и гаснет на 1 секунду в каждом цикле. При 10% мигает экран. Это будет повторяться каждые 30 секунд, пока зарядное устройство не будет подключено. Если SOC упадет до 8%, программа выполнит безопасное завершение работы с помощью системной команды:
sudo shutdown -h —now
Если аккумулятор заряжается, синий светодиод мигнет дважды. Когда он полностью заряжен, он мигнет 3 раза. Код может быть изменен таким образом, чтобы светодиодный индикатор мигал различными способами.
bat_monitor.txt
Мастеру удалось создать небольшое окно с указателем уровня заряда батареи и текстом, показывающим процентное содержание заряда батареи. Код SMBus добавлен в файл application.c. Значения заголовочного файла application.h были скорректированы так, чтобы цикл кода выполнялся каждые 5 секунд и создавал окно минимального размера.
Все программы и файлы скачиваем ниже.
application.c
application.h
main.c
main.h
makefile.txt
Battery_SOC.txt
Теперь нужно все подключить, протестировать на корректную работу и собрать гаджет.
Более полную информацию по данной статье можно получить, ознакомившись с авторской статьёй и просмотрев видео.

SitesReady

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

Share
Опубликовано
SitesReady

Последние записи

Кабачковая икра с яблоками и грибами

Ингредиентыкабачки ( без шкурки и семян) - 2 кгпомидоры - 1 кгшампиньоны - 300 глук…

4 дня ago

Вяленые сливы на зиму

Ингредиентыслива (без косточек) — 1 кгчеснок — 3-4 зубчикаперец чили — 0,5 шт.соль — 0,5…

4 дня ago

Сладкие консервированные помидоры с лимонной кислотой

Ингредиентыпомидоры — 1,5 кгсладкий перец — 0,5 шт.чеснок — 3-4 зубчикасоль — 2 ст.л.сахар —…

5 дней ago

Маринованные огурцы с мятой

Ингредиентыогурцы мелкие и средниестебли укропа и зонтики - 0.5 пучкаветочки мяты - 1 пучокчеснок -…

6 дней ago

Томаты в собственном соку

Ингредиентыпомидоры -2 кгвинный укусу светлый- 2 с.л.Пошаговый рецепт приготовленияДля приготовления томатов в собственном соку вымыть…

1 неделя ago

Соус из томатов с зеленью и чесноком

Ингредиентыпомидоры -1 кгзелень (петрушка, укроп, кинза) -200 г.чеснок - -3-4 зубчикаострый перец -1/2 шт.черный молотый…

2 недели ago

Мы используем файлы cookie.