Jump to content

    
Sign in to follow this  
jenya7

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

Recommended Posts

Есть потенциометр подключенный к 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;
}

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites
1 hour ago, ViKo said:

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

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

 

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

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

 

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

Edited by jenya7

Share this post


Link to post
Share on other sites
2 минуты назад, jenya7 сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 02.05.2019 в 17:21, jenya7 сказал:

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

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

Share this post


Link to post
Share on other sites

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

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 - минимальное и максимальное значение.

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

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

 

 

Share this post


Link to post
Share on other sites
22 минуты назад, jenya7 сказал:

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

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

Share this post


Link to post
Share on other sites
3 hours ago, jenya7 said:

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

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

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

DimmerModel.thumb.gif.e7682fcf212eb580814aa72a4e5892e4.gif

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

Share this post


Link to post
Share on other sites
1 hour ago, AlexandrY said:

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

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

 

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

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

Edited by jenya7

Share this post


Link to post
Share on other sites
11 минут назад, AlexandrY сказал:

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

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

Share this post


Link to post
Share on other sites
1 hour ago, Plain said:

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

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

Share this post


Link to post
Share on other sites
В 02.05.2019 в 17:21, jenya7 сказал:

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

 

Share this post


Link to post
Share on other sites
1 hour ago, Plain said:

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this