Tag Archives: Схемотехника

Операционный усилитель. Примеры схем с описанием работы

Продолжение статьи «Операционный усилитель. На пальцах. Для самых маленьких»

Разберем еще пару схем, чтобы было понятно что и как. Как обычно, усилитель у нас идеальный.

▌Преобразователь напряжения в ток
Иногда надо получить источник тока. Это такой источник энергии который обеспечит протекание нужного тока через любое сопротивление. Вот есть у нас источник на 10мА и если мы его замкнем накоротко, то будет через точку КЗ течь ток в 10мА, а если мы оборвем его, то через обрыв … будет течь ток в 10мА, для этого источник тока загонит свое выходное напряжение до такого уровня, что заряды побегут через воздух, образовав пробой. Ну это в идеальном случае конечно. В реале источник тока при обрыве просто выставит свое максимально возможное напряжение.

Зачем нужно такое? Ну… по разным причинам. Светодиоды питать, например. Или есть линии связи на токовой петле. Когда у нас по проводу передается сигнал не напряжением, а током. Это очень удобно — от длины линии и роста ее сопротивления сигнал не меняется, всегда можно детектировать состояние линии — обрыв это нулевой ток, КЗ это ток выше лимита.

Я как то уже писал про токовую петлю 4-20мА. И вот там был пример применения ОУ для создания преобразователя напряжение-ток. Вот его схемотехника:

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

И можно смело вычислить ток I который будет, просто по закону Ома, равен как I = Uвх/R3. Но так как на самом деле никакого КЗ нет и, более того, во входы ОУ ничего не течет из-за его бесконечного сопротивления, то Ioс = 0. А раз Iос равна нулю, то ток I = Iout и жестко задается ТОЛЬКО входным напряжением и значением R3. Как бы не менялось побочное сопротивление линии R1 ток останется неизменным. Ну, конечно, при условии, что источник питания U может это обеспечить должным напряжением.
(далее…)

Read More »

Включить-выключить. Схемы управления питанием

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

▌Механическая кнопка
Что может быть проще и надежней сухого контакта, разомкнул и спи спокойно, дорогой друг. Вряд ли батарейку раскачает до того, чтобы пробить миллиметровый воздушный зазор. Урания в них для этого не докладывают. Какой нибудь PSW переключатель то что доктор прописал. Нажал-отжал.

Вот только беда, ток он маленький держит. По паспорту 100мА, а если запараллелить группы, то до 500-800мА без особой потери работоспособности, если конечно не клацать каждые пять секунд на реактивную нагрузку (катушки-кондеры). Но девайс может кушать и поболее и что тогда? Приматывать синей изолентой к своему хипстерскому поделию здоровенный тумблер? Нормальный метод, мой дед всю жизнь так делал и прожил до преклонных лет.

▌Кнопка плюс
Но есть способ лучше. Рубильник можно оставить слабеньким, но усилить его полевым транзистором. Например вот так.

Тут переключатель просто берет и поджимает затвор транзистора к земле. И он открывается. А пропускаемый ток у современных транзисторов очень высокий. Так, например, IRLML5203 имея корпус sot23 легко тащит через себя 3А и не потеет. А что-нибудь в DPACK корпусе может и десяток-два ампер рвануть и не вскипеть. Резистор на 100кОм подтягивает затвор к питанию, обеспечивая строго определенный уровень потенциала на нем, что позволяет держать транзистор закрытым и не давать ему открываться от всяких там наводок.

(далее…)

Read More »

Генератор отрицательного потенциала

Иногда нужен потенциал ниже нуля, т.е. отрицательное напряжение. Такое бывает нужно в аналоговой технике или, например, чтобы запустить LCD индикатор от низкого напряжения. Контроллер дисплея какого нибудь HD44780 часто отлично работает от 3.3 вольт, но на панели ничего не видно по причине низкого контраста, даже выкрутив потенциометр в землю не удается получить яркие символы. Нужно опустить Vss ниже нуля. На некоторых дисплеях даже стоит специальная схема, генерирующая минус. Но не везде. А тем не менее на простейшей конденсаторной схеме можно сделать такой генератор на ровном месте.

Итак, вот такая вот простая схема легко дает небольшой отрицательный потенциал .

