#576 Re: Апаратні питання » Збій в роботі » 2024-01-23 12:33:44

tankist0168 пише:

Все ж таки на крутив преобразуй на 10В і подав це живлення на VIN і поставив туди конденсатор. Блютуз та серво підключив від піна 5 і туди також поставив конденсатор.

Регулятор LM1117 в корпусі DCY на ардуіні при зовнішній температурі 25 °C може розсіювати максимум (150-25)/62 = 2 Вт, нагріваючись при цьому до 150 °C. У вас при подачі 10 В на ньому падатиме 5 В, тобто максимально допустимий струм: 2 Вт / 5 В = 0.4 А. Якщо серво разом із блютузом і ардуіно споживає більше, то регулятор довго не пропрацює. А краще забезпечити хоча б двократний запас.

#577 Re: Апаратні питання » Збій в роботі » 2024-01-23 00:43:33

А з прошивкою все нормально? Не може бути так, що наприклад D3 сконфігурований на вихід і виставлений в HIGH, і при натисканні на кнопку КЗ.

#578 Re: Апаратні питання » Збій в роботі » 2024-01-23 00:39:49

tankist0168 пише:

Я міряю напругу після перетворювача. Просадки немає.

Просадка може бути короткочасна. Мультиметром її може бути не видно, тільки осциллографом.

Якщо просто кондьори не допомагають, спробуйте через діод Шотткі:
pow.png

г0cть пише:

Vin через діод з’єднаний з usb

Vin іде відразу на стаб. Діод з USB на 5V.

#579 Re: Апаратні питання » Збій в роботі » 2024-01-23 00:02:40

tankist0168 пише:

Коли подаю напругу на VIN воно також все світиться, але при нажиманні кнопки сервак тошки сіпнеться і  все.

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

Поставте два-три електролітичних конденсатора побільше (1000-2200 мкФ) на живлення поближче до ардуіно.

Для перевірки спробуйте заживити серво від окремого джерела.

#580 Re: Апаратні питання » Прошу уточнення по оптрону » 2024-01-22 21:54:11

Shaman2 пише:

Заміряв струм. 3,6мА всього. Тобто я так зрозумів що можно навіть резистор в цеп колектора не ставити.
Але я на всяк випадок буду ставити 2-10 ом, що під руку попадеться

Значить там десь уже стоїть резистор (а інакше при замиканні кнопкою і не може бути). Якщо лінія 12-вольтова, то 3.3 кОм. Плюс-мінус десяток Ом абсолютно ні на що не вплине.

#581 Re: Апаратні питання » Збій в роботі » 2024-01-22 19:55:20

tankist0168 пише:

Якби  ж я знав як тут вставити картинку...

Внизу під полем редагування є "Завантаження". Завантажуєте свою картинку, потім вставляєте в повідомлення тегом img, як будь-яку іншу.

#582 Re: Апаратні питання » Nodemcu ESP827 та voltage sensor для 2х12в АКБ » 2024-01-22 01:29:25

По-перше, на цих "сенсорах" є позначення: Vcc, GND, S, "+", "-". У вас на картинці цих позначень нема, що куди підключене - зовсім незрозуміло.
Якщо вірити вашій "схемі", то як мінімум ліва АКБ замкнена накоротко.

По-друге, як ви зібрались міряти напругу на кожній АКБ відносно землі окремо, коли вони зʼєднані послідовно? Намалюйте просту зрозумілу схему.
Ви можете поміряти напругу на одній ("нижній", мінус которої на землі) і сумарну напругу на обох. Напругу на "верхній" обчисліть відніманням.

По-третє, цей "сенсор" - банальний резистивний дільник напруги з коефіцієнтом 5. 24 В / 5 = 4.8 В. Ви впевнені, що на вхід контроллера з живленням 3.3 В можна подавати 4.8 В?

#583 Re: Апаратні питання » Періодичний збій роботи Ардуіно » 2024-01-21 22:51:12

