#1 2024-12-09 12:44:57

Elektrod
Учасник
Зареєстрований: 2023-05-27
Повідомлень: 1

Протрібна допомога з attiny85

Усім привіт. Потрібна допомога чи підсказка що можить бути не так. Маю attiny85, живлення іде з DC-DC перетворювача 12В, далі на лінійний стабілізатор 5В з усією положеною розвязкою по конденсаторам з даташиту, стоїть резистор 4,7кОм підтяжки живлення на першу ногу, прошиваю голий камінь з допомогою USBasp та ардуіно, скрін з налаштуваннями прикріплю, сам скетч дещо змінений з  оцієї статті https://arduino.ua/art168-cifrovii-serv … arametrami Суть скетчу впринципі розписана там же в статті, єдине що змінено так це взято attiny85 замість ардуіно, сигнал для керування іде з сервотестера замість резистора і додано таймери, для того щоб коли двигун за певний час не можить досягнути положення він вимикається і можить ввімкнутисяч лише в обратну сторону. Все працює добре, але є одне але, іноді при включенні не працюють таймери, тобто він продовжує обертатися навіть коли не  можить досягнути положення за 350мс, в ході експерементів вияснив, що коли відкинути + живлення з attiny85 потім знову подати, при цьому вся схема заживлена, тобто подається наприклад 2,5В на сьому ножку з резистора положення при середньому положенні двигуна, то таймер перестає працювати, тобто все знову працює і реагує правильно на сервотестер, але при цьому не вимикається через 350мс якщо не давати мотору досягти потрібного кута. Дана схема пропрацювала місяць, після чого згорів мотор, в ході експерементів і пошуків вияснилося, що іноді таймер не працює і більш всього що при ввімкненні живлення він і не спрацював, що призвело до згорання двигуна. Можливо хтось щось порадить, як позбутися даної проблеми. Також якщо замість analogWrite(PB0, 255) вказати digitalWrite(PB0, HIGH), взагалі нічого не працює, хоча це впринципі не є проблемою. https://forum.arduino.ua/img/members/3566/Sketch.rar https://forum.arduino.ua/img/members/35 … 54-714.jpg

Остання редакція Elektrod (2024-12-09 12:50:19)

Неактивний

#2 2024-12-10 14:28:57

ihor
Гість

Re: Протрібна допомога з attiny85

Якщо воно то працює то ні - можливо щось підвисає. Може провали по живленню. Може конденсатора десь не хватає. Чи LDO. Чи watchdog.
І я не впевнений що використовувати tiny 85 досить гарна ідея. Можна взяти STM, чи arduino nano - по $$ особливої різниці немає, якщо це щось одноразове. Зате незручностей цілий мішок.

#3 2024-12-10 18:21:57

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 221

Re: Протрібна допомога з attiny85

Elektrod пише:

взято attiny85 замість ардуіно

Який саме board package використовуєте для attiny85? Ви впевнені, що в ньому піни нумеруються константами з avr/io.h ( pinMode(PB3, INPUT) ) і в той же час ардуінівськими ( pinMode(A1, INPUT) )?

Elektrod пише:

Sketch.rar

Форматування коду навмисно прибране, щоб складніше було читати?  big_smile

Із назвами змінних Flag, Flag2, Flag3 та значеннями '1' і '2' задуману логіку зрозуміти досить непросто. Намалюйте діаграму переходів між станами, визначте умови переходів. Зробіть enum зі зрозумілими назвами.

pulseIn() повертає unsigned long (діапазон ≈ 0 .. 4295 секунд), ви його присвоюєте в int (діапазон ≈ -33 .. 33 мілісекунди).

Не викликайте millis() кожний раз. Прочитайте значення один раз на ітерацію і використовуйте його:

void loop() {
    unsigned long now = millis();
    ...
    timer1 = now;
    timer2 = now;
    ...

Неактивний

Швидке повідомлення

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

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