На вход ей надо подать прямоугольный сигнал, от нуля до Vcc, а с выхода снимется отрицательный потенциал. Зависящий от частоты, уже от нескольких сот герц там будет -1 вольт, а вообще можно и больше накачать.

(далее…)

Read More »

Мультиплексирование

Думаю, каждый сталкивался с нехваткой выводов у выбранного контроллера. Принципиальных путей решения данной проблемы ровно два: менять контроллер на более многоногий или менять схему, чтобы упихнуться в существующие ноги.
Например, классика жанра — кнопки. Когда их две-три, то проще всего повесить каждую на свою ногу, особенно если на этих ногах есть внешнее прерывание. Тогда и работать с ними одно удовольствие. А если кнопок больше десятка? Если идти по первому пути, то с кличем «больше ножек!» выбираем какой-нить TQFP64 и оккупирем два порта. У такого решения есть очевидный плюс — каждая кнопка анализируется независимо от других, поэтому возможны любые аккорды. Минусы тоже очевидны: много ног ушло почти в никуда.

Второй путь — преобразовать схему так, чтобы подсократить количество занимаемых ног. Тут простора для творчества побольше. Начиная от PC-style (отдельный контроллер, который занимается опросом клавиатуры и преобразует нажатие клавиш в удобоваримый последовательный код, хоть в 1-wire) и сдвиговых регистров (как на джойстиках Dendy) заканчивая клавиатурами на резистивных делителях, подключаемых к АЦП. Весь вопрос — в стоимости.

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

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

Посмотрим, как оно работает.
(далее…)

Read More »

Операционный усилитель

Что то часто мне стали задавать вопросы по аналоговой электронике. Никак сессия студентов за яцы взяла? ;) Ладно, давно пора двинуть небольшой ликбезик. В частности по работе операционных усилителей. Что это, с чем это едят и как это обсчитывать.

Что это
Операционный усилитель это усилок с двумя входами, невье… гхм… большим коэфициентом усиления сигнала и одним выходом. Т.е. у нас Uвых= K*Uвх а К в идеале равно бесконечности. На практике, конечно, там числа поскромней. Скажем 1000000. Но даже такие числа взрывают мозг при попытке их применить напрямую. Поэтому, как в детском саду, одна елочка, две, три, много елочек — у нас тут много усиления ;) И баста.

А входа два. И один из них прямой, а другой инверсный.

Более того, входы высокоомные. Т.е. их входное сопротивление равно бесконечности в идеальном случае и ОЧЕНЬ много в реальном. Счет там идет на сотни МегаОм, а то и на гигаомы. Т.е. оно замеряет напряжение на входе, но на него влияет минимально. И можно считать, что ток в ОУ не течет.

Напряжение на выходе в таком случае обсчитывается как:

Uout=(U2-U1)*K

Очевидно, что если на прямом входе напряжение больше чем на инверсном, то на выходе плюс бесконечность. А в обратном случае будет минус бесконечность.

Разумеется в реальной схеме плюс и минус бесконечности не будет, а их замещать будет максимально высокое и максимально низкое напряжение питания усилителя. И у нас получится:
(далее…)

Read More »

Подключение клавиатуры к МК по трем проводам на сдвиговых регистрах

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

Суть
Подключение клавиатуры осуществляется по трем сигнальным проводам. Дополнительные элементы: сдвиговые регистры sn74198n и несколько резисторов. Максимальное количество кнопок ограничивается лишь максимально допустимым временем на сканирование клавиатуры. Я использовал в своем проекте 16 кнопок, но путем добавления новых сдвиговых регистров, можно увеличить данное число до необходимого вам значения. Вас будет ограничивать лишь пропорционально возрастающее время сканирования клавиатуры.

Аппаратная часть
Сдвиговые регистры – вещь довольно удобная за счет своей дешевизны и универсальности. Их часто используют для подключения светодиодов, семисегментных индикаторов и т.п. по небольшому количеству выводов микроконтроллера. В нашем случае, будем проделывать почти все тоже самое, но в обратную сторону:будем передавать данные не «из микроконтроллера», а «в него». Для наглядности привожу блок схему работы данного устройства:

  • 1.Блок Клавиатуры
  • 2.Сдвиговый регистр
  • 3.МК

Блок клавиатуры представляет собой набор кнопок, которые одним выводом подключены к земле, а другим подключаются к соответствующему входу сдвигового регистра.
(далее…)

