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

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

  1. Gupic

    Gupic Moderator Команда форума

    Скетч для блока питания. v2.3
    Внимание: есть информация, что при заливке данного скетча на новую (чистую) ардуино выдается ошибка, связанная с отсутствующими настройками в EEPROM. Чуть позже проверю эту инфу. Ведь в коде есть строки, которые должны решать данную проблему:
    Код:
      ...
    //загружаем настройки из памяти МК
      counter = EEPROM_float_read(0);
      Ioutmax = EEPROM_float_read(4);
      mode = EEPROM_float_read(12);
      disp = EEPROM_float_read(10);
      //Если в памяти еще нет настроек - задаем что нибудь кроме нулей
      if(counter==0) counter = 5; //5 вольт
      if(Ioutmax==0) Ioutmax = 2; //2 ампера
    ...
     

    Вложения:

    • bp.ino
      Размер файла:
      19,6 КБ
      Просмотров:
      133
  2. Bondar

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

    Во вложении русская прошивка для блока. Все работает в том числе с "чистыми" EEPROM.
    В отличии от предыдущей там другие строки, отвечающие за первоначальное заполнение настроек:
    Код:
    if(isnan(counter)){ //если нет настоек по умолчанию
        //загружаем их в память
         EEPROM_float_write(0, 12);
         EEPROM_float_write(4, 4);
         EEPROM_float_write(12, 0);
         EEPROM_float_write(10, 1);
        //и считываем для дальнейшей работы
        counter = EEPROM_float_read(0);
        Ioutmax = EEPROM_float_read(4);
        mode = EEPROM_float_read(12);
        disp = EEPROM_float_read(10);
      } 
    
     

    Вложения:

    1ncept, Admin и Gupic нравится это.
  3. 1ncept

    1ncept Moderator Команда форума

    У кого есть опыт дописать прошивку так чтобы при срабатывании защиты или достижения придела тока звучал сигнал бузера
     
  4. Gupic

    Gupic Moderator Команда форума

    Тут можно просто без изменения прошивки использовать вывод красного светодиода.
    Ну а вообще, если добавлять в прошивку лучше сразу добавить возможность отключения/уменьшения громкости. Не всем по нраву когда что-либо пищит ;)
     
  5. Vitalliy

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

    Скетч робочий, при проверки видает ошибку. После закоментировання даних строк проверка проходит успешна.
     

    Вложения:

  6. Gupic

    Gupic Moderator Команда форума

    Еще раз скачал оба скетча и проверил. Все компилируется без ошибок!!!
     
  7. Vitalliy

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

    Скачал все снова, проверка прошла успешно.
    Прям интересно что било :cool:
    Начну делать
     
  8. Сергей

    Сергей Новый пользователь

    Доброго времени суток. У меня вопрос. Как выставить в прошивке чтобы выставленое напряжение отображалось на экране в сотых(12.25) а не в десятых(12.3). Искал так и ненашол, непонимаю где эта настройка. Помогите, заранее спасибо)
     
    Последнее редактирование: 11 мар 2018
  9. Сергей

    Сергей Новый пользователь


    Это бывает тогда когда из робочего стола пытаешся открыть скеч который скопирован и переименован. Незнаю в чем прикол но у меня на пк это проверено))) и плюс разные версии ардуино ide. И ошибки у меня были идентичные при компелировании
     
  10. Gupic

    Gupic Moderator Команда форума

    Это я как бы даже и не планировал никогда. Шаг настройки напряжения на БП 0,1 вольт, чего вполне достаточно в большинстве случаев.

    Но если Вам нужен шаг установки напряжения 0,01в - нужно:
    - Изменить скетч.
    - Не факт что БП будет поддерживать заданные вами например 12.18 вольт.
    - При этом установка напряжения затруднится, так как придется вращать энкодер в 10 раз больше, чем раньше.
    - Ну и с отображением малость вопросы в плане отображения других параметров в нижнем правом углу дисплея (может не хватить как раз одного символа)
     
  11. Сергей

    Сергей Новый пользователь

    А где его изменить если можете подскажите.
     
  12. Gupic

    Gupic Moderator Команда форума

    За установленное напряжение отвечает переменная counter
    Нужно изменить значение, на которое изменяется данный параметр при вращении енкодера.
    Код:
    ...
    void uup(){ //енкодер +
      if(set==0){//обычный режим - добавляем напряжения
         if(counter<umax) counter = counter+0.1;//добавляем
      }
    
    ...
    
    void udn(){ //енкодер -
      if(set==0){
       if(counter>umin) counter = counter-0.1; //убавляем напнряжение
      }
    ...
    нужно вместо 0.1 прописать 0.01;
    ну и для отображения на дисплее
    Код:
    lcd.print (counter,1); //выводим установленное значение напряжения
    заменяем на
    lcd.print (counter,2); //выводим установленное значение напряжения две цифры после точки
     
  13. Сергей

    Сергей Новый пользователь

    Да я менял там где энкодер а там где дисплей нет. Спасибо большое вечером попробую. И еше у меня напряжение прыгает в приделах одной сотой плюс минус в спокойном режиме. Для отфильтровки тока использовал 4 дроселя, фериты и 4 конденсатора на силовое питание. И такой жэ филтр на дежурное. И плюс 2шт 16 бит ацп. И 12 бит цап. Это все в куче дает такую точность. Даже если с нагрузкой сопротивлением то тож 1 максимум 2 сотых пригает. В качестве силовых бп использую 2 от ноутбука по 19 вольт последовательно подключены.
     
    Последнее редактирование: 12 мар 2018
  14. Сергей

    Сергей Новый пользователь


    Большое спасибо все получилось)
     
  15. Вячеслав

    Вячеслав Новый пользователь

    Доброго времени суток!
    Какие параметры изменить в скетче, чтобы ток ограничить на уровне 2.5 ампера и напряжение поднять до 24 вольт?
    Программированием никогда не занимался.
     
  16. Gupic

    Gupic Moderator Команда форума

    За максимальное устанавливаемое напряжение отвечает строка:
    Код:
    float umax = 16.00; //максимальное напряжение
    Но это только установка. Реально поднять до 24 вольт вряд ли получится...

    А за максимальный ток... вот блин... нету такой константы... ну в смысле параметра.
    Но можно в строке:
    Код:
    if (((Iout>(counter+0.3)*2.0) | Iout>10.0  | off) & set<4 & millis()>100 ) // условия защиты
    вместо Iout>10.0 прописать Iout>2.5 . Тогда БП не выдаст больше двух с половиной ампер ни в одном из режимов и настроек
     
  17. Вячеслав

    Вячеслав Новый пользователь

    Спасибо!
     
  18. Alsi

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

    Есть несколько прошивок, посмотри какая у тебя. В одной (русифицированная) прописано так:
    // задаем константы
    float umax = 20.00; //максимальное напряжение
    float umin = 0.00; //минимальное напряжение
    const float maxI = 9.00; //максимальный ток.....

    В другой так:
    void iplus(){
    Ioutmax = Ioutmax+0.01;
    if(Ioutmax>0.2) Ioutmax=Ioutmax+0.04;
    if(Ioutmax>1) Ioutmax=Ioutmax+0.05;


    if(Ioutmax>8.00) Ioutmax=8.00;
    Пробуй, не бойся... отключи блок от сети 220 вольт, подключи к компьютеру, измени программу, прошей и посмотри что получится (повторяю: без подключения к сети 220 вольт, на дисплее все параметры выводятся).
     
  19. Вячеслав

    Вячеслав Новый пользователь

    Блок пока еще на на этапе сборки. Русифицированную вряд ли получится использовать-индикатор с Али. Он кириллицу похоже не поддерживает. Трансформатор использую ТПП-306. Соберу обязательно отчитаюсь. Спасибо!
     
  20. Gupic

    Gupic Moderator Команда форума

    Получится. На любом китайском индикаторе. В скетче кириллица задана как отдельные символы (попиксельно) и все работает! :)
     

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