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

Управление диммером.

Есть потенциометр подключенный к ADC входу контролера. И есть кнопки UP\DOWN.

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

И тут мне не понятно как поженить кнопки с потенциометром.

Я постоянно считываю ADC и полученное значение пропорционально PWM который я выдаю наружу на драйвер светодиодов.

3.3V = 100% PWM

0V = 5% PWM

if (globalSysTimer > g_AnalogPeriod)
{
    dimmer_ana_value =  ADC_Read(0, PTB0_ADC0_SE8A, 4);

    LIGHT_14seg(dimmer_ana_value);
    LIGHT_7seg(dimmer_ana_value);

    g_AnalogPeriod = globalSysTimer + 200;
}

 Теперь я кнопками начинаю изменять полученное значение с ADC, и что запретить ADC апдейтировать это значение?

switch(key)
{
    case UP_ARROW:
         dimmer_ana_value += dim_param.step;
         if (dimmer_ana_value > MAX_DIM_VAL)
                dimmer_ana_value = MAX_DIM_VAL;
         break;

        case DOWN_ARROW:
            dimmer_ana_value -= dim_param.step;
            if (dimmer_ana_value < MIN_DIM_VAL)
                dimmer_ana_value = MIN_DIM_VAL;	    		
        break;
}

А если я начал крутить потенциометр – какое значение принять -  то какое я накрутил или то что нахлопал кнопками?

Поделиться сообщением


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

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

Два руля - это беда.

 

А хотите - просто складывайте число с АЦП и число с кнопок. С ограничением результата снизу и сверху.

Поделиться сообщением


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

1 hour ago, ViKo said:

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

Два руля - это беда.

 

А хотите - просто складывайте число с АЦП и число с кнопок. С ограничением результата снизу и сверху.

тогда не получается идея с мягкой подстройкой.

 

идея такая. потенциометр регулирует общий уровень на всех панелях. например на какой то панели хотят увеличить или уменьшить освещение - тогда подстраивают кнопками на этой панели.

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

Поделиться сообщением


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

2 минуты назад, jenya7 сказал:

тогда не получается идея с мягкой подстройкой.

Если хотите, чтобы вес числа с кнопок был меньше, сдвиньте число с АЦП влево на N разрядов, насколько хотите смягчить число с кнопок.

Поделиться сообщением


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

Либо как вариант сделайте так:
- разбиваем сигнал с потенциометра на диапазоны, допустим десять
- каждому значению диапазона фиксированный PWM
- к этому значению прибавляете/отнимаете значение от кнопок
- далее по вкусу

Поделиться сообщением


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

В 02.05.2019 в 17:21, jenya7 сказал:

потенциометр регулирует общий уровень на всех панелях ... на какой то панели ... подстраивают кнопками

Из сказанного логично требуется комбинация сброса, единственно возможное из которых — одновременное нажатие.

Поделиться сообщением


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

мне выдали такую формулу

Vseg = Cutoff * Press * Bdim + Press * Bpress * (1-Cutoff);

Bdim = Min*Vdim + Max;

Bpress - value of Vdim on first press.

Где

Vseg - вычисленное значение по которому устанавливается PWM.

Cutoff = 0,1 - отрезает влияние кнопок.

Press - значение с кнопок.

Vdim - значение на ADC.

Min, Max - минимальное и максимальное значение.

Сказали что проверили в матлаб и формула разрулит все.

сижу кручу - не работает формула, не вижу в ней логики.

 

 

Поделиться сообщением


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

Лучше бы они выдали алгоритм на словах, чего им надо. 

Поделиться сообщением


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

22 минуты назад, jenya7 сказал:

проверили в матлаб

Ну вот, нашлись виновные, которые попутали потенциометр с энкодером, с которым таких проблем никогда бы не возникло.

Поделиться сообщением


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

3 hours ago, jenya7 said:

сижу кручу - не работает формула, не вижу в ней логики.

Надо не на формулы глядеть, а брать Simulink и делать.
Если б народ знал современные методы разработки то форум наверно опустел бы.  :biggrin:

Вот ваша модель:

DimmerModel.thumb.gif.e7682fcf212eb580814aa72a4e5892e4.gif

Делается за 15 мин после чего конвертируется в C или С++

Поделиться сообщением


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

1 hour ago, AlexandrY said:

Надо не на формулы глядеть, а брать Simulink и делать.
Если б народ знал современные методы разработки то форум наверно опустел бы.  :biggrin:

Вот ваша модель:

 

Делается за 15 мин после чего конвертируется в C или С++

так сгенерируйте код пожалуйста :) у меня Simulink нет. и потом надо знать какие компоненты ставить на форму. я бы вряд ли додумался.

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

Поделиться сообщением


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

11 минут назад, AlexandrY сказал:

Вот ваша модель

Это не его модель — читайте ТЗ внимательнее, кнопок должно быть малость поболее, в этом и затык.

Поделиться сообщением


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

1 hour ago, Plain said:

Это не его модель — читайте ТЗ внимательнее, кнопок должно быть малость поболее, в этом и затык.

откуда поболее - две кнопки - +\-

Поделиться сообщением


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

В 02.05.2019 в 17:21, jenya7 сказал:

потенциометр регулирует общий уровень на всех панелях. например на какой то панели хотят увеличить или уменьшить освещение - тогда подстраивают кнопками на этой панели

 

Поделиться сообщением


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

1 hour ago, Plain said:

 

Скажем есть 4 панели - вход потенциометра ОБЩИЙ для всех панелей. А кнопки ОТДЕЛЬНЫЕ для каждой панели. панели не знают о других панелях. 4 панели - 4 микроконтролера.

Поделиться сообщением


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

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

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

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