Read More »

Повышающий DC-DC преобразователь. Принцип работы.

Иногда надо получить высокое напряжение из низкого. Например, для высоковольтного программатора, питающегося от 5ти вольтового USB, надыбать где то 12 вольт.

Как быть? Для этого существуют схемы DC-DC преобразования. А также специализированные микросхемы, позволяющие решить эту задачу за десяток деталек.

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

Чтобы было предельно понятно покажу вначале пример для сантехников.

Фаза 1

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

Read More »

ARM. Учебный Курс. Подключение контроллера и демоплата

Выбор контроллера
Контроллеров на ядре ARM Cortex множество. И мне пришлось поломать голову чтобы выбрать и взять за основу. В народ уверенно идут две линейки это LPC1xxx от NXP и STM32 от ST. Остальные дорогие и/или труднодоставаемые, либо в неадекватных для домашнего применения корпусах. Решил если брать, то из этой серии. Но какую именно? В результате поковырял и те и другие.
 

И вот мои соображения:
 

NXP
Берут низкой ценой. Реально многие из них продаются рублей по 50-80р за микруху. И это в розницу! Может это, конечно, маркетинговая акция и скоро все изменится. Но ситуация такая есть. С другой стороны, у NXP три линейки процов. LPC1000, LPC1300, LPC1700 (про LPC2xxx речь не идет, там ARM7 TDMI ядро).
 

  • LPC1000 закастрированные донельзя (но дешевые). Там от всех вкусняшек ARM ядра только таймер да 32 разряда. Корпуса от 33 до 48 выводов. Есть даже PLCC, но обычно LQFP.
  • LPC1300 уже интересней, но тоже нет ряда полезных фич вроде DMA или быстрого доступа к портам. Корпус от также от 33 до 48 выводов. Самый адекватный LQFP.
  • LPC1700 уже как в лучших домах — есть полный фарш, но камни там с 80ю и более ногами. И куда их такие здоровые?

 

Причем все три линейки весьма сильно отличаются друг от друга. Т.е. код с LPC1300 копипастой хрен перетащишь на LPC1700. Будут отличаться и имена регистров, и способы доступа к периферии. По разному будет выполняться конфигурация портов. В общем, хочешь перелезть на линейку послабже — изучай даташит с нуля. Конечно библиотека CMSIS сильно все сглаживает, но тем не менее от лишнего чтения доков не избавляет. Ну и документация у NXP тот еще аббадон. Давно я такой каши не видел. Бррр…
 

STM
Стоят дороже. Пока самый дешевый STM32F103C8T6 видел за 150р штука. Где найдете дешевле свистните. Но зато у них одна линейка F10x и один даташит на всех. Более того, ходят слухи, что периферия очень похожа и на STM8, так что при случае параллельно раскурим и эти камни :)
 

Процессоры в линейке отличаются только количеством ног и наличием на борту тяжелой периферии вроде USB/Ethernet/CAN. Причем в том же STM32F103C8T6 есть уже и DMA и полноценный BitBanding и все это в корпусе LQFP48 т.е. вполне компактный и паяемый в домашних условиях. Сами камни внутри выглядят более продумаными чтоль. Нет зоопарка периферии на разных линейках. Хорошо расписанные библиотеки CMSIS (о том что это такое расскажу попозже). Т.е. изучил его один раз и можешь уже смело программировать хоть 36 ногих козявок, хоть 100 выводных монстров. Плюс очень многие выводы у STM32F103 имеют 5V Tollerance т.е. их можно смело заводить на пятивольтовую периферию.
 

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

(далее…)

Read More »

Скоростной AVR USB программатор на FT232RL без вспомогательного контроллера

При работе с микроконтроллерами важнейшим девайсом являетя программатор, именно он может залить в МК нашу программу. Он же часто становится камнем преткновения на пути освоения AVR.
 

Дело в том, что для работы простейшего программатора, не требующего в своем составе микроконтроллера, нужен компьютер с COM или LPT портом, причем желательно с частотой процессора не выше гигагерца-двух. Да операционную систему подревней — WinXP или Win2K. А это ныне редкость.
 

