Например TDA7294

РадиоКот >Конкурсы >Поздравь Кота по-человечески 2017! >

Е24-омметр

Автор: AlexVi
Опубликовано 20.09.2017.
Создано при помощи КотоРед.

     

      Здравствуй, РадиоКот! С днюхой! Здравствуйте все!

     Как-то мне подарили замечательную беспаечную плату, и это стало большим шагом в моем освоении мира электроники. Не надо теперь паять макеты «на весу», на проткнутых шилом картонках и замызганных перегретых монтажных платках. Собрать какую-то схемку стало быстрее в разы. Разобрать – тоже.

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

     Вот если бы прибор сам определял диапазон и показывал значение из ряда Е24! То есть те значения, что написаны у меня на коробочках, в которых разложены резисторы! Тогда только - измеряй и клади!

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

     Так как все уже придумано до нас, посмотрел в Интернете что-нибудь похожее. Из наиболее подходящего нашел здесь же на РадиоКоте простой измеритель CLR [1] и собранный на его основе сортировщик резисторов [2]. Второе устройство хоть и в тему, но показалось мне каким-то монстрообразным и предназначенным для раскладки резисторов, ну, наверное, в промышленных масштабах с привлечением дешевой китайской рабочей силы или других гастарбайтеров :) Мне же надо было простое устройство для десятка - другого резисторов от случая к случаю. И я решил упростить «монстра», выкинув оттуда все мне ненужное, доработав программу, и использовать при этом достоинства оригинального измерителя CLR и простой контроллер ATtiny2313.

      Целью работы было: начать осваивать программирование для микроконтроллеров и сделать свое первое небесполезное устройство на МК - не копипаст и не моргалку светодиодом. То, что у меня получилось, я и предлагаю вашему вниманию.

 

                                                             Общий вид устройства

 

     Устройство предназначено для раскладки резисторов по номиналам и представляет собой цифровой омметр с автоматическим выбором диапазона измерения, отображающий сопротивление тестируемого резистора на трехразрядном LED-индикаторе в виде, приведенном к стандартному ряду Е24. Диапазон измерений – от единиц ом до десятков мегаом. Прибор можно переключить и в режим обычного омметра. Размеры - 85х55х18мм.

 

                     Схема Е24-омметра

 

    Схема состоит из генератора на триггере Шмитта (U3.1) с частотозадающей цепью (R2+Rx)C6, микроконтроллера U4, тактируемого от кварцевого резонатора, трехразрядного светодиодного индикатора HL1, отдельных светодиодов D3, D4, D5 для индикации диапазонов измерения (Ом, кОм, Мом) и двух стабилизаторов напряжения, один из которых питает контроллер с индикатором (U2), а второй (U1) – микросхему триггера Шмитта. Отдельное питание генератора от хорошего стабилизатора должно повысить точность измерений, хотя здесь, возможно, это избыточно. Как вариант, можно не запаивать U1 и соединить на плате 14 вывод триггера U3 с выходом стабилизатора U2(pin 3).

    В устройстве предусмотрен также переключатель S2 с фиксацией для выбора режима работы: Е24-омметра или обычного омметра. Включенный режим Е24 индицируется светодиодом D2. Кнопкой без фиксации S1 производится установка «нуля» перед началом измерений. Применен LED-индикатор с общим анодом. Индикация динамическая, аноды управляются через p-n-p ключи. Схема нарисована для индикатора CA56-11 с раздельными выводами сегментов для каждого знакоместа, но можно использовать любой другой с соединенными одноименными сегментами, это упростит разводку платы. Просто у меня был только такой. Размерность измеренного значения индицируется светодиодами разного цвета (D3, D4, D5), и подписана на корпусе. Для питания использован внешний источник 12В (сетевой адаптер от какого-то модема).

     Если кратко, то принцип измерения сопротивления основан на фиксации относительного изменения частоты измерительного генератора при подключении неизвестного Rx. С помощью калибровочных констант рассчитывается его значение. Детальное описание способа измерения и расчета можно найти по приведенной выше ссылке [1] и в соответствующей ветке форума [3]. Полученное значение сопротивления сравнивается с таблицей для ряда Е24 и при попадании в какой-то номинал ряда, этот номинал отображается на индикаторе. Метод может обеспечить и большую точность, чем 3 разряда, но для раскладки резисторов по Е24 это не нужно.

     Устройство содержит только широко распространенные недорогие детали. Я применил индикаторы с общим анодом, можно взять и с общим катодом, изменив таблицу формирования знаков и управления анодами в исходном тексте программы. Для ОК придется также изменить проводимость ключей Q1…Q4, подключив их эмиттеры к общему проводу. Для индикации размерности взяты обычные 3-мм светодиоды зеленого (Ом), красного (кОм) и желтого (Мом) цветов.

     

      Печатная плата разрабатывалась под те детали, что у меня были: часть из них - выводные, часть – smd, снятые с разных плат. ATtiny2313 и индикатор пришлось купить. Важно, чтобы элементы времязадающей цепочки С6 и R2 были возможно стабильнее. В первоисточниках рекомендуют взять конденсаторы К73-9, К73-16, К73-17 (полиэтилентерефталатные) или слюдяные. Емкость его может отличаться от указанной на схеме и быть в диапазоне 5…10nF. Резистор R2 тоже надо взять из числа стабильных (с малым допуском по отклонению) в диапазоне величин 1…3кОм. С учетом этого я разводил плату под выводные С6 и R2. Частота кварцевого резонатора может быть в диапазоне 6…10Мгц. Все эти отклонения от указанных на схеме номиналов будут позже учтены калибровкой. 

     Плата получилась двухсторонняя, и делал я такую первый раз. Технология народная – ЛУТ. Оказалось, ничего сложного в двухсторонней печати нет. Делал за один прием, совмещая распечатки на просвет в конверт. Не сразу удалось добиться совпадения отверстий обеих сторон. Я рисую платки в DipTrace, а эта программа не печатает обе стороны на одном листе. Поэтому пришлось печатать на разных. Виновником брака оказался принтер, а точнее, неравномерная протяжка бумаги с ручного лотка. После перехода на основной лоток и с предварительным прогревом печки принтера все стало хорошо. 

     «Земли» генератора и остальной схемы разведены отдельно для соединения их у разъема питания в целях уменьшения возможных помех от цифровой части устройства. Надо сказать, что такая мера предосторожности оказалась излишней, и показания оставались стабильными при произвольном соединении этих «земляных» полигонов. Одно соединение («земля» разъема для программирования) не развелось, пришлось выполнить его проводком.

   

            Фото платы устройства сверху...                      ...и снизу

 

    Плата подгонялась под корпус от какого-то мелкого устройства, купленного на барахолке за 20р. Все отлично влезло. Правда, переключатель S2 оказался чуть высоковат, и в плате пришлось сделать для него квадратное отверстие. S2 вставлен в него, выводы отогнуты снизу платы и распаяны на площадки. Входные клеммы сделаны на парном винтовом зажиме. К нему можно подключать как щупы, так и что-нибудь поудобнее. К сожалению, пока я так и не нашел какого-нибудь практичного способа нанесения надписей на пластиковый корпус, поэтому надписи на корпусе сделаны позорно. Конечно, это временно:). Плата разводилась под стабилизатор 78М05, однако, когда дело дошло до пайки, его в наличии не оказалось. Так бывает, и пришлось экспромтом заменить его на 78L05, которого вполне достаточно по току. На плате заметны и пара проводков – небольшая ошибка в разводке. В прилагаемых файлах она исправлена.

 

     Перед использованием омметр надо откалибровать. Процесс калибровки детально разбирался в [1] и [3], но думаю, что основные моменты можно повторить и здесь. В связи с недостатком свободной памяти программ калибровку измерителя придется сделать вручную. Для калибровки понадобится один резистор с точно известным номиналом. Номинал некритичен, например, несколько кОм.

     Понятно, что при замкнутом входе (Rx=0) откалиброванный омметр должен показывать «0», а при присоединении «образцового» точного резистора, например, 5,67кОм - точно 5,67кОм. В программе за это отвечают 2 четырехбайтовые константы E_CONST_R и COEFF_R (смещение и масштаб), которые хранятся в EEPROM. Изначально там вписаны какие-то «стартовые» значения, не соответствующие конкретным примененным номиналам С и R. Мы увидим эти константы, открыв текст программы или считав программатором содержимое EEPROM. При калибровке нужно получить «правильные» константы и вписать их вместо первоначальных в EEPROM. Тогда при включении прибора всегда будет загружаться «правильная» шкала.

     Итак, сама калибровка. Устройство надо включить в режиме обычного омметра, дать установиться тепловому режиму - погреть минут пять-десять.

  1. Ставим на вход перемычку (Rx=0). Индикатор отобразит какое-то значение.
  2. Нажимаем кнопку «установка нуля» и держим до момента обнуления значения на индикаторе. При этом в EEPROM запишется правильная E_CONST_R, и шкала прибора теперь будет проходить через ноль.
  3. Далее надо установить масштаб шкалы (COEFF_R). Подключим наш «образцовый» резистор 5,67кОм ко входу. Индикатор отобразит какое-то значение, например, 2,34кОм. Это значит, что масштабирующий коэффициент, изначально записанный в EEPROM (пусть, например, там 01DB9A39), необходимо увеличить в 5,67/2,34= 2,4230769230769230769230769230769 раза.
  4. Пользуясь калькулятором Windows, текущий COEFF_R переводим в десятичный вид, умножаем на 2,42307… и переводим результат снова в шестнадцатиричный вид (проверьте: 01DB9A39 * 2,42307…. = 04806BD8). Заменяем в исходнике значение COEFF_R на только что полученное.
  5. Считываем программатором значение E_CONST_R из EEPROM контроллера с адреса $54 и тоже заменяем им старое значение в исходнике.
  6. Компилируем исходник с новыми константами. Программируем контроллер (*.hex и *.eep).
  7. Снова включаем. Проверяем «ноль» на замкнутом входе и 5,67кОм на присоединенном «образцовом» резисторе. Может, быть, придется повторить всю процедуру еще раз. Мне хватило всего 2-х раз.

