Модернизация скоростных рулонных ворот.

nik380v
Offline
Зарегистрирован: 27.05.2019

 Доброго время суток. Нужна помощь в написании скетча на скоростные рулонные ворота. 

 Старая плата упр. приказала долго жить. А новые завод изготовитель не выпускает. только с заменой всего и вся.

 По силовой части (Контакторы, двигатель , концевики, и т.д и пт.) не интересует. в этом сложности нет. Интересует управление именуемое далее "мозги".

 Цикл такой. в нормальном положении ворота закрыты. И ждут сигнала с кнопки(в данном случае концевик с тросом). После поступления сигнала включается двигатель и заматывает шторку до отсечки концовиком. В поднятом положении она остается 5секунд. потом закрывается. Так же до отсечки концевиком. Вроде ничего сложного...

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

 Другой момент. если штора начала опускаться. и была нажата кнопка поднятия. Штора должна остановиться на 1 секунду.(чтобы разомкнулся контактор движения вниз.) И снова продолжить движение в верх и снова считать свои 5 секунд.

 Так же установлен датчик безапасности. его функции теже что и у кнопки. Для предотвращения опускания шторы если там образовалась помеха. Как то так.

Жду  от вас предложеий! 

sadman41
Offline
Зарегистрирован: 19.10.2016

Травмоопасная штука? Может раздавить кого-нить?

nik380v
Offline
Зарегистрирован: 27.05.2019

Ну приличная стальная трубка снизу имеется. для лучшего опускания. Ну чтоб прям летально! не думаю. она просто отсекае помещение с меньшей температурой. И состаит их пвх поп моему.

sadman41
Offline
Зарегистрирован: 19.10.2016

Основной вопрос, вобщем-то такого типа: кого за жопу возьмут, если человека прибъёт из-за ошибки в коде, например?

nik380v
Offline
Зарегистрирован: 27.05.2019

Кто монтирует тот и отвечает. В любом случае вначале тестить буду. Только потом в экплуатацию вводить.

 

vvadim
Offline
Зарегистрирован: 23.05.2012
b707
Offline
Зарегистрирован: 26.05.2017

управление мотором как осуществляется? или дело кода - только выдать логический сигнал ("едем вниз" или "едем вверх") - а остальное вы монтируете сами?

strarbit
Offline
Зарегистрирован: 12.06.2016

управление мотором как? схема как? webserpantin   gmail

Roman1984
Offline
Зарегистрирован: 17.02.2017

Пишите, обсудим подробности: rv.petrovskiy@gmail.com

Onkel
Offline
Зарегистрирован: 22.02.2016

nik380v пишет:

 Доброго время суток. Нужна помощьась помеха. Как то так.

Жду  от вас предложеий! 

Почти "Умный дом". Пишите ydom@mail.ru , напишу код, используя непосредственную работу с регистрами, так что будет работать на 100% надежно, без ардуиновских костылей и глюков (которые широко известны, но замалчиваемы нативными  ардуинщиками  "от сохи"). Пишите, проверю на макете, так что Вы получите на 100% проверенный, рабочий код. ydom@mail.ru

Azat222
Offline
Зарегистрирован: 25.02.2018

Здравствуйте! С логикой все понятно. Но хотелось узнать чуть большее о железе. Сделаю примерно за 3000. По срокам от 3 до 10 дней, в зависимости от сложности

. azat222@gmail.com

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Onkel пишет:

 напишу код, используя непосредственную работу с регистрами

А научиться писать в IDE ардуины времени нет? 

И костыли опишите, хоть вы не умалчивайте. 

Onkel
Offline
Зарегистрирован: 22.02.2016

Gas311 пишет:

А научиться писать в IDE ардуины времени нет? 

 

Cтарый уже. Да и зачем?

Gas311 пишет:

 И костыли опишите, хоть вы не умалчивайте. 

МК в Arduino, особенно в uno/nano/micro/mini маловато железных ресурсов имеет, а когла нативный ардуинист собирает код из библиотек, Он не задумывается о совместимости. Вот например по таймерам- в Atmega32816pu всего 3 таймера- timer0 отвечает одновременно за   delay(), millis(), micros() и  AnalogWrite 5, 6, Timer 1 – з0а servo,  AnalogWrite 9, 10, Timer 2 –за tone,  AnalogWrite 11, 3. И вот если вы пытаетесь задействоать analogWrite(3) одновременно с tone(), то либо одно из двух, либо оба не будут работать  всегда или, что подлее, иногда. И не зная какие ресурсы задействуют какие библиотеки (а кто знает? Вы знаете?) лего влететь – на неработу, отказ, пожар или еще что. Это по крупному. Ну и по мелочи- ардуиновские команды digitalWrite() и digitalRead выполняются за 6 микросекунд – это почти 100 тиков. Нередко это критично, тем более что можно делать за 2 тика. По АЦП – также считывание идет дольше, чем нативное считывание аналогового сигнала. Ну в Arduino IDE всего 2 внешних прерывания , хотя сам камень разрешает 22 внешних прерывания. По часам  - нужно учитывать переполнение millis() и micros(). Ну и еще много – много мелочей, которые могут стать немелочами.

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Onkel пишет:

Cтарый уже. Да и зачем?

Логично. Если старый.

А за подробности костылей спасибо. Не знал. 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Тема не будет раскрыта
если не вспомнить про великое переполнение миллис....

nik380v
Offline
Зарегистрирован: 27.05.2019

Доброе утро. 3ф. двигатель. Управляется через контакторы. Питание контакторов идёт в разрыв с концевиками.(Вехнее и нижнее положение). Обычная стандартная тема. 

Сделал эксперимент полностью заменил на автоматику. такая громоздкая штука получилась! Но работала. потом стала давать сбои. Пришёл к выводу что не хватает интелекта у автоматики. Ну и конечно у персонала который ей пользуется. Готовые до сметри занажимать кнопку пока ворота поднимаются. Поэтому решил вернуться назад к электронике.

Gas311
Gas311 аватар
Offline
Зарегистрирован: 06.12.2018

Тогда пишите gas31a@mail.ru

 

VladimirTsibrov
Offline
Зарегистрирован: 05.03.2019

Onkel пишет:

Gas311 пишет:

А научиться писать в IDE ардуины времени нет? 

 

Cтарый уже. Да и зачем?

Gas311 пишет:

 И костыли опишите, хоть вы не умалчивайте. 

МК в Arduino, особенно в uno/nano/micro/mini маловато железных ресурсов имеет, а когла нативный ардуинист собирает код из библиотек, Он не задумывается о совместимости. Вот например по таймерам- в Atmega32816pu всего 3 таймера- timer0 отвечает одновременно за   delay(), millis(), micros() и  AnalogWrite 5, 6, Timer 1 – з0а servo,  AnalogWrite 9, 10, Timer 2 –за tone,  AnalogWrite 11, 3. И вот если вы пытаетесь задействоать analogWrite(3) одновременно с tone(), то либо одно из двух, либо оба не будут работать  всегда или, что подлее, иногда. И не зная какие ресурсы задействуют какие библиотеки (а кто знает? Вы знаете?) лего влететь – на неработу, отказ, пожар или еще что. Это по крупному. Ну и по мелочи- ардуиновские команды digitalWrite() и digitalRead выполняются за 6 микросекунд – это почти 100 тиков. Нередко это критично, тем более что можно делать за 2 тика. По АЦП – также считывание идет дольше, чем нативное считывание аналогового сигнала. Ну в Arduino IDE всего 2 внешних прерывания , хотя сам камень разрешает 22 внешних прерывания. По часам  - нужно учитывать переполнение millis() и micros(). Ну и еще много – много мелочей, которые могут стать немелочами.

Извиняюсь за оффтоп, но описанное имеет отношение к программисту, а не к ide или микроконтроллеру. Если нет понимания, то хоть на чем разрабатывай - всегда будешь наступать на грабли. Учесть все моменты можно и в Ардуино. А насчет маловато железных ресурсов, что же вы скажете про tiny?

sadman41
Offline
Зарегистрирован: 19.10.2016

Это метод окучивания клиента "от Онкеля" - выдать стандартные фичи Wiring за костыли, а потом героически с ними бороться за $100. И ещё "честный Си" у него в рукаве где-то есть. Странно, что сразу не достал.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Onkel пишет:

МК в Arduino, особенно в uno/nano/micro/mini маловато железных ресурсов имеет, а когла нативный ардуинист собирает код из библиотек, Он не задумывается о совместимости. Вот например по таймерам- в Atmega32816pu всего 3 таймера- timer0 отвечает одновременно за   delay(), millis(), micros() и  AnalogWrite 5, 6, Timer 1 – з0а servo,  AnalogWrite 9, 10, Timer 2 –за tone,  AnalogWrite 11, 3. И вот если вы пытаетесь задействоать analogWrite(3) одновременно с tone(), то либо одно из двух, либо оба не будут работать  всегда или, что подлее, иногда. И не зная какие ресурсы задействуют какие библиотеки (а кто знает? Вы знаете?) лего влететь – на неработу, отказ, пожар или еще что. Это по крупному. Ну и по мелочи- ардуиновские команды digitalWrite() и digitalRead выполняются за 6 микросекунд – это почти 100 тиков. Нередко это критично, тем более что можно делать за 2 тика. По АЦП – также считывание идет дольше, чем нативное считывание аналогового сигнала. Ну в Arduino IDE всего 2 внешних прерывания , хотя сам камень разрешает 22 внешних прерывания. По часам  - нужно учитывать переполнение millis() и micros(). Ну и еще много – много мелочей, которые могут стать немелочами.

1. Документацию читать надо, а не писать дичь. В документации сказано, что за что отвечает и как устроена обвязка Wiring. И если ты взял молоток, и пытаешься им отпилить - то ты идиот, а не программист. Это я про одновременное использование tone и analogWrite. Но идиоту - всегда проще спихнуть это на мифические "глюки" среды, конечно.

2. digitalWrite/diitalRead - плата за кросплатформенность, очень быстро можно переносить проекты с одной платы на другую. Если для тебя это открытие - поздравляю, Шарик, ты балбес. В реальном же цикле разработки это сильно помогает, в релиз потом уходит оптимизированная под конечный МК версия. Но зачастую - этого и не надо: если оно работает нормально, то зачем рефлексировать?

3. По поводу переполнения millis - да сколько ж можно-то? Если программист не знает элементарных вещей, типа арифметики в дополнительном коде - то никакой пречистый С не поможет, этот программист - плохой.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

По поводу кода: код простейший, пишется за несколько часов, там чистый конечный автомат, писал неоднократно подобные. Рыночная стоимость - 2500 рублей, код прокомментирован, настройки вынесены отдельно, есть отладочная информация в мониторе порта. Предоплата - строго 50%, код - после окончательного расчёта. Демонстрация работы на видео. Начало работы - строго по утверждённому сторонами ТЗ, скомпилированному из хотелок темы. Управление работой мотора - предполагается дискретными сигналами на двух выходах (например, пара реле) - простейшая схема управления вращением в обе стороны.

Если актуально - пишите на spywarrior@gmail.com.

__Alexander
Offline
Зарегистрирован: 24.10.2012

DIYMan пишет:

1. Документацию читать надо, а не писать дичь. В документации сказано, что за что отвечает и как устроена обвязка Wiring. И если ты взял молоток, и пытаешься им отпилить - то ты идиот, а не программист. Это я про одновременное использование tone и analogWrite. Но идиоту - всегда проще спихнуть это на мифические "глюки" среды, конечно.

Чуточку не так. Когда окнель, я и тому подобные личности учили асм и си для avr - ардуины и ее IDE в помине не было. Были просто мк avr и avrstudio (с winavr). И вся нужная переферия настраивалась ручками через регистры. И скакого перепугу, я должен читать документацию на глюконутый софт, который включает не нужную мне переферию, если можно написать в нормальном компиляторе, который изучен десятилетиями?

DIYMan пишет:

2. digitalWrite/diitalRead - плата за кросплатформенность, очень быстро можно переносить проекты с одной платы на другую.

Странная у вас логика. Если я везде (в avrstudio, IAR, Keil, CVAVR, Arduino IDE) добавляю макросы

#define SETBIT(ADDRESS,BIT)   (ADDRESS |= (1<<BIT)) 
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))

