Citroen C5 (2G) (Малий)

Android: запуск підсилювача і перевизначення кнопок керма (завершення)

Я їжджу на Citroen C5 (2G)
Львів, Україна

Це вже 3-тя і, надіюсь, завершальна частина епопеї по доопрацюванні кан адаптера, хронологія виглядає так:

Стикнувся я певними проблемами в стабільності роботи цієї чудо-коробочки. Проявлялось це в тому, що в один момент вона відмовлялась запускатись і потрібно було прибирати повністю живлення аби зробити "перезавантаження", після чого все починало працювати штатно.

Було виявлено 2 причини: програмна й апаратна. Програмна проявлялась в тому, що після кількох циклів сну і просинання (рандомна кількість) кан контролер починав відправляти мікроконтролеру нескінчену кількість битих пакетів (навіть без підключення до кан шини), або не відправляти їх взагалі. Апаратна проблема була пов'язана з заниженим живленням.


Програмну частину вдалось вирішити наступним чином: перед кожним сном і після сну роблю наново ініціалізацію кан контролерів. Для тестування зібрав схему з 2-х ардуіно: одна відправляє кан пакети, а інша - приймає. Перший модуль надсилає пакети певний час, а далі робить паузу (тут інший модуль засинає), далі знову починає відправляти пакети (інший модуль просинається) і так по колу. До змін в коді приймач відвалювався в межах декількох годин стабільно, після змін ганяв 2 доби - жодних нестабільностей.


Проте, це не все. Була ще одна нестабільність, яка проявлялась в тому, що після просинання модуль за кілька секунд "зависав" і знову допомагало тільки перезавантаження. Після чого підняв напругу до потрібних 5в і ця проблема перестала докучати.


Зрозуміло, що після підняття напруги виросло енергоспоживання (з яким я намагався боротись) і виникла потреба розв'язати проблему радикально.


енергоспоживання: робочий режим і режим сну до маніпуляцій


Куди копати? В Arduino Nano є 2 елементи які жруть енергію ложками: лінійний стабілізатор і USB модуль. Якщо від стабілізатора я позбавився ще в попередньому записі, то від іншого буду позбавлятись сьогодні (пороте зі збереженням робочого USB ;)). Також буду робити маніпуляції з кан модулем, оскільки кан трансивер TJA1050 не вміє в енергоощадження, тому потрібно замінити його на MCP2551.


Ну поїхали. Потрібні 2 мікросхеми MCP2551, USB модуль на мікросхемі CP2102 і тактова кнопка, для винесення кнопки Reset (бо цей модуль не вміє робити ресет мікроконтролера при прошивці)


додаткові модулі


Працюємо з платою. Потрібно відпаяти мікросхему USB і її обв'язку (паяльником спокійно можна справитись), далі приклеюємо зовнішній модуль USB і тактову кнопку, підпаюємось до плати. Живлення USB модуля кинув через 2 діоди: це дозволяє модулю працювати при під'єднанні його до ноутбука, проте він зовсім нічого не споживає коли під'єднання по кабелю немає.


модифікована плата arduino


Далі кан модулі. Нам потрібно замінити мікросхеми TJA1050 на MCP2551. Тут момент: 8 ніжку мікросхеми потрібно підпаяти до Arduino і подавати на неї керуючий сигнал аби змінювати режим роботи, тому підпаювати її до плати непотрібно. Я робив наступним чином: обидві 8 ніжки на обох мікросхемах відігнув, зпаяв їх провідником і кинув контакт від них до D4 ардуінки. Додатково промазав 8 ніжки термоклеєм аби трішки захистити їх.

 

модифікований кан модуль


Ну і виглядає то все діло десь так:


запаковано все в коробку


Трішки модифікуємо код.


// визначаємо пін, до котрого під'єднані мікросхеми

#define MCP_2551_RS 4;

// задаємо режим піна як output

