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

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


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

14 минут назад, v1ct0r сказал:

вопрос - зачем нужна кнопка

Хороший вопрос. :friends:но если не пытаться понять ТС, то можно принять такое условие, где нажатая кнопка - это условие последовательной работы алгоритма включения... отжатая кнопка - запрещает выполнение алгоритма управления не зависимо от сигналов датчика. :)

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

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

Все это имеет смысл, если  кнопка разрешает работу цикла: импульс/пауза = 0,5сек/0,5..4сек, если в течении импульса отработал датчик, включается реле на 0,1..0,5сек.

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

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

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

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

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

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

3 минуты назад, Просто зашёл сказал:

отжатая кнопка - запрещает выполнение алгоритма

да это логично и я указал такой вариант алгоритма выше, но он то не озвучен, что так должно быть!

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

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

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

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

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

23 минуты назад, v1ct0r сказал:

просто для ТС он сложен в реализации

Согласен, 12 кнопок подключить к МК сложнее чем одну кнопку и подстроечный резистор, но зато клавиатура позволяет установить точно именно ту задержку которая необходима. :) Как выставить точно резистором (допустим время паузы 0,03 с), на готовом устройстве в железе при этой схеме, я затрудняюсь понять. Хотя возможно точности никакой и не нужно, так как ТС об этом ничего не писал. :unknw:

15 минут назад, v1ct0r сказал:

но он то не озвучен, что так должно быть!

У ТС много чего не "озвучено", это нужно понять и простить. :D

 

P.S. Для новой хотелки ТС процедуру включения реле после нажатия кнопки нужно перенести в то место... по условию срабатывания датчика, всё остальное остаётся как есть... :)  

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

6 минут назад, Просто зашёл сказал:

Согласен, 12 кнопок подключить к МК сложнее чем одну

дело скорее не в этом, а 

1. наличие такой клавиатуры у ТСа

2. возможность прошить ТСом предложенные вами варианты МК, а с дуриной как тут принято называть ардуину это намного проще, если она есть

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

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

Просто зашёл не обижайтесь. 

Проект v1ct0r мне подошёл больше.

 Точность импульса которую вы обсуждаете очень важна. Но мне крутилками намного проще чем клавиатурой настроить и если что поставить метки. И отдельная кнопка важна, она будет постоянно в руке при работе. И светодиод он управляет дистанционно другим устройством.

В данный момент по наличию свободного времени его "причесываю" , довожу до идеала так сказать. Ну а потом как и писал выше плата, корпус, и в устройство.

Очень уже пожалел что озвучил дополнительные хотелки. Можно их больше не обсуждать? Чтобы не путать других.

Предлагаю остановиться на проекте v1ct0r.

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

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

10 минут назад, v1ct0r сказал:

дело скорее не в этом,

Для меня это не важно, я получил удовольствие от самого процесса при написании алгоритма и мне этого достаточно. :drinks: 

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

Просто зашёл не обижайтесь. 

И в мыслях не было... :) я пишу раде своего удовольствия (и я его получил), а то что моя писанина кому-то не подошла, то это нормально, я же не "профессиональный художник"... так что не переживайте за свой выбор, главное, что Вы нашли, что хотели. Как говорится и овцы сыты и волки целы. :D

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

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

И светодиод он управляет дистанционно другим устройством.

т.е. применен фотодатчик?

так почему это не указать сразу?

не было бы лишних вопросов и гаданий на кофейной гуще :diablo:

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

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

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

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

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

И отдельная кнопка важна, она будет постоянно в руке при работе. И светодиод он управляет дистанционно другим устройством.

Это условие необходимо было в ТЗ тоже "озвучить" для полного понимания. Читать мысли на расстоянии мало кто может... :) 

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

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

Поверьте вопросов,обсуждений, осуждений и советов было бы намного больше.

а кто говорил, что будет легко??? :) 

@san911 я постараюсь, если не пропадет желание, написать скетч для второго варианта - вам то без разницы что заливать в МК, тем более что 

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

Ну а потом как и писал выше плата, корпус, и в устройство.

это обычно не быстрый процесс

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

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

Второй вариант не нужен! Схема у него, будет другая, он сложнее, больше деталей, и не факт что будет лучше чем этот. 

То что Вы сотворили просто конструктор и очень легко настраиваемый и понимаемый. Такого в интернете я нигде не находил когда искал.

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

Нужна консультация.

Выбираю быстрое 5v реле, из всего что нашел выбор пал на THD-0501L время срабатывания туда, сюда 5msec Max. при цене в 1 доллар на Али.

Есть что ни будь лучше или это нормальный выбор? 

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

Да быстродействие впечатляет 2.3 мсек. но цена!!! 

Спасибо. Буду иметь в виду. Пока печатку делаю под THD-0501L если не справится, ваш вариант с ее ногами в нее легко войдет.

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

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

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

@san911 в скетче, который я ранее выложил, есть "косяк", на который я сразу не обратил внимание

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

визуально это вряд ли можно заметить

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

я переделал программу и устранил это безобразие

выкладываю новый скетч

проверьте с ним работу вашей установки