то любой из этих компиляторов прекрасно поймет и скомпилирует. А если я возьму ваши digitalWrite/diitalRead, то никуда, кроме arduino ide их не всунешь. Вот и вся кросплатформенность.

 

karamzin01
Offline
Зарегистрирован: 08.03.2018

Р е а л и з у е м о - maslachenko767@mail.ru , консультации, подбор компонентов бесплатно

vvadim
Offline
Зарегистрирован: 23.05.2012

__Alexander пишет:

Чуточку не так. Когда окнель, я и тому подобные личности учили асм и си для avr - ардуины и ее IDE в помине не было. Были просто мк avr и avrstudio (с winavr). И вся нужная переферия настраивалась ручками через регистры. И скакого перепугу, я должен читать документацию на глюконутый софт, который включает не нужную мне переферию, если можно написать в нормальном компиляторе, который изучен десятилетиями?

это всё конечно хорошо и интересно, но на этом форуме 90% пользователей ковыряются с удовольствием именно с ардуиной и её IDE. И большая часть не собираются на что то другое переползать (не надо воплей продвинутых критиканов), потому что для большинства их проектов этого ДОСТАТОЧНО...

а для чайников уровень вхождения в работу с мк у ардуино вообще вне всякой конкуренции.
и мужики, весь этот проект придумавшие и реализовавшие, просто МОЛОДЦЫ - честь им и хвала.
сотни миллионов людей в мире приобщились к мк и миллионы получили работу.

 

 

VladimirTsibrov
Offline
Зарегистрирован: 05.03.2019

__Alexander пишет:

DIYMan пишет:

1. Документацию читать надо, а не писать дичь. В документации сказано, что за что отвечает и как устроена обвязка Wiring. И если ты взял молоток, и пытаешься им отпилить - то ты идиот, а не программист. Это я про одновременное использование tone и analogWrite. Но идиоту - всегда проще спихнуть это на мифические "глюки" среды, конечно.

Чуточку не так. Когда окнель, я и тому подобные личности учили асм и си для avr - ардуины и ее IDE в помине не было. Были просто мк avr и avrstudio (с winavr). И вся нужная переферия настраивалась ручками через регистры. И скакого перепугу, я должен читать документацию на глюконутый софт, который включает не нужную мне переферию, если можно написать в нормальном компиляторе, который изучен десятилетиями?

Ну вот и вы туда же. В чем заключается глючность софта? Онкеля о том же спрашивали, а свелось все к особенностям реализации функций и двум внешним прерываниям из 22 доступных. Одно дело пустить пыль в глаза клиенту, другое заявлять что-то подобное на полном серьезе другим участникам форума. При том что вы давно освоили работу с регистрами напрямую. Ну так IDE Arduino этого и не запрещает: хочешь - пишешь свою реализацию функций, чтобы можно было выполнять analogWrite и пищать одновременно. А если этого не требуется, то используешь готовый код и сосредотачиваешься на решении задачи, а не изучении железа ради какой-то там функции. Под железом я понимаю не только МК, а кучу другой периферии, для которой доступны библиотеки. В этом и заключается плюс Ардуино как платформы.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

DIYMan пишет:

По поводу кода: код простейший, пишется за несколько часов, там чистый конечный автомат, писал неоднократно подобные. Рыночная стоимость - 2500 рублей, код прокомментирован, настройки вынесены отдельно, есть отладочная информация в мониторе порта. Предоплата - строго 50%, код - после окончательного расчёта. Демонстрация работы на видео. Начало работы - строго по утверждённому сторонами ТЗ, скомпилированному из хотелок темы. Управление работой мотора - предполагается дискретными сигналами на двух выходах (например, пара реле) - простейшая схема управления вращением в обе стороны.

Если актуально - пишите на spywarrior@gmail.com.

за аналогичный код меня подогрели сазаном на 8 килограмм (прикормочный кораблик)
вкуссс списфический... )))

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

ua6em пишет:

за аналогичный код меня подогрели сазаном на 8 килограмм (прикормочный кораблик)
вкуссс списфический... )))

Почём нынче килограмм сазана? :)

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

__Alexander пишет:

Чуточку не так. 

