Реклама ⓘ
Главная » Измерения
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Управляемый генератор прямоугольных колебаний на ATtiny2313

Когда-то в [Л.1] был описан управляемый генератор прямоугольных колебаний TTL-уровня на микроконтроллере ATTiny2313. Он мог вырабатывать 31 фиксированную частоту (от 0,1 Hz до 4 MHz), имел очень простую схему и управлялся подачей двоичного кода на управляющие входы. В зависимости от логического уровня на пяти управляющих разрядах, генератор вырабатывал одну из предустановленных в его программе частот, номер которой задавался подключением этих управляющих входов к "земле" или к шине питания. Скорее всего, данная схема создавалась не как самостоятельное устройство, а как составная часть, модуль для использования в других разработках (например, в качестве задающего генератора в частотомерах, часах, елочных гирляндах и т.п.) - отсюда, видимо, и не совсем удобный способ управления - должно быть, автор схемы предположил, что частоту установят один раз, на этапе проектирования готового устройства, в состав которого будет входить его схема.

Меня же данная схема заинтересовала в качестве простенького лабораторного генератора. Конечно же, это не альтернатива серьезным приборам промышленного изготовления, но кое-где и такой "микроконтроллерный мультивибратор" пригодиться может (особенно учитывая его простоту, точность и дешевизну) - к примеру, он отлично подойдет для калибровки частотомеров и в аналогичных случаях, когда надо отъюстировать какую-нибудь шкалу; его можно использовать во время экспериментов с цифровыми схемами или выходными каскадами импульсных БП; для проверки трансформаторов и катушек зажигания (подключив их к мощному источнику тока через соответствующий транзисторный ключ), различных фильтров и т.п. Да и убеждаться в работоспособности только что собранного УНЧ безопаснее, подавая на его вход сигнал от такого вот самодельного генератора, а не с любимого MP-3 плеера или "планшета" - в случае ошибок в монтаже (например, если на вход УНЧ просочится напряжение питания), в худшем случае будет разрушен копеечный выходной транзистор, а не дорогая "игрушка".

Но описанная схема имела ряд недостатков, затрудняющих ее использование в качестве лабораторного прибора: во-первых, это уже упомянутое неудобство управления (кнопки в данном случае оказались бы уместнее); во-вторых - отсутствие какой-либо индикации выбранного режима; в-третьих - отсутствие среди выходных частот сетевой (50 Hz), которая бывает нужна при работе с трансформаторами или сетевыми фильтрами; и в-четвертых - нерегулируемый уровень выходного напряжения (что бывает нужно при испытаниях тех же УНЧ). Поэтому, используя приведенную в [Л.1] схему как "техническое задание", я разработал новое устройство и "прошивку" к нему, отвечающие приведенным выше требованиям. Получившаяся схема представлена на рис.1.

Рис. 1 - Принципиальная схема генератора.

Как и в оригинале, это генератор, вырабатывающий прямоугольные колебания стабильной частоты с периодом 1:1 (т.е., меандр с 50%-заполнением), но количество генерируемых частот увеличено до 42. Значения большинства вырабатываемых частот отличаются от тех, что были в [Л.1]; вдобавок уменьшено количество частот менее 1 Hz, необходимость в которых возникает довольно редко. Список всех частот, генерируемых прибором, приведен в табл.1 (в конце статьи).

Основой схемы является распространенный микроконтроллер ATTiny2313, тактовая частота которого стабилизирована кварцем на 10 MHz, что обеспечивает минимальную погрешность выходного сигнала. Выходные импульсы формируются за счет деления тактовой частоты МК при помощи 16-разрядного внутреннего таймера-счетчика T1, работающего в режиме "сброс при совпадении", они аппаратно выводятся на контакт 15 микросхемы. Внутренний 8-разрядный таймер-счетчик T0, также работающий в режиме "сброс при совпадении", формирует интервалы переключения разрядов индикатора HG1, реализуя тем самым динамическую индикацию. Выходами динамической индикации являются линии PB0 и PB1 МК, они усиленны транзисторными ключами на VT1 и VT2.

Сформированный выходной сигнал с вывода 15 МК подается на усилитель тока, который собран на транзисторе VT3, включенном по схеме эмиттерного повторителя. Применение усилительного каскада позволило развязать выход МК от нагрузки и защитить его от неожиданностей (например, от КЗ или от подачи напряжения на выход устройства). Переменным резистором R12 можно регулировать уровень выходного сигнала - от нуля до практически напряжения питания. Резистор R13 ограничивает ток через транзистор на безопасном уровне (ок. 125 mA), предохраняя последний от выхода из строя при КЗ в нагрузке. Резистор R14 "подтягивает" выход к потенциалу "земли" - это необходимо, в первую очередь, для работы с цифровой логикой: известно, что отсутствие какого либо напряжения на своем входе (а при лог.0 на выводе 15 МК транзистор VT3 закрыт, и напряжение на его эмиттере отсутствует) большинство цифровых микросхем интерпретируют как лог.1. Резистор R14 "подтягивает" выход устройства к "земле" в те моменты, когда VT3 закрыт, что уверенно распознается подключенными к этому выходу цифровыми микросхемами как лог.0. Устройство имеет возможность отключать выходной сигнал кнопкой S1. В таком состоянии импульсы на выводе 15 отсутствуют, транзистор VT3 закрыт, на выходе устройства постоянно присутствует лог.0. Повторное нажатие S1 снова включает выходной сигнал. Светодиод HL1 является индикатором наличия выходных импульсов.

Устройство питается от стабилизированного источника питания напряжением 3,5-5 V. Если необходимо запитать прибор от источника с напряжением, превышающим 5 V (например, от "Кроны" или БП от игровой приставки), то в схему необходимо ввести стабилизатор с соответствующим выходным напряжением - например, интегральный, на микросхеме типа 7805, или параметрический, на стабилитроне и транзисторе. Диод VD1 защищает схему от случайной переполюсовки питания - он может быть любым, на ток не менее 150 mA (лично я для этого использую "раритетные" Д226 или Д7 из старых запасов - надо же их куда-то девать:)). Диод можно и не ставить, если конструкция разъема питания исключает переполюсовку (или если вы уверенны, что не ошибетесь при подключении питания). При желании можно также добавить и выключатель питания.

Алгоритм работы с устройством следующий: при включении питания импульсы на выводе 15 МК отсутствуют, светодиод HL1 не горит, на табло HG1 отображается номер выбранного режима. Для того чтобы на выходе прибора появились импульсы, необходимо нажать на кнопку S1, после чего загорится HL1, сигнализируя о появлении импульсов на выводе 15 МК. Повторное нажатие на S1 снова отключит выходной сигнал (т.о. S1 работает по принципу триггера). Переключать режимы работы устройства можно как при включенном, так и при выключенном кнопкой S1 выходном сигнале. Кнопка S2 увеличивает, а S3 уменьшает номер режима. Режимы переключаются по кругу - после режима №42 (5 MHz) следует режим OF (отсутствие выходного сигнала); еще одно нажатие на S2 включит режим №1 (0,5 Hz). Кнопка S3 ведет себя аналогично, только переключает в обратную сторону (№1-OF-№42). Значение выбранного режима запоминается в энергонезависимой памяти (EEPROM), поэтому при следующем включении прибора активным будет тот режим, в котором прибор работал перед выключением питания. Состояние выхода не запоминается - при каждом включении питания выходной сигнал всегда отсутствует - это сделано для защиты схемы, которая будет подключаться к генератору, от всякого рода случайностей: сначала нужно установить необходимый режим и минимальное выходное напряжение, а лишь затем включать выходной сигнал кнопкой S1.

Прошивка для МК была написана на чистом ассемблере (при помощи бесплатно распространяемой среды AVR Studio-4 от фирмы-производителя данного чипа), благодаря чему занимает в его флэш-памяти всего 602 байта. Установка fuse-ячеек в программе PonyProg приведена на рис.2. (Внимание! Если используется последовательное программирование, то не трогайте биты SPIEN и RSTDISBL - они должны быть такими же, как и у нового MK - в противном случае дальнейшее перепрограммирование МК будет недоступным! Просто, перед программированием считайте fuse-ячейки "свежего" МК (Security and Configuration Bits -> Read), и при записи новых значений оставьте биты SPIEN и RSTDISBL такими, какими они были прочитаны.)

Рис.2 - Установка Fuse-ячеек в программе PonyProg.