С другой стороны, для USB программаторов нужно предварительно прошить контроллер. А чем его прошить? Вот тут и возникает проблема курицы и яйца — как прошить контроллер программатора не имея программатора.
 

Не так давно появилось решение позволяющее сделать надежный и быстрый USB программатор AVR на базе тупой, непрограммируемой, логики.
 

Bitbang, что это такое и с чем его едят
Это не что иное как прямое управление выводами какого либо порта. В COM порт можно отправить байт через какой либо высокоупровневый API и он просто выйдет через линию TX потоком стандартого RS232 сигнала.
А можно достучаться напрямую до регистров отвечающих за состоянием каждого пина порта и дрыгая их как нам угодно сэмулировать через тот же COM порт не только RS232, но и SPI, I2C или Dallas 1-wire, HD44780 протокол, применив простейший тупой обвяз. Это и будет битбанг.
 

В старых программаторах вроде SiProg (PonyProg) или в схеме Громова так и было сделано с COM портом. И работало надежно и стабильно. Но, увы, СОМ порт ушел в небытье, а при попытке сделать то же самое с виртуальным COM портом на конвертере USB-RS232 ничего не получалось. Т.к. заточен он был все же на работу нормального COM порта, а для битбанга приходилось извращаться. В результате такие схемы либо не работали вовсе, либо работали ОЧЕНЬ медленно, прошивая контроллер за час-полтора, что ни в какие ворота не лезет.
 

Все изменилось с появлением микросхемы конвертера USB-UART FT232R у которой стал доступен битбанг режим не через виртуальный COM порт, а напрямую через драйвер FTDI. И вот тут наступила нирвана.
 

За битбанг там отвечает 8 выводов. Вот их раскладка.

 
В даташите ее нет, но она есть в аппликухе Application Note AN_232R-01 for the FT232R and FT245R Bit Bang Modes
 

В результате, из одной только FTDI получается первоклассный скоростной программатор, прошивающий 16кб прошивки за 10-12 секунд и это вместе с верификацией!!!
 

А из деталей надо ТОЛЬКО микросхему FT232RL, два конденсатора на 0.1uF и гнездо USB. ВСЕ! Ну и проводочки естественно.
 

Схема включения получается следующей:

(далее…)

Read More »

Конденсаторное питание

Что то часто меня стали спрашивать как подключить микроконтроллер или какую низковольтную схему напрямую в 220 не используя трансформатор. Желание вполне очевидное — трансформатор, пусть даже и импульсный, весьма громоздок. И запихать его, например, в схему управления люстрой размещенной прям в выключателе не получится при всем желании. Разве что нишу в стене выдолбить, но это же не наш метод!

Тем не менее простое и очень компактное решение есть — это делитель на конденсаторе.

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

Помните обычный резистивный делитель?

Казалось бы, в чем проблема, выбрал нужные номиналы и получил искомое напряжение. Потом выпрямил и Profit. Но не все так просто — такой делитель может и сможет дать нужное напряжение, но вот совершенно не даст нужный ток. Т.к. сопротивления сильно велики. А если сопротивления пропорционально уменьшать, то через них насквозь пойдет большой ток, что при напряжении в 220 вольт даст очень большие тепловые потери — резисторы будут греть как печка и в итоге либо выйдут из строя, либо пожар устроят.

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

Так как у нас напряжение переменное, то конденсатор будет постоянно разряжаться и заряжаться, а особенность разряда-заряда конденсатора в том, что когда у него максимальный ток (в момент заряда), то минимальное напряжение и наборот. Когда он уже зарядился и напруга на нем максимальная, то ток равен нулю. Соответственно, при таком раскладе, мощность тепловых потерь, выделяемая на конденсаторе (P=U*I) будет минимальной. Т.е. он даже не вспотеет. (далее…)

Read More »

Измерительные цепи

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

Выход с датчика может быть трех основных видов (если кто вспомнит еще, добавьте в комментах)
Напряженческий, токовый и резистивный. Как понятно из названия, тут выходная датчик превращает колебания измеренной величины в колебания напряжения, тока или сопротивления, осталось только эти величины привести к виду удобному для запихивания в АЦП микроконтроллера.
(далее…)

Read More »

Управление мощной нагрузкой постоянного тока. Часть 3.

