PDA

Просмотр полной версии : Блок индикации и управления выходным каскадом на ATMega



Страницы : [1] 2 3

Кукин Николай Николаевич
17.02.2010, 12:49
Всем GD!
При создании блока индикации различных параметров выходного каскада был учтен опыт совместной работы Евгения UN7GCE и Валентина RZ3DK при создании КСВ метра и последующей модели UA3YBW. Главное отличие заключается только в используемом контроллере. Я применил контролёр с системой команд AVR.
При распределении выводов портов пришлось учесть тот факт, что исходная постановка задачи индикации и управления мною не была сформулирована достаточно четко, поэтому при реализации функций пришлось ориентироваться на уже созданные и рабочие конструкции старших товарищей.
Для вполне очевидного последующего расширения возможностей блока я решил зарезервировать порты контролёра, дающие возможность передачи данных по протоколу последовательного порта (COM) и двухпроводной линии (I2C), которые реализованы в контроллерах AVR аппаратно. На СОМ порт можно будет повесить обмен с компьютером или трансивером, имеющим соответствующий выход. На шину I2C можно дополнительно повесить до 255 дополнительных устройств, реализованных на контроллерах или созданных для работы по этой шине (датчики температуры, напряжения и прочее) управляемых с основного блока. При этом плата основного блока не подвергается никаким переделкам, а только меняется прошивка. На вновь подключаемых устройствах можно реализовать как вывод дополнительной индикации, если на нее не хватило места на дисплее основного блока, а также управление всеми функциями выходного каскада – разные временные задержки при включении/выключении, переключение практически неограниченного количества диапазонов и прочее, что может прийти в голову, как обычно опосля, когда конструкция уже воплощена в железе и любое ее изменение является головной болью.
Ограничением по количеству переключаемых диапазонов/устройств в данной конструкции является отсутствие свободных ножек портов для управления.
Поэтому расширить количество диапазонов предполагаю повесив на шину I2C дополнительный контроллер,(меги8 хватит на 16-24 диапазона).
Кроме того, всю индикацию можно вывести на дополнительное табло, которое можно повесить в удобном месте. Это также исполняется на контроллерах.
Использование матричного дисплея ограничивается следующим. Для нормальной работы с дисплеем необходимо иметь в контроллере буфер памяти, равный количеству индицируемых точек, т.е. для 128х64 надо 1 кб оперативки + еще порядка 512 байт для хранения промежуточных результатов счета. Ножек для управления тоже надо много – порядка 16. Если большинство контролеров общего назначения имеют порядка 30-40 ног входов/выходов, то получается, что практически вся мощь прибора будет направлена на рисование картинок. Потому логично на мой взгляд выполнить на мощном контролере блок, обслуживающий дисплей и по шинам I2C, COM портов выполнять закачку туда информации с периферийных устройств. При этом уже практически не важно , на чем будет конкретно реализована такая система – пиках, мегах или контролерах других производителей – они будут совместимы между собой по протоколу передачи.
Надеюсь этим я ответил на несколько писем поступивших мне в почту.
Теперь по конкретным вопросам.
Я отлаживал конструкцию с индикатором 16х2, пришлось задействовать 3 кнопки – 1 на переключение экранов, 2 – диапазонов туда-сюда. После этого в протеусе была проверена работоспособность с драйвером 20х4, благо текст исходника практически не отличается. Неработоспособность 100% означает ошибку в драйвере дисплея. На неделе попытаюсь ее вылечить.
Так как предусмотрено измерение ВЧ напряжения раскачки, на аноде лампы и с ксв метра, то имеются все данные, позволяющие реализовать работу компаратора и в последующем даже реализовать автоматическую настройку ВКС. Работа компаратора несколько отличается от работы системы в АКОМе (нет фазового детектора), но, тем не менее тоже довольно удобна для настройки ВКС по определенному алгоритму.
Если кто-нибудь выложит протокол работы кенвуда или другого трансивера , буду реализовывать.
Прикладываю фото, сделанные сотиком некоторых режимов
индикации.
Верхняя строчка градусника индицирует проходящую мощность.

DL2BDA
18.02.2010, 20:52
Так как предусмотрено измерение ВЧ напряжения раскачки, на аноде лампы и с ксв метра, то имеются все данные, позволяющие реализовать работу компаратора и в последующем даже реализовать автоматическую настройку ВКС. Работа компаратора несколько отличается от работы системы в АКОМе (нет фазового детектора), но, тем не менее тоже довольно удобна для настройки ВКС по определенному алгоритму.

Здравствуйте.

Вы пишете о работе компаратора, о чем идет речь поясните пожайлуста.
В схеме РА с подачей сигнала в катод, фазовый метод настройки наверное не получится. А как по другому?
На картинках, где надо крутить Конденсаторы Пконтура, что-то не понятно как вы определяете какой кондер надо крутить С1 или С2?
Да, а на каком языке вы пишете свою программу?
73!

Кукин Николай Николаевич
19.02.2010, 10:35
Всем GD!
Для EW4PA.
Александр, нашел в чем причина неверного вывода на индикатор. В драйвере при условной компиляции тайминги задержек определялись функцией, выдранной из стандартной библиотеки языка. В протеусе все работало нормально, а в железе проявилось в виде абаркадабры. Почему так повела себя стандартная библиотечная функция , будучи выдранной из библиотеки, буду разбираться потом. После использования этой же функции в составе стандартной библиотеки языка вывод на индикацию пришел в норму. Пробную прошивку для индикатора 2004 выложу через день-два, пока попробую максимально реализовать Ваши «хотелки», которые Вы выложили в теме про пики.
Для Антона, DL2DBA.
По компаратору. Это вот здесь сообщение UR3IQO http://forum.cqham.ru/viewtopic.php?t=9192&postdays=0&postorder=asc&&start=15
и здесь http://forum.cqham.ru/viewtopic.php?t=9192&postdays=0&postorder=asc&&start=15
(RV3AZ)
Как определяю – в вышеприведенных ссылках все описано, добавить почти нечего, разве что, если имеется 3 состояния градусника – влево от центра шкалы – соответствует отклонению стрелки стрелочного прибора влево, вправо от центра шкалы- стрелка ушла вправо. Градусник исчез- контур в резонансе.
Верхний градусник индицирует проходящую мощность – чем длиннее, тем больше отдаваемая мощность. В реальном времени при настройке ВКС эти градусники будут живыми одновременно, и мне так думается, что должно получиться что-то интересное.
Пишу на С, диалект WinAVR. Исходники приведу в божеский вид, положу здесь тоже, чтобы каждый мог под себя переделать.
Николай.

Кукин Николай Николаевич
22.02.2010, 09:40
Прошивки работоспособны на меге16 и меге32.
Если кто-нибудь будет использовать мегу8515 ,то потребуется другая печатная плата и изменение программы с перекомпиляцией.
swrmetr2004 - для индикатора 2004.
Схема немножко изменена и приведена в соответствие с печатной платой, выложенной ранее в теме "swrmetr на PIC"
в техническом кабинете.
Задействованы оставшиеся две свободные ножки портов, но они не разведены на плате.
На одну ногу (PD7) выведено моргание светиком при КСВ>3, на другую (PD2) выведено управление включением
и выключением напряжений накала, смещения и прочего при включении/выключении РА.
Для нормальной распайки плату следует переразвести.
Кнопки 1,2 - переключения диапазонов.
Кнопка 3 - выключение РА. Снимается накал, анодное, включается вентилятор на максимум.
Через 180 сек. выключается вентилятор.
В РА должно быть предусмотрено после этого отключение питания платы от сети.
Предусмотрено повторное включение РА (накал + анодное), если в течении 10 сек после появления сообщении о выключении РА
будет повторно нажата кнопка3.
При повышении температуры отходящего воздуха выше 90 грудусов вентилятор включается на максимум.
По достижению температуры 50 гр, реле ветилятора обсточивается.
При подаче раскачки блокируется возможность переключение контуров ВКС как кнопками, так и с трансивера.
В нижней строчке при передаче высвечиваются 2 градусника. Верхний - проходящая мощность,
нижний - компаратор настройки ВКС. При настроенном контуре в резонанс нижний градусник пропадает.
Работа нижнего градусника практически не зависит от развиваемой мощности, что позволяет настраивать ВКС
при пониженной мощности выходного каскада, а также при разговоре в режиме SSB.
На дисплей выводятся температура выходящего воздуха, напряжение анода, ток анода, выбранный диапазон,
проходящая мощность, КСВ.
Максимальные пределы вывода приняты: мощность 5242 вт, напряжение - 5120 V, ток анода 2560 мА,
температура до 150 градусов С.
Для изменения требуемого предела измеряемых параметров (кроме температуры) в энергонезависимую
память прописываются коэффициенты масштабирования измеряемых величин.
В данных прошивках приняты коэффициенты для тока 2048,(ток до 1280 ма),
для напряжения 1280 (2560 V), мощности 4 (1310 вт).
Значения температуры включения/отключения прописаны 90/50 градусов.
Поменяв все эти значения на свое усмотрение можно изменять индицируемые параметры практически в
любых мыслимых пределах.
При настройке необходимо выставлять максимальное значение 2,56 V на ноге АЦП, которое соответствует
максимальному значению измеряемого параметра.
Все вышеописанное относится и к прошивке swmetr1602 для индикатора 16х2 строки. Разница только в том, что
при кратковременных нажатиях на кнопку3 будет переключение индикации измеряемых параметров, длительное нажатие
приводит к выключению РА как было описано выше.
Звуковая индикация превышения КСВ пока не сделана по одной простой причине, что пока не представляю как
ее индицировать, чтобы не задолбать хозяина РА.
Программировать необходимо память программ и ЕЕПРОМ. Заводские установки фузов меняются только для
фуза CKSEL = 0100, т.е. встроенный RC-генератор 8 МГц.
Николай.