схема не изменилась

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

unsigned long tmr ;        // переменная таймера

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);    // включение реле

    //время включенного реле(мс)
    tmr = millis();
tmr:
    if (millis() - tmr < 500) {
      ///варианты отключение реле///
      if ( digitalRead(8) == HIGH or//если кнопка пуск отжата
           digitalRead(9) == LOW)  //или сигнал с датчика -
        // регулировка задержки(мс) RC цепью(перем.резистор)
      {
        goto pauza;
      }
      goto tmr;
    }
pauza:
    digitalWrite(12, LOW);  //выключение реле
    digitalWrite(11, HIGH); //индикация начала паузы
    //регулировка паузы(мс) переменным резистором
    int t = 4 * analogRead(A0);
    delay(t);               //время паузы
    digitalWrite(11, LOW);  //конец паузы
  }
}
[/code]

!!!!!!!

при разводке проводников печатной платы имейте в виду, что назначенные пины(ноги АТМЕГИ) можно изменить, так как будет удобнее, переназначив их в скетче программы

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

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

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

В 03.03.2024 в 14:03, v1ct0r сказал:

я постараюсь, если не пропадет желание, написать скетч для второго варианта

не пропало  - написал, хотя вы и возражали :) 

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

[code]
//       !!!ВНИМАНИЕ!!!
//пины ввода/вывода можно заменить на любые удобные
//только в строках #define !!! 
//кроме А0 и А1 - их можно менять на любые аналоговые

#define PUSK_PIN 8      // номер вывода кнопки "пуск"
#define DATCHIK_PIN 9   // номер вывода сигнала датчика 
#define LedPUSK_PIN 10  // номер вывода светодиода "пуск"
#define LedPAUSA_PIN 11 // номер вывода светодиода "пауза"
#define RELE_PIN 12     // номер вывода светодиодa c реле

unsigned long tmr ;     // переменная таймера
unsigned long tmr1 ;    // переменная таймера1

void setup() {
  pinMode(PUSK_PIN, INPUT_PULLUP);    // кнопка пуск
  pinMode(DATCHIK_PIN, INPUT_PULLUP); //!!!сигнал с датчика-"0"!!!
  pinMode(LedPUSK_PIN, OUTPUT);       // индикация пуска
  pinMode(LedPAUSA_PIN, OUTPUT);      // индикация паузы
  pinMode(RELE_PIN, OUTPUT);          // реле и светодиод
}
void loop() {
  if ( digitalRead(PUSK_PIN) == LOW ) //если кнопка пуск нажата
  {
    digitalWrite(LedPUSK_PIN, HIGH);  // вкл. светодиода "пуск"

    tmr = millis();
tmr:
    if (millis() - tmr < 500) //время включенного светодиода "пуск"
    {
      if ( digitalRead(PUSK_PIN) == HIGH) //пауза если отжата "пуск"
      {
        goto pauza;
      }
      if ( digitalRead(DATCHIK_PIN) == LOW) //если есть сигнал датчика
      {
        digitalWrite(RELE_PIN, HIGH);      // вкл.реле и светодиода

 //время отключения реле регулировка(мс)переменным резистором
        int t1 =  analogRead(A1) / 2 ;
        tmr1 = millis();
tmr1:
        if (millis() - tmr1 > t1 or
            digitalRead(PUSK_PIN) == HIGH)
        {
          goto pauza;
        }
        goto tmr1;
      }
      goto tmr;
    }
pauza:
    digitalWrite(LedPUSK_PIN, LOW);  // выкл. светодиода "пуск"
    digitalWrite(RELE_PIN, LOW);      //выключение реле
    digitalWrite(LedPAUSA_PIN, HIGH); //индикация паузы
    //регулировка паузы(мс) переменным резистором
    int t0 = 4 * analogRead(A0);
    delay(t0);                         //время паузы
    digitalWrite(LedPAUSA_PIN, LOW);  //конец паузы
  }
}

[/code]

 

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

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

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

@san911 как обещал, выкладываю схему для второго варианта:

R1 и  R2 любые

добавлен третий светодиод для индикации нажатой кнопки "пуск"

добавлен конденсатор для подавления дребезга контактов кнопки, в схеме для первого варианта я забыл его нарисовать :( номинал не критичен от 0,1мкФ и выше

удалены не нужные детали

резисторы R3, R6, R7 от 300 Ом до 1кОм и выше, в зависимости от необходимой яркости свечения светодиодов

R4, R5 - 200-300 Ом

image.png.ac6e0dbd92268b5f7e9e8b10d7738388.png

 

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

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

Спасибо. Я за Вами не успеваю. У меня мало свободного времени. Обязательно проверю и отчитаюсь. Пока как появляется минутка занят первым вариантом.

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

9 часов назад, v1ct0r сказал:

добавлен конденсатор для подавления дребезга контактов кнопки

ИМХО. Данный конденсатор негативно влияет на контакты кнопки при замыкании… чем больше ёмкость, тем губительнее… надёжнее с дребезгом бороться программным методом…

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

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

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

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

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

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

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

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

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

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

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

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