#2 Re: Програмування Arduino » глюк пам'яті » 2026-03-20 00:52:17

Kino пише:

причем младший нибл, интересненько.

А саме 3-й біт, 0x08.

#3 Re: Програмування Arduino » глюк пам'яті » 2026-03-19 23:53:12

Флеш посипалась, усьо.
Воно-то може полежати і після стирання ще почати програмуватись, але я б на це не розраховував і цьому чіпу не довіряв.

#4 Re: Програмування Arduino » глюк пам'яті » 2026-03-19 17:38:10

Z1M пише:

а от з флеш щось не зрозуміле

Зітріть флешку, зчитайте її. Якщо там не 8 кілобайт FF'ок, то хана флешці. Якщо після стирання все ок, запишіть 8 кілобайт нулів, зчитайте знову. Якщо зчитуються не всі нулі, то теж хана.
Хоча якщо комірки "розхитані", то буває зразу читається нормально, а через тиждень чи місяць уже сиплеться.

#5 Re: Програмування Arduino » глюк пам'яті » 2026-03-19 15:15:20

Z1M пише:

вручну я вказував не всі змінні, що присутні в розрахунках. інші були реальними.

Якщо у вас, наприклад, було щось типу

float v = readVoltage();
float i = readCurrent();
float r = v / i;

і ви замінили на

float v = readVoltage();
float i = 0.0001;
float r = v / i;

то це може бути зовсім різний код із різною поведінкою при одних і тих же значеннях v та i.

Щоб реалізувати ділення без потенційного UB потрібно знати, які там типи операндів, граничні значення, в яких одиницях величини і т.д.

Взагалі, логіку та обчислення, якщо вони не зовсім елементарні, потрібно відлагоджувати окремо, а не прямо в програмі на залізі.

Kino пише:

Сам по себе чип avr довольно таки тугой, ни разу не слышал чтобы была битая флеш или озу

Буває, особливо якщо чіп з аліекспреса smile

Спостерігав дещо схожі симптоми (з флешки читається не те що записане) на якомусь із attiny після спроби покрокового виконання в avr-gdb через debugWire. Там gdb перезаписує флеш для кожного брекпоінта, так що не дивно. Вилікувалось за допомогою chip erase. Але це не схоже на випадок у автора.

#6 Re: Програмування Arduino » глюк пам'яті » 2026-03-19 13:26:57

Z1M пише:

вручну присвоював перемінним вольтаж і ампераж і дивився чи правильно рахує.

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

Z1M пише:

схоже на запис данних за межами масиву.

Так може у вас і відбувається запис за межі масиву? Це також undefined behavior.
Показуйте код.

Увімкніть в IDE відображення попереджень при компіляції та аплоаді: "Show verbose output during: ✓ compile ✓ upload"
Також увімкніть "Compiler warnings: All".

Z1M пише:

але повторна перепрошивка не допомагала.

Якщо в самій програмі баг, то повторна перепрошивка нічим не допоможе.

Z1M пише:

чи це якісь данні записались десь в памяті і не стираються і впливають на код, чи просто співпало і вийшов зладу чип.

В IDE увімкнено " ✓ Verify code after upload"? Якщо ні, то теж увімкніть.

При появі незрозумілих глюків корисно підключитись програматором, зчитати флешку та фʼюзи, і проаналізувати їх вміст.

Іноді при залипанні бітів у non-volatile памʼяті допомагає повний chip erase з наступним перезаписом бутлоадера і фʼюзів. Але якщо біти вже почали залипати, то з великою ймовірністю це буде продовжуватись і надалі.

#7 Re: Програмування Arduino » глюк пам'яті » 2026-03-19 12:13:06

Про яке залізо йде мова? Який мікроконтролер, плата?

Z1M пише:

в тих формулах що я перевіряв було ділення, і звичайно інколи відбувалося ділення на нуль, виводились великі значення.

Якою мовою написана програма де відбувалось ділення на нуль? В C та C++ ділення на нуль - undefined behavior, може відбутись що завгодно. Щоб "пошкодити чіп" - дуже малоймовірно, але теоретично можливо.

Z1M пише:

деякі показники почали відображати якісь рандомні значення.

Відображати на чому?

Z1M пише:

і при зміні коду (видаленні чи при добавлянні строк) здається відбувається зміщення.

Що саме і в чому "зміщується"? Ви зчитували вміст флеш-памʼяті, порівнювали його з тим що записували?

Z1M пише:

чи можна якось стерти все як це було з заводу?

На більшості платформ - можна, якщо тільки флеш-памʼять не деградувала незворотньо.

Z1M пише:

і взагалі що це може бути, щоб не наступати на тіж граблі?

Ну, для відповіді на це питання потрібно знати, що саме і на чому ви робили.

#8 Re: Програмування Arduino » дисплей DWIN та Arduino nano » 2026-03-10 17:21:40

Primaangel88 пише:
      case 2:  // зчитуємо решту пакету
        buf[idx++]=b;
        if(idx>=8)

Тут би по-хорошому читати байт довжини, а потім buf[2] байтів пакета. Бо якщо дисплей відправить щось не 8-байтове, парсер розсинхронізується.

#9 Re: Програмування Arduino » дисплей DWIN та Arduino nano » 2026-03-10 16:53:23

Primaangel88 пише:
  if(millis()-tUART > 5)
  {
    tUART = millis();
    readDWIN();
  }

Навіщо ці паузи між читаннями? dwin.available() просто повертає 0, якщо даних нема.

Що таке "навантаження на порт" і навіщо його "зменшувати"? SoftwareSerial, наскільки бачу, для прийому використовує PCINT. А передача, на відміну від HardwareSerial, не буферизована: write() не повертається поки не видасть весь байт. 

Взагалі я би рекомендував для звʼязку з дисплеєм використовувати апаратний UART, а прошивати програматором. А краще взагалі взяти контролер з двома UART'ами, і не звʼязуватись із SoftwareSerial.

Primaangel88 пише:

проблема в тому що код читає неправильно данні з порта

Можете показати, які саме дані неправильні? Тобто "дисплей відправив ось таку послідовність, а прочиталась ось така".

Kino пише:

Ну если "простой" работает, то надо искать где "сложный" всё ломает.

+1

#10 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-09 15:46:00

jokeer пише:

А якщо дійсно ввімкунути послідовно DC-DC і лінійний стабілізатор?

Тоді для виставлення напруги треба буде дві ручки крутити: на DC-DC та на стабілізаторі. Або ставити здвоєний потенціометр та підбирати розтягуючі резистори. Або врізатись у фідбек DC-DC.

Краще вже одразу взяти AC-DC і лінійний стабілізатор. А з трансформатора того зробити інвертор з "чистим синусом" smile.

#11 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-09 10:35:20

Vovik07 пише:

Якщо використати наприклад реле і перемикати обмотки .. одна одмотка , дві...

Ну тоді при 15 А замість 350-400 Вт потрібно буде розсіювати "лише" 150-200.

Але це ніяк не вирішує проблему пульсацій після моста.

Vovik07 пише:

Зробити бва діапазони роботи 0-20В і 20-40В

Якщо вручну перемикати, то можна і без реле. Просто поставити перемикач DPDT на достатній струм.
Якщо автоматично, то компаратор (можна операційник в режимі компаратора), що порівннює напругу на виводі P1 з певним порогом, транзистор і реле.

Vovik07 пише:

обмотки на 30В використовувалися для керування. Може теж їх використати для керування операційниками ?

Теоретично можна, але 30 В - це ж RMS, а амплітуда буде десь 42 В. Потрібно або відносно високовольтний операційник (для TL082 максимум - 36 В), або додатково знижувати напругу. А у операційників там двополярне живлення.

#12 Re: Апаратні питання » Кроковий двигун, необхідна допомога » 2026-03-08 15:27:37

Dimon_Drive пише:

Думаю, що 1,5В впаде на транзисторах драйвера

jokeer пише:

На драйвері не повинно падати так багато.

l298.pdf
При 1 А:
Source saturation voltage: 0.95 .. 1.7 V (Typ. 1.35 V)
Sink saturation voltage: 0.85 .. 1.6 V  (Typ. 1.2 V)

#13 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-07 05:29:24

Vovik07 пише:

При моїх 15 А такий шинт мабуть не підійде?

Які 15 А? Та схема на 3 А розрахована.

При 15 А та малій вихідній напрузі транзистору Q4 доведеться розсіювати до 350-400 Вт. Для 2N3772 максимум - 150 Вт. Який транзистор і з яким охолодженням ви там зібрались використовувати? І декілька біполярних транзисторів в паралель просто так не ставляться.

При 15 А шунт на 0.33 Ом має розсіювати 75 Вт, і на ньому падатиме цілих 5 вольт. Щоби при тому ж дільнику R16/(P2+P3) струм замість 3 А був 15 А, опір шунта потрібно зменшити в 5 разів, тобто до 66 мОм. Тоді на ньому розсіюватиметься 15 Вт.

Щоб Q4 протягував 15 А, IC1B має видавати струм 15 / (hfe(Q2) * hfe(Q4)). Але тут ще в межах, навіть при мінімальних значеннях hfe.

UPD: при 15 А з фільтром 2x4700 мкФ після моста будуть пульсації вольт 15. Потрібно збільшувати ємність C1 відповідно. І мабуть вживати якихось заходів, щоб діоди в мості при цьому не погоріли при увімкненні. Та й під час роботи міст при 15 А теж грітиметься на пару десятків ватт.

#14 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-04 17:05:10

Kino пише:

А как же тогда миллионы приборов меряют микроамперы без всякой земли?

Підсилюють падіння напруги на шунті? Але ж тут не просто виміряти потрібно, а виявити наявність прямого струму і відсутність зворотнього. Подивіться, наприклад, що показує незаземлений осцилограф, коли тримаєтесь за щуп. А в котлі сам корпус є одним із електродів. Який там на ньому буде потенціал при відсутності примусового заземлення - хто знає.
Думаю, можна було б і без землі обійтись, застосувавши складнішу електроніку. Але в таких системах чим простіше, тим надійніше. Якщо прибор наміряв щось не те - зазвичай нічого страшного, а якщо газ подається, коли нема полумʼя - це вже гірше. І необхідність наявності землі - компроміс, який має сенс.

#15 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-04 15:23:58

Kino пише:

Хотел узнать принцип работы, что аж за гланды нужен ноль

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

#16 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-04 01:45:01

Vovik07 пише:

шунт з зарядного на 75мВ.

75мВ при якому струмі? Який опір шунта?

Vovik07 пише:

А можна ардуіно прикрутити до шунта 75мВ щоб виводити струм?

Можна практично все. Але як це оптимальніше реалізувати - залежить від того, яку точність хочете отримати, в якому діапазоні, та яку роздільну здатність у часі.
Там у схемі вже є шунт R7. Простіше за все, мабуть, вимірювати падіння напруги на ньому. Навіщо ще один шунт?

Vovik07 пише:

І dc-dc в мене лінійний

DC-DC у вас імпульсний, за топологією "синхронний buck".

Vovik07 пише:

то вони не по однаковому принципу працюють?

Так, вони працюють по різним принципам.

Vovik07 пише:

Ще на схемі є світлодіод D10. Від показує тільки те що прилад увімкнениний.? Не обмеження по струму чи напрузі?

Має показувати, що працює обмеження по струму. Коли напруга на R7 перевищує заданий поріг, IC1A відкриває Q3, і світлодіод вмикається. Наче так.

#17 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-03 01:05:12

Vovik07 пише:

Не скажу , бо зараз вийде щой транформатор треба викинути

Таке гріх викидати, тим паче якщо в робочому стані smile

Vovik07 пише:

То можна використовувати таку схему?

Ну, схема класична. Якщо у людей працює, то й у вас має працювати. Особисто я таку не збирав, так що не можу сказати, які там можуть бути підводні камені.
Джерело схеми з описом, наскільки розумію, тут: https://www.paja-trb.cz/konstrukce/zdroj.html (чеською мовою).
Силовий транзистор потрібно ставити на хороший радіатор, мабуть і з вентилятором, бо при низькій вихідній напрузі та максимальному струмі 3 А розсіюватиме 80-90 Вт.

(В сучасних потужних ЛБЖ для покращеня ККД роблять або комутовані відводи від вторинної обмотки, або пре-регуляцію на імпульсному перетворювачі, після якого вже лінійний регулятор. Але це вже складніші схеми).

Vovik07 пише:

Ще підкажіть , підстроєчний Р3 250 Ом?

Так, на сторінці джерела згадується PT10V.
"/N" у номіналах P1, P2, наскільки здогадуюсь, означає багатообертові.

#18 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-02 02:32:22

Vovik07 пише:

Ви пропонуєте зробити схему скажіно на LM317

Я пропоную визначитись, чи ви робите більш-менш універсальний CV/CC блок живлення (ЛБЖ), чи зарядний пристрій для акумуляторів.