Кукин Николай Николаевич
22.02.2010, 12:21
Для корректировки содержимого еепрома употребить прилагаемый файл.
Думаю, там все понятно.
Николай.

Ua3UtA
22.02.2010, 12:34
Если кто-нибудь будет использовать мегу8515
а можно мегу 8535 использовать? а то пылится без дела

Кукин Николай Николаевич
22.02.2010, 13:15
Ua3UtA, похоже я погорячился насчет меги8515, у нее нет АЦП, то есть надо для нее надо вешать внешние АЦП, это уже совсем другое.
Мега8535 имеет ту же цоколевку в ДИПе, что и мега16/32,то же количество портов, только мозгов у нее в 2 раза меньше, тем не менее использование памяти программ для 1602 индикатора составляет 4818 байт или 59% памяти, то есть ещё имеется запас на некоторые маневры по хотелкам.
Пробуйте.
Николай.

Кукин Николай Николаевич
22.02.2010, 20:34
Прошивки для меги8535.
Если требуется изменение файл еепрома, то см. выше.

Ua3UtA
22.02.2010, 21:16
Кукин Николай Николаевич
а в какой ветке схема прибора выкладывалась?что то я поискал-поискал...ткните носом в ссылку если не затруднит :пиво:

AlexZander
22.02.2010, 21:26
Ua3UtA
http://forum.cqham.ru/viewtopic.php?t=2154 6

Кукин Николай Николаевич
22.02.2010, 21:35
Вот :пиво:
В TQFP корпусе плат не доделана

Ua3UtA
22.02.2010, 22:06
Кукин Николай Николаевич
спасибо-буду разбиратся,м/с кроме LM все есть.надо пробовать :D

Кукин Николай Николаевич
24.02.2010, 09:41
По вопросу применения интегральных датчиков температуры.
Почему я выбрал именно лм94022.
Критериями выбора послужили –
Первое, и самое главное – наличие в ближайшем магазине.
Потом – цена и диапазон рабочих температур и то, что он аналоговый.
Применение цифрового датчика религия разрешает, только в этом случае софт будет байт на 700 побольше, и еще надо довольно долго соображать, как его написать. Для аналогового датчика потребовалось менее 100 байт программы.
Поэтому можете искать практически любой аналоговый датчик, лишь бы он удовлетворял следующим критериям: рабочий диапазон был шире, чем возможное изменение температур, питание не более 5в (чтоб не городить источник питания), цена удовлетворяла и, главное, был в наличии.
Написание софта сводится к построению градуировочной кривой датчика по даташиту в виде формулы или графика, ее аппроксимации семейством отрезков прямых при достаточной точности. Этот этап занимает порядка часа-двух. После этого написание кода программы занимает не более пол-часа с отладкой.
При невозможности приобрести интегральный датчик, можно его сделать самому, собрав схему стабилизатора тока на двух комплементарных транзисторах типа КТ315/361 и паре сопротивлений порядка килоома, а роль датчика поручить термосопротивлению типа КМТ или любому другому, работоспособному при требуемых температурах. Придется только изучать его диаграмму, а потом проверять на практике, какая получилась температурная зависимость.
На крайний случай (непозволительная роскошь на мой взгляд) - применить автомобительный датчик температуры. Там тоже нужен стабилизатор тока. Хотя, если забить на точность , можно заменить стабилизатор тока и обычным сопротивлением, ведь стоит в делителе, и ограничив допустимый диапазон величинами 40-50 градусов можно получить ошибку порядка 2-4 градуса при достаточно стабильном источнике питания, думаю не страшно.
Николай.

ua6bqn
17.06.2010, 13:36
Привет собрал схему всё работает за исключением переключения диапозонов при отключённом режиме ICOM
с уважением UA6BQN
P.S. Можно ли переделать прошивку под датчик температуры ТС1047

Кукин Николай Николаевич
18.06.2010, 10:21
всё работает за исключением переключения диапозонов при отключённом режиме ICOM
UA6BQN
Простите, не знаю Вашего имени. Не понял, что не работает.
Опишите проявления неисправности. Не работает индикация, переключение или все в целом.
Для отключения интерфейса ICOM служит джампер на 34 выводе контроллера. Если он замкнут на землю, как показано на схеме, то тогда управление с ICOM включено. Для отключения нужно УБРАТЬ джампер. Для проверки попробуйте подать непосредственно на вход 37 контролера при заземленном входе 34 напряжение с потенциометра в пределах 0-2,6 в. Если при его изменении будут переключаться диапазоны, то просто не работает отключение этого режима. Тогда буду смотреть прошивку (но у меня все работало).
Если у Вас не используется компаратор, то надо перевести в нижнее положение (заземлить) вход Uinp, идущий на 33 ногу процика. Наличие напряжения на этой ноге для программы означает подачу раскачки на вход Ума, и, поэтому блокируется возможность переключения ВКС под ВЧ напряжением.
Если и тут не работает, проверьте изменение напряжений на ножках 25-28 процика. Их различные комбинации определяют подключаемый диапазон. Если напруги меняются, то надо искать дальше, проверять изменение напряжений на выходе D5 выводы 1-3,6,7,14,15.
На одном из этих выводов д.б. около 5 в, которые соответствуют включению требуемого диапазона. Ну и далее, собственно усилитель тока на D6.


Можно ли переделать прошивку под датчик температуры ТС1047

По TC1047. Конечно можно поправить прошивку. Укажите точную маркировку датчика для поиска конкретного даташита на него.
С этим датчиком может быть всего одна залипуха. В имеющемся у меня даташите указан выходной ток с датчика порядка 100 мка. Если его (тока) не хватит для работы АЦП процика, то придется лепить усилитель тока, чтобы показания температуры соответствовали действительности. А может я все усложняю. Вам необходимо будет проверить на эталонных температурах кипения и замерзания воды, чтобы знать , насколько датчик брешет.
Укажите марку используемого Вами процика и датчика (буковки после марки). Постараюсь в течении нескольких дней найти время для корректировки.
Если желаете корректировать программу сами, то я выложу здесь ее текст и укажу, какие места надо скорректировать.
В принципе если есть желание, то можно соскользнуть на цифровые датчики Далласа
типа DS18*20. У меня собран термометр с автоопределением типа любого подключаемого датчика из этих серий. По факту у него погрешность менее 0,1 градуса( измерял в тающем льде). Осталось только включить текст этого термометра в эту прошивку. Это можно за день сделать.
Николай.

ua6bqn
18.06.2010, 10:44
Разобрался с переключением диапозонов, во фьюзах был заблокирован порт С.
Датчик температуры ТС 1047А.
С уважением Владимир

Кукин Николай Николаевич
18.06.2010, 11:05
во фьюзах был заблокирован порт С.

Владимир, добрый день.
Порты невозможно заблокировать фьюзами. Видимо Вы что-то другое имели ввиду.
Укажите еще тип процика и количество строк в индикаторе, потому что прошивки будут различаться.
Николай.

UR5EPM
18.06.2010, 11:13
Николай Николаевич выложите схему блока индикации и управления выходным каскадом на AtMega.
Заранее благодарен!

Кукин Николай Николаевич
18.06.2010, 11:38
выложите схему блока
Заранее предвидя Вашу просьбу,выложил схему в посте 11.
С Вас HUGE ищееду ща иуук!
Николай.

ua6bqn
18.06.2010, 11:54
Atmega16 был установлен фьюз JTAG который блокировал работу 4 ножек порта С.
Индикатор 16*2 ,если я правильно понял процик это микроконтролёр.
Владимир

Кукин Николай Николаевич
18.06.2010, 12:22
Владимир, понятно, Вы переназначили ножки на JTAG.
В 4 посте темы

Заводские установки фузов меняются только для
фуза CKSEL = 0100, т.е. встроенный RC-генератор 8 МГц.
Щас буду смотреть градуировочную кривую. Если успею, то может даже сёдня выложу прошивку.
Николай.

Кукин Николай Николаевич
18.06.2010, 13:13
Напопробовать.

ua6bqn
01.07.2010, 19:56
Привет Николай попробовал прошивку всё работает,только исчезла задержка по включению анода.
Да если можно то выложети исходник.
Владимир

ua6bqn
01.07.2010, 20:06
Привет Николай попробовал прошивку всё работает,только исчезла задержка по включению анода.
Да, если можно то выложети исходник.
Владимир

Кукин Николай Николаевич
01.07.2010, 20:58
Владимир,не могу найти исходник, куда-то запихнул. потерпите до завтра.
Николай.

