Перейти к публикации

Рекомендованные сообщения

Друзья, у меня появился новый проект.  Так то я не собирался из STM8 делать такую серьезную штуку. Мне нужно было решить некоторую простую задачу, но потом "остапа понесло".

Теперь я надеюсь усложнить мой проект и если дело пойдет у меня, то тогда даже название темы надо будет сменить.

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

Сегодня, но несколько позже, я начну описывать что уже сделано.

Может быть начало выглядит несколько пафосно, извиняюсь за это, на самом деле ничего экстраординарного не будет конечно, скорее наоборот, но мне интересно. Может кому-нибудь будет тоже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В общем, есть маленький контроллер STM8. В него я заложил несколько функций, но по сути один такой контроллер может решать одновременно одну задачу.  Управляться он будет неким мастером про протоколу ModbusRTU. По идее их можно будет несколько штук  повесить на одну линию к мастеру.  Т.е. некоторое модульное решение, каждый модуль под свою задачу.

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

 

Сначала видео сделанное сегодня в моих барских угодьях ))).  Я испытывал как работает именно контроллер, регулятор заодно.

 

Запись видео я зря прервал так быстро, оказалось  как выключил запись, где-то через 30 сек система вышла на уставку. Я просто до этого кучу неудачных наснимал )).

Ниже тренд этого процесса. Я сделал отметки времени. В общем в целом успешно.

2145145504_.thumb.png.af51d8a112a5e3e6fe97db8e90fbd4ce.png

 

Далее я буду уже рассказывать про сам регулятор. Вряд ли сегодня.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

731277172_.png.684063412611d43c85759fb0fc0988e4.png

 

Продолжаю.

Вот так выглядит отладочная платка на МК STM8S103F3P6.

159396512_.png.ba080c37faeb2416b33de2fc16f56e27.png

Вот так выглядит собранный модуль. Я думаю это временный отладочный модуль. Но можно и его использовать как есть.

IMG_20240227_103912_887.thumb.jpg.bbbd7f796ce6eaf06fb847fb457da0b7.jpg

 

Ниже структурная схема регулятора.

 

1644155378_.thumb.png.dd4b63abcdf873e3ad155fda01ad3b8b.png

 

В центре сам модуль, со своей прошитой логикой.

  • С внешним миром регулятор общается по протоколу ModbusRTU через канал RS-232 TTL (я потом поясню, если что см. эпиграф к данному посту из законов Мерфи).
  • Питание 5В, регулятор измеряет его и может среагировать на снижение питания;
  • Один вход на АЦП (10 бит), для измерения напряжения входного сигнала (0... 5) В или силы тока (0...20)мА, или сигнал от датчика тока ACS712 c вычислением RMS.
  • Входная линия работающая по протоколу 1-Wire, а именно для датчик температуры DS18B20
  • Дискретный сигнал, детектерует состояние 1 или 0. Но думаю добавить измерение частоты.
  • Сигнал детектора перехода через ноль, нужно для управления симистором.
  • Два частотных выхода. Могут работать в разных режимах. Частота и ШИМ.
  • Дискретный выход, активен при наличии какой-то аварии.
  • Ну и сигнал для управления симистором.

Электрическая схема пойдет следующим постом.

 

Изменено пользователем Z_h_e
Скорректирована структурная схема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

И так, схема.

Ниже схема подключений отладочной платы, именно платы с контроллером. Если будет нужно приложу схему самой платы, но она легко гуглится.

71560021_.png.07db34c692f354701aa49692e73f5ab2.png

Порты А1 и А2 , на них скорее всего будет навешен кварцевый генератор в будущем, сейчас микроконтроллер тактируется от внутреннего источника частоты и он не точен.

Порт С5 хоть и не подключен никуда, но он занят и на нем есть активный выходной сигнал.

Порт D1 нужен для программирования контроллера, но если что его можно задействовать в работе, т.е. будем считать что это резерв.

 

Начну с питания. Обращаю внимание на перемычку между выводами 5в и 3.3в. Дело в том что на отладочной плате стоит стабилизатор напряжения на 3.3В, вот он и перемкнут, контроллер будет питаться 5В.

Разъем для подключения питания. Конденсатор на всякий случай. Линия через диод Шотки - задумано подключение батарейки. Пока не пробовал. Пока вообще запитывал регулятор через разъем микроюсб установленный на плате.

339132579_.png.e5e3cbdb6e51e8c1dc886a9615d53581.png

 

АЦП.

Используется два порта D2 и D3. Один для источника опорного напряжения. АЦП измеряет сигнал на порту D3 и напряжение питания контроллера.

Ниже схема источника опорного напряжения выполненная на интегральном стабилитроне TL431. ИОН 2,5В.

 

890075040_.png.bf482916a4f132236a967bec763eb359.png

 