Резисторы, используемые в устройстве - малогабаритные, мощностью 0,125 Вт (кроме R13 - он на 0,25 Вт); их сопротивление может отличаться от указанного в довольно широких пределах. Все транзисторы устройства работают в ключевом режиме, поэтому могут быть любыми маломощными, структуры NPN - как отечественными, так и зарубежными. Важно лишь, чтобы VT3 мог уверенно работать на максимальной выходной частоте прибора (5 MHz). В качестве HG1 можно использовать любой сдвоенный семисегментный индикатор для динамической индикации с общими анодами. Если нет сдвоенного, то HG1 вполне можно собрать и на двух одинарных индикаторах, вплоть до "древних" АЛСххх - главное, чтобы общим выводом для всех сегментов был анод. Светодиод HL1 - любой, который не жалко:). Все кнопки - подпружиненные, без фиксации. Выходной разъем - типа "Азия".

Рис.3 - Устройство подключенно к осциллографу.

  Рис.4 - Внешний вид устройства.

Рис.5 - Выходной сигнал на экране реального осциллографа.

Внешний вид генератора, подключенного к осциллографу, показан на рис.3 (слева - блок питания, он на 9В (от приставки типа Dendy), но в его корпус был установлен интегральный стабилизатор типа 7805 - в итоге, на выходе 5В), а так же, на рис.4, осциллограмма выходного сигнала, снятая при помощи осциллографа С1-19Б - на рис.5. "Внутренности" прибора не фотографировал, т.к. собрал его довольно давно и посадил крышку на клей, а разбирать (т.е. ломать) корпус как-то неохота... В качестве корпуса для данного генератора была использована разветвительная коробка для открытой электропроводки, но возможны и другие варианты. Для удобства работы таблицу режимов желательно распечатать и приклеить двухсторонним скотчем к корпусу прибора (у меня она - с обратной стороны, на фото не видна). Микроконтроллер необходимо установить на панельке, чтобы его можно было легко перенести в программатор для записи "прошивки" (разъемов для внутрисхемного программирования ISP я обычно не делаю - перенос микросхемы в панельку программатора лично мне не доставляет никаких неудобств). Тип монтажа может быть любой (вплоть до SMD); я использовал классический - печатный, но рисунок платы не привожу, т.к. она получилась довольно-таки "кривой" (практически, повторяет принципиальную схему); хороший вариант - собрать все на "макетке" с дырочками (размер ~80x80 мм).

Литература:

 1. Горчук Н.В. - Генератор с цифровым управлением, ж."Радиоконструктор", 12-2009, стр.18;

 Таблица 1:

СПИСОК РЕЖИМОВ ГЕНЕРАТОРА

Частота, Гц

Частота, Гц

Частота, Гц

Частота, Гц

1

0,5

12

25

23

2 000

33

100 000

2

0,625

13

50

24

2 500

34

125 000

3

1

14

62,5

25

5 000

35

200 000

4

1,25

15

100

26

6 250

36

250 000

5

2

16

125

27

10 000

37

500 000

6

2,5

17

200

28

12 500

38

625 000

7

5

18

250

29

20 000

39

1 000 000

8

6,25

19

500

30

25 000

40

1 250 000

9

10

20

625

31

50 000

41

2 500 000

10

12,5

21

1 000

32

62 500

42

5 000 000

11

20

22

1 250

OF - выходной сигнал отсутствует

Прикрепленные файлы:

Теги:

Опубликована: 0 0
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (21) | Я собрал (0) | Подписаться

0
Публикатор #
На форуме автоматически создана тема для обсуждения статьи.
Ответить
0
пайщик #
В это устройство так и просится ЖК индикатор вместо 7-ми сегментного. Можно сразу частоту отображать, да и ноги сэкономятся.
Ответить
0