Кукин Николай Николаевич
02.07.2010, 10:09
Владимир, добрый день.
Я тут допустил оплошность. Дело в том, что я почикал исходник на том компе, на котором писал и отлаживал прогу. А в отладочном исходнике на флешке, с которого компилировал для Вас, вызов этой тормозной функции вывода на экран был закомментарен.
Прилагаю исходник “as is”.
Вам необходимо раскомментарить вызов функции privetstvie и все пойдет.
Необходимо проверить откуда берутся постоянные вывода на экран изменяющихся параметров. Должны читаться из ЕЕПРОМА, в отладочном варианте это может быть по-другому. Надо проверять.
Обращаю внимание на следующее.
Большинство функции объявлено вложенными (inline). Сделано это для возможного уменьшения размера кода при компиляции с максимальной оптимизации по размеру кода. Можете это убрать, если не критично по размеру кода.
Далее. Проверить состояние параметра DEBUGGING, который определяет временнЫе константы в режиме отладки. Отрубить фразу #define DEBUGGING.
Далее. Вывод значения температуры на экран выполняется функцией PrintValue4.
Она не рассчитана на вывод отрицательных чисел. Поэтому если изделие будет эксплуатироваться при отрицательных температурах на экране будет ежик.
Для корректной работы при отрицательных значениях аргумента, ее надо изменить.
Обработка данных с датчика температуры в ф. Temperature. Поскольку градуировочная кривая датчика, примененного Вами практически прямая линия, это значительной упростило формулу подсчета.
Собственно весь текст – сырец в рабочем процессе, поэтому в тексте есть лишние места.
Вроде все.
Николай.

Витамин
01.08.2010, 11:12
Уважаемый Николай Николаевич, нельзя ли выложить картинку с фьюзами. Я честно говоря слабоват в програмировании, но если есть все пояснения, то обычно все получается. Заране благодарен.

Кукин Николай Николаевич
04.08.2010, 06:55
нельзя ли выложить картинку с фьюзами

Я отлаживал на мега32, так как она была под руками.
Считайте , что для Вас Мега16 полностью идентична меге32, за исключением объема памяти.
Программирую, используя avreal + STK200/300.

Состояние фузов запрограммированного процика как их выдает avreal
Команда:
avreal32 -as -p1 +mega32
...
avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.27rev1 (Jan 2 2009 12:49:24) http://www.ln.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua
Command:
-as -p1 +mega32
Adapter enabled
Device connected, mega32 detected
Chip not locked
Fuses
OSCCALs = C2 C1 BD BE
BODLEVEL = 1
BODEN = 1
SUT = 3
CKSEL = 4
BLB1 = 3
BLB0 = 3
OCDEN = 1
JTAGEN = 1
CKOPT = 1
EESAVE = 1
BOOTSZ = 3
BOOTRST = 1
Total time 225ms
Reset pin released
Adapter disabled
Рекомендую начать попытки программирования именно с вышеуказанной невинной команды. Так Вы только будете читать кристалл и больше ничего.
программирование фузов
avreal32 -as -p1 +mega32 -fcksel=4 -w
Вам надо в командной строке подставить +mega16 вместо +mega32, если используется ета мега.
Программирование памяти программ и ЕЕПрома

avreal32 -as -p1 +mega32 -w swmetr1602.hex swmetr1602.eep
Надо, чтобы avreal видел оба файла прошивок, для этого надо указать либо полный путь к каждому файлу,
или записать их в один каталог рядом с avreal'om.
Программирование фузов выполняйте только после того, как убедились в том, что программа и еепром запрограммированы.
А можно сбацать батник вида
...
avreal32 -as -p1 +mega32
pause
avreal32 -as -p1 +mega32 -w swmetr1602.hex swmetr1602.eep
pause
avreal32 -as -p1 +mega32 -fcksel=4 -w
pause
...
Так можно на каждом шаге проконтролировать ход программироваия и по Ctrl-C прервать исполнение при желании.
Если процик был зашит ранее или возникло желание перешить, ОБЯЗАТЕЛЬНО надо очищать кристалл
до прошивки командой
avreal32 -as -p1 +mega32 -e
ФСЁ.

Витамин
04.08.2010, 16:11
Еще один вопрос автору: куда подключаются входы Uinp и Uout. Небольшая схема не помешает. Извиняюсь за несообразительность.

Кукин Николай Николаевич
04.08.2010, 21:26
Еще один вопрос автору: куда подключаются входы Uinp и Uout. Небольшая схема не помешает.
На эти входы подключаются выводы компаратора, ссылка на который была в 3 посту темы.
Цитата :
«… Емкостные делители выбираются исходя из параметров лампы, так, чтобы в нормальном режиме выдавали примерно одинаковое напряжение. Резисторы выбираются исходя из чувствительности микроамперметра (с нулем по середине шкалы!) и напряжения на выходе детекторов. Подстроечным резистором устанавливаем стрелку индикатора на ноль при работе усилителя с правильно (!) настроенным П-контуром. В дальнейшем отклонения стрелки будет свидетельствовать о неправильном согласовании или/и работе в перенапряженном режиме.

Удачи!
Олег
73 de UR3IQO »
В данном случае стрелочный прибор и потенциометр отсутствуют, а выход сеточного детектора подключается к входу Uinp, с анодного детектора – на вход Uout. После настройки выходного каскада на минимум искажений напряжения с детекторов подстроечными резисторами настраиваются на 2,56 в на ножках процессора при максимальной раскачке, соответствующей минимальным искажениям. Работа устройства отражается в виде второго градусника в нижней строчке, расширяющегося из центра. Положение, когда градусник исчезает соответствует центральному положению стрелочного положения и точной настройке контура.
Собственно прочтите внимательно несколько раз первые 3 поста темы. там написано практически все, что Вам нужно.
Николай.

Mildi
24.10.2010, 20:24
Имеется набор мастеркитовский MN8036
Описание во вложении. Как думаете стоит его доработать или из его комплектующих собрать Блок индикации и управления.

ua6bqn
11.12.2010, 23:04
Как правильно подключить вход измерителя анодного напряжения и тока к бестрансформаторному источнику?
Владимир

ua6bqn
12.12.2010, 20:31
Ну что не кто не подскажет, как правильно подключить вход измерителя анодного напряжения и тока к бестрансформаторному источнику?
Спалил 2 Atmega 16 шибко дорого, помогите плиз!
Владимир

ut1wpr
12.12.2010, 23:34
Ну что не кто не подскажет, как правильно подключить вход измерителя анодного напряжения и тока к бестрансформаторному источнику?
Спалил 2 Atmega 16 шибко дорого, помогите плиз!
ВладимирПравильно заданный вопрос - на 80% готовый ответ.
Приведите схему вашей установки по сжиганию МК, и вам охотно расскажут, что в ней можно улучшить... :)

Ra9cin
26.01.2011, 18:34
Николай Николаевич, У Меня есть Atmega169 пойдет ли на ней прошивка или надо переделывать ?
Так же остро стоит вопрос, как мерять ток и напряжение при бестрансформаторном питании анода?

Кукин Николай Николаевич
27.01.2011, 09:56
У Меня есть Atmega169 пойдет ли на ней прошивка или надо переделывать ?

По вопросу применимости меги169.
У меня нет опыта работы с этим проциком.
Бегло пробежал по описанию. Основное назначение этого контроллера – управление ЖКИ 4х25 сегментов, то есть к нему напрямую можно подключать индикатор, не имеющий внутреннего контроллера. Для этого у кристалла 53 выходных ноги, которыми можно подрыгать.
В описанной мной конструкции получилась следующая загрузка процика по ножкам:
6 каналов АЦП, 7 ног на индикатор, 1 нога большого КСВ, 1 нога – вентилятор, 1 нога накал, 1 нога динамик, 3 ноги – кнопки управления, 4 ноги – управление переключением диапазонов.
Разводка портов выполнена таким образом, что возможно в дальнейшем использовать аппаратные средства контроллера для подключения внешних устройств – COM порт, шину I2C. В выложенных прошивках и исходных текстах эти возможности не реализованы, поэтому ноги процика, предназначенные для этих функций, фактически свободны, и могут использоваться для других задумок.
Если использовать, допустим, цифровой однопроводной датчик температуры, и не пользовать интерфейс ICOM, то освобождается 2 ноги АЦП, т.к. цифровой датчик можно подключить на любую ногу процика. Т.е. требования к применяемому процику снижаются.
Теперь что же из вышеперечисленного есть в меге169?
А там есть всё это и еще плюсом море свободных ног и места в памяти программ, EEPROM и оператвке. Но одна вот незадача – надо разрабатывать новую плату, тк у процика совсем другой корпус, и корректировать под получившуюся разводку прошивку.
Это получится уже несколько другая конструкция. Впрочем , исходники выложены, скорректировать, если разобраться в тексте, сложностей не представляет. Там все, кроме формирования двух-линейного индикатора в одной из текстовых строк, прозрачно.




Так же остро стоит вопрос, как мерять ток и напряжение при бестрансформаторном питании анода?
Напряжение померить просто. Точно измерить напряжение можно, например, используя 2 канала АЦП, один на анод, другой на катод, потом значения сложить. Если выпрямитель симметричный относительно корпуса (общего провода), то с достаточной точностью можно обойтись одним каналом, тупо умножив показания АЦП на 2.
А вот с током гораздо сложней. Если подходить в лоб, то необходима гальваническая равязка по высокому.
Как вариант - оптронная развязка на COM, но это нужно организовывать висящий под высоким напряжением дополнительный датчик, имеющий выход СОМ-оптрон , питание для него. Можно связь через трансформатор.
Другой вариант - менять схему выпрямителя, организовав ему искусственную среднюю точку, потенциал которой был бы равен потенциалу шасси, бороться с током заряда в момент пуска, который там может быть огромным. Но это хлопотно, да и наверно небезопасно. В общем, у меня однозначного ответа нет.
Николай.

Ra9cin
27.01.2011, 10:28
Николай Николаевич, Спасибо за ответ. Лет 10 назад занимался микроконтроллерами для своих нужд. От туда и остатки, выписывал по почте демонстрационные образцы есть AVRISP для программирования, но старая еще под com port. Посмотрел программу все понятно. Развести новую плату проблем нет. Думаю разберусь и с модификацией программы с вашего разрешения.

Все же не совсем понятно с измерением напряжения, если мы без гальванической развязки цепляемся на +анод и -анод даже через цепочку R в несколько Мегаом то, наш прибор оказывается под потенциалом анодного напряжения, что не есть ГУД. Возникает проблема электрической прочности изоляции питания контролера от сети. С током еще сложней. И видимо, нет смысла городить весь этот огород.
Павел, Ra9cin

PS: Пообщался с коллегами на работе, идея следующая: Напругу и ток мерять отдельным микроконтроллером изолированным от всего с питанием от Li батарейки CR2032. Данные гнать на индикатор через оптопару. при правильно написанной проге батарейки хватит на несколько лет. Ваше мнение ?

Кукин Николай Николаевич
27.01.2011, 18:57
Данные гнать на индикатор через оптопару. при правильно написанной проге батарейки хватит на несколько лет.

Да, все правильно (по поводу оптопары). Именно это я и имел ввиду, только питание от сети, а не батарейки. С батарейкой нужно вводить процик в транс постоянно, чтобы уменьшить разряд батарейки.
Оптопару надо порядка на 3 кв (по своему анодному).



наш прибор оказывается под потенциалом анодного напряжения


По поводу прямого измерения напряжения. Входные токи каналов АЦП мизерные – микроамперы. Если поставить делители на микроамперные токи, то может и ничего страшного, правда тут уже поступили жалобы по поводу сгоревших проциков.Правда, неизвестно, как их включали. Главная опасность - то , что шасси аппарата окажется под фазным напряжением сети. Но , УЗО, например, в щитах ВРУ (вводно-распределительное устройство - силовой щит) настраивают на миллиамперные токи, так что может и прокатит по безопасности.


с модификацией программы с вашего разрешения.
Разрешение на модификацию программы? А для чего она выложена? Чтобы любой мог под себя модифицировать.

Успехов.
Николай.

Ra9cin
31.01.2011, 20:08
На AtMega 169 после перекомпиляции под новый проц программа запустилась с пол пинка пока только на макетке. Буду рисовать плату.
Николай Николаевич, подскажите сложно ли прикрутить в качестве термодатчика DS1620 просто есть в наличии несколько штук. Спасибо!

Кукин Николай Николаевич
01.02.2011, 17:21
На AtMega 169 ... программа запустилась

Это хорошая новость.


подскажите сложно ли прикрутить в качестве термодатчика DS1620 просто есть в наличии несколько штук

Честно говоря, я с этим типом датчиков не имел опыта и не знаком.
Пользовал только DS18B20. Для него есть исходники, выдранные из другого проекта.
Кроме, того, эти же исходники работоспособны и с датчиками DS1820,DS18S20.
Преимущество их перед теми, что хотите применить Вы в том, что они работают всего по одной шине, то есть задействовать можно только одну ногу контроллера, да еще на эту одну ногу повесить несколько таких датчиков и опрашивать по очереди.
Если нужны исходники для этих датчиков, я их Вам пошлю.
Николай.

ua6bqn
29.03.2011, 15:53
Здравствуйте Николай!
Извените меня за назойливость ну некак не получается переделать программу под датчик температуры
TC1047A.
То что Вы присылалил на попробывать не работает, глючит.
У меня процик Atmega16 , инедикатор 1602.
Помогите пожалуйста переделайте прошивку под TC1047a,
с уважением Владимир

Кукин Николай Николаевич
30.03.2011, 10:04
Владимир, добрый день.
Я уже все успел забыть, пришлось вспоминать снова.
Проверяйте меня.
При -40 с датчика 0,1V, при +125 – 1,75V.
Одно деление АЦП равно 2,56V/1024=0,0025V.
То есть -40 будет соответствовать отсчет АЦП 0,1/0,0025=40,
+125 соответственно 1,75/0,0025=700.
Учитывая то, что температурный график практически прямой, составляем уравнение прямой, проходящей через начальную точку t=-40, U=40 (по АЦП)
T=-40+(25*u_temp/10000-25*40/10000)*100/10000, или
T=-40 +(25*u_temp-1000)/100.

Пишем функцию измерения ,индикации и управления карлсоном
void inline Temperature(void)
{
int16_t temper=0;
uint16_t u_temp;

u_temp=ADC_READ(Temp erChannel);

//.................... .................... ...................
//для датчика TC1047A
temper=(int16_t)(-40+((25*u_temp)-1000)/100);
//.................... .................... ...................
PrintValue4(temper,2 ,1);
if (temper>FanT_ON)
setbit(FanPort,FanPi n);
else if (temper<FanT_OFF)

clrbit(FanPort,FanPi n); //выключение вентилятора при снижении температуры до //температуры FanT_OFF
}
Компилируем, получаем и пробуем.
Напоминаю еще раз, функция вывода на дисплей правильно выводит только положительные значения.Если хотите, чтобы казало и при отрицательных температурах, надо скорректировать.
Николай.

ua6bqn
30.03.2011, 10:12
Спасибо большое буду пробывать.
Владимир

ua6bqn
12.08.2011, 12:04
Здравствуйте Николай!
Не могли бы Вы откорректировать прошивку под U=60V, I=30A.
С уважением Владимир

Кукин Николай Николаевич
22.08.2011, 12:28
Не могли бы Вы откорректировать прошивку под U=60V, I=30A.

Владимир, добрый день!

К сожалению времени в последнее время сплошной дефицит.

Учитывая то, что Вы ясно не сформулировали Вашу просьбу, прошивку сделал исходя из следующих предположений.

РА транзисторный.

Поэтому убрана задержка включения анодного напряжения 180 сек.

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

Переделана индикация тока и напряжения. Вывод с 3 знаками (1 знак после запятой) Напряжение в вольтах (макс 76,8 в), ток в амперах (макс 40 а).
Для измерения тока при таких ломовых значениях необходимо делать датчик, на котором падение будет не более 0,03 в, потом ставить усилитель с коэффициентом порядка 100 ( лучше на операционнике типа LM358 или подобном).
Датчик температуры TC1047A.
Хотя можно было бы попробовать прикрутить любой цифровой, например DS18B20 - он широко распространен да и цена у него меньше, чем у TC1047A.
Для того, чтобы Вы могли самостоятельно изменять пределы индикации и срабатывания на температуру, предусмотрена прошивка их в ЕЕПРОМ. Ассемблерный файл содержимого ЕЕПРОМА прилагаю. Его можно корректировать любым редактором и после компиляции зашивать в ЕЕПРОМ не изменяя текста программы. Компилировать , используя avrasm2
bat файла, выложенного в начале темы.

Для транзисторного РА наверно можно убрать работу компаратора, поэтому в нижней текстовой строке дисплея, в которой я предусмотрел двухстрочный градусник, выводить

индикацию проходящей мощности в вернем градуснике, а в нижнем, например, КСВ.

Порядок настройки датчиков.

Напряжение.Подключае м через делитель с коэффициентом порядка 29-30 к источнику напряжения 77-80 в, контролируя это напряжение эталонным прибором. Выставляем это же значение на дисплее, поворачивая потенциометр на плате.
Ток. Тут все то же самое, только птенциометр должен быть внешним, так как его на плате нет.
Вроде все.
Николай.

ua6bqn
25.08.2011, 22:38
Добрый вечер Николай.
Что-то не получается компилировать ассемблерный файл , используя avrasm2
bat файла, выложенного в начале темы, пишет fatal error :Cannot open output file E:\eprom_data\eprom_ data.obj:
Pirmission denied.
Как такавого диска Е у меня нет помогите пожалуйста.
Сделайте файл ЕЕПРОМ С данными в ассамблерном файле,
и ещё какая максимальная мощность.
С уважением Владимир

Кукин Николай Николаевич
26.08.2011, 08:55
Добрый вечер Николай.
Что-то не получается компилировать ассемблерный файл , используя avrasm2
Сделайте файл ЕЕПРОМ С данными в ассамблерном файле,
и ещё какая максимальная мощность.

Владимир, GD!
В файле строка , как это выглядит у меня на компьютере. Думал, что легко догадаться, как исправить под себя.
Копируете файл eprom_data.bat, eprom_data.asm и avrasm2.exe в одну папку.
В файле eprom_data.bat оставляете одну строку:
avrasm2.exe -e eprom_data.eep eprom_data.asm
После запуска бат файла в этой папке у Вас появляется файл eprom_data.eep
Если запустить фразу avrasm2.exe -h, то на экран выведется вся инфо про то, как запускать ассемблер на компиляцию.
Содержимое ассемблерного файла думаю, понятно из коментариев.
При мощностном коэффициенте 4 индицируется проходящая мощность примерно до 2 квт.
В строках для тока и напряжения указать максимально требуемые значения тока в А и напр. в В, увеличенные в 10 раз в виде ЦЕЛЫХ чисел.
Для температур срабатывания вентилятора температуру указывать в градусах.
Вывод мощности не стал переделывать подобно тому, как сделал вывод тока и напряжения, оставил коэффициент масштабирования, неохота было думать, хотя в принципе там все просто.
Волновое сопротивление кабеля (Ом) участвует в вычислении проходящей мощности, поэтому должно соответствовать применяемому кабелю.
Отличие этой прошивки в том, что выводится 3 значащих цифры тока/напряжения.
Правда, забыл переделать выключение выходного каскада, там осталось включение дополнительного охлаждение после снятия напряжения с выходных элементов. Может так и надо для транзисторов.