Часть схемы для измерения аналогового сигнала. Перемычка JP2 - включение RC фильтра для снижения возможных помех. Включенная перемычка JP3 превращает вход измереная напряжения вход измерения силы тока 0-20мА. Надо было наверное стабилитрон добавить для защиты входа от перенапряжения. Но хорошая мысля приходит опосля.

Разъем J7 трехконтактный, питание выведено для подключения датчика тока ASC712. У меня есть 20амперный, позже будем пробовать.

1402189814_.png.90ddb43f956a6b6ed41a6653788b39e6.png

 

Модуль управления симистором.

Все что между разъемами J10 и J5 включая разъемы это у  меня отдельная платка, испытать ее будем позже.

Разъем J9 на регуляторе. Контакт 1 выход на управление симистором, Контакт 2 вход детектора фазы, контакт 3  дискретный выход о наличие/отсутствия аварии, к нему можно полючить какое-нибудь реле.

1467957190_.thumb.png.d8a663c08ffdc54fd868b4113122eb5e.png

 

Частотные выходы.

Их два. Выход 1 предназначен для подключения сервопривода, но не обязательно. К выходу два добавлена нехитрая схема (тут все нехитрое) и при установки перемычке превращается из частотного (вернее ШИМ) в аналоговый выход 0-5В.

2060936161_.png.75d51b14c45665dce96e74919895816d.png    1374993954_.png.0cc699b46b81a88583daeb2fb92a8eba.png

 

DS18B20

Подключается через такую схему, так надо :)

199581411_.png.be1992b33480f30d6e00d0680fa104ca.png

 

RS-232 TTL (он же UART).

Линия передачи данных работающая по протоколу Modbus RTU. Предполагаться в будущем подключение нескольких таких регуляторов в параллель, естественно к одному мастеру, для избежания коллизий на линии установлен D1 и R14. Мастер пока у нас комп. Соберу второй регулятор, попробуем как будут несколько на линии вести себя.

2117782676_.thumb.png.08dbed76a289ae7a57b35e35ff62d2ef.png

 

По схеме вроде как все.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Коротко о протоколе Modbus.

Подчиненных  (Slave) устройств может быть 247 на одной линии. Каждое устройство молчит себе в тряпочку пока именно его не спросили, спрашивать может только мастер, мастер всегда один на линии. У каждого подчиненного девайса назначен уникальный аддресс (ID) от 1 до 247.

 

Мастер может спросить данные и тогда ему подчиненный должен их ответить или мастер может записать данные в девайс. Вот по сути весь и обмен.

Как Мастер знает что и куда чего. Для этого существую карта адресов модбас. Мастер знает эту карту и спрашивает данные соответственно.

Для примера одна строчка из карты регулятора на STM8 (никак не могу придумать емкое название).

По адресу 40009 лежит измеренная температура. Вот мастер и запросит данные из регистра 40009, если нужно знать данные о температуре.

1717530409_.thumb.png.968d5392c5820ccf8e1ae0d4bc0ab6db.png

 

Я потом выложу полную карту, сейчас я думаю она еще поменяется.

 

Как подключить регулятор к компу.

Нужен адаптер RS-232 TTL.  Например он может выглядеть так. Когда его подключишь к компу, он установится как COM порт. Логика работы будет как у порта, но уровень сигнала должен быть именно TTL, у настоящего COM порта  уровни совсем другие и даже двуполярные.

1671965600_.png.2e62f3438ee02ee891b5c091ca24e7b6.png

Подключаем GND-GND; Rx-Tx; Tx-Rx.

 

Какое ПО использовать. В инетах есть специальные программы. Пишет номер регистра и записываешь или читаешь данные. Но данные будут не в человеческом формате.

Поэтому я сделал специальную программу для конфигурирования регулятора.

 

PS: Согласно спецификации протокола Modbus RTU. Начало пакета - это тишина на линии  длиной более 3,5 символа, между символами не должно быть длиннее паузы  чем 1,5 символа. По факту у  меня сделано начало покет идентифицируется с паузы 1 симвлов, скорее всего будет работать вездет, но все-таки.

 

Напоминаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ПО для конфигурирования регулятора.

Пока оно немного не доделано, но пользоваться точно можно.

Выглядит оно вот так. Буду рассказывать про ПО, заодно расскажу какой функционал заложен сейчас.

1625761976_.thumb.png.eaf6da2f71a27273cd8320748a1bf7c2.png

 

Начну с самого простого. Версия - это версия зашитой прошивки в регулятор. UID уникальный номер контроллера. ID MB - это идентификационный номер регулятора, т.е. это номер по которому обращается Мастере к регулятору, вернее должен, чтобы получить ответ.

837110064_.png.e450d81638b019025439ae51e742c8c6.png

 

Следующее.

Назову его логический модуль, что ли.