Orest1 пише:

Схиляюся , що то якісь електромагнітні поля , які створює котел, yikes , так впливають на роботу контролера.

Контролер спонтанно зависає? Перезавантажується? Якщо ні, то з контроллером все нормально. Завади впливають на спілкування між контроллером і датчиками.

Для експерименту підʼєднайте один датчик безпосередньо до плати контроллера якомога коротшими проводами.

#584 Re: Апаратні питання » Періодичний збій роботи Ардуіно » 2024-01-21 22:46:06

Orest1 пише:

Датчики живляться по окремій лінії.

З вихода +5V плати ардуіно, так?

Orest1 пише:

А можете написати про конденсатори? Який би то мав бути номінал?

0.1 мкФ має бути достатньо. Керамічний, між Vdd і GND біля самого датчика.

Orest1 пише:

Осцилографа не маю, не вмію.
Хочеться вірити, що є просте рішення.

Без аналізу конкретної ситуації можемо тільки вгадувати типові проблеми і пропонувати типові рішення.

#585 Re: Апаратні питання » Періодичний збій роботи Ардуіно » 2024-01-20 22:39:56

г0cть пише:

Це ви у Ореста запитайте

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

Блоки 12-вольтові, то датчики мабуть же живляться зі стабілізатора ардуіно. Але по фотографії не зрозуміло. З лівого блока видно провода на реле і далі наче теж на блок комутації датчиків.

Доречі, програма на ардуіно не перевіряє CRC відповідей? -127 - це всі одиниці, тобто датчик просто не відповідає, лінія в одиниці. CRC не має бути коректним.

#586 Re: Апаратні питання » Періодичний збій роботи Ардуіно » 2024-01-20 21:17:53

г0cть пише:

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

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

#587 Re: Апаратні питання » Періодичний збій роботи Ардуіно » 2024-01-20 21:05:23

Orest1 пише:

Можете в двох словах роз'яснити що відбудеться?

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

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

Orest1 пише:

Пробував різні провода - сигнальні, вита пара,  екрановані

Щоб екран працював, його потрібно правильно "заземлити". Але тоді ємність лінії ще збільшиться. Вита пара добре підходить для передачі диференційних сигналів, а 1-Wire асиметричний, не диференційний.

Датчики живляться паразитно з шини чи по окремій лінії? Якщо по окремій, з боку датчиків стоять блокуючі конденсатори?

#591 Re: Апаратні питання » Напруга для живлення реле » 2024-01-14 21:59:57

Shaman2 пише:

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

Можна і через діод. Але 13.8 В не сильно менше від 14.5. Хоча б два діоди послідовно.

Резистор на 5 Вт - це з трикратним запасом. На резисторі виділятиметься приблизно 1.5 Вт, тобто можна і 2-2.5 ваттний.

Shaman2 пише:

І як же реле в блоках автомобіля живляться, на ниж теж 12в надписи

В автомобілі зазвичай ставлять реле, які більш-менш відповідають специфікації. Якщо там написано максимум 15.6 В, то при 15.5 з великою ймовірністю буде працювати довго.

А оці сині реле для самодєлкіних і при номінальних 12 В часто горять.

#592 Re: Апаратні питання » Проблема з реле при увімкненні чи вимкнені живлення » 2024-01-14 21:31:35

Shaman2 пише:

Якшо нажати Reset, то не щелкає

А якщо:
1. Нажати Reset.
2. Подати живлення.
3. Відпустити Reset.
4. Нажати Reset знову.
5. Зняти живлення.

На яких із етапів щелкає?

#593 Re: Апаратні питання » Прошу уточнення по оптрону » 2024-01-14 21:00:40

Shaman2 пише:

1) чи обовязково для підєднання до аварійки гальванічна розвязка? Думаю вона не завадить, просто цікаво.

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

Shaman2 пише:

2) резистор на 220ом який диапазон номіналів допускається?