Чуточку так. И даже не чуточку - так. История по аналогии: приходишь ты в магазин, и купишь крестовую отвёртку, закручивать саморезы. И крутишь себе и крутишь, и горя не знаешь. Но потом вдруг осознаёшь, что есть шуруповёрт с его как удобствами, так и кучей зависимостей - батареи, зарядка, культура пользования, чтобы не убить батарею и т.д. и т.п.

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

Понимаешь, в чём дело? Онкель занимается самым поганым передёргиванием. Концепция Arduino - это абстракция, реализованная в виде надстройки, называемой Wiring. Утверждать при этом, что что-то там глючное, если без ансамбля, как чудак, ля - полез в кишочки ручонками что-то там проделывать, при этом скромно умолчав о том, что чудак, во-первых - сам виноват, и, во-вторых - знает, что всё, над чем он рвёт волосы - описано в документации по Wiring - в этом весь Онкель.

Никто не мешает писать ручонками, манипулируя регистрами: строго говоря - унутре Arduino IDE есть неонка, имя ей - gcc. Но при этом верещать, что Wiring говно, потому что сам полез к электрощит голыми коготками - в этом весь Онкель.

Тащемта, только об этом и был спич: о грязном низком передёргивании и пречистом С.

sadman41
Offline
Зарегистрирован: 19.10.2016

Дак код, наверняка, на вкус как сазан был ;)

Добавлю по теме: если бы мы не видели кода онкеля, то можно было что-то там говорить про скоростное чтение АЦП, отключение двигателя по 22-м прерываниям и супернадежные комбинации опраторов if(), однако многие помнят случайно всплывший фрагмент на "честном Си"...

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Я дак до сих пор ржу, наливая...

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

__Alexander пишет:

 

Странная у вас логика. Если я везде (в avrstudio, IAR, Keil, CVAVR, Arduino IDE) добавляю макросы

#define SETBIT(ADDRESS,BIT)   (ADDRESS |= (1<<BIT)) 
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))

то любой из этих компиляторов прекрасно поймет и скомпилирует. А если я возьму ваши digitalWrite/diitalRead, то никуда, кроме arduino ide их не всунешь. Вот и вся кросплатформенность.

У меня - просто отличная логика. И под кроссплатформенностью я подразумевал (и было это ЯВНО упомянуто) различные МК, а не различные IDE. 

И когда мне заказчик говорит: ой, я передумал, не хочу на 328-й меге, хочу на ESP8266 - то я тупо беру, и компилирую код под ESP, совершенно не парясь ни с адресацией регистров, ни с прочим. Более того - если у заказчика плата NodeMCU, а у меня другая, т.е. pinout, и, как следствие, разная адресация в кишочках - вообще не проблема, достаточно просто поменять в вынесенном конфиге номера пинов на другие, ВСЁ.

Вот когда (и если) - наступит необходимость жёстко оптимизировать код под КОНКРЕТНЫЙ МК - вот тогда хорошую часть обвязки Wiring можно очень быстро взять - и выкинуть, заменив уже прямой записью куда надо. Впрочем, в 90% случаев это не требуется - нравится или нет любителям каменных топоров - но на дворе двадцать первый век и др@чить вприсядку на ресурсы, когда разница в стоимости восьмибитных и 32-хбитных чипов - пару сотен рублей - удовольствие для избранных, я считаю.

И да - спокойно программирую любую плату (не только Arduino) - в Visual Studio, не вижу проблем. Достаточно ардуиновский загрузчик загнать в камень - и на этапе разработки у тебя нет головняков, от слова "совсем".

Да даже с STM32 уже всё сильно проще в связке с Arduino IDE, хотя там, конечно, лучше CubeMX + Keil, например.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

sadman41 пишет:

однако многие помнят случайно всплывший фрагмент на "честном Си"...

Ой, я пропустил, можно повтор в студию?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

DIYMan пишет:

sadman41 пишет:

однако многие помнят случайно всплывший фрагмент на "честном Си"...

Ой, я пропустил, можно повтор в студию?

Нет. Для такого зрелища ты еще маленький.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

DetSimen пишет:

Нет. Для такого зрелища ты еще маленький.

 :)))