Можно обойтись без редактирования исходника и его перекомпиляции, если средствами программатора отредактировать константы в EEPROM по адресам $50 (COEFF_R) и $54 (E_CONST_R) и прошить их заново. 

     Перед началом измерений надо замкнуть вход и проверить нулевое показание на индикаторе. Если это не так, установить ноль нажатием кнопки «>0<». Режим работы можно переключать «на ходу». При этом кроме включения светодиода режима омметр на некоторое время отобразит «Е24». Если на вход ничего не подключено, будет выведена индикация «---».

 

На следующей паре фотографий показано измерение резистора в режиме обычного омметра и в режиме Е24: 

   

Измеренное сопротивление резистора...                     ... и приведенное к ряду Е24

 

     Не буду много рассказывать, сколько я разбирался с чужими программами и листал справочник по ассемблерным командам. Иногда я думал, что я совсем безнадежен или выбрал слишком сложный путь. Но в итоге из леса я все-таки вышел. И хоть доработки были не слишком объемны, полному чайнику на это понадобилось нехилое время. Но все оказалось не так страшно. Очень пригодились вовремя «подсунутые» старшими товарищами хорошие книжки [4,5,6]. Эти книги также можно легко найти и скачать в Интернете. Также помогли достаточно подробные комментарии в программах, использованных в качестве прототипа, спасибо авторам.

     Теперь надо, наверное, попробовать и Си. Друзья, что в теме, говорят, что если я сумел написать (тем более переделать чужую) программу на ассемблере, то с языком Си у меня вообще проблем не будет. Надеюсь. А еще они велели мне ардуину в руки не брать, даже не приближаться. Интересно, почему?

 

     В завершение немного о точности. Несмотря на то, что прибор скорее индикатор, чем измеритель, точность его хорошая. Я калибровал его на единицах кОм, и вот что он показал на десятках и сотнях кОм в сравнении с неплохим соседским мультиметром:

 