Кроме транзисторов и сборок Дарлингтона есть еще один хороший способ рулить мощной постоянной нагрузкой — полевые МОП транзисторы.
Полевой транзистор работает подобно обычному транзистору — слабым сигналом на затворе управляем мощным потоком через канал. Но, в отличии от биполярных транзисторов, тут управление идет не током, а напряжением.

МОП (по буржуйски MOSFET) расшифровывается как Метал-Оксид-Полупроводник из этого сокращения становится понятна структура этого транзистора.

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

Read More »

Фотодатчик. Часть 1

Наверняка многим захочется присобачить к AVR фотодетектор, чтобы отслеживать хотя бы наличие или отсутствие света. Это полезно как для роботостроителей, так и для тех кто делает всякую автоматику. Итак, кратко опишу какие бывают фотодетекторы.

Фоторезистор
ИМХО вымирающий вид. Последний раз я его видел еще в детстве. Обычно представляет собой такой металический кругляк со стеклянным окошком, в котором видна этакая сероватая зигзагообразная дорожка. При освещении его сопротивление падает, правда незначительно, раза в три четыре.

Фототранзистор
Последнее время я на них натыкаюсь постоянно, неиссякаемый источник фототранзисторов — пятидюймовые дисководы. Последний раз я, по цене грязи, надыбал на радио барахолке штук 5 платок от дисковертов, там светотранзисторы стоят напротив дырок контроля записи и вращения дискеты. Еще сдвоенный фототранзистор (а может и фотодиод, как повезет) стоит в обычной шариковой мышке.
Выглядит как обычный светодиод, только корпус прозрачный. Впрочем, светодиоды тоже такие же бывают так что перепутать кто из них кто раз плюнуть. Но это не беда, партизан легко вычисляется обычным мультиметром. Достаточно включить омметр между его эмитером и коллектором (базы у него нет) и посветить на него, как его сопротивление рухнет просто катастрофически — с десятков килоом до считанных ом. Тот который у меня в детекторе вращения шестерен в роботе меняет свое сопротивление с 100кОм до 30 Ом. Работает фототранзистор подобно обычному — держит ток, но в качестве управляющего воздействия тут не ток базы, а световой поток.

Фотодиод
Внешне ничем не отличается от фототранзистора или обычного светодиода в прозрачном корпусе. Также порой встречаются древние фотодиоды в металлических корпусах. Обычно это совковые девайсы, марки ФД-чето там. Такой металлический цилиндрик с окошком в торце и торчащими из задницы проводками.

В отличии от фототранзистора, может работать в двух разных режимах. В фотогальваническом и фотодиодном.
В первом, фотогальваническом, варианте фотодиод ведет себя как солнечная батарейка, то есть посветил на него — на выводах возникло слабенькое напряжение. Его можно усилить и применить =). Но куда проще работать в фотодиодном режиме. Тут мы подаем на фотодиод обратное напряжение. Поскольку он хоть и фото, но диод, то в обратную сторону напряжение не пойдет, а значит его сопротивление будет близко к обрыву, а вот если его засветить, то диод начнет очень сильно подтравливать и сопротивление его будет резко падать. Причем резко, на пару порядков, как у фототранзистора.
(далее…)

Read More »

Управление мощной нагрузкой постоянного тока. Часть 2

Когда на раскачку нагрузки мощности одного транзистора не хватает, то применяют составной транзистор (транзистор Дарлингтона). Тут суть в том, что один транзистор открывает другой. А вместе они работают как единый транзистор с коэффициентом усиления по току равным произведению коэффициентов первого и второго транзов.

Если взять, например, транзистор MJE3055T у него максимальный ток 10А, а коэффициент усиления всего около 50, соответственно, чтобы он открылся полностью, ему надо вкачать в базу ток около двухста миллиампер. Обычный вывод МК столько не потянет, а если влючить между ними транзистор послабже (какой-нибудь BC337), способный протащить эти 200мА, то запросто. Но это так, чтобы знал. Вдруг придется городить управление из подручного хлама — пригодится.

На практике обычно используются готовые транзисторные сборки. Внешне от обычного транзистора ничем не отличается. Такой же корпус, такие же три ножки. Вот только мощи в нем больно дофига, а управляющий ток микроскопический :) В прайсах обычно не заморачиваются и пишут просто — транзистор Дарлигнтона или составной транзистор.
(далее…)

Read More »

