Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Регулятор напряжения и тока на Arduino Pro Mini

Форум самогонщиков Автоматика
1 2 3 4 ... 57 1
sebra Куратор Республика Коми 146 85
07 Февр. 16, 17:47
ВНИМАНИЕ с 20.11.2017 изменился алгоритм работы регулятора напряжения а также схема подключения измерительного трансформатора

В данной ветке представлена попытка создать стабилизированные регуляторы напряжения и тока на Arduino Pro mini.

Если у вас сразу возникло много вопросов, рекомендую прочитать этот текст до конца, возможно ответ на большинство из них уже есть.

РЕГУЛЯТОР НАПРЯЖЕНИЯ:

Скрытый текст
U_regulator_free.ino

Регулировка напряжения фазовая, измерение напряжения среднеквадратичное.
Количество полупериодов изменяется в коде if (zero == 3) и if (zero >= 3) о чем в тексте скетча есть соответствующий комментарий.

Значение напряжения подается на Serial порт в виде TWxxx, где ххх значение от 35 до 400, выдает назад в порт текущие параметры:
realU - Измеренное выходное напряжение
ustU - Установленное вами значение выходного напряжения

Проект писался и проверялся на Atmega328 16 мГц (Arduino Pro mini), Коллега U-M протестировал работу на Uno.

Изначально выставлено нулевое напряжение, симистор закрыт, если не реагирует на команды с порта, в окне монитора порта Arduino IDE выбрать в выпадающем списке NL&CR.

После сборки требуется выставить входящее напряжение. Для этого выставить максимальное напряжение подключить тестер к выходу под нагрузкой (например через тройник) и путем подстройки потенциометра добиться соответствия показаний тестера и показаний получаемых с Arduino.

