Хронологія:
У попередньому записі Android: запуск підсилювача і перевизначення кнопок керма я писав як я зміг запустити штатний підсилювач автомобіля і коректно передати йому налаштування по CAN шині. Працює все чудово вже деякий час і цього разу будемо вирішувати 2 основні проблеми які залишились від попередньої реалізації:
Додатково перепакував все в компактнішу коробочку, але все по черзі.
Енергоспоживання.
Плата Arduino Nano обладнана лінійним стабілізатором напруги, адаптером USB CH340 і індикатором живлення котрі споживають не мало енергії навіть в режимі енергоощадження. Схожі проблеми є й у CAN модуля на MCP2515: індикатор напруги та мікросхема TJA1050 котра взагалі не вміє спати.
Правильно було б замінити мікросхему TJA1050 на MCP2551 та провести невеликі зміни в конфігурації плати, але ми підемо трішки простішим шляхом: відпаяємо резистор індикатора живлення і понизимо робочу напругу до 3V. Так-так, саме до 3V. Інтернети кажуть, що для коректної роботи TJA1050 потрібно 5V, тільки от практичні тести показали, що все чудово працює від 3V. Тому беремо паяльник в руки та випаюємо резистори:
На цьому маніпуляції з модулями MCP2515 завершені.
З платою Arduino Nano маніпуляцій трішки більше: потрібно випаяти стабілізатор напруги, замість нього кинути перемичку і, також, відпаяти резистор індикатора живлення:
В принципі це всі апаратні зміни в обладнанні.
UPD: наступний пункт не актуальний, в наступні серії повністю вирішене питання енергоспоживання, краще залишити лінійний стабілізатор на місці.
Тепер, модуль живлення HW-613 налаштовуємо на 3V і робимо невеликі маніпуляції в Arduino IDE перед прошивкою мікроконтролера:
Це потрібно для того, щоб мікроконтролер стабільно працював на пониженій напрузі. Додатково в скетчі я поставив дільник частоти на 2, тобто, таймери і Serial будуть працювати коректно.
Також в скетчі реалізовано енергоощадження, котре опирається на "засинання" CAN шини. В моєму автомобілі шина засинає, орієнтовно, через 2 хв після вимкнення запалення. Arduino слухає момент коли пакети перестануть надходити, чекає ще 5 секунд і, якщо пакети таки не почали надходити, переводить мікроконтролер в режим power down. Коли шина "просинається" то модуль MCP2515 будить мікроконтролер і все починає працювати штатно.
Такі маніпуляції призвели до того, що з попередніх 30 мА, все це споживає 10 мА в активному режимі та 4.5 мА в режимі power down. Як на мене, то це не погано. Перепайка TJA1050 на MCP2551 могла б дати ще 1 - 2 мА економії, але це вже не суттєво на фоні отриманих результатів при тому, що ми залишили USB модуль на платі Arduino Nano.
Потенціометр.
Розпишу трішки про новий потенціометр MCP41100. Цей потенціометр має 256 кроків регулювання опору, що значно розширює можливості по налаштуваннях кнопок. Розпаяв я його прямо на мікроконтролері:
Дав каплю клею Stars-922 і короткими провідниками розпаяв до відповідних пінів. На фото, в принципі, видно що куди підпаювати:
Жовтий провідник (7 нога мікросхеми) підпаяв до піна, котрий раніше був виходом +5V, але після випаювання стабілізатора просто висить в повітрі. Від цього провідника виводжу на зовні клему, котра буде під'єднана до входу Key1.
Також провів практичні тести аби зрозуміти, які діапазони опорів сприймає магнітола для віртуальних "кнопок" і які діапазони "тапів" потенціометра їм відповідають:
Як читати:
Як видно зі скріна, потенціометр здатен імітувати досить багато резистивних кнопок, чого повинно вистарчити навіть для самих сміливих проєктів. Опір понад 78 кОм магнітолою вже не сприймається.
Нова коробочка.
Знайшов на просторах інтернету коробочку, в яку поміщаються всі елементи й при тому, все досить компактно та акуратно:
Як видно, то різниця в розмірах суттєва. Нутрощі виглядають таким чином:
Модуль живлення HW-613 посадив на каплю термоклею з пістолета. Все інше cидить щільно без клею. Саму платку Arduino довелось трішки підпиляти, аби вона сіла на своє місце.
Тепер мені більше подобається як все працює, скетч оновив.
Пробіг 255000 км.