Монтажное И

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

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


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

Как это можно использовать? Да по разному. Простеший пример — сигнал готовности. Есть куча блоков единого устройства. Каждый из которых работает по своему алгоритму и, например, требует начальную инициализацию. Чтобы главный понял, что все остальные блоки закончили инициализацию и подготовились он «слушает» линию связи. В качестве сигнала готовности — блок отпускает линию. Когда каждый блок пройдет инициализацию, то линия примет высокий уровень и это будет сигналом полной готовности устройства.

На этом же принципе работает и шина 1-Wire и I2C — там если приемник не успевает прожевать байт, то он просто придавливает тактовую линию, не давая передатчику генерировать импульсы. А передатчик, видя что его обламывают, делает паузу.

Как с этим работать
Очевидно, что при работе на шину с монтажным И нельзя в эту шину подавать сильный высокий уровень. Иначе если какой либо из блоков выдаст свой сильный низкий то один из них выгорит в результате КЗ. Соответственно, если говорить про AVR, то ноль задаем сочетанием DDR=1 PORT=0, а единицу (когда линия отпущена) DDR=0 PORT=0. Вот такая вот инверсная логика.

Read More »

Немного про наводки

Вот решил продемоснтрировать то как ведет себя Hi-Z вход в отстутствии сигнала. Схема точь в точь из поста про регистр. В схеме тут три сдвиговых регистра цепью, на выходе у них светодиоды. С микроконтроллера идет только тактовый сигнал, а вот Data сигнал висит в воздухе. Получается следующий эффект — случайная наводка возникает на входе, иногда возникают единица, а тактовый импульс проталкивает ее по регистрам. Как результат — диоды мерцают. Сама наводка очень сильно зависит от окружающих предметов. Подошел — есть, отошел — нету.

Именно поэтому не следует оставлять висеть просто так выводы микроконтроллеров. Их нужно либо изнутри (конфигурацией DDR или аналогов) либо снаружи подтягивать до единицы или до нуля. Чтобы не болтались. Да, надо еще добавить, что вот так вот хаотично болтаясь, вывод генерирует множественные переключения внутренних ключей, а значит, потребляет больше энергии, создает микроброски напряжения в цепи питания. Как следствие хаотичного снижения и повышения энергопотребления. Про самопроизвольную генерацию всяких событий вроде прерываний (если они не выключены) я и не говорю. Также такое вихляние напряжения на выводе при включении может стать причиной так называемой тиристорной защелки. Когда транзисторы на выходе заклинивает в открытом состоянии, образуется внутрикристальное короткое замыкание. При этом микросхема начинает греться как утюг и чаще всего сгорает. Из защелки выход только один — вырубить питание.

Read More »

Переменный резистор

Переменный резистор
Переменный резистор
Ограничение крайних значений
Ограничение крайних значений
Повышение точности
Повышение точности
Вроде бы простая деталька, чего тут может быть сложного? Ан нет! Есть в использовании этой штуки пара хитростей. Конструктивно переменный резистор устроен также как и нарисован на схеме — полоска из материала с сопротивлением, к краям припаяны контакты, но есть еще подвижный третий вывод, который может принимать любое положение на этой полоске, деля сопротивление на части. Может служить как перестариваемым делителем напряжения (потенциометром) так и переменным резистором — если нужно просто менять сопротивление.

Хитрость конструктивная:
Допустим, нам надо сделать переменное сопротивление. Выводов нам надо два, а у девайса их три. Вроде бы напрашивается очевидная вещь — не использовать один крайний вывод, а пользоваться только средним и вторым крайним. Плохая идея! Почему? Да просто в момент движения по полоске подвижный контакт может подпрыгивать, подрагивать и всячески терять контакт с поверхностью. При этом сопротивление нашего переменного резистора становится под бесконечность, вызывая помехи при настройке, искрение и выгорание графитовой дорожки резистора, вывод настраимого девайса из допустимого режима настройки, что может быть фатально.
Решение? Соединить крайний вывод с средним. В этом случае, худшее что ждет девайс — кратковременное появление максимального сопротивления, но не обрыв.