Для розповсюдженої PC817 максимально допустимий струм через діод - 50 мА, тобто при 5 В мінімально допустимий резистор: (5-1.25)/0.05 = 75 Ом. Але менше 100 Ом краще не ставити. Впевнено відкривається ця оптопара при 10 мА, тобто обмеження для резистора зверху: (5-1)/0.01 = 400 Ом. Якщо більше, може не спрацьовувати (але ще залежить від струму колектора на виході). 220-330 Ом якраз в оптимумі.

Shaman2 пише:

3) резистор на 10ом, яким я перестраховуюсь, чи потрібен він взагалі, а якщо потрібен то які номінали краще?

Кнопка ж замикає провід аварійки на масу накоротко? Заміряйте струм, який іде через провід при замиканні. Якщо менше 40 мА, то резистор не потрібен, там десь уже стоїть інший резистор. Для PC817 максимально допустимий струм колектора - 50 мА.

#594 Re: Апаратні питання » Напруга для живлення реле » 2024-01-14 20:28:37

В даташиті на реле в таблиці Coil Data пишуть Max allowable: 130%. 130% від 12 В - це 15.6 В. Теоретично можна, але на межі. Заживіть через послідовний резистор 51 Ом 5 Вт.

#595 Re: Апаратні питання » Проблема з реле при увімкненні чи вимкнені живлення » 2024-01-14 19:54:24

А, ще питання. При подачі живлення реле вмикається на короткий час і відразу ж вимикається? Чи вмикається і залишається увімкненим, поки є живлення, а при знятті живлення вимикається?

#596 Re: Апаратні питання » Проблема з реле при увімкненні чи вимкнені живлення » 2024-01-14 19:43:43

Shaman2 пише:

Так як я роблю це людині, то я вирішив перестрахуватись. Звісно для оптопари досить, а для самого реле мабуть ні, а іноді бувають два-три реле

Обмотка реле живиться з піна VCC. IN іде в базу транзистора через резистор, який обмежує струм до одиниць мілліампер. У Atmega328P обмеження на один вивод - 40 мА, одним виводом можна керувати десятком таких модулів. А на весь мікроконтроллер - 200 мА, хоч до кожного піна по реле підключайте.

Якщо ви хвилюєтесь, що не вистачить потужності одного модуля живлення, то струм обмотки реле не більше 100 мА, а Mini-360 видає 1 А запросто. Крім того, на один із модулів живлення навантажено тільки ардуіно, яке в активному режимі споживає максимум пару десятків мілліампер. При такому невеликому споживанні коефіцієнт корисної дії DC-DC суттєво зменшується.
Якщо ж при вмиканні таки виникатиме істотна просадка напруги (що малоймовірно), то поставте по живленню електролітичний конденсатор мікрофарад так на 47-100.

Shaman2 пише:

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

Нормально, все видно.
В коді у вас піни D4 і D7, на схемі підключено до D8?

Shaman2 пише:

Підтягувати не вариант

Коли мікроконтроллер в ресеті, або коли виконується бутлоадер, виводи знаходяться в високоімпедансному стані. Формально логічний стан вивода невизначений, реле "має право" перемикатись як заманеться. На практиці, якщо ключ на біполярному транзисторі, то у вивод в стані INPUT струм не втікатиме і транзистор відкриватись не повинен. Але припустимо, блок що живить реле, набирає напругу трохи швидше того, що живить ардуіно. Струм через транзистор тече в ардуіно і через захистний діод в землю, транзистор відкривається, реле вмикається. При вимиканні можливе те ж саме: конденсатор блока живлення ардуіно розряджається швидше (бо ардуіно споживає струм), а блок живлення реле нічим не навантажений. Із блока живлення реле струм через захисний діод тече в землю, реле вмикається.
Не наполягаю, що у вас відбувається саме так, але такий варіант не виключений.

Shaman2 пише:

прошивка зроблена так щоб можно було підєднувати будь яке реле, якщо замкнути D4 на масу то прошивка інвертує сигнал для реле які працюють по HIGH замість LOW, але в мене проблема саме з LOW реле зараз

Ви маєте на увазі цей код?

pinMode(D4, INPUT_PULLUP);
rele_level_kam = digitalRead(D4);
pinMode(D7, OUTPUT);
digitalWrite(D7, rele_level_kam);

Тип модуля реле конфігурується замиканням D4 на землю? Я мав на увазі підтягувати керуючий вивод D7, щоб сигнал мав визначений стан, коли пін ще/вже у високоімпедансному стані (High-Z).

Доречі, не факт, що відразу після вмикання INPUT_PULLUP напруга на D4 встигає встановитись до належного рівня. digitalRead() відразу може і не повернути HIGH.

Також при rele_level_kam=HIGH послідовність 'pinMode(D7, OUTPUT); digitalWrite(D7, HIGH);' виставляє D7 в нуль на короткий час (менше мікросекунди). Сумніваюсь, що цього достатньо для увімкнення реле, але теж слизьке місце.

Shaman2 пише:

Пробував ось це реле на 5в, підключення таке саме, перемичку на JDVCC не прибирав

З перемичкою обидва блоки живлення працюють просто в паралель. Тоді дивніше. Може і в логіці програми є помилки, по чотирьом рядкам важко діагностувати.

Для початку спробуйте модуль без оптопотари, заживіть все від одного модуля живлення. Для експеримента модифікуйте прошивку щоб видавала постійну фіксовану полярність (active low) незалежно від стану піна конфігурації. Щоб уникнути глітча при перемиканні піна в OUTPUT HIGH, перемкніть його спочатку в INPUT_PULLUP:

pinMode(D7, INPUT_PULLUP);
pinMode(D7, OUTPUT);

Доречі, а якщо ардуіно примусово утримувати в постійному ресеті, клацає реле при подачі/знятті живлення?
І чи не залишаєте підʼєднаним UART, коли перевіряєте?

#597 Re: Програмування Arduino » Потрібна допомога з програмним кодом » 2024-01-14 07:02:57

nblend() просто оновлює кольорові компоненти відповідно до коефіцієнту перекриття за формулою: X=X*(1-k) + Y*k, де X - колір existing, Y - колір overlay, k = amountOfOverlay/255. Третій параметр - це не step, а коефіцієнт перекриття.

Після оновлення масиву його ще потрібно вивантажити в матрицю. Щоб зробити плавний перехід за 3 секунди, потрібно пробігтись по коефіцієнту перекриття від 0 до 255 з затримкою 3000мс/255, кожен раз оновлюючи масив.
Щось типу такого:

#include <FastLED.h>

#define NUM_LEDS 84
#define DATA_PIN 3
#define NUM_GROUPS 12
#define LEDS_PER_GROUP 7
#define MAX_BRIGHTNESS 255
#define COLOR_CHANGE_INTERVAL 3000 // 3 секунди

CRGB leds[NUM_LEDS];
CRGB groupColors_cur[NUM_GROUPS];
CRGB groupColors_new[NUM_GROUPS];
CRGB groupColors_tmp[NUM_GROUPS];

static CRGB randomColor()
{
    return CRGB(random(256), random(256), random(256));
}

static void updateLeds(CRGB colors[NUM_GROUPS])
{
    // заповнюєм масив
    for (int i = 0; i < NUM_GROUPS; i++) {
        for (int j = 0; j < LEDS_PER_GROUP; j++) {
            leds[i * LEDS_PER_GROUP + j] = colors[i];
        }
    }
    // вивантажуєм оновлені кольори в матрицю
    FastLED.show();
}

void setup()
{
    FastLED.addLeds<WS2812, DATA_PIN, GRB>(leds, NUM_LEDS);
    FastLED.setBrightness(MAX_BRIGHTNESS);
    randomSeed(analogRead(0));

    // початкові значення колорів
    for (int i = 0; i < NUM_GROUPS; i++) {
        groupColors_cur[i] = randomColor();
    }
}

