Система генерації імпульсів з конфігурацією, заданою діаграмою Ганта

Система призначена для тестування механічних систем (наприклад, паливної системи автомобіля) на стенді з використанням емуляції сигналів, які зазвичай формуються бортовим комп'ютером у робочому режимі. Серійний бортовий комп'ютер не завжди дозволяє змінювати параметри в необхідному діапазоні. Тому використовується дана система, до якої підключаються виходи датчиків та управління виконавчими механізмами (формами, клапанами тощо).

Оскільки контролер генерує логічні сигнали з напругою 5В, субдатчики та виконавчі пристрої необхідно підключати через додаткові ланцюги зниження або підвищення напруги або через швидкодіючі реле.

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

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

Програмування пульсу

Послідовність імпульсів задається програмно шляхом створення об'єктів типу Імпульс у відповідному місці прошивки

Для цього використовується така структура:

Impulse(ValvePin, Start, Time, Pause, Number, TriggerPulse, TriggerSensor, TriggerLimit)

Тут:

ValvePin – номер контакту контролера, на який формуватиметься імпульс;

Start – затримка включення імпульсу після старту, мс;

Time – Тривалість імпульсу, мс;

Pause – Затримка між імпульсами, мс (необов'язковий параметр, за умовчанням Pause=0);

Number – Кількість імпульсів (необов'язковий параметр за промовчанням Number=1);

TriggerPulse — це номер попередньої послідовності, завершення якого призведе до запуску поточної послідовності. (необов'язковий параметр за промовчанням TriggerPulse =-1);

TriggerSensor – Кількість датчиків, які запускають запуск послідовності імпульсів (необов'язковий параметр, за умовчанням TriggerSensor=-1);

TriggerLimit – значення датчика, перевищення якого призведе до запуску поточної послідовності. Вказується в діапазоні від 0 до 1024, що відповідає напрузі на відповідному виведенні від 0 до 5В з кроком 0,005В (Необов'язковий параметр, за умовчанням TriggerLimit=615, що відповідає спрацьовування при напругі вище 3В);

[!NOTE]

Якщо останні три додаткові параметри не вказані, затримка імпульсу буде відлічуватися від початку робочого режиму (натискання кнопки «Старт»)

Приклади задачі для різних конфігурацій імпульсів:

Формування одиночного імпульсу:

Наприклад, команда Impulse(2,1300,100) згенерує один імпульс тривалістю 6 мс на виведенні № 4 через 1,3 секунди після команди «Виконати».

Приклад послідовності одиночних імпульсних імпульсів

Формування послідовності імпульсів, що повторюються:

Наприклад, команда Impulse(2,10000,1000,500,10) згенерує послідовність із 10 імпульсів на виведенні №2, тривалість кожного імпульсу 1 секунда, пауза між імпульсами становить 0,5 секунди. У цьому випадку послідовність запускається через 10 секунд після команди запуску.

Приклад повторюваної послідовності імпульсів

Послідовність імпульсів, в якій початок одного імпульсу залежить від завершення попереднього імпульсу:

Щоб створити залежність, необхідно вказати необов'язковий параметр TriggerPulse. Він вказує порядковий номер послідовності, кінець якої буде початком поточної.

Наприклад, команда Impulse(3,4000,100,300,15,2) згенерує на виведенні №3 послідовність із 15 імпульсів тривалістю 100 мс з паузою між імпульсами 300 мс. Епізод починається через 4 секунди після закінчення епізоду №2

Приклад послідовності імпульсів, що ініціюється завершенням попередньої послідовності імпульсів

Послідовність імпульсів, ініційована показаннями датчика:

Щоб створити залежність послідовності від датчика, необхідно вказати додатковий параметр TriggerSensor. Він показує кількість датчиків. які запускають початок послідовності імпульсів. За замовчуванням поріг спрацьовування встановлено на 3В (поріг переходу від логічного нуля до логічного 1)

Наприклад, команда Impulse(5,0,7000,0,1,-1,0) згенерує один 7-секундний імпульс на виведенні №3, який почнеться в той момент, коли З датчика №0 надходить напруга понад 3В.

Приклад послідовності імпульсів, що ініціюється логічним значенням показань датчика

За потреби тригер може бути встановлений на будь-яку напругу в межах вимірювань; для цього після параметра TriggerPulse також необхідно встановити параметр TriggerLimit. Значення може перебувати в діапазоні від 0 до 1024, що відповідатиме напрузі спрацьовування від 0 до 5В з кроком 0,005В.

Наприклад, команда Impulse(6, 1500, 2000, 500, 2,1,1, 920) створить послідовність з 2 імпульсів тривалістю 2000 мс та паузою між імпульсами 500 мс. Послідовність починається через 1,5 с після того, як датчик №1 отримує напругу більше 4,5 В

Приклад послідовності імпульсів, що ініціюється аналоговим значенням показань датчика

Регулювання частоти імпульсів в залежності від показань датчика (регулювання частоти)

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

Щоб створити залежність, необхідно додати об'єкт типу SensorScaler

Для цього використовується така структура:

(SensorNumber, TargetPulseNumber, ZeroPulseDelay, ZeroPulseTime, ZeroPulsePause, StartScaling, TimeScaling,PauseScaling)

Тут:

SensorNumber – Номер датчика, який змінюватиме пульс;

TargetPulseNumber – це номер послідовності імпульсів, які потрібно контролювати;

StartScaling – Коефіцієнт, на який збільшиться затримка перед початком послідовності імпульсів;

TimeScaling — Коефіцієнт, на який збільшиться тривалість імпульсу;

PauseScaling — Коефіцієнт, на який збільшиться пауза між імпульсами;

ZeroPulseDelay – Затримка перед початком імпульсів, що відповідає показанням датчика 0 В (опційно, за умовчанням ZeroPulseDelay =-1);

ZeroPulseTime — тривалість імпульсу, що відповідає показанням датчика 0 В. (необов'язково, за умовчанням ZeroPulseTime =-1);

ZeroPulsePause — пауза імпульсу, що відповідає показанням датчика 0 В. (необов'язково, за умовчанням ZeroPulsePause =-1);

[!NOTE]

Значення коефіцієнтів масштабування StartScaling, TimeScaling, PauseScaling відповідають тому, скільки разів зміниться вихідне значення при напрузі з датчика 5В. . Наприклад, коефіцієнт 2 збільшить вихідне значення параметра вдвічі при напрузі 5В, а при напрузі 0,5В збільшить його лише на 20%. Негативний коефіцієнт зменшить параметр щодо вихідного значення. Наприклад, для TimeScaling=-1 при напрузі 2,5В значення параметра буде 50% від вихідного, при напрузі 0,5В – 10% від вихідного

[!NOTE] Значення 0 для коефіцієнтів масштабування StartScaling, TimeScaling або PauseScaling не призведе до зміни відповідного параметра залежно від датчика.

[!NOTE] Значення -1 для параметрів ZeroPulseDelay, ZeroPulseTime або ZeroPulsePause не буде додатково встановлювати значення параметра 0. , т.е. е. враховуватиметься лише вихідне значення параметра.

Наприклад, наступна комбінація команд:

Impulse(3, 0, 100, 300, 100)

SensorScaler(3, 3, 0, 3.33, 3.33, 1, 0, 0)

сформує на виводі D3 серію імпульсів, параметри яких будуть відповідати напрузі на виводі A3. Для напруги 1,5 В – тривалість імпульсу 100 мс з паузою 300 мс, для напруги 4,5 В – 300 мс та 900 мс відповідно

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

Основний характерістики

  • Головний контролер - Arduino Uno
  • Процесор – 16 МГц, ATmega328P
  • Пам'ять контролера - 32 КБ Flash + 2 КБ SRAM + 1 КБ EEPROM.
  • Аналоговий вхід контролера – 10 біт (1024 рівня)
  • Дозволя аналогового входу контролера – 0,00448 В
  • Вихідна напруга для імпульсів – 5В
  • Максимальна частота імпульсів - 1000 Гц (тривалість 1 мс).
  • Номінальна вхідна потужність –5 В 0,5 А
  • Робоча температура: – -10..+85 °С)
  • Розміри – 50x25x20 мм (компоненти зібрані у корпусі).
  • Вага – 50 г (з пластиковим футляром).

Компоненти

Схема підключення

Схема підключення з прикладом тестованої системи

Дальній розвиток системи

  • Додавання додаткових опцій логіки формування імпульсів та тригерів (поява сигналу певної частоти тощо);
  • Додавання графічного інтерфейсу для генерації імпульсного завдання (настільний або мобільний додаток);
  • Додати елементи керування для запуску незалежних програм тестування, наборів параметрів тощо.
  • Бездротове керування (Bluetooth, 1,2 ГГц і т. д.);
  • Додавання РК-екрана, що відображає стан пульсу та показання датчиків у режимі реального часу;
  • Реєстрація всіх даних;
  • Додавання тригера перевищення показання з додатковими діями (включення/вимкнення реле, видача логічних сигналів, звукова сигналізація тощо);
  • Додавання незалежного джерела живлення;
  • Веб-інтерфейс;
  • Перенесення та збереження даних у хмарі;