Если нужно, на следующей неделе выложу прошивку для цифровых датчиков DS18S20,DS1820,DS18B 20 с автоопределением подключенного типа датчика.
Скомпилированный файл прошивки ЕПРОМА просто тупо забыл выложить.
Николай.

ua6bqn
26.08.2011, 09:08
Спасибо Николай.
Буду пробовать, буду ждать прошивку с другими тем. датчиками,
TC1047A очень капризный и неудобный в креплениии.
Владимир

Кукин Николай Николаевич
29.08.2011, 11:16
Порядок подключения цифрового датчика из серии DS18B20,DS18S20,DS18 20.
Вполне возможно будет работать и DS1822, но я не читал на него документацию.
Вместо R15 ставим перемычку. Убираем блокировочный смд конденсатор, стоящий параллельно 40 ножке (ADC0/PA0) контроллера (на схеме не указан, но показан печатной плате).

Это потому, что теперь нога цифровая, а не вход АЦП.
Вывод DQ датчика цепляем к 40 ноге процика, Vdd к +5в, GND к -5в(общему проводу).
Между DQ и Vdd запаиваем сопротивление 6,8 ком согласно даташита. Величина этого сопротивления не очень критична, у меня работало от 4,7 до 10 ком. Датчик сохранял работоспособность при длине проводов до датчика порядка 8 м, больше не пробовал.

При подаче питания в течении около 4 сек индицируется температура 85 градусов — именно такое значение датчик выдает при первом цикле измерения, оно прописано в датчике и в данном случае свидетельствует о том, что датчик подключен и исправен.

Состояние ЕЕПРОМА не изменилось, можно использовать старый файл.

Значение проходящей мощности ограничено величиной 5242 вт.

На индикацию значение мощности выводится подсчитанное по формуле 5242/К.

Значение К прописывается в ЕЕПРОМЕ ( в файле EEMEM_koeff) и может принимать значение 1 до 5242, то есть максимальное значение , выводимое на индикатор может изменяться при этом от 5242 до 1 , но только в целочисленном измерении.

Поэтому при К=4, прописанному в памяти в данной прошивке будет соответствовать максимально индицируемой мощности 5242/4=1310 вт.

Пробная версия прошивки. В ней не убран компаратор, поэтому все, что связано с работой этой опции прошивки должно присутствовать аппаратно, т. к. если не будут поданы соответствующие напряжения, то можно будет переключать контура под ВЧ напряжением (в прошивке на это есть защита), а на индикаторе будет вылазить нижний градусник настройки контура.

Николай

ua3moy
12.04.2012, 19:16
Здравствуйте Николай Николаевич.
В этой теме вы выложили исходник,я пытаюсь корректировать его под индикатор 16х4 .
Результат при отключении debag ошибка ,не определена переменная к,определил,не хочет работать клавиатура,
на месте буквы т-температура, высвечивается 9.
Подскажите где рыть .

Кукин Николай Николаевич
13.04.2012, 10:31
<br>я пытаюсь корректировать его под индикатор 16х4 .<br>
Результат при отключении debag ошибка ,не определена переменная к,определил,не хочет работать клавиатура,<br>
на месте буквы т-температура, высвечивается 9.<br>Насколько мне не изменяет память, в выложенных исходниках был вариант для двухстрочного индикатора, драйвер индикатора тоже был заточен под двухстрочник. Чтобы драйвер правильно работал с 4х строчником, надо закоментарить дефайн _1602 и раскоментарить дефайн _1604.<br>#define DEBUGGING было введено для упрощения отладки , в этом режиме все временнЫе задержки просмотра сообщений укорачивались или вообще исключались из программы. Я поищу версию исходников для 16х4 индикатора и выложу здесь, ждите. Может завтра, может сёдня ночью, под рукой нет, надо искать. <br>Николай.

ua3moy
14.04.2012, 07:21
<br>Насколько мне не изменяет память, в выложенных исходниках был вариант для двухстрочного индикатора, драйвер индикатора тоже был заточен под двухстрочник. Чтобы драйвер правильно работал с 4х строчником, надо закоментарить дефайн _1602 и раскоментарить дефайн _1604.<br>#define DEBUGGING было введено для упрощения отладки , в этом режиме все временнЫе задержки просмотра сообщений укорачивались или вообще исключались из программы. Я поищу версию исходников для 16х4 индикатора и выложу здесь, ждите. Может завтра, может сёдня ночью, под рукой нет, надо искать. <br>Николай.
Все что нужно для 16х4 Я сделал по комментариям,DEBUGGI NG тоже ,правда сейчас расскоментил,а то программатор шьет 20мин
да еше 180с ждать,4 строки поддерживает ,единственное только программа по моему виснет на:
setbit(AnodPortDDR,A nodPin);
#ifndef DEBUGGING
setbit(PORTC,PINC7); //включение анодного
#else
clrbit(PORTC,PINC7); //включение анодного
#endif

ClrScr();
strcpy_P(buffer, (PGM_P)pgm_read_word (&(string_table[9])));//" Anod tension is ON "
lcd_gotoxy(0,1);
lcd_puts(buffer);

_delay_ms(0xFF);
ClrScr();
надпись Anod tension is ON не выводиться ,вместо буквы T температура индицируется 9 . const char Mes9[] PROGMEM = " Anod tension is ON "; определена .
Я начал делать усилитель на 2хги7б ,2х строчного индикатора вроде бы маловато будет,на 4х строчном больше инфы.
да и остальное хочу подогнать под эти лампы.

Кукин Николай Николаевич
15.04.2012, 21:05
К сожалению не нашел исходника с дисплеем 16х4, поэтому сделал новый.
Изменил работу АЦП с целью ускорения работы устройства в целом.
В приложении для компиляции взять два файла swrmetr1604.c , func1604.c
Там вроде все отлажено на дисплее 1602 и скорректировано под 1604.
В драйвере lcd1602.c объявить _1604.
Если не понравится температурный датчик LM94022, то я приложил полную библиотеку для датчиков типа DS18B20, которая должна быть работоспособна еще и с датчиками DS1820, DS1822, и автоматом их распознает. Надеюсь сможете самостоятельно подключить ее, заменив соответствующие функции, и подключить датчик по даташиту. Все функции там работоспособны и работали в этом устройстве.



а то программатор шьет 20мин

Выкинуть нафиг в помойку такой программатор. У меня СТК200+авриал32 из третьего пня при 700 мгц :super:заливает программу за 1,8 секунды.


Все что нужно для 16х4 Я сделал по комментариям...
да еше 180с ждать,4 строки поддерживает...
" Anod tension is ON "

В Ваших сообщениях для вывода на дисплей длина строки 20 элементов. Так не пойдет. Драйвер в режиме _1604 при выводе на экран текстовой строки выводит только 16 символов в строку, остальное в строке отрезается принудительно.
Сейчас функция выдержки 180 секунд закоментарена в целях отладки. Потом раскомментите.
Николай.

ut1wpr
15.04.2012, 23:15
To: Кукин Ник-Ник
Христос Воскресе, Николай!
Заканчиваю освоение STM8S. Ох и "вкусная" штучка, скажу я тебе. По возможностям Мега8 прячется, а по цене и рядом не стояла... :) Прелесть!
Потом покажу пару примерчиков. Работаю в среде ИАРа - портирование старых проектов на уровне переписывания дефайнов :) Чем и удобен ИАР. Что STM8, что STM32, что AVR... Среда одна, переучиваться не надо...
Очень понравились камушки...

shemmer
16.04.2012, 08:55
А кто скажет мне, как обстоят дела с помехозащищенностью блока с микроконтроллером в УМ ?
Какие особые меры нужны ? Отдельный экран ?
Сам пишу на AVR, PIC24, PIC32 Но есть отрицательный опыт применения мк в радио ( У мк съезжали мозги от наводок)

ua3moy
16.04.2012, 11:19
Выкинуть нафиг в помойку такой программатор. У меня СТК200+авриал32 из третьего пня при 700 мгц :super:заливает программу за 1,8 секунды.


В Ваших сообщениях для вывода на дисплей длина строки 20 элементов. Так не пойдет. Драйвер в режиме _1604 при выводе на экран текстовой строки выводит только 16 символов в строку, остальное в строке отрезается принудительно.
Сейчас функция выдержки 180 секунд закоментарена в целях отладки. Потом раскомментите.
Николай.[/QUOTE]
Строку я тоже поправил ,в ранее выложенной программе где то ошибка была.
А программатор я сделаю ft232 + stk200,пока руки не доходят,по этому приходиться программить этим.
Большое спасибо за исходник .
Николай Николаевич а чем вы компилировали этот исходник?
WINavr?или cvavreval?