Борьба с предельными значениями.
Если переменным резистором регулируется ток, например питание светодиода, то при выведении в крайнее положение мы можем вывести сопротивление в ноль, а это по сути дела отстутствие резистора — светодиод обуглится и сгорит. Так что нужно вводить дополнительный резистор, задающий минимально допустимое сопротивление. Причем тут есть два решения — очевидное и красивое :) Очевидное понятно в своей простоте, а красивое замечательно тем, что у нас не меняется максимально возможное сопротивление, при невозможности вывести движок на ноль. При крайне верхнем положении движка сопротивление будет равно (R1*R2)/(R1+R2) — минимальное сопротивление. А в крайне нижнем будет равно R1 — тому которое мы и рассчитали, и не надо делать поправку на добавочный резистор. Красиво же! :)

Если надо воткнуть ограничение по обеим сторонам, то просто вставляем по постоянному резистору сверху и снизу. Просто и эффективно. Заодно можно и получить увеличение точности, по принципу приведенному ниже.

Повышение точности.
Порой бывает нужно регулировать сопротивление на много кОм, но регулировать совсем чуть чуть — на доли процента. Чтобы не ловить отверткой эти микроградусы поворта движка на большом резисторе, то ставят два переменника. Один на большое сопротивление, а второй на маленькое, равное величине предполагаемой регулировки. В итоге мы имеем две крутилки — одна «Грубо» вторая «Точно» Большой выставляем примерное значение, а потом мелкой добиваем его до кондиции.

Read More »

Источники питания. Часть 1 — Батарейное и сетевое питание

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

С батарейками тут все просто, если соединить их последовательно, цепочкой от плюса к минусу, то напряжение складывается. А если связать параллельно, объединив все плюсы и все минусы, то получим увеличение емкости батареи. Главное тут, чтобы все батареи имели равную свежесть. А то если в такой связке попадется одна полудохлая, с более низким напряжением, то остальные через нее тут же подсядут до ее уровня.

Особой любовью у меня пользуются батарейки от материнских плат. Так как они выдают 3 вольта, что в подавляющем большинстве случаев достаточно для запитки микроконтроллера (Tiny или Mega с индексом L) или еще какой мелкой электроники. Кстати, мелкие батарейки на девять-двенадцать вольт (такие обычно стоят в брелках авто сигнализаций) внутри содержат стопку обычных таблеточных батареек для часов. Так что в следующий раз лучше не тратить бабло на дорогующую двенадцати вольтовую батарейку, а купить матрас китайских таблеток по рублю за штуку и смотать их скотчем.
Еще классными батарейками снабжались кассеты от фотоаппаратов Polaroid. Она была плоской, выдавала девять вольт и обладала чумовой энергоемкостью, их особенно любили фрикеры, изготовлявшие подслушивающие устройства. Так как такую батарейку, вместе с жучком было легко сделать в виде картонки, которая закидывалась куда-нибудь за шкаф и работала порой до двух трех месяцев.

(далее…)

Read More »

Коварные ВЧ цепи

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

Предыстория
Разводил я плату, того самого универсального пульта. И была у меня там обычная матричная клавиатура — строки и столбцы. По столбцам сканируется, по строкам считывается. Элементарно. Собрал, запрограммировал опрос клавиатуры и выдачу символов на экран.
 

Включаю и тут же вылазит нажатие. Проверил программу — все как и должно, а кнопка сама почему то нажимается. Выключаю. Включаю — то же самое. Косяк, видать либо кнопка коротит, либо развел неправильно. Было поздно лег спать. Проснулся, включаю — не вылазит буква. Потыкал кнопочки, все работает как и должно. Что это было? Непонятно, может приглючилось? Тут раз — выскочила. Опа. Стал проверять. Вскрылось шаманство. После сброса кнопка не срабатывала, но стоило поднести к пульту руку, справа, под определенным углом — самопроизвольное нажатие. Мда… Но хоть что то стало ясно.
 

(далее…)

Read More »

Матричная клавиатура

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

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

Считывающий порт включается в режиме Pull-up входа, то есть вход с подтягивающими резисторами. Если контроллер это не поддерживает, то эти резисторы надо повесить снаружи.

Сканирующий порт работает в режиме выхода, он подключен к столбцам. Столбцы должны быть подтянуты резисторами к питанию. Впрочем, если используется полноценный Push-Pull то подтяжка не нужна — выход сам поднимет ногу на нужный уровень.

(далее…)

Read More »