ЛБЖ при замиканні вихода накоротко має просто обмежити струм до встановленого, а не розряджати туди всю наявну тисячу мікрофарад, і не уходити в захист, обрізаючи струм до частки міліампера.
ЛБЖ при відʼємному потенціалі на виході (при роботі на індуктивне навантаження, наприклад) має спокійно пропускати струм. А може ви його для якоїсь гальваніки вирішили застосувати, де зворотній потенціал на електродах перед підключенням - нормальне явище.
Звісно, для заряда акумуляторів ЛБЖ також можна використовувати, якщо розуміти процеси.
Захист в ЛБЖ захищає сам блок, а не те, що до нього підключається.

Зарядний пристрій має в першу чергу захищати те, що він заряджає. Якщо струм чи напруга виходять за межі очікуваних на даному етапі заряду для даного акумулятора - має спрацювати захист, поки проблему не буде усунено.

Тут може виникнути думка зробити як ЛБЖ, але з опціональним захистом, який можна вимкнути. Тільки великого сенсу в цьому не бачу: що перевіряти полярність перед підключенням, що перевіряти, чи увімкнений захист - все одно перевіряти. Хіба що тимчасове вимкнення кнопкою без фіксації, щоб не забувати потім увімкнути. Звісно, якщо це буде зручно при ваших застосуваннях.

Також, що у ЛБЖ, що у зарядного мають бути визначені допустимі межі відхилення напруги при тому чи іншому струмі. Додаткова схема захисту може на це також впливати.

Vovik07 пише:

В інтернеті купа варіантів з використанням dc-dc тому я і пішов цим шляхом.

Ну, в інтернеті багато чого є, тільки не все воно працює як очікується, а щось працює лише при певних умовах застосування. Які там обмеження при застосуванні - в інтернеті зазвичай не пишуть.

Vovik07 пише:

Я наприклад не розумію С2 мабуть не мав бути електроліт?

Все там наче ок, там формується відʼємна напруга для двополярного живлення операційників.

#19 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-01 11:59:05

Ще одна проблема в тому, що в якості джерела використовується імпульсний DC-DC зі здоровенною ємністю на виході. Якби там був лінійний регулятор як в ЛБЖ, він би спокійно обмежив пусковий струм на ємносне навантаження. А при переполюсовці струм би йшов через паралельний діод на виході, і тільки тоді спрацьовувала би ота схема на мосфеті з біполярником.
Там можна було би втулити конденсатор між базою та еміттером біполярника, щоб сповільнити спрацювання при ємносному навантаженні, але тоді й реакція на переполюсовку буде з затримкою, яка ще й залежатиме від напруг.
Дивні вимоги потребують дивних рішень smile

#20 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-01 01:38:37

Доречі, чи не буде ця схема спрацьовувати при підʼєднанні будь-чого з великими конденсаторами на вході? І не розблоковуватись, поки ті конденсатори не зарядяться через 100-кілоомний резистор. Або, якщо підʼєднаний пристрій намагатиметься споживати струм, то до ручного скидання. Це дещо протирічить вимогам до ЛБЖ.

#21 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-03-01 01:17:39

Vovik07 пише:

Автор схеми на відео пояснює як працює схема при обмеженні струму а також від переполюсовки.

Ну, там утворюється бістабільна логіка з гістерезисом по струму. Використайте цю схему, в чому проблема? Тим більше у вашому випадку "дежурное питание" можна взяти з того ж трансформатора, тільки стабілізувати до 12 вольт.

А у варіанті з P-мосфетом, схоже, щось переплутано. Що заважає струму йти через body-діод закритого мосфета?

#22 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-02-28 23:22:50

Vovik07 пише:

Я лише хочу щоб при зміні полярності нічого не згоріло.

Для запобігання зміни полярності використовуються полярні розʼєми: XT-30/60/90, anderson, barrel jack та інші, які досить проблематично зʼєднати неправильно.

Vovik07 пише:

І коли індикація правильна - то вручну вмикати реле...

Питання не тільки в тому коли вмикати, але й коли вимикати для наступної перевірки.

Vovik07 пише:

Це просто і надійно але хотілося більшої автоматизації.. smile

Сформулюйте цю процедуру ручної перевірки словами у вигляді чіткого алгоритму. Імплементуйте цей алгоритм у мікроконтролері - ось вам і автоматизація. 

Vovik07 пише:

Доречі що б було коли поплутати щупи на заводському ЛБЖ? Який там захист?

"Заводські ЛБЖ" різні бувають, за різними схемами. Зазвичай там паралельно виходу стоїть діод, так що скоріш за все першим згорить він. Далі ЛБЖ намагатиметься обмежити вихідний струм, а акумулятор тягнути плюс вихода нижче мінуса. Якщо акумулятор "перетягне", то вихідний електролітичний конденсатор (якщо він там є) зарядиться у зворотній полярності і закипить. Якщо повезе, то ще і бахне smile     

Vovik07 пише:

Ще знайшов ось таку схему

Наскільки розумію, це схема обмеження максимального струму. При Rш=0.01 Ом та ідеальними мосфетами був би десь на 60 ампер. Але враховуючи RDSon мосфета, обмеження може початись і на 5 амперах.

Vovik07 пише:

Два варіанти на P та N канальних мосфетах.

Для силових схем бажано використовувати N-канальні. Хоча в цій конкретній для обмеження струму - пофіг. Якщо мосфет з відомим RDSon, то і Rш не потрібен, сам мосфет може бути в ролі шунта.

#23 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-02-27 22:37:05

jokeer пише:

Іноді простіше мати в хазяйстві кілька ширпотребних блоків на різні напруги і при необхідності брати з коробки підходящий wink А акумулятори заряджати окремою зарядкою.

Я зазвичай так і роблю smile А щоб акуми на зарядці/зберіганні не розряджались коли нема мережі, підключив їх через реле, що живиться з мережі 12-вольтовим блоком за 70 грн.

#24 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-02-27 20:25:56

jokeer пише:

Або зробити захист від КЗ.

Із захистом від КЗ в якості захисту від переполюсовки в даному випадку є певні проблеми.

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

По-друге, незрозуміло, як автор хоче щоб реагувала система, коли відбулась переполюсовка. Обмежити струм і увімкнути індикацію, поки користувач не відʼєднає неправильно підʼєднаний акумулятор, а струм тим часом нехай тече? Відімкнути вихід? Який критерій для повернення системи в робочій стан?

По-третє, захист від КЗ в якості захисту від переполюсовки працював би надійно, якби DC-DC був тільки джерелом напруги. У нас же тут DC-DC може працювати як джерело струму з високим внутрішнім опором. На реальний стан системи при переполюсовці - який струм куди тече, в якій точці яка напруга - впливають такі фактори як налаштування DC-DC (напруга, струм), напруга акумулятора, внутрішній опір акумулятора та інші фактори.

jokeer пише:

Або перед ввімкненням навантаження поміряти напругу на виході - якщо від'ємна - реле не вмикати.

Про що написано в цьому треді вже декілька разів smile

#25 Re: Апаратні питання » Захист від зворотнього струму та зміни полярності. » 2026-02-27 03:47:00

Vovik07 пише:

Так це синхронний перетворювач ... Конкретно в моєму варіанті мікросхема LM25116

А, ну це досить непоганий варіант. Якщо там і мосфети десь по 10 мОм чи менше, то може 15 А і без додаткового охолодження потягне.
Доречі, там і enable є, і undervoltage lockout. Можна використати при необхідності, якщо вивести піни.

Vovik07 пише:

Обмотку реле можна заживити і від змінного струму? Чи я помиляюсь?

Навіщо від змінного? Випрямити, фільтруючий конденсатор поставити.
Навіть цілого моста не потрібно: два діода, аноди до виводів трансформатора, точка зʼєднання катодів буде плюсом живлення. В ролі нижнього плеча будуть діоди "основного" моста, тоді й земля спільна.

Взагалі, технічно можна й від змінного, якщо пружина не дуже потужна, щоб відривати контакт при переході через нуль. Є навіть реле, спеціально спроектовані для змінного струму. Але краще не треба: здижчатиме, і опір контакту коливатиметься на кожному напівперіоді.

dimich пише:

Ви маєте на увазі використати реле , без Мосфетів взагалі?

А чому ні? Звісно, реле має бути розраховане на потрібний струм, і у такого рішення теж є недоліки.

Vovik07 пише:

І я не зовсім розумію як реле врятує від зміни полярності

Ніяк. Ні реле, ні мосфети, ні діоди від зміни полярності не врятують. Зворотній струм - одна проблема, переполюсовка - зовсім інша, і вирішуватись вони мають по-різному. Спільним у них може бути хіба що ключ (пара мосфетів або контакти реле), яким підʼєднується-відʼєднується вихід.
Про метод захисту від переполюсовки я вже писав вище.

Підвал форуму