ua3moy
16.04.2012, 15:35
Николай Николаевич в файле swrmetr1604.c ссылка на
#include "lcd1602.c"
Данного файла в архиве нет.
Включаю в проект редактированный под 1604 файл lcd1602.c из старого исходника компилятор пишет
lcd1602.c:149: error: conflicting types for '_delay_us'
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:79: error: previous declaration of '_delay_us' was here
lcd1602.c:160: error: conflicting types for '_delay_ms'
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:111: error: previous definition of '_delay_ms' was here
ругается на void _delay_ms(unsigned char time_ms)
компилирую winavr 2.0.8

Кукин Николай Николаевич
16.04.2012, 17:16
Виктор Ник привет воскресе!
На STM8 пока не заглядываюсь, надо еще с аврами освоиться.

Если у STM8 есть прескайлеры со скоростью пиков, то буду смотреть в ту сторону. Цена у них конечно очень привлекательная, а тот объем, что позволяют фриварные компиляторы еще надо суметь написАть.



shemmer (http://www.cqham.ru/forum/member.php?u=11522)

По большому счету, если параллельно обмотке реле прицепить диод, гасящий индуктивные токи, то такая штука тоже может срабатывать при хорошей наводке. Микропроцессоры давно везде используются, надо только правильно подходить к решению вопроса и все будет нормально. В свое время на телеграфном ключе на микросхемах вовсю пылала неонка, а он работал не обращая внимание на ВЧ поле, хотя был не экранирован, просто в схеме все было приведено к одному потенциалу. Можно сделать все.



#include "lcd1602.c"
Данного файла в архиве нет.
Включаю в проект редактированный под 1604 файл lcd1602.c из старого исходника компилятор пишет
lcd1602.c:149: error: conflicting types for '_delay_us'
c:/winavr-20100110/lib/gcc/../../avr/include/util/delay.h:79: error: previous declaration of '_delay_us' was here


ua3moy (http://www.cqham.ru/forum/member.php?u=16876)

Старые файлы lcd1602.с и h остаются без изменений, поэтому их заново и не прикладывал.

На настоящий момент я пользую winavr20100110, так что мы “одной крови”. За последние 3 года там принципиально ничего нового не добавилось.

В свое время не знал, как пользоваться ключами оптимизации компилятора и включил выдранныю из библиотеки <util/delay.h> эти функции задержки на заданное количество микросекунд и миллисекунд. Они компилируется по-разному в зависимости от тактовой частоты, которую надо задавать в параметрах компиляции.

Управление дисплеем чувствительно к величине задержек, их надо выдерживать не меньше оговоренных в даташите. Указав ссылку на эту библиотеку, получается довольно точно выдержать все требуемые задержки в зависимости от тактовой частоты процика. При изменении частоты процика в сторону увеличения нужно перекомпиливать с указанием новой частоты, иначе все задержки будут укорочены и управление дисплеем съедет напрочь. При уменьшении частоты против частоты компиляции все задержки удлиняются, что не страшно, дисплей работает, но работа дисплея занимает больше времени относительно других участков программы.

Чтобы убрать эти сообщения компилятора, указывающее на повторное определение функций, нужно закоментарить в файле lcd1602.с дефайн //#define DELAY

После этого ошибка уйдет. Или после подключения библиотеки
#include <util/delay.h>
можно просто тупо удалить из текста драйвера дисплея функции

void _delay_us(unsigned short time_us) ,void _delay_ms(unsigned char time_ms), т.к. это стандартные функции винавра, и все нормализуется.

Cvavr я попробовал когда начал заниматься контроллерами, он меня не воодушевил, тем более, что имел ограничения по размеру генерируемого кода и я пошел путем освоения freeware winavr gcc. Cvavr хорош тем, что там есть встроенные функции обращения к дисплею, 8 сегментным индикаторам, микросхемам ЕЕПРОМ т.п. все эти функции дают достаточно избыточный код, и помогают очень быстро забить всю память процика, что на мой взгляд не есть хорошо. Поэтому я стараюсь как можно меньше пользовать стандартные функции, если они дают избыточный для конкретной программы код. Взамен написать свое, которое обеспечивает пусть меньший функционал по сравнению со функцией, имеющейся в диалекте языка, но зато имеющий более компактный код.

В качестве редактора я использую аврстудию с подключенным GCC. Достаточно удобно, всегда можно прочитать весь хелп компилятора не выходя из оболочки, скопировать оттуда нужные фразы и вставить в текст программы.

Я уже привык к винавру, у него имеется море ключей оптимизации, которые позволяют так вывернуть исходный текст программы, что его потом очень тяжело разбирать в листинге, зато получается компактно практически так же как и на знаменитом IAR C.

Для облегчения отладки, первую компиляцию делаю с использованием стандартного маке файла, который формирует студия при запуске компилятора. После отладки уже подгружаю внешний маке файл, в котором указаны ключи на максимальную оптимизацию. В результате из текста программы выкидывается все лишнее, функции переставляются местами и вкладываются друг в друга автоматом, если функция использована один раз, а написана для наглядности. Код “съеживается” иногда почти на целый килобайт против компиляции с использованием стандартного маке файла авртудии в режиме -Os (ключ максимальной оптимизации).

Николай.

ua3moy
18.04.2012, 16:31
Еще раз спасибо Николай Николаевич за исходник.
Расскомментил приветствие ,вроде все работает ,досканально не проверял ,температура правда подглюкивает надо нагрузку датчику
килоом 10 подвесить и все будет в норме.
Поигрался оптимизацией да конечно результат приличный разница мин и макс в данном исходнике 10кб.

rv3mi
29.10.2012, 13:49
Есть ли у кого опыт реализации описывамого блока в законченной конструкции усилителя?
Поделитесь впечатлениями, фотографиями PSE :)

rv3mi
30.10.2012, 11:09
Друзья, неужели никто не собрал блок индикации и управления и не встроил его в свой усилитель?????????
Ну не может такого быть! :)

RV3MP
30.10.2012, 11:46
Леша,я делал только блок индикации(на Атмеге8).Работает.

rv3mi
30.10.2012, 12:19
На столе у UA3MOY тоже работает.
Мне интересно кто ЭТО вставил в усилитель и работает на ЭТОМ.
В частности, меня давно интересует вопрос "градусника", который показывает в какую сторону крутить конденсаторы УМ.

ua4сdt
30.10.2012, 12:54
В частности, меня давно интересует вопрос "градусника", который показывает в какую сторону крутить конденсаторы УМ.
Алексей, у меня дело пока до реализации не дошло, пока всё забросил. Ремонт, будь он не ладен!
Но проблема "градусника" проста в решении. Как уже писали ранее и не один раз, - фазовый детектор (сравнивать по фазе сигналы на сетке и аноде) выдаёт "+", "0", "-" . Сигнал подаёте на "градусник" со средней точкой или просто на стрелочную головку мка-р со средней точкой. Это про то, куда крутить "горячий" кондёр, а холодный, - по максимуму выхода.
Я остановился на печатке ФД, печатку изготовил, но детали не набил. На симуляторе работает. ФД должен располагаться у панельки лампы и быть в экране.

rv3mi
30.10.2012, 13:02
Ждем практических результатов, пригодных для повторения.......... .........
Я поясню - начал собирать новый усилитель (на ГУ-74Б)
и не хочется заниматься "творческими изысканиями". Хочется просто брать отработанные узлы и паять-паять.........
Поэтому теория - это все конечно очень интересно, но в данном случае меня интересует практика.

P.S. так что за ФД? Схема, плата? Куда что подключать?

ua4сdt
30.10.2012, 13:55
начал собирать новый усилитель (на ГУ-74Б)
Аналогично, тоже на ГУ-74Б, собираю, если это можно назвать сборкой.
Моя задумка реализации РА обычная, т.е. ручная настройка П-контура. Индикация: правильная настройка "горячего" кондюка, индик-я тока анода и напряжения анода (один "градусник"); индик-я выходной и отражённой мощности; индик-я тока экр. сетки. Проще говоря, вид дисплея индикации как у ОМ2500. Фазовый детектор взят с АСОМ2000 (схема), схема датчика прямой и отражённой мощности с АСОМ1000.

rv3mi
30.10.2012, 14:15
Я вообще три стрелочных прибора ставлю, ну по привычке :)
но очень хочу описываемый блок встроить на этапе пиления железа, чтобы все красиво вписалось в переднюю панель.
Железки делаю неторопясь, но хочется и "электронику" параллельно сделать, чтобы все было готово к окончательной сборке.

ua4сdt
30.10.2012, 14:26
Эскиз морды моего РА с дисплеем индикации и фото в реале.
Где то уже выкладывал, но не нашёл, что бы ссылкой отослать.

rv3mi
30.10.2012, 15:04
Эскиз морды моего РА

Симпатично :)
напоминает OM-power

У меня в таком же корпусе новый http://www.cqham.ru/forum/attachment.php?attac hmentid=90924&d=1315308119
но ручек будет всего две (крутить конденсаторы). Ибо при использовании блока индикации и управления, диапазоны будут переключаться кнопками (чтобы не мучаться с переключателем диапазонов, как в предыдущей конструкции, закупил В1В много штук :) ).

ua4сdt
30.10.2012, 15:25
диапазоны будут переключаться кнопками
У меня тоже реле на П-контур и подстёжку ёмкостей, а переключатель с защёлкой, как на ПУРе в Р-140. Отпущен- обход. При желании можно сделать от трансивера переключать диапазон типа этого

