Прошивка (скетч) ЛБП на Ардуино

Тема в разделе "Лабораторный блок питания на Arduino", создана пользователем Gupic, 3 мар 2018.

  1. Valeriy

    Valeriy Интересующийся

    Это не из-за прошивки, скорей всего что с энкодером чот-то или его подключением. Где-то по железу проблему ищите.
     
  2. Yuraword

    Yuraword Новый пользователь

    А библиотека дисплея под i2c? Если да, то можно ссылку?
     
  3. Yuraword

    Yuraword Новый пользователь

    Энкодер обычный EC12, в другом проэкте работает прекрасно, пробовал подкидывать кондеры на 0.1, другие энкодеры, единственный который более менее адекватно работал это с компьютерной мышки, а под Ваш скетч мне надо делать новую плату управления, т. к. у меня под i2c дисплей
     
  4. Oleg_D

    Oleg_D Интересующийся

    Переделать скетч под I2C не проблема. Новую плату делать не надо.
     
  5. Yuraword

    Yuraword Новый пользователь

    Я был бы просто в восторге!!! А то я уже руки опустил с этим блоком
     
  6. Oleg_D

    Oleg_D Интересующийся

    Как и выше так и ниже обработка энкодера осталась неизменной относительно оригинального скетча. Если вы расчитываете, загрузив его, избавиться от глюков - это напрасно. Дело видимо в аппаратной части.
     
    Valeriy нравится это.
  7. Yuraword

    Yuraword Новый пользователь

    Какие предложения?
     
  8. Oleg_D

    Oleg_D Интересующийся

    Кроме самого энкодера, также на его поведение могут влиять его длинные провода.
    Возможно стоит проверить питание ардуины. Если питание "шумит"(кииайский импульсник) , возможны различные глюки. Обычно перед и после 7812, что питает ардуину, ставят 0.1 мкФ керамику. Также я обычно перед и после него ставлю гантельки индуктивности для фильтрации всяких помех. Отдельно стоит отметить отсутствие в схеме такого жизненно важного элемента для данного проекта как ИОН(источник опорного напряжения) хотя бы на tl431.
     
    Mulder нравится это.
  9. Yuraword

    Yuraword Новый пользователь

    В том то вся и фишка, что всё сделано по оригинальной печатке автора, транс : переменка 2*13 и отдельная обмотка 10В и никаких импульсников, библиотека энкодера от гайвера
     
  10. Maxim13

    Maxim13 Новый пользователь

    А у меня чего-то последняя прошивка компилироваться не хочет...
     
  11. Valeriy

    Valeriy Интересующийся

    Какую ошибку выдает?
     
  12. Valeriy

    Valeriy Интересующийся

    Допилил немного прошивку .... v3.0
    Изменение:
    1. Установка тока в меню 2\4 отображается корректно, нету больше сбоев в установочных показаниях. После прошивки, установите Ток в 0.03А и сохранитесь! Это обязательно!
    2. Если кнопку 'S1' (задержать примерно около одной секунды!) Откроется меню 1\3 предустановок, Теперь чтобы выбрать одну из них, это делается поворотом ручки энкодера вперед >>>> или назад <<<<. Чтобы применить предустановку, кратковременно нажмите кнопку 'S1'.
    3. Добавлен прелоадер. (так посолиднее выглядит при загрузке, на мой взгляд)
    На этом пока что все.
    Тестируйте!
     

    Вложения:

    Последнее редактирование: 27 июл 2019
    Yuraword нравится это.
  13. Yuraword

    Yuraword Новый пользователь

    Можно ли сделать вторую версию прошивки для i2s дисплея?
     
  14. Valeriy

    Valeriy Интересующийся

    Я к сожалению, еще не работал с интерфейсом I2C.
    Это у кого дисплей подключен по этому интерфейсу, тот возможно поможет вам в этом.
     
  15. Oleg_D

    Oleg_D Интересующийся

    До компа доберусь не скоро..Используйте эту библиотеку. Примеры там тоже есть. Всё просто, по аналогии.
     
  16. Valeriy

    Valeriy Интересующийся

    Ну вот, снова "допилил" прошивку. .... v3.1
    1. Внедрён анти-дребезг контактов энкодера.
    Используется библиотека обработки энкодера (GyverEncoder).
    Хотя это не самое лучшее решения для антидребезга, но относительно лучше, чем было.
    2. Добавлен ускоритель (FAST) установки напряжение. Если вращать ручку энкодера медленно, то напряжение будет увеличиваться (или уменьшаться) на 0.1 Вольт (как и было). Но если быстро крутить то будет увеличиваться (или уменьшаться) на 0.5 вольта. В строке 52: float counterFast = 0.5; вы сможете задать свое значения, если хотите.
    Скорость при которой активируется (FAST) вы сможете также задать в строке 51: int timeout = 25; (чем меньше это число, тем быстрее надо крутить ручку энкодера и наоборот)
    Подберите оптимальную скорость для вашего энкодера.
    Библиотеку взял здесь там есть её подробное описание работы и не только.
    В архиве все библиотеки включены! Их там три. (GyverEncoder.h и TimerOne.h) их распаковать и закинуть в папку, где у вас хранятся библиотеки Arduino. Обычно это (c:\Users\имя вашего компьютера\Documents\Arduino\libraries\).
    А так-же в архив докинул библиотеку (LiquidCrystal_1602_RUS-master) чтобы не искали, если еще нет.
    ------------------------------------
    Забыл написать что:
    строка enc1.setType(TYPE2); отвечает за тип энкодера TYPE1 одношаговый, TYPE2 двухшаговый. Если ваш энкодер работает странно, смените тип!
     

    Вложения:

    Последнее редактирование: 1 авг 2019
  17. Oleg_D

    Oleg_D Интересующийся

    Пожалуйста. Из поста выше под I2C. Установить все библиотеки в архиве. Суть в том, что перед любым выводом русского текста надо поставить "L", например:
    lcd.print(L" Стандарт");
    Таким образом , с помощью библиотеки LiquidCrystalRus_I2C можно переделать любой русскоязычный скетч под I2C.
    Спасибо Valeriy.
     

    Вложения:

    Yuraword и Valeriy нравится это.
  18. Valeriy

    Valeriy Интересующийся

    Всем привет!
    Был обнаружен небольшой баг при установки напряжения, а именно когда активировался режим "FAST" (быстро крутить) то после остановки было так что напряжение например остановилось на отметке 5.0 вольт, но когда покрутить медленно вперед то напряжение могло иногда установиться в 5.5 вольт или если назад покрутить то 4.5 вольта устанавливалось.
    Для исправления этого бага, замените функции обработки установки напряжения.

    Вместо этого
    (это удалить)!
    Код:
    void counterUp(){
        if (enc1.isFastR()){
            if(counter<umax) counter = counter + counterFast; //добавляем
            if(counter>umax) counter = umax;
          }else{
            if(counter<umax) counter = counter + 0.1; //добавляем
            if(counter>umax) counter = umax;
          }
    }
    void counterDown(){
        if (enc1.isFastL()){
            if(counter>umin) counter = counter - counterFast; //добавляем
            if(counter < 0) counter = 0.0;
          }else{
            if(counter>umin) counter = counter - 0.1; //добавляем
            if(counter < 0) counter = 0.0;
          }
    }
    

    Заменить на эти !

    Код:
    unsigned long CurrentTime, LastTime;
    void counterUp(){
        if (!enc1.isFastR()){
            if(counter<umax) counter = counter + 0.1; //добавляем
          }else{ 
        CurrentTime = millis();
        if (CurrentTime - LastTime > 400) {
                LastTime = CurrentTime;
                counter = counter + 0.1; //добавляем
            }else{
                if(counter<umax) counter = counter + counterFast; //добавляем
            }
        }
        if(counter>umax) counter = umax;
    }
    
    void counterDown(){
        if (!enc1.isFastL()){
            if(counter>umin) counter = counter - 0.1; //отнимаем
        }else{
            CurrentTime = millis();
            if (CurrentTime - LastTime > 400) {
                LastTime = CurrentTime;
                counter = counter - 0.1;
            }else{
                if(counter>umin) {
                    if(counter > 0.5){
                        counter = counter - counterFast; //отнимаем
                    }else{
                        counter = counter - 0.1;
                    }
                }
            }
        }
        if(counter < 0.1) counter = 0.0;
    }
    
    На этом пока что все.
    Тестируйте!
     
  19. Yuraword

    Yuraword Новый пользователь

    Решилась наконец-то моя проблема с энкодером!!! Я связался с автором проекта и тот предложил заменить энкодер на кнопки, так теперь появилась третья кнопка для входа в меню,чему я несказанно рад!!! Теперь всё работает ИДЕАЛЬНО!!!!
     
  20. Mulder

    Mulder I Want To Believe Команда форума

    Поздравляю.
     

Поделиться этой страницей