Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

dimich
Сьогодні 10:43:33
stas_amp пише:

Цікаво, що дає саме PWM.

Ну, один із можливих варіантів я вже написав: пін перемикається на функцію Compare Match Output. Чому - це вже інше питання.

jokeR
Сьогодні 10:40:50

photo_2025-06-11_10-32-45.jpg

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

stas_amp
Сьогодні 10:35:53

Точно сказати, після чого стало 5 вольт, вже тяжко.

Цікаво, що дає саме PWM.

Спробую сьогодні підключити насос, і глянути, чи подаватиме він мастило.
Якщо так, то тоді, питання закрити, і забути. Бо тут не скільки того пристрою, як проблем.

Здавалось би все просто, а ,,крові вип'є'' на проект - за міліон.

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

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

dimich
Сьогодні 10:25:15
stas_amp пише:

https://forum.arduino.ua/img/members/4083/OSC-_-OUT-PB1.jpeg
У мене ось такий сигнал на PB1
...
https://forum.arduino.ua/img/members/4083/PXL_20250611_042428586.jpeg

Було ж 1.2 вольта, тут бачу чесні 5. Після яких змін амплітуда імпульсів стала 5 вольт?

stas_amp пише:

понавстановлював все, що можна було стосовно Attiny 85.

Потрібно якось фіксувати ці зміни: з якого URL, яка версія. Щоб можна було собі теж скачати та проаналізувати код цього конкретного пакунка.

stas_amp пише:

Частота стала 16кГц, цикл 70 відсотків.

PB1 має альтернативну функцію виходу компаратора таймера. (Доречі, PB0,PB3,PB4 також). Якщо якимось чином біти вибору режима стають ненульові, то це досить очікуваний результат: різні core можуть використовувати таймери по-різному.

Якось би здампити вміст регістрів TCCR0A, TCCR1 та GTCCR, коли баг проявляється. Я би увімкнув debugWIRE. Але без досвіду це буде непросто зробити: потрібно перешивати фʼюзи і вимикати функцію піна Reset, а також підʼєднуватись UART'ом до піна Reset як мінімум через діод, і на компі запускати відлагоджувальний софт.

Можна спробувати записати вміст цих регістрів в EEPROM, потім зчитати програматором.

Але в першу чергу я би все таки перевірив з

#define HAVE_BOOTLOADER 1

в core_build_options.h.
А також мінімізував би програму до такого стану, коли баг ще відтворюється.

stas_amp пише:

Ось схема всього пристрою.

Для повноти картини ще би домалювати USB'шні резистори зі стабілітронами, а також вбудований світлодіод.

stas_amp
Сьогодні 08:30:09

Ось схема всього пристрою.

PXL_20250611_052659012.jpeg
Розв'язка на входах, через оптику, PC817
На мотор, транзистор з ,,логічним'' рівнем, точно не пам'ятаю, що дістав з коробки і запаяв.

stas_amp
Сьогодні 08:17:41

Всім доброго ранку.

Стосовно підтяжок. Так, вони були через 5.1к, замінив на 1к. Нічого не змінилося.

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

Сьогодні запустив ардуіно іде, і в виборі плат, побачив ось таке, як на фото.
Screenshot_20250611-065837.jpeg

Записав через цей варіант. І картина одразу змінилася!

PXL_20250611_042428586.jpeg

Частота стала 16кГц, цикл 70 відсотків.

dimich
Вчора 23:20:06
jokeR пише:

входи вільно теліпаються, хз що вони ловлять у вас і що у мене. Їх було б непогано підтягнути чи до 0 чи до VCC - хз як правильно за вашою схемою.

Автор же писав, що є підтяжки по 5.1к. Мені тільки не подобається, що підтяжка на PB3, бо там же ще через 47 Ом стабілітрон в землю. А свої 3.6В стабілітрон тримає тільки при відносно великих струмах, десь 5 мА. При малих струмах через підтяжку на ньому падає десь 3 В, або й менше. Мабуть, тому там і analogRead(). UPD: хоча "analogRead() < 512" це майже те ж саме, що "digitalRead() == LOW", тільки без гистерезису.

jokeR
Вчора 23:04:23

Так, сорян, const int LEDMode = LED_BUILTIN; - так не можна. LED_BUILTIN це PB1 і воно якось дивно взаємодіє з вашим кодом. Вернув як було - упсь, на PB1 чоткий 0.
Ну, що сказати.. По перше - переїдьте на версію 1.7.5, щоб все було однаково.
По друге - входи вільно теліпаються, хз що вони ловлять у вас і що у мене. Їх було б непогано підтягнути чи до 0 чи до VCC - хз як правильно за вашою схемою.