rv3mi
31.10.2012, 09:29
Сегодня взял на работу плату устройства, любезно протравленную моим товарищем UA3MOY
начну сверлить, лудить, паять :)

Neymeka
31.10.2012, 09:40
Привет Алексей отличная работа Алексей Вы не подскажете где найти полностью документацию по этому индикатору за ранние благодарин

rv3mi
31.10.2012, 10:43
где найти полностью документацию по этому индикатору

В данной теме выложены рисунки платы, принципиальная схема и прошивка процика. Какая еще нужна документация?

Кукин Николай Николаевич
31.10.2012, 11:25
Сегодня взял на работу плату устройства
Алексей, GD!
Смотрю Вы заинтересовались этой уже устаревшей с моей точки зрения конструкцией, поэтому хотел сказать, что я бы сейчас в ней сделал бы по-другому.
Первое.
Для переключения диапазонов применен дешифратор 561ИД1, имеющий только 10 выходов.
Щас бы заменил на сдвиговые регистры, включенные последовательно. Получилось бы практически неограниченное количество возможных коммутаций ВКС.
Второе.
По индикатору настройки ВКС.
Это обычный компаратор, а не комбинация фазового детектора и детектора напряжения на выходе ВКС.
То есть, имеем два ПРЕДВАРИТЕЛЬНО настроенных детектора ВЧ, один измеряет напряжение на управляющей сетке , другой на аноде. Детекторы настроены на определенное соотношение напряжений, то есть дают одинаковое напряжение, когда напряжение на ВКС в N раз (например 30) больше напряжения раскачки. Эта настройка производится при настройке каскада на минимум искажений и максимуме мощности, то есть фактичски определяется максимально возможный коэффициет усиления каскада , соответствующий минимуму искажений.И после того , как это будет сделано, задача настройки ВКС будет сводиться к получению одинакового напряжения на выходе детекторов.
Конструктивно это проще, чем фазовый детектор, а результат практически одинаковый.
Разница в процесса настройки внешне будет только в том, что при фазовом детекторе СРАЗУ будет видно , куда крутить, так как он покажет, чего больше в контуре индуктивной или емкостной составляющей. А при компараторе поворот емкости не в ту сторону будет увеличивать сигнал рассогласования, что укажет оператору: нужно крутить “взад”.
Поэтому в случае использования фазового детектора для управления достаточно двух светодиодов разных цветов и шкального индикатора напряжения на выходе, которым может служить мощностная шкала КСВ метра. Горение одного из диодов свидетельствует о засилье соответствующей реактивности в контуре, а потушенные диоды свидетельствуют о настройке в резонанс.
Софтина естественно будет немного отличаться.
Третье.
Учитывая то, что все равно сундук не должен стоять на столе, на столе должен быть пульт управления , фактически дублирующий действия на передней панили УМ и дублирующий показания приборов в УМ. То есть несколько более сложная система.
Четвертое.
Все это должно иметь возможность управления либо с кмпа, либо с трансивера.
Ну и дальше всякий сервис типа контроля температуры, задржки включения и т.п.
Система индикации совсем не обязательно должна быть цифровой. Она должна быть информативной, удобной
Вот что-то в таком роде. При реализация всех этих идей конструкция будет немного другой.
Николай

rv3mi
31.10.2012, 11:56
Здравствуйте, Николай!
Спасибо за Ваш комментарий и за высказанные мысли.
У меня сейчас есть ACOM 2000A, поэтому вопрос внешних пультов, индикации и пр. не стоит :)
Но так как творческий зуд присутствует (ну вот хочется пилить, строгать, паять), а делать просто очередную железку со стрелочными приборами уже не хочется, решил внедрить в свой будущий усилитель Вашу схемку.
Пусть это будет не так, как Вам это видится на данном этапе, но это лучше чем ничего :)
Если разработаете новое устройство, то у меня еще в запасе есть корпуса и кое-какие лампы, так что будет чем заняться и в будущем :)

Одним словом, спасибо Вам за разработку! Попробуем ее воплотить в реальной конструкции УМ.

Neymeka
02.11.2012, 11:18
Кто может подскажет что за SMD детали и их номиналы стоят на печатной плате на схеме я их не нашел может плохо искал за ранние спасибо

Neymeka
02.11.2012, 14:33
Кто может подскажет что за SMD детали и их номиналы стоят на печатной плате на схеме я их не нашел может плохо искал за ранние спасибо
RV3MI Алексей может вы по можите в этом вопросе

rv3mi
02.11.2012, 14:46
RV3MI Алексей может вы по можите в этом вопросе

Конечно!

Смотрите на схему, видите деталь, потом смотрите на плату - где деталь стоит. И так по каждой.
Станет ясно - какие из деталей выводные, а какие SMD

Например совершенно ясно, что С14, С15 - планарные, впрочем как и R20, R21
а например L3 - с выводами.

Ну и т.д.

Neymeka
02.11.2012, 16:01
Конечно!

Смотрите на схему, видите деталь, потом смотрите на плату - где деталь стоит. И так по каждой.
Станет ясно - какие из деталей выводные, а какие SMD

Например совершенно ясно, что С14, С15 - планарные, впрочем как и R20, R21
а например L3 - с выводами.

Ну и т.д.
Спасибо Алексей теперь понял и разобрался сегодня тоже вытравил п. плату получилось не много по хуже чем у вас но пойдет

Кукин Николай Николаевич
02.11.2012, 17:07
Кто может подскажет что за SMD детали и их номиналы стоят на печатной плате на схеме я их не нашел
Neymeka,
(http://www.cqham.ru/forum/member.php?u=11967) На печатке я не показал смд конденсаторы.

Особенно это касается входов АЦП микроконтроллера.
Для уменьшения возможностей наводок на входы с 30 по 40 ногу есть площадки под смд кондеры. Величина их порядка 10-100 нф.

Кроме фильтрации они еще имеют одну важную функцию, позволяющую правильно работать АЦП.
Дело в том, что принцип работы АЦП практически всех контроллеров основан на подсчете времени разряда эталонной емкости, имеющейся в конструкции контроллера.
В АВРах величина этой емкости насколько помнит мой склероз около 14 пф.
Она заряжается сначала входным током от измеряемого источника за очень короткое время.
Чтобы емкость успела зарядиться полностью, разработчики контроллеров ограничили максимальное выходное сопротивление измеряемого источника величиной 10 ком.То есть они ограничили постоянную времени зарядной цепочки эталонного конденсатора произведением 14 пф*10ком.

Так как во входных цепях могут стоять резисторы, значительно превышающие эту величину, я просто поставил керамические емкости 10-100нф непосредственно на входы АЦП.
Таким образом, зарядный ток АЦП будет течь с этих емкостей,имеющих минимальную индуктивность выводов, и требования разработчиков соблюдены с запасом, а величины резисторов во входных цепях могут иметь уже значительно большие величины, чем 10 ком, так как заряд этих внешних емкостей на входах АЦП происходит за значительно больший промежуток времени, который в основном определяется общим циклом работы устройства, и составляет порядка 1/30-1/40 сек.
Николай.

rv3mi
03.11.2012, 11:23
Николай, здравствуйте!
У меня нет опыта работы с ЖКИ и прочими индикаторами такого плана, скажите - вот такой индикатор можно применить в Вашей схеме http://www.winstar.com.tw/products_detail_ov.p hp?lang=ru&ProID=299 ??

Хочется иметь зеленые символы на черном фоне - уж очень симпатично :)

Кукин Николай Николаевич
04.11.2012, 19:51
У меня нет опыта работы с ЖКИ и прочими индикаторами такого плана
Алексей, ge!
У меня тоже нет опыта с этим индикатором. Из того, что удалось прочитать про него, он по основным командам полностью совместим с тем, для которого я писал программу.
Но есть некоторые но.
У него несколько другая инициализация, нужно будет подправить текст драйвера экрана.
Читал сообщения, что эти индикаторы шумят сильней, поэтому надо обратить внимание на усиленную развязку индикатора по питанию, кроме того, возможно придется поменять алгоритм работы АЦП, чтобы свести помехи к минимуму.
Кроме того, для ширины экрана 20 знакомест надо перекомпилировать программу. Там же другая организация памяти по строкам у индикатора.
Кстати, сколько коровьих лепешек на плате индикатора? В описании ведется речь о двух строчном режиме всего. В 4 строчных обычно ставили уже 2 контроллера, так как не хватало памяти . Не нашел описание организации памяти на 4 строки по 20 символов.
В общем, в любом варианте править программу придется. Думаю за несколько заходов можно будет получить результат.

rv3mi
04.11.2012, 20:35
Здравствуйте, Николай!

У нас ни в одном магазине не берутся привезти на заказ такой индикатор.... вот думаю, может быть не заморачиваться, а ставить обычный ЖКИ (20х4)?
Я думаю вот этот подойдет и купить у нас его можно http://www.chipdip.ru/product/wh2004a-ygh-ct.aspx

Кукин Николай Николаевич
04.11.2012, 22:54
Ну, Алексей при применении таких индикаторов уже вообще ничего не надо делать, прошивка такая есть.
Правда конские цены чипдипа меня всегда убивали.Чуть меньший индикатор WH2004D стоит в районе 500руб.
Если будете применять цифровой датчик температуры что-то типа DS16B20, можно перекомпилить под него. Уже это делал, правда под немного другую конфигурацию блока.
Есть еще одна мысль как к этой плате без изменения разводки прикрутить два двухстрочных индикатора вместо четырехстрочного, правда их лучше делать одинаковыми для упрощения.
Их поставить на другую плату и туда всю дополнительную рассыпуху налепить. Будет рублей на 500-600 в сумме.

