Приступаю к написанию прошивки, а это дело, как известно, начинается с написания ТЗ. Чтобы не писать ненужный документ, совместил ТЗ с руководством пользователя. Присоединил черновик v4, на глюки нумерации параграфов внимания не обращайте, замечания и предложения по алгоритмам принимаются.
Шаг перестройки выходного напряжения 0,1В и 0,01В. Если нужно перестроится с 3,3В на 30 устанет рука крутить, это не один оборот нужно сделать. Или предполагается для таких масштабных перестроек пользоваться пресетами? Может стоит сделать шаг перестройки настраиваемый через ПК? Максимальные значения тока/напряжения однозначно нужно сделать изменяемыми, достаточно через ПК. Меню довольно насыщено, но все вроде нужное, и большого смысла прятать только для установки с компьютера нет. Хотя, на платах предусмотрена установка датчика температуры либо DS18B20 либо LM75. Как будет переключатся тип датчика, или будет автоопределение? Как калибровать LM75, или температура будет определятся по характеристике из datasheet. Ну и меню вентилятора прятать, если нет термодатчика. Теперь по калибровке: выход из калибровки по таймеру убран? По опыту пользования предыдущей версии на Mega8 было неоднократно. что не успевал переставить щупы мультиметра в режим измерения токов (отвлекался) и калибровка заканчивалась по таймеру, приходилось начинать все с начала. Пока все. Сделаю, погоняю, может и еще вопросы возникнут.
Шаг перестройки выходного напряжения 0,1В и 0,01В. Если нужно перестроится с 3,3В на 30 устанет рука крутить
Это точно. Проверил, поставил на генераторе шаг 0.1 Гц и с 3.3 Гц до 30 Гц крутил 15 секунд С одной стороны, 0.1 В - самый ходовой шаг, хотелось бы его сделать основным. Получается, вместе с FINE нужен еще и COARSE. На как это удобней сделать, пока непонятно. Может, пусть кнопка FINE перебирает по кругу 3 шага? Индицировать можно другим видом мигания цифр.
dmirrr писал(а):
Может стоит сделать шаг перестройки настраиваемый через ПК?
Хотелось бы с шагом разобраться на месте. Как вариант, можно сделать меню настройки шага. В общем, вопрос пока открыт.
dmirrr писал(а):
Максимальные значения тока/напряжения однозначно нужно сделать изменяемыми, достаточно через ПК.
Это я планировал сделать, только пока в документацию не внес. Глубоко закопанное меню, например, с вызовом по удержанию кнопки при включении. Или даже при замыкании чего-нибудь внутри. Настраивать надо максимальное напряжение, ток и мощность.
dmirrr писал(а):
на платах предусмотрена установка датчика температуры либо DS18B20 либо LM75. Как будет переключатся тип датчика, или будет автоопределение?
Только не LM75, а LM19. Не планировал делать автоопределение. Думаю, будут две конфигурации для компиляции. Ну а проект планирую сделать изначально с открытыми исходниками.
dmirrr писал(а):
Как калибровать LM75
Зачем калибровать? У LM19 ±2.5°C, этого вполне хватит.
dmirrr писал(а):
Ну и меню вентилятора прятать, если нет термодатчика.
Может не быть вентилятора, а термодатчик обязателен. Он обеспечивает защиту от перегрева.
dmirrr писал(а):
выход из калибровки по таймеру убран?
Убран. Выход только по кнопкам. Сам процесс калибровки не очень нравится в плане задействованных кнопок, скорее всего, поменяется. Но это нужно смотреть на реальном приборе. Спасибо за замечания!
Извиняюсь, опечатался немного А возможен вариант, когда устанавливать напряжение с нажатым энкодером, при это устанавливать шаг , допустим сразу 1В? Тогда процедура установки будет очень простой: нажал - установка грубо,с большим шагом, допустим 1В отпустил - установка точно, с шагом 0.1В, с нажатой кнопкой "Fine" - 0.01В. Ну и при нажатом энкодере "Fine" отключать. В каком-то югославском измерителе такое было, уже не помню каком, реализовано было механически, но удобно. Но это может конфликтовать с остальными функциями, нужно думать. Если изменяемый шаг реализовать через кнопку "Fine", тогда, по моему мнению, удобней для пользования, будет мигать изменяемым розрядом. Пока других мыслей нет. А по поводу термодатчика, лучше делать одну прошивку и тип датчика переключать либо через меню, либо с ПК, если будет достаточно свободной памяти в STM32F100С4. Прошивку под STM32 компилировать немного не намного сложней чем под AVR, но согласитесь, как-то неправильно будет для изменения типа датчика качать среду разработки, компилировать проект.
Леонид Иванович писал(а):
Глубоко закопанное меню, например, с вызовом по удержанию кнопки при включении.
Туда-же предлагаю спрятать калибровку, все настройки, которые делаются один раз после сборки БП (максимальные значения тока/напряжения, настройки температурных порогов, вентилятора, шаги перестройки и т.д.). В рабочем меню оставить минимум, только то, что может понадобится изменить оперативно. Будет два отдельных меню, будет проще с организацией и навигацией по меню.
замечания и предложения по алгоритмам принимаются.
... после беглого прочтения ТЗ возникла пара вопросов. 1. на базе чего сделана реализация USB ? (cp210x, ft232 ......) 2. где храним параметры ? ( может на свободные PB8..9 повесить 24cXX ?)
Ничего, что я отвечу? 1. Преобразователь на FT232, но можно применить любой другой, имеющийся в наличии, так, как USB-UART выполнен отдельным модулем, гальваническая развязка разведена на плате управления. 2. В последней версии платы управления так и сделано.
А возможен вариант, когда устанавливать напряжение с нажатым энкодером
Это будет неудобно, удерживать кнопку энкодера и крутить его очень постараться надо. А вот насчет калибровки согласен, можно при включении и (при нажатом к примеру энкодере) заходить в меню калибровки, завершив калибровку, сохраняем настройки и далее работаем только в основном меню.
2. где храним параметры ? ( может на свободные PB8..9 повесить 24cXX ?)
Параметры можно хранить 1. Во флеше. Нужно выделить 2 страницы флеша по 1к. Если нужно сохранять только последние напряжение и ток то это 4 байта. Ресурс флеши - 10000. Так что хватит на то что бы сохранить 10000*(2048/4) раз. Это конечно не миллион, но тоже много. Там же можно хранить и калибровочные коэф., тогда циклов несколько меньше. 2. В регистрах, подпитываемых от батареи. Там не очень много памяти, но хватает что бы сохранить последние установки. Под калибровочные коэффициенты можно выделить тогда 1 блок.
Сохранять можно по выключению питания. Тогда ресурс распространяется не на количество перестроек а на количество выключений. Для этого нужно сделать определение выключения - делитель с выпрямителя для определения начала выключения. Ну и конденсатор побольше, что бы успеть сохраниться.
stm32 имеет спец режим ADC для слежения за порогом. Как только входное напряжение на заданном канале ADC перевалит порог - генерируется прерывание. Вот в этом прерывании все можно и сохранить и дождаться полного выключения. Исходники всего что я написал выкладывал.
Это будет неудобно, удерживать кнопку энкодера и крутить его очень постараться надо.
Неудобно. Пока вопрос с шагом регулировки остается открытым. Может быть, сделать шаг зависимым от значения, как сделано у меня в генераторах (и вполне удобно при использовании)? Только здесь более плавно увеличивать шаг, скажем, 0.1 В до 9.9 В, 0.2 В, до 19.9 В, 0.5 В дальше. А кнопка FINE может сначала включать постоянный шаг 0.1 В (светодиод FINE мигает), второе нажатие - включает шаг 0.01 В (светодиод FINE горит).
amv2000 писал(а):
насчет калибровки согласен, можно при включении и (при нажатом к примеру энкодере) заходить
Входить в калибровку нужно после прогрева источника, причем дергать при этом питание не очень желательно, чтобы не вызвать термический стресс. Поэтому специально сделал вход в калибровку из меню. Все пункты меня являются одинаково ненужными при эксплуатации источника. Поэтому нет смысла разбивать меню на две части - невозможно будет выделить "более нужные" функции.
Galizin писал(а):
1. Во флеше. Нужно выделить 2 страницы флеша по 1к.
Очень сильно боюсь, что задуманное не влезет в 16 кбайт. Поэтому выделять под эмуляцию EEPROM целых 2 кбайт - расточительство.
Galizin писал(а):
2. В регистрах, подпитываемых от батареи.
Добавлять на плату батарейку - намного большее зло, чем добавлять 24С04. Батерейка оправдана лишь тогда, когда нужны часы.
Galizin писал(а):
Сохранять можно по выключению питания. Тогда ресурс распространяется не на количество перестроек а на количество выключений. Для этого нужно сделать определение выключения
Думал и про такое. Но сигнал пропадания сети на плату управления не заведен, нестабилизированного напряжения там тоже нет. Как вариант, можно мониторить напряжение 5 В, из которого делаю 3.3 В. Тоже будет некоторое время. Тогда можно под эмуляцию EEPROM отвести только одну страницу, раз будет гарантированное время на стирание и запись.
Анализируя варианты, пришел к выводу, что лучше всего использовать внешнюю 24С04.
1. кнопка FINE может по кругу гонять и 3 шага: 1В, 0,1В, 0,01В 2. кнопка энкодера при удержании будет по кругу гонять 3 шага: 1В, 0,1В, 0,01В. можно при удержании кнопки автоматически показывать на дисплее текущий шаг, а смену шага делать с интервалом, например, 1 секунда.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
1. кнопка FINE может по кругу гонять и 3 шага: 1В, 0,1В, 0,01В
Да, это хороший вариант. Только для безопасности нужно постоянно индицировать текущее значение шага. Можно сделать, например, так:
Шаг 0.1 В - основной, светодиод FINE не горит. Шаг 0.01 В - мелкий шаг, светодиод FINE горит. Шаг 1 В - крупный шаг, светодиод FINE мигает, предупреждая об опасности сильно быстро изменить напряжение.
можно и светодиодом управлять. но по мне удобнее, как я уже говорил:
Цитата:
можно при удержании кнопки энкодера автоматически показывать на дисплее текущий шаг, а смену шага делать с интервалом, например, 1 секунда
удержание кнопки энкодера автоматически переводит дисплей в индикацию шага. можно менять шаг, как я написал, через 1 секунду, пока кнопка не отпущена а можно сделать так: следующее удержание кнопки переключает величину шага и показывает ее, и так по кругу. если привязываться к светодиоду, то автоматически переводить дисплей в индикацию шага не нужно.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
По поводу шага регулировки - а почему бы не выбирать шаг автоматом взависимости от скорости вращения энкодера? Типа крутанул быстро - меняется с шагом 1В. Крутишь чуть медленне - 0.1В.
Так сделано например в осциллографах Ригол и во многих микроволновках. По опыту - очень удобно и максимально естественно. На той же микроволновке нет проблем\неудобств выставить как 10 секунд так и 10 минут. Кроме того, слышал очень много нареканий на удобство пользования осциллографами где такого режима нет.
Для 0.01В можно и кнопку Fine нажать, или, поскольку это требуется достаточно редко и, когда старшие разраяды уже выставлены, нужно поменять максимум 9 значений, то шаг 0.01 применять при ОЧЕНЬ медленном вращении. Хотя, кнопка Fine наверное тут все-же будет лучше.
Кроме того, для безопасности, в режиме когда нагрузка подключена, вполне можно игнорировать скорость и всегда менять выходное напряжение только на 0.1/0.01В
Сейчас этот форум просматривают: Home_Maker и гости: 51
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения