софтстарт

Обсуждаем контроллеры компании Atmel.
Ответить
Johnson1496
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Сб май 02, 2015 10:06:21

софтстарт

Сообщение Johnson1496 »

В связи со слабоумием прошу на коммерческой основе решить проблему с написанием кода для Tiny13
Суть проблемы:

1. При подаче питания на устройство на всех выходах устанавливается 0;
2. Включение. При кратковременной подаче на один из входов 1 (кнопка)
- подает на один из входов/выходов 1;
- через 30 сек появляется 1 на втором выходе;
- через 30 сек. Появляется 1 на третьем выходе;
при этом 1 первом и втором выходах не снимаются
3. Выключение. При кратковременной подаче на первый вход 1 (кнопка):
- на третьем выходе 1 сменяется на 0;
- через 30 сек появляется 0 на втором выходе;
- через 30 сек появляется 0 на первом выходе.
4. Если процесс включения не закончился и была нажата кнопка - начинается процесс выключения (обратный порядок из места когда нажата кнопка)

Программу хотелось бы на С с пояснениями для даунов.
Привести значения фьюзов, т.к. заводские установки множителя частоты бывают разными.
Цену вопроса обсуждаем в личке.
Реклама
Аватара пользователя
electroget
Друг Кота
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Re: софтстарт

Сообщение electroget »

*Пошёл закупаться попкорном*
Реклама
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Re: софтстарт

Сообщение Ivanoff-iv »

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

Добавлено after 2 minutes 17 seconds:
даже название темы было похожим... чтото типа софтстарт для лампового усилителя...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15564
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: софтстарт

Сообщение BOB51 »

У практически всех МК при подаче питания на выводах устанавливается или 1 или Z-состояние.
Для получения начального 0 придется схемотехникой побаловаться - минимум инверторы на транзисторах добавить.
8)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1624
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: софтстарт

Сообщение VNS »

[uquote="Johnson1496",url="/forum/viewtopic.php?p=4235998#p4235998"]Цену вопроса обсуждаем в личке.[/uquote]
Нечего тут обсуждать… такой алгоритм не стоит и выеденного яйца. :) Наверное Вы делаете усилители на продажу и потому готовы оплатить за данный алгоритм? Если так, то тогда потратьте ту сумму которую Вы готовы были заплатить, на тех кто в этом более нуждается (соседям, или кому ещё...). Ну а алгоритм работы по вашему описанию вот Вам в виде прошивки за спасибо:
Tiny13.hex
(819 байт) 95 скачиваний
Схема:
Схема.png
(15.71 КБ) 83 скачивания

МК тактируется на заводских установках (1,2 МГц).
Алгоритм такой: При подаче питания на МК, на выходах 1, 2, 3 присутствует лог 0. При первом нажатии на кнопку устанавливается флаг включения и на выходе 1 появляется лог 1. Затем через 30 сек. проверяется флаг отключения. Если флаг отключения сброшен то включается выход 2 и тд. Если флаг отключения был поднят (была повторно нажата кнопка) во время отсчёта 30 сек., то выход 1 будет выключен. И далее по такому же принципу реализован последующий алгоритм. То есть в любой момент времени можно повторно нажать на кнопку и ход алгоритма переключится на противоположный. Включение сменится на выключение и наоборот. Чтобы визуально видеть какой режим (включение или отключение) отрабатывает, к выводу РВ3 (2) можно подключить светодиод через резистор катодом на общую шину. Светодиод светится – режим включения, погашен – режим отключения. Светодиод на схеме не указан.
Последний раз редактировалось VNS Ср май 25, 2022 17:18:22, всего редактировалось 1 раз.
Реклама
Johnson1496
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Сб май 02, 2015 10:06:21

Re: софтстарт

Сообщение Johnson1496 »

Проблема решена. Тему можно закрыть.
Реклама
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1624
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: софтстарт

Сообщение VNS »

[uquote="BOB51",url="/forum/viewtopic.php?p=4236260#p4236260"]У практически всех МК при подаче питания на выводах устанавливается или 1 или Z-состояние.[/uquote]
Вы ошиблись. При подаче питания все входы/выходы принимают только Z состояние, то есть переключены на режим входа. :)
Для получения начального 0 придется схемотехникой побаловаться - минимум инверторы на транзисторах добавить.
8)
И здесь ошиблись... :) всего навсего нужно вначале алгоритма перевести необходимые выводы в режим выхода и тогда на этих выводах будет лог 0.

Добавлено after 3 hours 32 minutes 24 seconds:
В данной прошивке светодиод указывающий на режимы… работает иначе. В режиме отключения он не тухнет, а мигает, а вот когда режим завершится полностью, тогда он гаснет.
Tiny13_LED.hex
(909 байт) 81 скачивание
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15564
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: софтстарт

Сообщение BOB51 »

Кроме АВРок есть и другие МК (та же mcs51 к примеру), так что не будьте столь категоричны.
:wink:
Относительно момента перехода к нулевому статусу даже для АВРок:
сначала интервал предзапуска (задержка POR), затем несколько операций - хоть и мизерное время, но таки имеется.
Так что ежли важен "абсолютный нулевой интервал" придется таки поморочиться.
Альтернатива активным каскадам - подтягивающие к gnd резисторы.
8)
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: софтстарт

Сообщение musor »

очень страный алгоритм....на мягкий пуск не похоже...
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: софтстарт

Сообщение Demiurg »

Ну, как-то так...
Спойлер

Код: Выделить всё

//==================
#include "proc_device.h"
//==================

//==================
// 1. При подаче питания на устройство на всех выходах устанавливается 0;
// 2. Включение. При кратковременной подаче на один из входов 1 (кнопка)
// - подает на один из входов/выходов 1;
// - через 30 сек появляется 1 на втором выходе;
// - через 30 сек. Появляется 1 на третьем выходе;
// при этом 1 первом и втором выходах не снимаются
// 3. Выключение. При кратковременной подаче на первый вход 1 (кнопка):
// - на третьем выходе 1 сменяется на 0;
// - через 30 сек появляется 0 на втором выходе;
// - через 30 сек появляется 0 на первом выходе.
// 4. Если процесс включения не закончился и была нажата кнопка - начинается процесс выключения (обратный порядок из места когда нажата кнопка)
//==================

//==================
void proc_device (void)
{
   static u08 _proc_device;

   switch (_proc_device)
   {
      case PROC_DEVICE_INIT:
         io_init ();

         _proc_device = PROC_DEVICE_WAIT_ON; // Установка состояния-режима ожидания включения
         break;

      case PROC_DEVICE_WAIT_ON: // Режим ожидания включения
         if (Get_Event (EV_ID_KEY_PRESSED)) // Если есть событие нажатия кнопки
         {
            set_proc_soft_start_on (); // то установка состояния-режима включения
            _proc_device = PROC_DEVICE_ON; // Установка состояния-режима включения
         }
         break;

      case PROC_DEVICE_ON: // Режим включения
         if (Get_Event (EV_ID_KEY_PRESSED)) // Если есть событие нажатия кнопки
         {
            set_proc_soft_start_off (); // то установка режима выключения
            _proc_device = PROC_DEVICE_OFF; // Установка состояния-режима выключения
         }
         break;

      case PROC_DEVICE_OFF: // Режим выключения
         if (Get_Event (EV_ID_START_SOFT_OFF_FINISH)) // Если есть событие завершения режима выключения
         {
            _proc_device = PROC_DEVICE_WAIT_ON; // то установка состояния-режима ожидания включения
         }
         break;

      default:
         break;
   }

   proc_soft_start ();
   proc_led_1 ();
}
//==================

//==================
void io_init (void)
{
   set_bit (OUT_1_DDR, OUT_1); // Пин OUT_1 - выход
   set_bit (OUT_1_DDR, OUT_2); // Пин OUT_2 - выход
   set_bit (OUT_1_DDR, OUT_3); // Пин OUT_3 - выход

   set_bit (LED_1_DDR, LED_1);
}
//==================

//==================
static u08 _proc_soft_start;
//------------------------------------------------------------------------
void set_proc_soft_start_on (void)
{
   _proc_soft_start = 1;
}
//------------------------------------------------------------------------
void set_proc_soft_start_off (void)
{
   _proc_soft_start = 4;
}
//------------------------------------------------------------------------
void proc_soft_start (void)
{
   static soft_timer ST_PROC_SOFT_START;

   switch (_proc_soft_start)
   {
      case 0: // Iddle
         break;

      case 1: // Режим включения
         out_1_on ();
         led_1_on ();
         set_soft_timer (ST_PROC_SOFT_START, SOFT_START_TIME_1);
         _proc_soft_start = 2;
         break;

      case 2:
         if (handle_soft_timer (ST_PROC_SOFT_START))
         {
            out_2_on ();
            set_soft_timer (ST_PROC_SOFT_START, SOFT_START_TIME_2);
            _proc_soft_start = 3;
         }
         break;

      case 3:
         if (handle_soft_timer (ST_PROC_SOFT_START))
         {
            out_3_on ();
            _proc_soft_start = 0; // Iddle
         }
         break;

      case 4: // Режим выключения
         out_3_off ();
         set_proc_led_1_run ();
         set_soft_timer (ST_PROC_SOFT_START, SOFT_START_TIME_1);
         _proc_soft_start = 5;
         break;

      case 5:
         if (handle_soft_timer (ST_PROC_SOFT_START))
         {
            out_2_off ();
            set_soft_timer (ST_PROC_SOFT_START, SOFT_START_TIME_2);
            _proc_soft_start = 6;
         }
         break;

      case 6:
         if (handle_soft_timer (ST_PROC_SOFT_START))
         {
            out_1_off ();
            set_proc_led_1_off ();

            Set_Event (EV_ID_START_SOFT_OFF_FINISH, USER_EVENT);

            _proc_soft_start = 0; // Iddle
         }
         break;

      default:
         break;
   }
}
//==================