2124611836_.png.fc7dabfe9287f8e3e5044568a94bbf25.png

 

Параметр "Выход,%" - это текущее состояние регулятора. Т.е. на выходах 0%. Это относится ко всем выходам, не важно как они сконфигурированы. Т.е. частотные в состоянии 0, управление симистором в состоянии 0. Аварийных выход от отдельно считается.

Откуда взялся этот синий ноль - так посчитал ПИД регулятор, а этот ПИД включен в "Режиме работы". Т.е. ПИД работает от датчика температуры.

 

Какие могут быть на данный момент режимы работы.

498832091_.png.4418923a88196a698ff76e3ab9258d12.png

  • фиксированный - самый простой режим. Все выходы установятся в состояние которое находится в поле  "Вых.знач,фикс,%". Просто для того чтобы задавать какое-то значение в постоянном режиме.
  • ПИД от АЦП - будет работать ПИД регулятор используя входную величину от входа АЦП. Например туда можно подключить датчик давления или датчик тока ACS712. Соответственно можно стабильно держать давление или силу тока на ТЭНе.
  •  АЦП лин.0-5 - это некоторый аналог фиксированного режима, только от ацп. Например подключаем на вход АЦП потенциометр ("регулятор громкости"), вращением его движка задает выходное значение. На вход 5В - на выходе 100%, на вход 4в - на выходе 75%.
  • АЦП лин. 1-5 - логика та же самая, только за ноль принимается 1В. Зачем это? При установке перемчки для измерения силы тока, такой диапазон будет соответствовать 4-20мА. Т.е. стандартному диапазону токовой петли.
  • АЦП RMS - не придумал как это )).

Вне зависимости от выбранного режима, может включиться аварийный режим.

Когда он будет включен, выходные значения установятся в значение в "Вых, знач, авар,%". Установятся незамедлительно. Аварийный выход переключится из состояния 1 в 0. Так как на этом же порту отладочной платки подключен светодиод, еще и он засветится.

 

Как формируется логика перехода в аварийный режим.

Есть два 16 битных регистра Ошибки и Маска ошибок.

199753755_.png.38a4e1198bc2eb813dd728893f7af8b2.png

Ошибки представлены как в нечеловеческом шестнадцатеричном формате, так и побитном, а каждый бит означает что-то. При наведении курсором на этот бит, вылезет подсказка что это.

Для примера я отключил датчик температуры. Смотрим на верхние квадратики, правая группа из восьми. Красная стрелка показывает на флаг ошибки соответствующий отсутствию датчика температуры.  Левая группа полностью повторяет правую. Зеленая стрелка - это флаг ошибки возникший по той же причине. Есть конечно отличие.  Если я сейчас подключу датчик обратно, то ошибка по красной стрелке тут же снимется, по зеленой сама никогда.

Для того чтобы регулятор  перешел в режим аварии, должен быть включен соответствующий флаг в маске ошибок. Сейчас устройство в режиме аварии так как есть соответствие маски и ошибки (см. синий овал).

 

 

8 ошибок и их маски. Справа налево.

0 - "Нет ответа от датчика температуры";

1-  "Данные по температуре некорректны";

2-  "Выход за уставку по температуре";

3 - "Лимит количества ошибок подряд датчика температуры"; (поясню, датчик может прислать кривые данные, но подряд так делать нельзя)

4 -"Низкое напряжение питания";

5- "Дискретный вход"; (лог 0 на вход).

6-"Выход за уставку АЦП";

7-"Внешняя (modbus)"; (это флаг можно установить командой от мастера, то есть принудительно перевести в режим аварии).

Настройки ПИД регулятора.

1259402422_.png.4e4bca6f7adb897ccca344c5dd1b79c7.png

Нечувствительность означает отклонение от заданного значения не принимается как ошибка. Например если поставить 1, то при уставке  40, реальное значение в диапазоне от 39 до 41 не будет в расчет ПИДа считаться отклонение от заданного.

Время дискретизации - частота вызова работы ПИД.

Все нецелые значения могут быть установлены в диапазоне 0т -128,00 до +127,99.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Датчик температуры.

529710416_.png.7c8550ac78b0ad7842424f31221550f3.png

По порядку сверху вниз:

  • текущая температура;
  • просто счетчик ошибок, вот столько насчитать успел пока был датчик отключен.
  • по сути тот же счетчик, только сбрасывается при устранение проблемы.
  • лимит ошибок, если его превысит счетчик ошибок подряд, то установится соответствующий флаг ошибок.
  • уставки по Т, если текущая Т выйдет за них, установится тоже соответствующий флаг ошибок.

 

Параметры управления симистором.

353781515_.png.5632c2b853049ced16bf13cfdacf704a.png

 

Не думаю что их понадобится трогать.

