Перейти к содержанию

Помогите разработать схему специфического таймера


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

Доброе время суток. Сразу скажу, схемки могу только повторять. От знающих прошу помощи. Нужна схемка таймера, в интернете не нашел.

Алгоритм такой:

При нажатии на кнопку загорается первый светодиод и гаснет ~ через (0,5) секунды. 

Одновременно с этим включается реле.

Должен отработать датчик холла.

От момента срабатывания датчика холла через заданное время (от 0,01с до 0,5с), реле отключается.

Если датчик холла не отработал за (0,5с), начинается все сначала

Следующий раз все повторяется по кругу через заданное время (от 0,5с до 4с).

Пока не отпустишь кнопку.

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

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Куча вопросов к "алгоритму":
Одновременно с чем включается реле - с нажатием кнопки или с погасанием светодиода?
Когда должно начатся отслеживаться состояние датчика холла, в какой момент? А если он уже сработавший, ещё до нажатия, что происходит? Что представляет собой сигнал с датчика?
Если датчик не сработал за 0,5 с, начинается сначала ЧТО? Состояние схемы не изменилось.
Повторяется по кругу через заданное время ЧТО? Схема не должна реагировать на кнопку в течении 0,5 - 4 сек. после цикла?  Или должна отпустить реле и ожидать кнопку?

"Я не знаю какой там коэффициент, я просто паять умею. "

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

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Реле включается одновременно с нажатием кнопки, а отключается через заданное время от момента срабатывания датчика холла (логическая 1)

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

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Реле включается одновременно с нажатием кнопки, а отключается через заданное время от момента срабатывания датчика холла (логическая 1) 

Если датчик не отработал реле отключается через 0,5 сек в любом случае. И через заданный интервал все повторяется заново. Пока не отпустишь кнопку.

Attiny13 тоже можно. Если код кто напишет. Что конкретно пояснить по алгоритму?

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

3 часа назад, san911 сказал:

Что конкретно пояснить по алгоритму?

Если датчик сработал, а кнопка не отпущена, то что? Начинать новый цикл заново или игнорировать нажатие кнопки? Если начинать цикл заново, то нет смысла отслеживать датчик... :unknw:

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

Пока кнопка нажата, все происходит циклически. Контроль времени импульса важно начать отсчитывать от начала срабатывания датчика. Регулировать нужно всего 2 параметра - время импульса и паузу перед следующим импульсом. Если схема получится аналоговая то это я вижу 2 переменных резистора. Если на микроконтроллере то можно как угодно, даже энкодером, можно даже с дисплеем. Но меня устроит даже самый простой вариант ( 2 крутилки без всяких показометров)

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

@san911 а может можно проще и логически понятнее?

при нажатии кнопки срабатывает реле, после срабатывания датчика реле выключается, если датчик не сработал, реле выключается через 0.5 сек, далее через 0.5-4сек все повторяется, пока не отпущена кнопка.

еще вопрос - датчик активируется реле или он не зависим от него?

все гениальное просто. чем проще тем надежнее.

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

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

Нажимаем кнопку, не отпускаем.

Включается светодиод ( горит 0,5с) и реле одновременно.

По включению реле запускается процесс который контролирует датчик холла.

От момента срабатывания датчика отсчитывается время на отключение реле (регулируемый параметр 0,01-0,5с).

Если датчик не сработал за 0,5с реле отключается

Далее пауза (регулируемый параметр 0,5-4с)

И опять все сначала пока не отпустим кнопку.

Ну как-то так...

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

26 минут назад, san911 сказал:

От момента срабатывания датчика отсчитывается время на отключение реле (регулируемый параметр 0,01-0,5с).

И как Вы планируете регулировать время задержки?

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

и еще вопрос

при отпускании кнопки процесс сразу прерывается или при кратковременном нажатии и отпускании выдержка на выключение реле все равно 0.5 сек?

все гениальное просто. чем проще тем надежнее.

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

Цитата
Цитата

И как Вы планируете регулировать время задержки?

Если бы я умел создавать схемы или программировать контроллеры - не было бы этой темы.

Цитата

при отпускании кнопки процесс сразу прерывается

Да.

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

1 час назад, san911 сказал:

Если бы я умел

Вы же отчего-то отталкиваетесь... временные интервалы исходя из каких критериев? За какое время ваше реле при снятии с него напряжения разомкнёт контакты? Или все интервалы взяты от балды? 

 

А не проще бы для понимания всем остальным, полностью объяснить для чего такой таймер нужен (чем он будет управлять)?

ЗЫ. Вот написал я тестовую прошивку для tiny13 по вашему алгоритму...

Цитата

Включается светодиод ( горит 0,5с) и реле одновременно.

От момента срабатывания датчика отсчитывается время на отключение реле (0,5с).

Далее пауза (в районе 3,5с)

Но вот подойдут ли такие временные интервалы до конца непонятно.  :unknw:

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

11 часов назад, san911 сказал:

Ну я же выше писал.

Я правильно понял, что этот алгоритм окончательный и дополнений больше не будет?

Цитата

Попробую заново описать более подробно алгоритм работы.

Нажимаем кнопку, не отпускаем.

Включается светодиод ( горит 0,5с) и реле одновременно.

По включению реле запускается процесс который контролирует датчик холла.

От момента срабатывания датчика отсчитывается время на отключение реле (регулируемый параметр 0,01-0,5с).

Если датчик не сработал за 0,5с реле отключается

Далее пауза (регулируемый параметр 0,5-4с)

И опять все сначала пока не отпустим кнопку.

А то напишешь программу, а потом начнётся: "Я забыл указать… я ещё хотел чтобы вот так ещё было… и тд". :rolleyes:

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

Ну я ничего не менял из условий. Всё как было так и есть. Может объяснял плохо, не спорю. При всей кажущейся простоте это не так. Вот я сижу в протэусе с таймерами 555 пробую, пока не получается, знаний не хватает.

И если программку писать будете то можно под атмегу328? Я с ней дружу.

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

А какой тип реле?. Время задержки на включение и отключение у них разное по отношению ТЗ 0,01-0,5 сек.

Изменено пользователем APB
Ссылка на комментарий
Поделиться на другие сайты

52 минуты назад, san911 сказал:

И если программку писать будете то можно под атмегу328?

Уже написал, но только для tiny24A. Прошивать, что один, что другой МК разницы нет, подключение к программатору идентичны. 

В общим вот прошивка для МК tiny24A. Тактируется от внутреннего генератора на частоте 8 МГц.

can911.hex

Схема такая:

Спойлер

1.png.a266338425839c849f97b35584627861.png

Описание работы:

Спойлер

Принцип работы данного устройства заключается в следующем. Таймер начинает свою работу при нажатии На клавиатуре любую цифру. По умолчанию уставка таймера отключения по сигналу датчика равна 0,5 с. Пауза для повторения по умолчанию равна 4 с. Чтобы изменить уставку таймера на отключение, необходимо нажать красную клавишу звёздочка (*). Загорится жёлтый светодиод, указывая на готовность принимать значения для новой уставки. Нажимая на необходимые цифры клавиатуры, вносится новый код. Для сохранения набранного значения  необходимо нажать повторно на клавишу (*). Жёлтый светодиод погаснет, сигнализируя об окончании выбора уставки.