pinMode(MCP_2551_RS, OUTPUT);

// подаємо високий рівень при ініціалізації

digitalWrite(MCP_2551_RS, LOW);

// подаємо низький рівень для переходу в режим сну

digitalWrite(MCP_2551_RS, HIGH);


Всі ці зміни дозволили отримати чудовий результат по енергоспоживанні:


енергоспоживання: робочий режим і режим сну після маніпуляцій


Виходить, що в нормальному режимі роботи споживання менше, ніж в режимі сну до маніпуляцій. А в режимі сну взагалі чудові 0.58 мА! Їжджу з цими змінами вже певний час і нарешті все працює стабільно, тому вважаю за потрібне поділитись цим досвідом.


Невелике доповнення: після цих маніпуляцій краще залишити лінійний стабілізатор живлення на ардуіно і не ставити імпульсний HW-613, з ним виникали проблеми.

Пробіг 259000 км.
Опубліковано: 05 червня 00:08
11 0 0

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.
Я їжджу на Acura MDX (4G)
Омг... Навіщо такі танці із бубном?
1. Watch Dog - від зависання
2. Arduino Mini - 3.3v, а сам МК, здається, чудово себе почуває при 1.8v
3. Є декілька різних варіантів сну Ардуінки

P.S. Світлодіод відпаяйте, що POW -))
А для чого потрібна така енергоефективність?
1
05 червня 05:01
Я їжджу на Citroen C5 (2G)
Narum
Омг... Навіщо такі танці із бубном?1. Watch Dog - від зависання2. Arduino Mini - 3.3v, а сам МК, здається, чудово себе почуває при 1.8v 3. Є декілька різних варіантів сну АрдуінкиP.S. Світлодіод відпаяйте, що POW -))А для чого потрібна така енергоефективність?
Narum, не зрозуміло про бубон.
1. Як він допоможе при зависанні кан контролера?
2. Ок, тільки кан контролер всерівно хоче 5v
3. Вибрано powerdown sleep

Світлодіод, той що POW відпаяний (а саме його резистор)
1
05 червня 07:35
Лайк. Дякую за детальний опис. Прочитав всі розділи )) Ось такі пости повинні набирати тисячі лайків😎👍
Варто було б додати, що треба брати поправку на глючні ардуінкі, кварц в кан модулі і швидкість кан шини))
4
05 червня 00:25
Я їжджу на Citroen C5 (2G)
Orest Zab
Лайк. Дякую за детальний опис. Прочитав всі розділи )) Ось такі пости повинні набирати тисячі лайків😎👍Варто було б додати, що треба брати поправку на глючні ардуінкі, кварц в кан модулі і швидкість кан шини))
Orest Zab, дякую ) намагаюсь писати зрозуміло, аби, кому треба, могли взяти щось для себе не проходячи всі кола пекла )) З глючним залізом справді може бути страшний головняк. Маю arduino pro mini, так він в режимі powerdown споживає більше, ніж в звичайному режимі. А ти сиди і думай чому лижі не їдуть
2
05 червня 00:35
Mykhailo
Uns8ted, згоден, проте я не впевнений, що хочу ковиряти його далі
Mykhailo, я колись так само думав, в решті решт навіть плату розвів під кан фільтр)
1
05 червня 00:56
Я їжджу на Citroen C5 (2G)
Uns8ted
Mykhailo, я колись так само думав, в решті решт навіть плату розвів під кан фільтр)
Uns8ted, ох не підмовляй мене )) я тільки но заспокоївся ))
1
05 червня 00:59
Mykhailo
Uns8ted, ох не підмовляй мене )) я тільки но заспокоївся ))
Mykhailo, ахахах)
https://driver.top/exp/460396 тут трошки більше, з фото фільтра)
1
05 червня 01:00
Mykhailo
Uns8ted, чудова робота, дякую )
Mykhailo, у тебе також чудова робота)
05 червня 01:07