Neymeka
06.11.2012, 19:49
Кукин Николай Николаевич, подскажите пожалуйста вместо ATMega16A-16PU подойдут ATMega16A- AU или ATMega16A-PU

rv3mi
07.11.2012, 10:29
Немного порукодельничал :)
хватит на сегодня

P.S. попутно вопрос - надо ли ставить стабилитрон на 39-ю ногу процика, катодом на землю (как на монтажке)?

rv3mi
07.11.2012, 13:51
и еще - по схеме, диапазоны переключаются на 16, 17 ногах, а на плате - 17, 18, а 16 нога свободная

Neymeka
07.11.2012, 14:36
Кукин Николай Николаевич, подскажите пожалуйста вместо ATMega16A-16PU подойдут ATMega16A- AU или ATMega16A-PU
Может кто подскажет или не кто не знает?

ua6bqn
07.11.2012, 14:49
rv3mi, посмотрите внимательно, по схеме переключение диапазонов 17 и 18 ножка, 16 накал

rv3mi
07.11.2012, 15:02
Может кто подскажет или не кто не знает?

Если плата под DIP корпус, то ATMega16-16PU (ATMega16A-PU).
ATMega16A-AU это TQFP корпус.

Добавлено через 8 минут(ы):


rv3mi, посмотрите внимательно, по схеме переключение диапазонов 17 и 18 ножка, 16 накал

Хо-хоооо
а у меня схема старая видать. Сейчас распечатал новую, там действительно немного по другому. TNX!
(а что за выход "Nakal"?) ну оно по названию вроде понятно, но правильно ли я понимаю, что на этом выводе появляется единица при включении блока (на плате 16 нога пустая - никаких дорожек/дырочек)?

ua6bqn
07.11.2012, 15:06
rv3mi,не знаю, я запустил блок в транзисторном ум

Neymeka
07.11.2012, 15:09
Алексей спасибо, смотрю скоро запустишь

rv3mi
07.11.2012, 15:13
rv3mi,не знаю, я запустил блок в транзисторном ум

Понятно.
А где же фото? ;)

Кукин Николай Николаевич
07.11.2012, 15:54
Всем GE!
По порядку поступления вопросов.
Neymeka
Пойдет любая мега16, так как тактирование принято от внутреннего RC генератора 8 мгц и граничная частота 16 мгц, указанная в маркировке явно выше.
Только придется для меги в TQFP (которые AU)самому разводить плату с учетом того, что цоколевка по номерам выводов не совпадает с дип корпусом. Нужно будет смотреть цоколевку корпуса по названиям ног контроллера. Я было начинал , да плюнул ввиду никомуненужности. Посмотри недоделанный вариант этот тоже есть в том файле вместе с печаткой под дип корпус.

RV3MI
Алексей, по порядку вопросов.
“надо ли ставить стабилитрон на 39-ю ногу процика, катодом на землю (как на монтажке)? “

Стабилитрон на 39 ноге на печатке перепутан выводами конечно.
Там ведь еще какая закавыка, если ток измеряется на шунте, который соединяет выход выпрямителя на землю, то придется дополнительно ставить инвертирующий каскад на операционнике, так как на входе будет отрицательное напряжение.

Выход “Накал” (16 нога). Да , на нем появляется единица для управлением включения питания накала, при выключении РА появляется уровень 0 и три минуты дует вентилятор. Если в течении 10 сек после нажатия кнопки “выкл” нажать кнопку “вкл”, то РА заведется снова. Все это на дисплее отражается. Эта примочка появилась по ходу дела, поэтому на плате нет разводки.

“и еще - по схеме, диапазоны переключаются на 16, 17 ногах, а на плате - 17, 18, а 16 нога свободная “
Скачал то, что выложил здесь в теме, там вроде все нормально.

Обращаю внимание, у 561ИД1 двумя крестиками показаны откушенные ноги. При односторонней разводке пришлось так поступить, чтобы пропустить пару проводков.
Тут Алексей, думаю можно сделать таким образом. Когда у Вас будет готовая плата, всю прошивку можно довести до нужных хотелок в пределах разумного.
Последний раз спрашиваю :evil:, датчик температуры будет цифровой? Чтобы сразу и запаять по-человечески.

rv3mi
07.11.2012, 16:08
Стабилитрон на 39 ноге на печатке перепутан выводами конечно.
Там ведь еще какая закавыка, если ток измеряется на шунте, который соединяет выход выпрямителя на землю, то придется дополнительно ставить инвертирующий каскад на операционнике, так как на входе будет отрицательное напряжение.
ОК, стабилитрон не ставим совсем.
С измерением/инвертированием по ходу разберемся.


Выход “Накал” (16 нога). Да , на нем появляется единица для управлением включения питания накала, при выключении РА появляется уровень 0 и три минуты дует вентилятор. Если в течении 10 сек после нажатия кнопки “выкл” нажать кнопку “вкл”, то РА заведется снова. Все это на дисплее отражается. Эта примочка появилась по ходу дела, поэтому на плате нет разводки.

Понял! Очень полезная доработка (вчера размышлял, как накал питать, с учетом автоматизации, а оно тут уже реализовано)



“и еще - по схеме, диапазоны переключаются на 16, 17 ногах, а на плате - 17, 18, а 16 нога свободная “
Скачал то, что выложил здесь в теме, там вроде все нормально.

Я начал делать по схеме, которую вытащил из архива UA3MOY - видимо ранняя версия. То что выложено в данной теме сейчас, действительно "все нормально" :)



Обращаю внимание, у 561ИД1 двумя крестиками показаны откушенные ноги. При односторонней разводке пришлось так поступить, чтобы пропустить пару проводков.

Эт мы уже поняли :) 4 и 5 ноги откусили...




Последний раз спрашиваю :evil:, датчик температуры будет цифровой? Чтобы сразу и запаять по-человечески.

Датчик LM94022 как на схеме.
Поехал в магазин - датчик и индикатор надо купить. Остальное вроде все спаял :)

ut1wpr
07.11.2012, 16:42
Удалено

rv3mi
08.11.2012, 09:37
Кукин Николай Николаевич,
начинаю первые опыты в программировании ATMega :)
Николай, можно выложить исходник прошивки для "классического" варианта (я так понял, по пожеланиям коллег, вариантов прошивки несколько)? У меня Мега16, датчик температуры LM94022, дисплей 20х4.

rv3mi
09.11.2012, 11:01
Сегодня игрались с программированием :)

Хорошо когда есть товарищи, которые в этом соображают, спасибо им!
Эти доблестные рыцари - мой коллега по работе Алексей и еще Илья (RU3NIC)

Их совместными усилиями мы скомпилировали программу, и зашили это в МК.

Жаль что нет индикатора пока, интересно посмотреть что там нарисует, но придется немного подождать когда заказ привезут.

(а пока играемся в Протеусе.... интереснооооооооо :) )

Кукин Николай Николаевич
09.11.2012, 14:44
Сегодня игрались с программированием :)

Алексей, GD!
Начал искать исходники и обнаружил, что вариант на 2004 индикатор надо допиливать напильником.
Поэтому полностью пересобрал все заново только под Ваш вариант.

Работоспособность не могу проверить, Вам придется несколько раз попрошивать.

Прошивать надо также ЕЕПРОМ.
Фьюзы выставить по исходнику.
Отличие этой прошивки от предыдущих.

Для настройки каналов АЦП введен тестовый режим.

Чтобы попасть в него нужно до подачи напряжения питания нажать кнопку 3 и, удерживая ее, включить питание. После этого кнопку надо отпустить за промежуток не более пары секунд.

После появления надписи TESTING MODE и разогрева накала и подачи всех напряжений на лампу, появится экран , на котором будут выводиться напряжения АЦП в единицах от 0 до 1023.

Верхняя строка – прямая и обратка КСВ метра,

вторая строка ВЧ напряжение на управляющей сетке и аноде,

третья строка анодное напряжение и ток.

Четвертая строка – диапазон.

Напряжения с датчиков КСВ метра настраивать примерно на 700 единиц,

напряжение и ток – пропорционально коэффициентам, прописанным в ЕЕПРОМЕ.

В исходнике все раскрашено.

Напряжения компаратора при точно настроенном контуре при максимуме неискаженной мощи установить одинаковыми примерно 950-1000 единиц.

При нажатии на кнопку 3 в течении больше 3 сек аппарат начнет выключаться.

Снятие напряжение питания с питания устройства я не придумывал, оно должно будет вручную.

Повторнае подача питалова без нажатой кнопки 3 дает обычный режим включения.

Что тут еще можно прикрутить, чего пока не стал делать.

Звук по КСВ=3 не работает. Не добавлял специально. Только появление единицы на выводе светодиода.

Несколько изменить работу АЦП, ускоряющую взятие отсчета, накопление всех результатов измерений с осреднением для уменьшения болтанки цифровой индикации.

Добавить пикалку , индицирующую выключение аппарата. Все, мысль кончилась.
Чёто не получается прикрепить самое интересное.

rv3mi
09.11.2012, 14:48
А где же файл? :(