Чтобы изменить уставку таймера для повторения нового цикла, необходимо нажать красную клавишу решотка (#). Так же как и в первом варианте загорится жёлтый светодиод, указывая на готовность принимать значения для новой уставки. После ввода необходимых значений, для сохранения и выхода из режима ввода уставки, необходимо нажать повторно на клавишу (#). Жёлтый светодиод погаснет, сигнализируя об окончании выбора уставки.

 

Значение уставки не должно превышать трёх цифр. Набор лишних цифр игнорируется. Время уставки выглядит следующим образом. Допустим необходимо задать уставку  0,3 с (300 мс). Для этого необходимо нажать на цифру "3", затем на цифру "0". Выбранное значение умножается на 10 и получается 300 мс (0,3 с). Если предположим необходимо ввести 4 с, то нажимаем поочерёдно нажать на цифры "4"; "0"; "0". Введённое значение умножается на 10 и получаем 4000 мс (4 с).

Перед сохранением нового значения, новое значение проверяется на соответствие указанного в ТЗ диапазона: То есть, таймер отключения по сигналу датчика имеет диапазон от 10 мс (0,01 с) до 500 мс (0,5 с), а таймер паузы для возобновления нового цикла имеет диапазон от 500 мс (0,5 с) до 4000 мс (4 с). Если новое значение выходит за границу минимума, то новое значение сохранится минимальным значение диапазона, так же происходит и с максимальным значением. Если он выходит за максимальный диапазон, то будет сохранён фиксируемым значением максимального допустимого диапазона.  К примеру при наборе любой уставки, устройство позволит ввести три любые цифры. Они могут быть "9"; "9"; "9" (999*10=9990 мс), но при сохранении значения новой уставки, устройство сохранит, или 500 мс, или 4000 мс, в зависимости от установки конкретного таймера.

 

 

PS. Если при выборе уставки не сохранить значение в течении 10 сек (не нажимать клавиши), то производится сброс набранного кода и устройство переходит в дежурный режим.

Проверил на железе, выше описанный алгоритм отрабатывает (как я его понял). На этом энтузиазм закончился... :thank_you2:если не подойдёт чем-то, то увы, тогда прошивку в топку.  :rolleyes:  

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

1 час назад, san911 сказал:

можно под атмегу328? Я с ней дружу.

если на ардуино, могу заморочиться :)

хотя в принципе какая разница, НEX файл в любом случае будет :) 

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

все гениальное просто. чем проще тем надежнее.

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

22 часа назад, v1ct0r сказал:

если на ардуино, могу заморочиться :)

@san911 не вижу заинтересованности, но скетч выкладываю

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

если будут вопросы отвечу

[code]
//активный сигнал с датчика "0", если "1",
//то инвертировать, или изменить настройку входа 9

void setup() {
  pinMode(11, OUTPUT);//не обязат.  индикация паузы
  pinMode(12, OUTPUT);//на включение реле
  pinMode(8, INPUT_PULLUP);//кнопка пуск
  pinMode(9, INPUT_PULLUP);//сигнал с датчика-"0"

}

void loop() {
  if ( digitalRead(8) == LOW )// кнопка пуск
  {
    digitalWrite(12, HIGH);//сигнал на включение реле
    delay(500);//время включенного реле(мс)
    digitalWrite(12, LOW);//выключение реле

    //регулировка паузы(мс) переменным резистором
    int t =  analogRead(A0);

    digitalWrite(11, HIGH);//индикация начала паузы
    delay(t); //время паузы
    digitalWrite(11, LOW);//конец паузы
  }
}

void yield() {
  ///варианты отключение реле///
  //отпускание кнопки пуск
  if ( digitalRead(8) == HIGH or
       //сигнал с датчика - задержка(мс) RC цепью
       //регулировка задержки переменным резистором
       digitalRead(9) == LOW)
  {
    digitalWrite(12, LOW);//выключение реле
  }
}
[/code]

 

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

все гениальное просто. чем проще тем надежнее.

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

@v1ct0r При нажатии на кнопку этот самый yield() не сработает сразу через миллисекунду из-за дребезга контактов?

Может, убрать проверку digitalRead(8) == HIGH?

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

@Yurkin2015 из-за дребезга может сработать, решить проблему с дребезгом проще аппаратно

убрать проверку "digitalRead(8) == HIGH" нельзя - это условие ТЗ

 

все гениальное просто. чем проще тем надежнее.

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

Насчёт заинтересованности. Прошу простить, вчера работал, а потом день рождения отмечал (45).

По первому проекту - нет светодиода и отдельной кнопки. Но на безрыбье и рак щука, посмотрю на выходных может и пойдет.

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

Всем кто помогает огромное спасибо!!!

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

33 минуты назад, san911 сказал:

По скетчу пока непонятно как к схеме привязать.

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

кстати по скетчу

я чего то не обратил внимание, что вам нужна задержка до 4сек, поэтому строку скетча

int t = analogRead(A0);  - здесь задержка будет до 1сек(1023мсек)

нужно заменить на

int t =4 * analogRead(A0);

а так в "железе"(ардуино) все работает

все гениальное просто. чем проще тем надежнее.

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

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