stas_amp
Вчора 22:36:03

OSC-_-OUT-PB1.jpeg

У мене ось такий сигнал на PB1

PWM - 5.2kHz  та циклом 23 відсотки

stas_amp
Вчора 22:29:13
jokeR пише:

https://forum.arduino.ua/img/members/3983/2025-06-10_19-06.png

Таке?
Ну, залив ваш код, тільки замість

const int LEDMode = 2; // LED индикации режима работы смазчика, 1 = TRUE;

зробив

const int LEDMode = LED_BUILTIN;

Щоб було видно без осцилографа.

І що ми бачимо на нозі P1?

https://forum.arduino.ua/img/members/3983/photo_2025-06-10_19-24-38.jpg

3.3V, з викидами до 4.5В (чи 4.5В, з провалами на 1.2В). Цікаво wink Провалів по живленню немає.


Хм. Зробив так (нумерація цифрових і аналогових портів в цій платі якась незвичайна, але 3 - удачна цифра wink Повинно бути еквівалентно по логіці роботи.

  if (/* analogRead(btnMode) < 512 */ digitalRead(btnMode) == 0) { // Нажата кн.Режим смазки

Бачимо таке:

https://forum.arduino.ua/img/members/3983/photo_2025-06-10_19-42-44.jpg

Що я можу сказати? З виводом у порт D1 у вас щось накручено, digitalwrite викликається раз 10.. Але дивний спецефект з 1 картинки це не пояснює.

Це цікавіше. Підтягнув входи, щоб не теліпались.

  pinMode(inVSS, INPUT_PULLUP);
  pinMode(btnMode, INPUT_PULLUP);

Побачив ваші імпульси в 1 В
https://forum.arduino.ua/img/members/3983/photo_2025-06-10_20-01-01.jpg


Перш за все, дякую Вам, за Ваші зусилля допомогти, що зібрали схему.

З осцилогам видно, що сигнал на виході все одно PWM, а не стабільні 5 Вольт.

Ви не той вихід контролювали. Нам треба вихід на мотор PB1, а не індикатор режиму подачі масла PB2.

dimich
Вчора 22:24:10

Цікаво, чи вдастся відтворити баг з пінами на голій attiny85, без USB-шних стабілітронів та бутлоадера.

stas_amp
Вчора 22:17:53
dimich пише:
stas_amp пише:

https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json

Якщо у вас вибрано "Digispark (Default - 16.5mhz)", для експерименту спробуйте "Digispark (16mhz - No USB)". USB ж у вас в програмі ніяк не використовується.

stas_amp пише:

не можу прикріпити картинку

Під полем редагування є "Завантаження". Заходите туди, завантажуєте картинку. Клікаєте на неї, копіюєте її адресу, вставляєте в тег [img]<адреса тут>[/img].

Ще б здогадатись, звідки крім 1.2 вольта ще ті 5.2 кГц.

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

if (analogRead(btnMode) < 512) {

замінити на

if (digitalRead(btnMode) == LOW) {

Кнопка звичайна, механічна.

Спробував, що Ви рекомендували.

Нажаль, не допомогло.

jokeR
Вчора 22:08:33
FQBN: digistump:avr:digispark-tiny:clock=clock165,burnmode=install
Using board 'digispark-tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using core 'tiny' from platform in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5
Using library EEPROM at version 2.0 in folder: /home/igor/.arduino15/packages/digistump/hardware/avr/1.7.5/libraries/EEPROM 

Ага, походу я вас обманув. Це звідси: https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json

Ага, версію 1.6.7 можна вибрати в Board Manager. Не зовсім очевидно. Але все одно дивний глюк присутній.

dimich
Вчора 21:41:50
jokeer пише:

Можу лог показати wink

Будь ласка, якщо не складно. У мене один раз скомпілилось. Потім перезапускав IDE - перестало, каже, нема EEPROM.h. І дійсно, в packages/digistump такого нема. Крім дефолтної arduino та цієї digistump (з https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json) ніяких інших пакунків не ставив. Якась китайська чудасія з цим IDE.

jokeer пише:

Але сайд ефекти дуже дивні.

Ну, чудес не буває. Але причина може бути так глибоко, що у нас може не вистачити засобів до неї докопатись. Наприклад, який-небудь апаратний баг МК, який проявляється тільки при певних хитрих умовах.

stas_amp
Вчора 21:29:30
dimich пише:

Хм, як воно взагалі компілиться, якщо в packages/digistump/hardware/avr/1.6.7/libraries/ нема EEPROM. Ви її доставляли вручну, чи у вас вона є в самому package, а це у мене чомусь нема?

Бібліотеку еепром доставляв в ручну.

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