-
Сообщения
-
Ответная часть не в одном экземпляре. Проблема вряд ли с той стороны. Что-то с пультом, думаю.
-
Всем доброго времени суток. На работе случилась беда, навернулся котел, точнее программно-таймерное устройство, дергающее за "веревочки" цепей данного котла. Как у нас в стране обычно бывает, нет ни документации на это устройство, ни описания логики данного механизма. Ну и соответственно вся возня, касаемая ремонта, легла на плечи коллектива. Недолго думая, обложился всем схемами, которые мог найти, частично методом частичного разбора и замеров расчертил полную схему данного котла. Постепенно логика работы сломанного программно-таймерного устройства стала понятна. Было принято решение воссоздать данный модуль на базе AVR контроллера со всеми вытекающими. В спринт лайот накидал печатку, заказал, и пока она доставляется занялся набором программы в среде Arduino IDE. И буквально с первых же попыток написать скетч понял, что с печатками я поторопился, как я уже потом понял, программно-таймерное устройство c момента запуска должно единожды прогнать перечень команд в void setup и начать следить да датчиками уже в void loop. Следовательно для такого исполнения программы понадобилось дополнять схему парой транзисторов и реле, для коммутации питания ардуино самой на себя. Ну что-то я в дебри полез. Нужен совет по скетчу. Дабы оставить печатные платы без изменений в первоначальном заказанном виде, хочу избавиться от удерживающего питание реле. Но это получится сделать только если есть возможность в void setup скинуть скетч на начало работы при определенных условиях, но только не средствами reset, а именно программно? Чтото вроде того, что при начале скетча, при несоблюдении условий продолжения работы void setup начинал выполняться с первой строки. Ниже часть пока еще сырого пробного скетча. #include <OLED_I2C.h> OLED myOLED(4, 3, 4); extern uint8_t RusFont[]; extern uint8_t SmallFont[]; const int buttonPinSTART = A0; // вход для контроля пуск/стоп программы (так же через диод запитывается пин +5v, на который приходит питание через реле, управляемого 13 пином) const int buttonPinFIRE = A1; // вход для контроля пламени const int ledPin2 = 2; // пин питания дисплея const int ledPin5 = 5; // вывод для реле вентилятора const int ledPin6 = 6; // вывод для реле аварии const int ledPin7 = 7; // вывод для реле воздушной заслонки const int ledPin8 = 8; // вывод для реле соленоид2 const int ledPin9 = 9; // вывод для реле розжига const int ledPin10 = 10; // вывод для реле соленоид1 const int ledPin13 = 13; // вывод подтяжки питания int buttonStateSTART = LOW; int buttonStateFIRE = HIGH; void setup() { pinMode(buttonPinSTART, INPUT); pinMode(buttonPinFIRE, INPUT_PULLUP); pinMode(ledPin2, OUTPUT); // Пин питания дисплея pinMode(ledPin5, OUTPUT); // Пин управления pinMode(ledPin6, OUTPUT); // Пин управления pinMode(ledPin7, OUTPUT); // Пин управления pinMode(ledPin8, OUTPUT); // Пин управления pinMode(ledPin9, OUTPUT); // Пин управления pinMode(ledPin10, OUTPUT); // Пин управления pinMode(ledPin13, OUTPUT); // Пин удержания питания микроконтроллера digitalWrite(ledPin2, HIGH); // Подклюаем дисплей delay(1500); myOLED.begin(); myOLED.clrScr(); // Стираем все с экрана myOLED.setFont(RusFont); // Инициализируем русский шрифт myOLED.print( "------" , CENTER, 12); // Выводим текст ------ myOLED.print( "------" , CENTER, 30); // Выводим текст ------ myOLED.print( "------" , RIGHT, 48); // Выводим текст ------ myOLED.update(); digitalWrite(ledPin13, HIGH); // Подтягиваем питание ардуино через реле delay (2000); buttonStateSTART = digitalRead(buttonPinSTART); if (buttonStateSTART == LOW) { myOLED.clrScr(); myOLED.print( "JNVTYF PFGECRF" , CENTER, 24); // Выводим текст ОТМЕНА ЗАПУСКА myOLED.update(); delay(1000); myOLED.print( "DSRK>XTYBT" , CENTER, 36); // Выводим текст ВЫКЛЮЧЕНИЕ myOLED.update(); delay(1000); digitalWrite(ledPin13, LOW); delay(300); } myOLED.clrScr(); myOLED.print( "GJLUJNJDRF R GECRE" , CENTER, 24); // Выводим текст ПОДГОТОВКА К ПУСКУ myOLED.update(); delay(2000); buttonStateSTART = digitalRead(buttonPinSTART); if (buttonStateSTART == LOW) { myOLED.clrScr(); myOLED.print( "JNVTYF PFGECRF" , CENTER, 24); // Выводим текст ОТМЕНА ЗАПУСКА myOLED.update(); delay(1000); myOLED.print( "DSRK>XTYBT" , CENTER, 36); // Выводим текст ВЫКЛЮЧЕНИЕ myOLED.update(); delay(1000); digitalWrite(ledPin13, LOW); delay(300); } myOLED.clrScr(); myOLED.print( "------" , CENTER, 24); // Выводим текст myOLED.print( "------" , CENTER, 36); // Выводим текст myOLED.update(); delay(1000); buttonStateSTART = digitalRead(buttonPinSTART); if (buttonStateSTART == LOW) { myOLED.clrScr(); myOLED.print( "JNVTYF PFGECRF" , CENTER, 24); // Выводим текст ОТМЕНА ЗАПУСКА myOLED.update(); delay(1000); myOLED.print( "DSRK>XTYBT" , CENTER, 36); // Выводим текст ВЫКЛЮЧЕНИЕ myOLED.update(); delay(1000); digitalWrite(ledPin13, LOW); delay(300); } digitalWrite(ledPin7, HIGH); myOLED.clrScr(); myOLED.print( "------" , CENTER, 24); // Выводим текст myOLED.update(); delay(1000); buttonStateSTART = digitalRead(buttonPinSTART); if (buttonStateSTART == LOW) { myOLED.clrScr(); myOLED.print( "JNVTYF PFGECRF" , CENTER, 24); // Выводим текст ОТМЕНА ЗАПУСКА myOLED.update(); delay(1000); myOLED.print( "DSRK>XTYBT" , CENTER, 36); // Выводим текст ВЫКЛЮЧЕНИЕ myOLED.update(); digitalWrite(ledPin7, LOW); delay(1000); digitalWrite(ledPin13, LOW); delay(300); } digitalWrite(ledPin5, HIGH); delay(300); ..... ..... ..... ..... ..... } } void loop() { ..... ..... ..... ..... ..... } В данном варианте, при отмене запуска ардуинка проделывает кое какие манипуляции, в зависимости от части кода и снимает питание с пина13 (реле поддержки питания), которое тем временем обестачивает контроллер. Вроде бы задача выполнена, но есть баг. К примеру механик решил выключить котел, повернул тумблер в *0* на стадии предпускового продува камеры, пошел цикл завершения работы. А механик передумал останавливать котел, не дождался пока завершится процесс выключения, врубает тумблер в "работу", при этом в void setup программа отключает подтяжку питания, но продолжает выполнять последовательность действий запуска. В конечном итоге сработает авария, условия которой прописано в void loop. Но момент все равно неприятный. Есть ли возможность в данной строке delay(1000); digitalWrite(ledPin13, LOW); delay(300); вписать команду, которая заставит void setup прервать выполнение программы и вернуться к началу (повторюсь, без reset), ну и соответственно избавиться от использования 13 пина и соответственно танцев с подтягиванием питания Написал много, так как тяжело выразить словами всю кашу, которая на данный момент у меня в голове, возможно и сам за выходные немного отдохну и решение придет само собой) Возможно я изначально неправильно выбрал подход к данному скетчу. Не представляю как в void loop это все заставить работать, так как основному телу программы не нужна цикличность.
-
Ещё парочку реле надо добавить, а то несерьёзно как-то.
-
By demiurg1978 · Posted
Вариант первый. ldi r16, 1 Cycle: dec r16 Проверка на переполнение или отрицательное число, не помню команду. Если да, выход, если нет lsl r16 rjmp Cycle Получили бит в соответствии с переменной от 0 до 7. Второй вариант. Создаем таблицу. Table_bits: .db 0b00000001, 0b00000010 .db 0b00000100, 0b00001000 .db 0b00010000, 0b00100000 .db 0b01000000, 0b10000000 Установка адреса указателя на flash таблицу. Прибавляем переменную. Считывает значение. Получаем бит в соответствии с переменной от 0 до7. Народ. В данном случае вопрос касается алгоритмов. Вы не правы, отправляя тс читать книги. В книгах зачастую нет ответа на такие вопросы. -
Ну не скажите!! фен скорее всего есть. Нужен фен не для пайки, а для разогрева, чтоб пластик стал более податливым (60-80грС) Есть ребёнок сломавший фотоаппарат - значит есть жена - у жены есть волосы и их надо сушить - значит есть фен. Он не мастер в ремонте, но у него есть фен годный к применению для разбора фотика. А вот "медиаторов" и прочих приспособ для расщепления, что МАВР выше указал, у него нет. С уважением, Сергей
-
Similar Content
-
By Роман Шульмин
Симисторный регулятор скорости вращения вентилятора.
Помогите, у меня в частном доме автоматический угольный котел отопления. Отключили свет, купил бензо-генератор, шнек работает как положено, а вот вентилятор еле крутится. дали свет, от сети все работает нормально.
Продавец котлов ответил на мой вопрос "На данных вентиляторах используются симисторные регуляторы. Видимо данный генератор не выдает ток в нужных частотах."
Заработал вентилятор (:
Подключил сначала две лампочки накала по 75 Вт, вентилятор стал крутится но не достаточно быстро, подключил еще одну лампочку накала 75 Вт, и заработало как нужно.
Но вот говорят что это неправильное решение, а как сделать правильно.
-
By dkg10
Очень часто, при реализации технологического процесса, возникает необходимость уменьшить производительность агрегатов или механизмов с электродвигателем. Причем это уменьшение бывает вызвано не столько экономией электроэнергии, сколько требованиями выполнения качества самого тех. процесса. От насосов, компрессоров, вентиляторов и пр. требуется не максимум того, что они могут выдать, а только необходимый объем.
http://cxem.net/house/1-385.php
Если даже такие простые схемы достаточно хорошо решают задачу регулирования производительности насосов компрессоров, вентиляторов, то стоит задаться вопросом: А так ли нужны в этих случаях частотные преобразователи?
На сайте http://electronix.ru тоже обсуждали тему и принципиальных возражений не было ....
http://electronix.ru...howtopic=118584
-
By yasya2004
Всем доброе время суток.
Собственно имею игрушку на радиоуправлении с бесколлекторным мотором и регулятором .
В один прекрасный день игрушка замерла прямо на ходу. Вскрытие показало - умер регулятор скорости. Новый покупать дорого, думаю починить свой.
Регулятор
ETTI PRO - 2
HV 120A
12-60 v
Такой
http://www.offshoreelectrics.com/proddetail.php?prod=etti-e064
В общем заявленные 120 ампер он не выдержал, потому что я гонял на 90 амперном гораздо дольше.
Расколов его пополам и добравшись до силовых ключей выяснилось методом проверки ушли в короткое 5 транзисторов из 12. (сток - исток)
Менять решил все 12 .
Транзисторы были если я правильно понял Nкан 60в 90А
048N06L (видимо полный даташит IPD048N06L3G)
http://www.chipfind.ru/datasheet/infineon/ipb048n06l.htm
Хочу поставить немного помощнее типа такого
IRFS3207ZPBF, Nкан 75В 230А
http://www.chipdip.ru/product/irfs3207zpbf/
Вопрос, подойдёт ли IRF вместо родного IDP как по размерам так и по параметрам ???? Или на какие лучше поменять???
(Все ссылки не реклама)
И в конце фото самой платы регулятора, визуально сгоревших транзисторов не видно.
-
By Roverscan20
Здравствуйте.
Есть машинка на радиоуправлении. Приемник у машины на пайке! Схема машины на фото.
Хочу поменять на ней электронику,т.е. купить радиоаппаратуру (приемник+передатчик) например на 40 МГц (2.4 Ггц) , что по цене подойдет и самому установить ее.
Вопрос у меня. Приемник надо будет подключать обязательно через БЕК? Или можно с аккумулятора напрямую приемник запитать (+ и -)?
От приемника с 1-го канала на мотор (ВПЕРЕД-НАЗАД), который у модели установлен, можно подключить? А на 2-й канал влево-вправо подключить?
Или еще что-то надо докупать или менять?
-
By Guest Dan4ik
Можете пожалуйста скинуть правильную схему управления двигателем.
Пример: допустим у нас подаётся с платы на двигатель 4в (плата может работать ток на 4в) а нам нужно чтобы двигатель работал на 9в и мог крутится в разные стороны (то есть если плата подаёт ток так чтобы двигатель крутился в лево то и после усилителя мощности двигатель должен крутится в лево).Я собрал плату на двух транзисторных ключах но из-за неё сгорела лата управления. скинте чертёж рабочей платы.
-