[Автор]
Матин Алексей #
Знал, что такой коммент будет! Да-да, согласен, еще как просится! Но, увы, данного девайса у меня в наличии не имелось и не имеется :( То, что просят за простенький ЖК типа 1601 в большинстве магазинов (от 275 руб. и более) - это грабеж среди бела дня! Может кто из "стрелянных" подскажет, где тот волшебный сайт, где дисплейчики 16xx можно приобрести за адекватную стоимость? Буду очень благодарен!!! К тому же, схемка-то задумывалась как простая; поставишь ЖК и получится, что он стОит дороже всех компонентов вместе взятых! Да и программной памяти у МК функции работы с 1601 кушают гораздо больше, чем 7-seg, может и не хватить - это ведь не мега8...
Ответить
0
slow monkey #
Алексей, вы в следующий раз прикрепляйте исходники к статье, тогда каждый сам сможет выбрать дисплей.
Ответить
0

[Автор]
Матин Алексей #
Да, возможно и буду прикреплять - это моя первая публикация в жизни
Ответить
0
elektroNIK #
На Aliexpess 1602 заказываю по 100 руб.
Ответить
0
BARS_ #
Как бы у китайцев этих дисплеев куча. За 1602 просят меньше 100р
Ответить
0
sergej_shaggy #
Сомневаюсь, что генератор сможет выдать 1 МГц и при этом нормально работать. При частоте кварца 10 МГц прерывания по переполнению таймера T1 будут возникать каждый десятый такт. При этом говорить о какой-то динамической индикации и опросе кнопок наверное сложновато. Что уж говорить о 5 МГЦ. Конечно, хотелось бы исходник глянуть, но его нет. Вот здесь как-раз LCD дисплей и решил бы ситуацию - один раз инфу вывел на него и дальше занимаешься только частотой и опросом кнопок.
Ответить
+1

[Автор]
Матин Алексей #
А то, что в AVR на таймер можно подавать колебания не только напрямую от кварца, а также и через внутренний предделитель (он свой для каждого таймера) - Вы это знали? Это раз. Два - AVR позволяет изменять состояние ноги 15 на противоположное при каждом совпадении счетного регистра с регистром совпадения и БЕЗ входа в обработчик прерывания, т.е., на аппаратном уровне (см. даташит или его перевод) - значит, прерывания по Т1 не требуется вовсе - таймер досчитал, произошло совпадение, нога 15 инвертировалась - "без отрыва от производства" (о том, что это происходит на аппаратном уровне, кстати, написано в статье). Если не верите - соберите устройство (хотя бы в Протеусе), и убедитесь, что оно работает как надо... А вообще, МК сейчас уже не те, что были во времена Z80 - советую почитать про AVR - да хотя бы Белова или Мортона (отличные книги для новичков!), чтобы увидеть, что возможностей у них теперь гораздо больше, чем раньше, и дергать за ногу 15 можно и без прерываний :)... Учите матчасть
З.Ы. И, кстати, вы невнимательно читали - не по ПЕРЕПОЛНЕНИЮ, а по СОВПАДЕНИЮ - это разные вещи - в регистр совпадения можно забить любое число, и тем самым регулировать частоту, с которой нога 15 будет менять свое состояние - чем чаще совпадает, тем и частота выше...
Ответить
0
sergej_shaggy #
Да верно. Про такое упустил из виду. Каюсь.
Ответить
0

[Автор]
Матин Алексей #
Принято :) Не серчайте и Вы за излишнюю резкость...
Ответить
0
Евгений #
Конечно вариант простой неплохой для своих целей. Но не все частоты можно получить так. Делить на целое число можно тут только. Чем выше частота кварца тем больше разных частот можно получить особенно вверху. Есть вариант attyny85. крохотная микросхемка. Таймер может работать на частоте до 64мгц. ТО есть возможности синтезировать частоты высокие значительно больше.. Кварц до 20мгц, потом умножитель частоты идет. Конечно ножек у него катастрофически мало всего 8.
Ответить
0
ujin #
Здравствуйте. Думаю сюда вполне неплохо встанет лад от сот телефона тип нокиа 1202 аля 3110 когда то они стоили 30 рублей сейчас подороже, сами они не сильно требовательны ни аппаратно ни программно + довольно распространены у самодельщиков, а значит есть под них программы и библиотеки которые можно переделать под свои задачи. Насчёт 1602 они предназначены для настольных телефонных аппаратов и угол обзора немного смещён от прямого(чтобы чётко увидеть циферки его надо отклонять ) это бывает иногда неудобно...у лцд от сот телефона такого нет + потребление у них очень мизерное.
Ответить
0