Сверху вниз:

  • длительность управляющего импульса который открывает симистор.
  • задержка  -  фронт сигнала детектора  организованный на оптопаре придет раньше, чем будет фактический ноль в силовой сети. Вот эта задержка для этого.
  • полупериод синусоиды в "розетке" соответствует 10 мс.  При выходных значениях близких к нулю, нет смысла открывать симистор и главное случайно не попасть на следующий полупериод.

 

Параметры АЦП.

1462980309_.png.2a0e8de33ca1483b0c5657eb4c27ac44.png

 

Опять сверху вниз.

  • текущее измеренное значение на аналоговом входе.
  • текущее напряжение питания.
  • если напряжение питания снизится ниже этой уставки, то установится соответствующий флаг ошибки. Гистерезис +0,2.
  • множитель и смещение - коэффициенты влияющие на результат. Сейчас они, как видно, не влияют.
  • ко входу подключен датчик тока ACS712.
  • ну и уставки для флагов ошибки.

 

Изменено пользователем Z_h_e

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Режимы работы частотных выходов.

109923097_.png.3d9fc6ad1c5656b53c3aed949b5fd1df.png

 

Оба частотных выхода  одновременно могут работать только на одной частоте. Режим PWM это ШИМ. Т.е. процент заполнения ширины импульса периода сигнала. ШИМ легко преобразовать в аналоговый сигнал, что в схеме реализовано.

 

  • 50Гц - выход 1 тоже ШИМ, то под управление сервы (ниже рассморим), выход 2 просто ШИМ.
  • далее просто ШИМы, где указно время это период частоты, ну где Гц там частота. Есть мысля один ШИМ сделать инвертным, только зачем?? (период 10 мин не реализован)
  • последний режим -  тут уже меняется не ширина импульса, а его частота в зависимости от заданных % выхода. Ширина импульса будет 10% для F1 и 50% для F2. Этот режим может применяться, например, для управления перистальтическим насосом.

И еще несколько параметров относящихся к частотному выходу.

2109083822_.png.ff4513c3fd075c5f230f64c2d159c55a.png

  • макс. частота - это как раз настройки для последнего режима, т.е. для частотного выход с изменяемой частотой. Например ПИД регулятор посчитал ,что нужно уставить выхода в 80%, так как для 100% это 400 Гц сейчас, то частота будет 320Гц.
  • Ширины управляющих импульса для сервы для 0% и 100%.  Для MG995 одно крайнее положение соответствует 500мкс, другое 2500мкс и угол поворота будет 180градаусов. Это приблизительно. Можно уменьшить этот угол изменив настройки. Если их поменять местами, серва будет вращаться в обратном направлении.
  • Счетчик - текущее значение внутреннего  счетчика регулятора.  Вывел для наглядности. Дело в том, сейчас организовано  так, что если меняешь режим частотного выхода, он обязательно отработает период до конца и только потом сменится режим. А если у тебя стоит период минута, то непонятно что происходит без него :). Напоминаю, писал выше, если же смена режима на аварию, то изменения вступят силу незамедлительно, но не наоборот.

 

Конфигурации и лог файл.

339748440_.png.cd2452043aa71bc3a9aecb2af574b199.png

Конфигурацию можно скачать с регулятора и сохранить в файл. Это действо можно сделать в обратном порядке.

Так же можно вести лог файл для анализа. Лог пишется в текстовый файл и выглядит вот так.

Температура/Кол-во ошибок температуры/Напряжение питания/Аналоговый вход/Выход %/Коды ошибок

18:46:38 17,44 0 5,09 2,03 8 0000   
18:46:48 19,31 0 5,00 1,88 14 0000   
18:46:58 22,69 0 5,00 2,22 37 0000   
18:47:08 14,44 0 5,08 2,29 11 0000   
18:47:18 15,56 0 5,07 2,06 18 0000

 

 

 

 

Дальше надо попробовать остальные режимы. По ходу пьесы буду выкладывать что есть.

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Внес некоторые изменения в ПИД регулятор: ограничение максимума и минимума. А так же добавил функцию замера частоты, можно будет расходомер подключить и поддерживать стабильный расход.

 

Но сегодня я наконец-то проверил режим замера тока с помощью датчика ACS712 (20А)

На фото слева направо. Симистор на радиаторе, платка опторазвязки, модуль на ACS712 и тот же регулятор на STM8.

IMG_20240310_140719_295.thumb.jpg.0212e5e75ac4d71d53f13510df4c67af.jpg

 

Сначала  я попробовал просто устанавливать некое значение и смотреть что получилось. Нагрузкой являлся масляный радиатор переключателем мощи на три положения. Получилось вот так, каждая таблица для одного режима радиатора. Маленький ток конечно для такого датчика.

1390862530_.thumb.png.07aa65b0246086a1a2c71b4b3009f62a.png

 

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

 

Дальше пока не знаю когда продолжу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...