Резистор 500кОм измерен омметром...             ... и мультиметром

 

  

  Резистор 91кОм измерен омметром...            ... мультиметром...                               ... и омметром Е24

 

     Очень даже хорошо. Так же хорошо дело обстоит и на десятках Ом и Мом. В любом случае, можно быть совершенно уверенным, что к значению Е24 неизвестный резистор будет отнесен верно при любом его номинале в пределах заявленного диапазона.

 

     В архиве можно найти все материалы для сборки Е24-омметра: схема и печатная плата (в jpg и DipTrace), а также скрин фьюзов и проект в AVRStudio. Исходник программы содержит теперь еще больше комментариев :) 

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

 

Ссылки и литература:

  1. CLR2313 - измеритель ёмкостей, индуктивностей и сопротивлений. (http://radiokot.ru/circuit/digital/measure/38/).
  2. Сортировщик резисторов (http://radiokot.ru/konkursCatDay2014/46/).
  3. Ссылка на форум по измерителю CLR (http://www.radiokot.ru/forum/viewtopic.php?t=35654).
  4. Евстифеев А.В. Микроконтроллеры AVR семейства Tiny.
  5. Белов А.В. Самоучитель по микропроцессорной технике.
  6. Ревич Ю.В. Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера.

 

 


Файлы:
Архив


Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

68 8 4
1 0 0