void loop()
{
    // відображаєм статичні кольори 3 секунди
    updateLeds(groupColors_cur);
    delay(COLOR_CHANGE_INTERVAL);

    // кінцеві значення кольорів
    for (int i = 0; i < NUM_GROUPS; i++) {
        groupColors_new[i] = randomColor();
    }

    for (int k = 0; k <= 255; k++) {
        memcpy(groupColors_tmp, groupColors_cur, sizeof(groupColors_tmp));

        for (int i = 0; i < NUM_GROUPS; i++) {
            nblend(groupColors_tmp[i], groupColors_new[i], k);
        }

        updateLeds(groupColors_tmp);

        delay(COLOR_CHANGE_INTERVAL/255);   // весь цикл виконується приблизно за 3 с плюс час на виконання коду і вивантаження масиву в матрицю
    }

    // замінюєм поточні значення кінцевими для наступної ітерації
    memcpy(groupColors_cur, groupColors_new, sizeof(groupColors_cur));
}

Код не перевіряв, бо не маю такої матриці світлодіодів. Досить неоптимально і десь можуть бути помилки. Але основна ідея має бути зрозумілою.

#598 Re: Апаратні питання » Проблема з реле при увімкненні чи вимкнені живлення » 2024-01-14 05:37:58

Shaman2 пише:

Живлення на arduino подаю через окремий DC-DC перетворювач mini-360 на вход VIN
Живлення на VCC реле подаю від окремого DC-DC перетворювача mini-360 (тому що боюсь що D-вихід не витримає навантаження на реле по струму), GND загальний.

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

Покажіть схему підключення.
Джампер VCC - JD-VCC на модулі реле знято?

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

Shaman2 пише:

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

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

#599 Re: Апаратні питання » K-POWER Цифровой серво-привод DM0900 » 2024-01-09 00:44:07

AndDay пише:

Я правильно понял, все через логическое XOR и в конце, через И ?

Так, щось типу такого:

    unsigned char pkt[] =
    //       0     1     2     3     4     5     6
        { 0xFF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x00 }; // cmd STAT, no data

    for (int id = 1; id <= 20; ++id) {
        pkt[3] = id;
        pkt[5] = 0;   // zero check_sum_1
        pkt[6] = 0;   // zero check_sum_2

        unsigned char checksum = 0;
        for (int i = 2; i < sizeof(pkt); ++i) {
            checksum ^= pkt[i];
        }

        pkt[5] = checksum & 0xFE;
        pkt[6] = ~pkt[5] & 0xFE;

        send_packet(pkt, sizeof(pkt));
        wait_response();
    }

Дивний і ненадійний алгоритм контрольної суми, але так написано  hmm

#600 Re: Апаратні питання » K-POWER Цифровой серво-привод DM0900 » 2024-01-08 11:58:58

AndDay пише:

Протоколы все перепробовал, качал еще пару альтернативных программ

Я би все-таки спробував той протокол, що для A1-16. Тільки не сторонньою програмою, а своєю, щоб гарантовано видавала правильно сформований пакет. Наприклад, STAT для ID 1: 0xFF 0xFF 0x07 0x01 0x07 0x01 0x00. З перебором ID від 1 до 20 і перерахуванням байтів контрольної суми. Також з перебором чотирьох бодрейтів. І дивитись, чи прийде відповідь хоч на один. Всього-то 80 варіантів smile Ну або впевнетись, що альтернативні програми генерують пакет, відповідний протоколу.

dimich пише:

На плате сервопривода, два резистора 1кОм припаяны вместе, отводы распаяны на разные входы микросхемы.

А видно маркування мікросхеми? Чи можна змалювати схему, хоча б частково, куди подається вхід, земля і живлення? Або фото плати?

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