Главная › Форумы › Конструкторское бюро › Автоматизация › Автоматика LuckyBox › Управление мощностью ТЭНа
-
АвторСообщения
-
16.08.2019 в 13:41 #45800
Мне по коду не наравятся несколько переменных OCR1A одна из них, но это уже для более детального анализа кода и думаю по поводу вынесения расчетов из тела if. так вроде операция должна чуток быстрее происходить.
Да! Я с виду шут, но в душе король, и ни кто как я не может...
16.08.2019 в 13:43 #45801К сожалению не помню по видео Сергея, если подключена автоматика, то хотелось бы иметь возможность ручного изменения мощности (например, запустили ректификацию и видим, что мощности много, нажали на энкодер, уменьшили, дождались результата действия (или при необходимости еще раз изменили мощность) и после этого отправили значение мощности на автоматику, чтобы она считала установленные значения мощности как основные.
Я пробовал так делать, еще на весеннюю выставку привозил блок именно с таким функционалом. Не понравилось что можно нечаянно ручку крутануть и запороть процесс.
Сначала войти в режим регулирования рабочей мощности, потом установить мощность, потом отправить данные на автоматику или отказаться. Не понимаю где может встретиться случайность.
Да! Я с виду шут, но в душе король, и ни кто как я не может...
16.08.2019 в 13:53 #45803Так я “дырки” специально оставил, так сразу в глаза бросается отсутствие значения на заставке. Значит что то пошло не так в схеме.
Черт, надо знать что задумал автор, а так и правда по коду можно это и выкинуть.
Да! Я с виду шут, но в душе король, и ни кто как я не может...
16.08.2019 в 15:03 #45808Сначала войти в режим регулирования рабочей мощности, потом установить мощность, потом отправить данные на автоматику или отказаться. Не понимаю где может встретиться случайность.
Ну если только через промежуточное меню, тогда можно. Кому не нужен данный функционал просто не будут это использовать. Тем более что в самом LackyBox обратную связь уже делал и все работало прекрасно.
16.08.2019 в 15:06 #45809Так я “дырки” специально оставил, так сразу в глаза бросается отсутствие значения на заставке. Значит что то пошло не так в схеме.
Черт, надо знать что задумал автор, а так и правда по коду можно это и выкинуть.
Ну не у всех же есть осциллограф для проверки как раз главного узла – детектора нуля, вот я и решил хоть так для проверки работоспособности реализовать )))
16.08.2019 в 16:17 #45818Друзья, подскажите “чайнику” – конденсаторы на сколько вольт выбирать?
16.08.2019 в 17:56 #45821Друзья, подскажите “чайнику” – конденсаторы на сколько вольт выбирать?
Керамика (0.1, 0.22 мкФ) на 25 – 50 вольт, вряд ли на меньшее напряжение найдете. Электролиты и на 6.3 вольта подойдут. Естественно можно и с большим напряжением ставить.
21.08.2019 в 15:18 #46442Рано с утра, пока темно
Пока темно – пока темно
Рано с утра, пока темно
И мир еще в постели
Чтобы понять, куда идти
Чтобы понять, зачем идти
Без колебаний прими сто грамм
И ты достигнешь цели.Нарисовал схему в EasyEDA, получил список компонентов (правда из-за условий заказа компонентов там примерно на 15 плат), и был не много удивлен 10 плат плюс smd запчасти суммарно получились в 8 американских енотов (без учета доставки, корпуса, контроллера и экрана). И тут я сделал огромную ошибку, оптимизировал схему для себя. И таки да удалил предыдущий проект, о чем потом очень сильно пожалел. Так как похоже, схема по которой я делал первую плату чуток отличается от новой схемы, которая была у меня в архиве. К чему это я пишу, пусть новый проект с запчастями будет стоить 10 енотов, монитор корпус и контроллер еще пусть будет 20 плюс доставка, то получается что себестоимость регулятора ТЭНа будет где-то в районе 50 вечно зеленых рублей (хотя думаю где-то в районе 40 а то и меньше). И вот вернемся к вопросу про Скрудж набор для самостоятельной сборки думаю что если цена за набор будет в районе 50-70 енотов то желающие приобрести будут.
PS. Сергей, пожалуйста отдыхайте, наслаждайтесь отпуском.
Да! Я с виду шут, но в душе король, и ни кто как я не может...
21.08.2019 в 15:34 #46443Сергей, пожалуйста отдыхайте, наслаждайтесь отпуском.
Уже вернулся с отдыха (((
Завтра прикуплю корпус под монтаж всех блоков и на выходных проверю на 3 кВт ТЭНе. По результатам отпишусь, думаю и видео сниму если все удачно будет.p.s. Правда не очень удобно разъем программирования получился, т.е. корпус придется с DIN рейки сдергивать чтобы пере прошить если что то поменять надо. Развернул бы модуль изначально разъемом к краю корпуса (где внешние разъемы у корпуса D4MG предполагаются), все было бы вообще супер, делал то все равно на макетке и расположить можно было как угодно. В общем ступил в торопях. Так что учитывайте данный момент при разработке платы.
21.08.2019 в 15:47 #46445Вот еще маленький вопросик в схеме энкодер подключается через сопротивления 4.7, хотя на просторах интернета все делают подключение через 10кОм.
Если не критично, на просторах интернета есть энкодер на плате, правда надо использовать стороннюю библиотеку, зато код чтения состояния энкодера почти в половину меньше.
Да! Я с виду шут, но в душе король, и ни кто как я не может...
21.08.2019 в 17:24 #46455Вот еще маленький вопросик в схеме энкодер подключается через сопротивления 4.7, хотя на просторах интернета все делают подключение через 10кОм. Если не критично, на просторах интернета есть энкодер на плате, правда надо использовать стороннюю библиотеку, зато код чтения состояния энкодера почти в половину меньше.
Сопротивления можно и 10кОм поставить, совершенно не критично. Те энкодеры что распаяны на плате, уже имеют подтяжку (резисторы) на самой плате, вот только конденсаторы для защиты от дребезга не факт что стоят. Стороннюю библиотеку очень не рекомендую использовать, т.к. быстрее выполнение и короче код (чем реализовано) даже и не представляю как сделать. Вот код, что касается энкодера, и его обработка идет в прерывании от таймера:
if (*portInputRegister(digitalPinToPort(11)) & 8) encoder_CLK = 1;
else encoder_CLK = 0;
if (*portInputRegister(digitalPinToPort(9)) & 2) encoder_DT = 1;
else encoder_DT = 0;
if ((!encoder_CLK) && (encoder_CLK_prev))
{
if (encoder_DT) encoder_Data++;
else encoder_Data–;
}
encoder_CLK_prev = encoder_CLK;Остальное связанное с ним, только обработка в соответствующих окнах/алгоритмах и от применения сторонней библиотеки не изменится. Хуже того, если сторонняя библиотека будет использовать таймер 1, то вся работа полетит к чертям.
21.08.2019 в 17:33 #46459Вот нашел его https://iarduino.ru/shop/Expansion-payments/enkoder-s-pamyatyu-trema-modul-v2-0.html
Кажись усе распаяно )
if(digitalRead(pinT)){ /
if(digitalRead(pinR)){i–;}
else {i++;}
delay(2);
pinMode(pinT, OUTPUT);
digitalWrite(pinT, 0);
pinMode(pinT, INPUT);
Serial.println(i);
} //
if(digitalRead(pinK)){
Serial.println(“Key”);
}и тоже без библиотеке
Да! Я с виду шут, но в душе король, и ни кто как я не может...
21.08.2019 в 18:31 #46468Вот нашел его https://iarduino.ru/shop/Expansion-payments/enkoder-s-pamyatyu-trema-modul-v2-0.html
digitalRead(pinT) или digitalWrite(pinT, 0) это библиотечные функции и выполняют десятки лишних инструкций, они же написаны универсально для любого контроллера, т.е. не оптимально. Все эти библиотеки работают приемлемо, если кроме энкодера практически ничего в программе больше нет, иначе конкретные грабли выскакивают. Я обращаюсь напрямую к регистру порта и проверяю нужный бит: *portInputRegister(digitalPinToPort(11)) & 8, а это всего одна инструкция на ассемблере которая займет максимум три такта процессора и если if сработал или нет еще одна или две инструкции на ассемблере, т.е. + 1 или 2 такта.
p.s. Программирование контроллеров кардинально отличается от программирования на ПК, т.к. требует учета именно принципа работы самого железа (внутренних регистров, приоритетов выполнения, в нашем случае четких временных интервалов и много чего еще).
21.08.2019 в 20:15 #46484Черт лет этак 15 назад ещё помнил количество тактов на разных командах, и код программ оптимизировал, сейчас уже не считаю (
Да! Я с виду шут, но в душе король, и ни кто как я не может...
21.08.2019 в 20:40 #46491Черт лет этак 15 назад ещё помнил количество тактов на разных командах, и код программ оптимизировал, сейчас уже не считаю (
К сожалению мне до сих пор такты считать приходится, в автоматизации некоторых критичных ко времени процессов до сих пор ассемблерные вставки использую. Данный блок к данной категории кстати тоже отчасти относится, к примеру прерывание от INT0 и от TMR1 надо выполнить не более чем за 100 микросекунд, иначе будет не стабилизация мощности а пляска по холмам.
p.s. Лет 20 – 25 назад вообще про Си не думал, только на ассемблере все.
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.