В коде if (ch == '\n'){ выставляется что будет являться признаком окончания строки, символ возврата каретки (ASCII 13, или '\r') или символ новой линии (ASCII 10, или '\n')

Скетч, схема, проект для Протеуса (программа симуляции, может кому то пригодиться) прилагается.

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

imag0003.jpg
Imag0003. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.



РЕГУЛЯТОР ТОКА НА ACS712:

Скрытый текст
I_regulator_free_ACS712.ino

Добавлен скетч для версии с ACS712, схема аналогичная, за исключением замены трансформатора на датчик тока. Стабилизация с помощью скользящего алгоритма.

Значение тока подается на Serial порт в виде TWxxx, где ххх требуемое значение тока, выдает назад в порт текущие параметры:
realI - Измеренный ток
ustI - Установленное нами значение выходного тока

Измерение тока среднеквадратичное за три периода.
Количество полупериодов изменяется в коде if (zero == 6) и if (zero >= 6) о чем в тексте скетча есть соответствующий комментарий.

Тип датчика ACS712 выставляется в начале скетча, есть комментарий для установки коэффициента.

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

//--------------------------------------------------------------------------------------

По просьбам добавлен скетч с энкодером вместо кнопок I_regulator_free_ACS712_LCD_Display_Encoder.
Подключение энкодера:

Пин 7 - энкодер SW (кнопка энкодера)
Пин 8 - энкодер CLK
Пин 9 - энкодер DT

Нажав на кнопку энкодера увидим на экране LCD ---> и цифры устанавливаемого тока,
установив необходимое значение (сам ток не меняется на выходе) нажимаем снова кнопку энкодера и применяем изменения.

//--------------------------------------------------------------------------------------


РЕГУЛЯТОР ТОКА НА ACS712 С ПРЕДУСТАНОВКАМИ И ЗАПИСЬЮ В ПАМЯТЬ:

Скрытый текст
Файл: I_regulator_free_712_LCD_Encoder_Preset_EEPROM

Перечень возможностей: вывод информации в ваттах, время работы, счетчик затраченной электроэнергии, пять предустановок с записью в память.  
Название предустановок и их количество правиться в программе.
Расчет потребления электроэнергии ПРИМЕРНЫЙ, в виду значительных погрешностей измерения.
Для корректной работы требуется измерить сопротивление ТЭНа и записать в программу, о чем в тексте есть комментарий.
Программа имеет три меню:
1. Текущая мощность (ВАТТ), включен или выключен регулятор (OFF/ON)
Название предустановки, установленная мощность.
2. Время работы, включен или выключен регулятор (OFF/ON)
Потребленная мощность в ваттах.
3. Установка, включен или выключен регулятор (OFF/ON)
Название предустановки >> устанавливаемая мощность.

Переключение между меню 1 и 2 с помощью кнопки энкодера;
Переключение между предустановками с помощью энкодера;
Переход в меню 3 и выход из него нажатием кнопки 1 , установка мощности с помощью энкодера;
Запись в память установки с помощью кнопки энкодера в меню 3, в качестве подтверждения появится надпись WR;
Включение регулятора кнопкой 2 в меню 1 или 2. Если требуется регулировка на «ходу» то при включенном регуляторе нажать кнопку 1 и производить регулировку из меню 3 установки;

Звучит несколько запутанно, но в процессе эксплуатации трудностей возникнуть не должно.
Схема подключения:

Пин 10 – кнопка 1
Пин 11 – кнопка 2
Пин 7 - энкодер SW
Пин 8 - энкодер CLK
Пин 9 - энкодер DT

//--------------------------------------------------------------------------------------

Для прямого подключения LCD без I2C в начале скетча есть комментарий

//--------------------------------------------------------------------------------------

РЕГУЛЯТОР ТОКА НА ТРАНСФОРМАТОРЕ ТОКА DL-CT1005A:

Скрытый текст
I_regulator_free_Current.ino

Добавлен вариант с трансформатором тока DL-CT1005A реализованный по схеме https://learn.openenergymonitor.org/...ce-with-arduino Работа аналогична работе с ACS712, точность и стабильность показаний выше.

3532_0.jpg
3532_0. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
,
img_20160810_1732511.3.jpg
Img_20160810_1732511. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
,
img_20160810_1733141.jpg
Img_20160810_1733141. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.



ВЕРСИИ С СЕМИСЕГМЕНТНЫМ ИНДИКАТОРОМ НА СДВИГОВЫХ РЕГИСТРАХ 74HC595:

Скрытый текст
Скетч - расширенная версия бездисплейного варианта, подходит как к версии с дисплеем так и без.

Совместимый модуль возможно заказать в интернет магазинах, например такой:

4-biti-cifrovoi-kamera-svetodiodnii-displei-modyl-chetire-posledovatelnii-dlya-arduino-595-driver-y103.jpg
4-biti-cifrovoi-kamera-svetodiodnii-displei-modyl-chetire-posledovatelnii-dlya-arduino-595-driver-y103. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.


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

Алгоритм работы кнопок следующий:
1. При запуске индикация входного напряжения / выходного тока
2. При нажатии на кнопку 1 циклически показываются В- входное напряжение / выходной ток, У - установленное.
3. При нажатии на кнопку 2 вход в режим установки , увеличение значения кнопка 1, уменьшение 2. Установленное значение напряжения / тока меняется СРАЗУ во время регулировки.
4. После окончания установки при отсутствии нажатий на кнопки в течении 10 секунд происходит возврат в меню индикации.

Версии скетчей находятся в архивах под соответствующий вариант регулятора.

ВЕРСИИ С LCD ДИСПЛЕЕМ ПОДКЛЮЧЕННЫМ ПО I2C:

Скрытый текст
Мной использовался дисплей LCD 1602 на HD44780 с модулем I2C на PCF8574 и библиотека LiquidCrystal_I2C.

img_20161018_205335.jpg
Img_20161018_205335. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

img_20161018_205505.jpg
Img_20161018_205505. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.


Библиотека ставиться из менеджера библиотек в IDE, либо с сайта https://github.com/marcoschwartz/LiquidCrystal_I2C.

С подключением дисплея проблем возникнуть не должно, распиновка Pro Mini:

prominifront.jpg
Prominifront. Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.


Для работы Вашего дисплея требуется узнать его адрес, для этого требуется запустить скетч i2c_scanner.ino из аттача,
запустить монитор порта в IDE и вставить полученный адрес в скетч в строку LiquidCrystal_I2C lcd(0x3F, 16, 2);, где 0х3F адрес дисплея.

Кнопки подключены и работают так же как и в схеме с семисегментным индикатором.

Если после подключения символов нет, требуется покрутить потенциометр на плате I2C


АЛГОРИТМ НАСТРОЙКИ ТОЛЬКО СОБРАННОГО РЕГУЛЯТОРА НАПРЯЖЕНИЯ (от Tomat7)

Скрытый текст
Внимание! Высокое напряжение опасно для жизни. Будьте внимательны!
Не собирайте прибор "на соплях", используйте подходящие провода и инструменты.

0. Схемы в шапке темы все рабочие! Никакого подбора деталей, супертюнинга, дополнительных резисторов, подтяжек и прочего не нужно.
Сам собирал и регулятор напряжения, и регулятор тока на ACS712, и на трансформаторе тока.

1. Убеждаемся что высокое напряжение отключено. Плата Ардуино питается от компьютера по USB.

2. Загружаем тестовый скетч U_reg_test.ino - без всяких LCD, энкодеров и кнопок. Убеждаемся что он скомпилировался и загрузился корректно.

3. В "среде" Ардуино включем монитор порта (Ctrl-Shift-M). В нём устанавливаем скорость "9600 baud" и "Both NL&CR".
Убеждаемся что в окне Монитора порта появляется разумная информация обновляющаяся каждую секунду - "realU, ustU" и тд.

4. На выход регулятора подключается нагрузка (например лампа накаливания) и параллельно нагрузке вольтметр (желательно имеющий надпись TrueRMS)
Убеждаемся что лампа не горит, вольтметр показывает 0, ustU = 0, realU = 0 для регулятора напряжения или realU = 512 для регулятора тока.
Если лампа горит - повторяем пункт 1. Если все равно горит - оформляйте патент на вечный двигатель!

5. Осматриваем конструкцию, убеждаемся в ее электробезопасности. Отойдя подальше подаем высокое напряжение.
Убеждаемся что нигде ничего не бахнуло, не появился лишний запах, лампа не горит, вольтметр показывает 0, в Мониторе порта ustU = 0 и realU = 0 или 512.
Если не так - всё выключаем и перепроверяем соединения, монтаж, пайку в части moc3023, симистора.
Исправляем и начинаем с пункта 1.

6. Через "Монитор порта" отправляем регулятору команду "M1". (без кавычек, латинская "М" и цифра "1"
Убеждаемся что загорелась лампа.
Если не так - всё выключаем и перепроверяем соединения, монтаж, пайку в части moc3023, симистора.
Исправляем и начинаем с пункта 1.

7. Смотрим в монитор порта и видим что там появились дополнительные строчки.
Находим "ZeroCross" и смотрим число - оно должно быть близко к 100. (с большой долей вероятности узел детектора "0" работает корректно)
Если не так - всё выключаем и перепроверяем соединения, монтаж, пайку в части детектора нуля.
Исправляем и начинаем с пункта 1.

8. Через "Монитор порта" отправляем регулятору команду "TW0".
Убеждаемся что лампа не светит. (с большой долей вероятности узел симистора работает корректно)
Если не так - всё выключаем и перепроверяем соединения, монтаж, пайку в части moc3023, симистора.
Исправляем и начинаем с пункта 1.
Для регулятора тока на этом можно остановится и перейти к пункту 10.

9а. Для регулятора напряжения необходимо провести первоначальную подстройку "измерителя" напряжения.
9б. Через "Монитор порта" отправляем регулятору команду "TW300".
9в. Убеждаемся что ustU ежесекундно появляющееся в окне Монитора порта стало показывать 300. (realU тоже может поменяться)
9г. Смотрим на показания вольтметра - теперь он должен показывать что-то от 200 до 250 вольт. (может и меньше - зависит от качества электросети)
9д. Вращением подстроечного резистора "измерителя" напряжения нужно добиться чтобы realU стало как можно ближе к показаниям вольтметра.
9е. Если от вращения подстроечного резистора realU никак не меняется - всё выключаем и перепроверяем соединения, монтаж, пайку в части "измерителя" напряжения.
Исправляем и начинаем с пункта 1.
9ж. Через "Монитор порта" отправляем регулятору команду "TW150". Убеждаемся что вольтметр стал показывать что-то близкое к 150 вольтам.
9з. Через "Монитор порта" отправляем регулятору команду "TW100". Убеждаемся что вольтметр стал показывать что-то близкое к 100 вольтам.
На этом настройку регулятора напряжения можно считать законченным.

10. Заливаете понравившийся вам скетч и проверяете работу LCD, энкодера, кнопок и прочего.

--------------------------------------------------------------------------------------------------------------------------------------------------
Коллега Zoldrax изготовил вариант с тремя тэнами в связке с "Доступная автоматика на Ардуино Мега 2560 v2.47"
[сообщение #12784736]
--------------------------------------------------------------------------------------------------------------------------------------------------
Коллега OldBean представил вариант с подключением семисегментного индикатора без сдвиговых регистров 74HC595:
[сообщение #12819567]
--------------------------------------------------------------------------------------------------------------------------------------------------
Коллега bigson изготовил свой вариант регулятора[сообщение #12983065]
--------------------------------------------------------------------------------------------------------------------------------------------------
Коллега sevpro разработал макет печатной платы для регулятора напряжения (Трансформатор для последней версии прошивки должен подключаться НА ВЫХОД!): [сообщение #12978404]
--------------------------------------------------------------------------------------------------------------------------------------------------
Коллега Chatterbox изготовил свой вариант с датчиком тока, энкодером и записью установок в память: [сообщение #13000957]
--------------------------------------------------------------------------------------------------------------------------------------------------
Коллега dev11bk изготовил свой вариант с датчиком тока, энкодером и записью установок в память: [сообщение #13377512]
Скетч основан на нескольких, представленных в этой теме, адаптировал под свои нужды
--------------------------------------------------------------------------------------------------------------------------------------------------
Коллега IlyaSPb продолжает развивать свою версию регулятора.
Версия первая: [сообщение #13179698]
Версия PMC_TT_2.0.: [сообщение #13527186]
Дополнительно выкладываю версию прошивки PMC_TT_4.19, совмещенную прошивкой, выложенной коллегой dev11bk
--------------------------------------------------------------------------------------------------------------------------------------------------

Если у вас еще остались вопросы, я постараюсь ответить.

П.С. Выражаю огромное спасибо msg31, по сути это его схема и идея, просто я немного подогнал ее под свои нужды.
Так же выражаю огромную благодарность m16 за своевременные наставления.
И sevpro за консультации по схемотехнике

СПИСОК РАСПРОСТРАНЕННЫХ ВОПРОСОВ под спойлером

Скрытый текстВ. А вы можете сделать тоже самое только с перламутровыми кнопками?
О. Могу, но я не занимаюсь реализацией хотелок, рассматривайте эти устройства как часть Вашего самостоятельного проекта.

В. Я не умею программировать, код для меня - ироглифы.
О. Не могу ничем помочь, либо учитесь либо просите коллег на форуме.

В. Зачем считать среднеквадратичное напряжение? Это трудно.
О. Если вы о контроллере то ему абсолютно все равно что считать, если о методе то он дает лучшие результаты ([сообщение #12649978]), если вы знаете другой метод измерения действующего значения напряжения, я с удовольствием выслушаю, если вы хотите измерять амплитудное значение, измеряйте, вам никто не запрещает.

В. Почему у вас такая громоздкая схема, все можно сделать намного проще! Нужно сделать так и вот так!
О. Проект создавался под готовое устройство, эта схема из автоматики msg31 с параллельной ветки, я сделал себе автоматику похожую по алгоритму, выделил блок питания и написал отдельный скетч. Если вы воплотите в жизнь другую схему, поделитесь, я выложу ее в шапке для всех и мы скажем спасибо.

В. У вас индусский код!!! Так делать нельзя!
О. Можно, я не программист, и уж тем более не программист микроконтроллеров. Я не скован рамками правописания программного кода. Код работает, большинству людей все равно что и как внутри крутиться если устройство выполняет свои функции. Если у вас есть замечания по коду и дельные, конкретные советы с алгоритмом, я буду рад вас выслушать. Я взрослый адекватный человек который абсолютно нормально реагирует на аргументированную критику.

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

В. Зачем фазовое регулирование? Там масса помех от которых ломаются телевизоры, глючат айфоны и лысеют коты!
О. Знаете другие доступные методы? Выслушаю, но моргающие лампочки и меня, и домашних напрягают больше. К тому же помехи можно отсечь, в интернете много информации.

В. А почему ты сделал именно так а не иначе?
О. Возможно в тот момент на меня снизошло озарение или отупение, кто знает, я не профи ни в электронике не в программировании.

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

Если вы собрали устройство и проверили его работу ЛАТРом и обрадовались/удивились/расстроились большая просьба выложить результаты.

Arduino Семисегментник на 74HC595.jpg
Arduino Семисегментник на 74HC595.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Размещение элементов датчик тока ACS712.jpg
Размещение элементов датчик тока ACS712.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Размещение элементов трансформатор тока.jpg
Размещение элементов трансформатор тока.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
Размещение элементов трансформатор.jpg
Размещение элементов трансформатор.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

Arduino 328 Power Proteus.rar 34.1 Кб
i2c_scanner.ino 2.4 Кб
Регулятор напряжения.zip 11.9 Кб
Регулятор тока DL-CT1005A.zip 12.3 Кб
Регулятор тока ACS712.zip 24.9 Кб
Корзина.zip 227.6 Кб
U_reg_test.ino 6.6 Кб
RRRomaNNN Студент Москва 25 1
Отв.1  07 Февр. 16, 20:18
Какой алгоритм в программе? нужно постоянно подавать команду "TWxxx /n" или 1 раз, и какую-то команду старта стопа? 
sebra Куратор Республика Коми 146 85
Отв.2  07 Февр. 16, 20:38, через 20 мин
После включения напряжение равно нулю, триак закрыт. Для изменения напряжения достаточно одной команды. Назад в порт раз в секунду выдается три значения напряжения, измеренное, установленное и стабилизированное. Если это не требуется нужно в конце скетча просто закоментить строчки, либо изменить время на требуемое.
сообщения удалены (35)
Брагин Магистр Краснодар 278 76
Отв.3  10 Февр. 16, 14:24
Други,  а вы не хотите проверить поведение напряжения на нагрузке при колебания входного напряжения? ведь вроде прибор называется стабилизатор, а не вольтметр? Улыбающийся И его поведение на, почти 100 процентах мощности, не совсем интересно, потому как будет уже сказывается нестабильность сети.  а в наших условиях чаще всего стабилизация происходит на уровне 50-75 процентов?!
sebra Куратор Республика Коми 146 85
Отв.4  10 Февр. 16, 14:31, через 7 мин
проверить поведение напряжения на нагрузке при колебания входного напряжения?Брагин, 10 Февр. 16, 14:24

Безусловно, вот только колебатель сети найдем =) Плюс тут есть еще пару моментов которые стоит исправить.
сообщения удалены (14)
sebra Куратор Республика Коми 146 85
Отв.5  11 Февр. 16, 13:18
Ссылку на протеус поправь.Bitner, 11 Февр. 16, 12:48

Исправил, только там симисторов нет, к сожалению не удалось нормально эмулировать их работу. По информации которую вычитал с форумов у протеуса с ними проблемы.
lospartos Кандидат наук Солнечный 481 290
Отв.6  11 Февр. 16, 14:55
Проще просто вместо двух, взять один более мощный ТЭН.RRRomaNNN, 11 Февр. 16, 10:49
Конечно проще, только придется увеличить сечение питающих проводов, быть готовым к сильной просадке напряжения, повесить симистор на более мощный радиатор, делать его принудительную вентиляцию. Это только навскидку проблемы, которые сразу выскочат.
pashta Бакалавр Серпухов 88 26
Отв.7  11 Февр. 16, 16:13
например 1,1квт, главное устройство включает один тэн и на регуляторе выставляет 100ваттdeen, 11 Февр. 16, 09:11
При напрямую подключенном ТЭНе, мощность выделяемая на нем будет скакать вместе с напряжением сети. Для компенсации этого нужно считать эти колебания мощности и вводить поправки на регулируемый ТЭН . Можно поставить датчик тока, но тогда уже получается регулятор мощности.
P.S.
У меня тоже четыре ТЭНа по 1кВт (по факту мощность у ТЭНов 1-1,2 кВт). Три заведено через выключатели, а один через диммер (которым яркость света регулируют) плюс стоит измерительная голова (показывает напряжение и ток).
U-M Магистр MSK 210 39
Отв.8  11 Февр. 16, 20:29
При напрямую подключенном ТЭНе, мощность выделяемая на нем будет скакать вместе с напряжением сети. Для компенсации этого нужно считать эти колебания мощности и вводить поправки на регулируемый ТЭН .pashta, 11 Февр. 16, 16:13

Эмм. У китайского HHKG похоже из-за этого заявлено верхнее напряжение всего 200 В.


Честно говоря я мысль немного не уловил, а можно чуть подробней?sebra, 10 Февр. 16, 21:43

Ардуинщики говорят что конструкции, для примера, типа digitalWrite (5, HIGH)занимают больше места и отрабатывают медленнее, чем прямые команды типа PORTD |= (1 << PORTD5) из-за универсальности ардуинной IDE (как-бы защита от дураков). Поэтому мысля была - заменить синтаксис ардуинной IDE на более простые и быстрые команды, где это возможно.


По итогам с последним скетчем - стабилизация удалась (ставил по прибору 150 В на выходе и дергал входящее от 170 В до чуть более 220 В и обратно):
За 1-2 сек значение напряжения на выходе устанавливается на то, которое было до дергания входящего напряжения. При этом амплитуда выходного в среднем составляет 0.8-1 В (то есть в процессе стабилизации за 1-2 сек поскакало на +- 0.8-1 В и стало как было). Визуально нить лампы или очень кратковременно притухает или вообще не заметно дерганья входящего напряжения.

И по вопросу совпадения rcorU с показанием прибора - начитался интернетов, как понял, проблема в разбросе параметров PC814 ? пробовал играться с TCNT1 = 65536 - 1 чего то не помогло или я не то пробовал?


Добавлено через 1мин.:

Кстати на mega2560 с кварцем 16 МГц работает также как на 328 с кварцем наверное тоже 16 МГц (совсем крошечный не вижу маркировку).
сообщение удалено
woddy Доцент Новосиб 1.3K 489
Отв.9  12 Февр. 16, 00:03
загуглил я сегодня правильный детект нуля. нашел хитрую но при этом простую схему на одном транзисторе http://forum.easyelectronics.ru/...=242736#p242736

кажется это решит проблему Улыбающийся

из изменений - сработка идет по другому фронту (когда 0 - оптрон открыт)
сообщения удалены (24)
Chatterbox Специалист Калуга 123 60
Отв.10  15 Февр. 16, 16:46
Давно собирался сделать библиотечку, для обслуживания кнопок через аналоговый порт. Раньше использовал адаптированную Bounce. Но она на каждую кнопку просит отдельное место в памяти для всего класса. Сегодня набросал для своих будущих нужд, библиотечку. Делюсь своим вкладом в ваш проект . Схема включения резисторов на картинке.
У меня подключено на аналоговый пин 3. Ну как то так рука дрогнула и воткнул туда проводочек. В скетче это все можно менять. Файл AnalogKey.h собственно сам класс, AnalogKeyTest.ino скетч, в котором приведен пример вызова класса. Там же таблица настроек резисторов и возможность почитать эти значения. Все с пояснениями и комментариями. Сам класс занимает в памяти программ 550 байт. использует 25 байт для данных (при 5 кнопках подключения).

Добавлено через 10мин.:

Если у кого то есть реальное предложение с простой действующей схемой, пишите, можно в личку.sebra, 14 Февр. 16, 22:03
Может быть уйти от программного вычисления среднеквадратичного напряжения. Этим сильно сократится код. Ведь все равно не обходитесь без навесных деталей. Вот для примера:
http://www.elcomdesign.ru/ingineer/ingineer_42.html
Вот тут тоже есть решение для измерения напряжения
http://arduino.ru/...o-napryazheniya
novyy_tochechnyy_risunok_12.png
novyy_tochechnyy_risunok_12.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.

AnalogKey.zip 1.6 Кб
сообщение удалено
Chatterbox Специалист Калуга 123 60
Отв.11  15 Февр. 16, 18:53
К тому же, если будет не хватать процессорного времени я просто перепишу все под CyberLib~овскую библиотеку, придаст значительный прирост в скорости выполнения программы. Так что все будет хорошо =)sebra, 15 Февр. 16, 18:33
Скорострельности там явно хватит. Полистал форумы. Трансформатор и диоды действительно вносят неприятности в такую схему. Пишут даже больше диоды нежели трансформатор.
сообщения удалены (8)
capsolo Профессор Зелик 5.3K 1.6K
Отв.12  15 Февр. 16, 21:02
sebra, коллега, когда ты упоминаешь Протеус ты этот продукт имеешь в виду?
http://www.labcenter.com/products/basicsim.cfm
И что там можно обвязать Атмель, виртуально зашить его и прогнать все в сборе?
sebra Куратор Республика Коми 146 85
Отв.13  15 Февр. 16, 21:07, через 5 мин
sebra, коллега, когда ты упоминаешь Протеус ты этот продукт имеешь в виду?
http://www.labcenter.com/products/basicsim.cfm
И что там можно обвязать Атмель, виртуально зашить его и прогнать все в сборе?capsolo, 15 Февр. 16, 21:02

Да все верно, сборки Ардуин уже там есть, обвязку делать не надо. Скорость низкая, но для отладки кода меня устраивает.
сообщения удалены (2)
m16 Модератор Тамбов 1.9K 1K
Отв.14  15 Февр. 16, 22:38
потом в соответствии с таблицей выставляю требуемый угол открытия тиристораsebra, 08 Февр. 16, 00:20
по какой формуле считаешь угол ?

sebra,  хочу дать пару советов :
- плавучка - зло. сжирает память и производительность. пользуй  signed/unsigned  целочисленку.
- пртеус - зло. ни один симулятор не даст тебе реальную картину происходящего.  разве что светодидом поморгать. пустая трата времени.
sebra Куратор Республика Коми 146 85
Отв.15  15 Февр. 16, 22:41, через 4 мин
по какой формуле считаешь угол ?m16, 15 Февр. 16, 22:38

Дело было в Сентябре 2015г. сейчас пытаюсь вспомнить детали и восстановить события, так как все что осталось это таблица в Exel. Вспомню выложу на обсуждение.

Добавлено через 58мин.:

sebra,  хочу дать пару советов :
- плавучка - зло. сжирает память и производительность. пользуй  signed/unsigned  целочисленку.
- пртеус - зло. ни один симулятор не даст тебе реальную картину происходящего.  разве что светодидом поморгать. пустая трата времени.m16, 15 Февр. 16, 22:38

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

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

//Желаемая мощность P задается в процентах от максимальной
//с дискретностью 0.1%. Далее мощность преобразуется в угол открытия ключа.
//При фазовом управлении мощность зависит от угла нелинейно:
//для угла f нормализованная мощность равна интегралу от f до pi от sin^2(x)dx,
//деленному на pi/2. Или Pnorm = 1 - f / pi + sin(2 * f) / (2 * pi).
//Если угол A задается в градусах, то f = A * pi / 180.
//Для преобразования мощности в угол используется таблица с шагом по
//мощности 1%. Между точками таблицы производится линейная интерполяция:
//angle = A[p] + DeltaP * DeltaA / 10.
//Найденный угол преобразуется в код для загрузки регистра OCR1B:


К сожалению я считал мощность, что не верно, еще и привел ее к напряжению. Напряжение на нагрузке в зависимости от угла открытия симистора рассчитывается по другому. Хоть стабилизация вроде и работает, но это не правильно. Буду читать и вникать.

П.С. Валенками сильно не кидаться )))
m16 Модератор Тамбов 1.9K 1K
Отв.16  16 Февр. 16, 00:07
это цитата из поста Леонида Ивановича на форуме easyelectronics .  я  делал пид регулятор по мощности на нагрузке и пользовал именно эту формулу.
ты же регулируешь по напряжению , следовательно нужна формула зависимости действующего напряжения на нагрузке от угла открытия триака.
 собсно вот она
rms.png Регулятор напряжения и тока на Arduino Pro Mini
rms.png Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
sebra Куратор Республика Коми 146 85
Отв.17  16 Февр. 16, 00:16, через 9 мин
это цитата из поста Леонида Ивановича на форуме easyelectronics .  я  делал пид регулятор по мощности на нагрузке и пользовал именно эту формулу.
ты же регулируешь по напряжению , следовательно нужна формула зависимости действующего напряжения на нагрузке от угла открытия триака.
  собсно вот онаm16, 16 Февр. 16, 00:07

Совершенно верно, спасибо большое буду разбираться!

Добавлено через 2ч. 17мин.:

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

Что еще хотел спросить M16 так это откуда взята формула чтобы почитать, с наскоку не удалось найти ничего похожего, только регулировочные характеристики тиристоров, там получается похожий график но с ошибкой. Спасибо.
Регулировка.jpg
Регулировка.jpg Регулятор напряжения и тока на Arduino Pro Mini. Автоматика.
m16 Модератор Тамбов 1.9K 1K
Отв.18  16 Февр. 16, 08:23
из книги по проектированию источников питания , точного названия не помню. не суть.  я  проверял регулятор  работающий по этой функции  лабораторным rms  вольтметром .
сообщение удалено
U-M Магистр MSK 210 39
Отв.19  16 Февр. 16, 10:48
Может быть уйти от программного вычисления среднеквадратичного напряженияChatterbox, 15 Февр. 16, 16:46

Блин, тут теряется прстота и доступнсть конструции... Однако проще окажется что-то типа ADE7753, у которой просто с регистров по SPI rms ток и напряжение прочитать, да еще выход перехода через ноль есть. Хотя это обсуждалось вскользь уже.

Среднеквадратичное напряжение, измеряемое на входе, при больших изменениях дает погрешность... виноват трансформатор.sebra, 14 Февр. 16, 22:03

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


Добавлено через 0мин.:

Вечером попробую сгородить на 595-х индикатор..
сообщения удалены (35)