//==================
static u08 _proc_led_1;

static soft_timer ST_PROC_LED_1;

void set_proc_led_1_run (void)
{
   led_1_on (); // Так как в этом проекте урезанный таймер и нет немедленного исполненния, то включение светодиода.

   _proc_led_1 = 1;
}

void set_proc_led_1_off (void)
{
   led_1_off ();
   _proc_led_1 = 0;
}

void proc_led_1 (void)
{
   switch (_proc_led_1)
   {
      case 0:
         break; // Idle.

      case 1:
         set_soft_timer (ST_PROC_LED_1, LED_BLINK_TIME);

         _proc_led_1 = 2;
         break;

      case 2:
         if (handle_soft_timer (ST_PROC_LED_1))
         {
            if (!check_bit(LED_1_PORT, LED_1))
               led_1_on ();
            else
               led_1_off ();

            set_soft_timer (ST_PROC_LED_1, LED_BLINK_TIME);
         }
         break;
   }
}
//==================

//==================
void led_1_on (void)
{
   __led_1_on ();
}

void led_1_off (void)
{
   __led_1_off ();
}

void led_1_switch (void)
{
   __led_1_switch ();
}
//==================

//==================
void out_1_on (void)
{
   __out_1_on ();
}

void out_2_on (void)
{
   __out_2_on ();
}

void out_3_on (void)
{
   __out_3_on ();
}
//------------------------------------------------------------------------
void out_1_off (void)
{
   __out_1_off ();
}

void out_2_off (void)
{
   __out_2_off ();
}

void out_3_off (void)
{
   __out_3_off ();
}
//==================

Upd.
Последний раз редактировалось Demiurg Пт май 27, 2022 07:49:17, всего редактировалось 2 раза.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15564
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: софтстарт

Сообщение BOB51 »

Похоже таки в том девайсе собака зарыта...
Оамповые схемы выходят на рабочий режим после полного прогрева катодов...
А сей процесс зависит от качества лампы, ее времени работы(старения), внешней температуры и теплообмена с окружающей средой.
Все параметры могут изменяться во времени - посему простыми задержками софтстарт обеспечить сложновато.
Надо иметь объективный показатель готовности устройства к работе(и/или его составляющих).
Возможно какой-то вариант датчика тока служебных сеток или еще чего...
:roll:
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: софтстарт

Сообщение Demiurg »

Это распространенный проект. Повторяется. С вариациями
Суть софт старта в постепенном включении анодного напряжения.
OKF
Это не хвост, это антенна
Сообщения: 1392
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: софтстарт

Сообщение OKF »

[uquote="Demiurg",url="/forum/viewtopic.php?p=4236965#p4236965"]Ну, как-то так...[/uquote]
Ужос!( Или это наш метод - из простого делать сложное? Про стиль я молчу... Хедер не нужен.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: софтстарт

Сообщение Demiurg »

Хде ужос ужос нах?! Все нормально. Выдохни.
Ты забыл. Мой принцип конструктор
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: софтстарт

Сообщение ARV »

Изображение

Добавлено after 30 seconds:
конструктор :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: софтстарт

Сообщение Demiurg »

Опрос кнопки. Выполнение главного алгоритма. Светодиод индикатор работы. Описание работы устройства в теме.

Критикуя, предлагай.

Почему я так делаю? Потому что такой подход позволяет быстро создавать, редактировать и изменять проекты. Также такой подход позволяет создавать различной сложности алгоритмы. Я это уже писал не раз. Поэтому, закончим обсуждение моего подхода. Проходили уже.
gatavin320
Родился
Сообщения: 4
Зарегистрирован: Ср ноя 03, 2021 14:38:10

Re: софтстарт

Сообщение gatavin320 »

От нечего делать. :))
Вложения
SoftStart.7z
(15.21 КБ) 86 скачиваний
Ответить

Вернуться в «AVR»