[Автор]
Матин Алексей #
Спасибо за совет!
Ответить
0
patrick #
1602 они предназначены для настольных телефонных аппаратов
Вы путаете с HT1611
Графический дисплей от сотика тут лишний, 1602 был бы самое то.
Ответить
0
ujin #
Да действительно с 1602 я погорячился спутав его с лсд от фирмы HOLTEK ...именно они стояли в настольных телефонах и их тоже использовали самодельщики.
В свое время, он тоже был популярен...а насчет лишнего дисп от сотика категорически не согласен...ну это не значит что это есть истина...каждый сам себе устанавливает её...главное что бы был выбор...поэтому 1602 неплохо вполне
есть плюсы...и минусы....то же самое про нокия 1202 3110 аля 5110 можно сказать...
Ответить
0
patrick #
1602 видел в факсах и таксофонах.
Ничего не имею против графического дисплея, просто не представляю что на него выводить в этом генераторе, кроме частоты, а полупустой экран выглядит нелепо
Ответить
0

[Автор]
Матин Алексей #
просто не представляю что на него выводить в этом генераторе, кроме частоты, а полупустой экран выглядит нелепо
Вот! Именно об этом я и думал, когда создавал это устройство! Ставилась цель - создать максимально простое и недорогое устройство, не содержащее каких-либо "навороченных" деталей, или таких, какие нужно где-то заказывать и откуда-то ждать (за исключением, конечно, самого МК - но без него здесь совсем никак :)). Коллеги, я, честно говоря, не понимаю тех, кто агитирует за 16хх - ставить его для отображения всего ДВУХ циферок - ну, это же как из пушки по воробьям! Для этого замечательного дисплейчика можно найти другую, более интересную, работу - в устройствах посложнее, а не лепить сложное устройство на каждую схему просто потому, что никто не запрещает :) - а то мы скоро дойдем до того, что будем использовать 16хх вместо светодиодов, только для того, чтобы выводить надпись "Включено". А таблицу частот можно красиво распечатать, и приклеить на корпус - при некоторых дизайнерских задатках будет смотреться ничуть не хуже, чем с дисплеем...
Ответить
0

[Автор]
Матин Алексей #
Нууу, коллеги, честно говоря, я и не думал, что старый добрый 7-seg вызовет такую волну протестов! Но, давайте разберемся - а так ли он плох, особенно, если информации отображать нужно лишь чуть (как в данном устройстве)? ЖК - вещь достаточно хлипкая - все ведь видели: на морозе темнеет, на жаре - наоборот, контраст падает; на солнце слепнет, в темноте подсветка тусклая; под одним углом - видно, под другим - нет и т.п. Толи дело 7-seg: светит ярко, виден хорошо под любым углом, капризы погоды ему нипочем - будет работать даже в банке с водой, если, конечно, контакты загерметизировать! ЖК очень не любят многие вещи: если есть встроенный контроллер, то он может "попросить отставки" просто встретившись с вашими руками после того, как вы погладили кота - статическое электричество никто не отменял; он не любит грязных рук (а таковые при работе с измерительными приборами во время отладки чего-либо - не редкость!) - пластиковое "стеклышко" может "поплыть" или навечно оставить на себе отпечатки пальцев, если на руках будет какая-либо агрессивная жидкость; он умирает от вибраций, перегрева, а порой и просто трескается ни с того, ни с сего... 7-seg - другая тема - ломаться там практически нечему, конечно, если не греть его минуту-другую паяльником. К тому же современные 7-seg продаются практически любого цвета, имеют высокий КПД (светят ярко, а потребляют совсем немного), стоят копейки и имеются практически в каждом ларьке с хоть чем-то электронным (в Питере - от 20 руб., а у китайцев, наверное, вообще копейки). Я не радикальный фанат 7-seg, но и придавать анафеме эти индикаторы только из-за того, что "не модно" - глупо: каждому устройству - свой дисплей; сложным - да, 16хх; а простым - зачем?
Ответить
0
Васо #
Неплохо было бы еще Reset на питание подтянуть.
Ответить
0
Роман Шевцов #
Интересная схема, хочу спросить а исходник имеется?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Мультиметр Mastech MS8239C
Мультиметр Mastech MS8239C
Набор начинающего радиолюбителя Ручной фен 450 Вт с регулировкой температуры
вверх