049-Драйвер линейки 7-сегментных индикаторов на ATtiny13 (бегущая строка).

Автор: | 05.08.2010

титл

Уффф… Наконец-то добрался до паяльника! Сейчас сделаем что-нибуть интересненькое.

Раньше мы сказали «А», собрав устройство ввода – клавиатуру, теперь мы просто обязаны сказать «Б» и сделать устройство вывода, чем мы сегодня и займемся. В качестве устройства «Б» у нас будет выступать 7-сегментный индикатор. Но не просто один индикатор, а целая линейка семисегментных индикаторов, причем неограниченной длинны и с кучей эффектов отображения! Интересно? Ну, тогда, начнем!

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

Часто, когда идет речь о семисегментных индикаторах, подразумевается включение их в схему с динамической индикацией, при этом, по очереди засвечивается только один символ, и при частоте выше 50Гц, создается иллюзия, что светятся все символы одновременно. Эта схема настолько распространена, что 3-4х циферные индикаторы имеют выводы только под динамическую индикацию. У такого способа включения, конечно, есть свои плюсы, но когда речь идет о количестве цифр больше чем четыре (а тем более, если не известно, сколько их вообще будет) – начинаются проблемы с этой самой динамической индикацией — падает яркость свечения становиться заметно мерцание. Очевидно, что для линейки семисегментных индикаторов неограниченной длинны, такой способ включения абсолютно не подходит. Как же быть в таком случае? Поступим нестандартно – включим наши индикаторы на статическое (постоянное) свечение. Чтобы такое подключение стало возможным, нам понадобятся одноциферные семисегментные индикаторы – вот, например, такие:

Одноциферный семисегментник Читать далее

048-Демонстрация: 047-Драйвер матричной клавиатуры 3х4 на ATtiny13 с UART выходом.

Автор: | 11.07.2010

Титл Эта статья демонстрация устройства со статьи 047-Драйвер матричной клавиатуры 3х4 на ATtiny13 с UART выходом.

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

Для демонстрации работы драйвера я выбрал/купил вот такую клавиатуру:
Заводской кейпад
Она компактна и не испортит внешнего вида любого устройства. Клавиши нажимаются с чувствительным щелчком и, похоже, контакты металлические. Короче, приятная во всех отношениях клавиатура!

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

Старая "резиновая" клавиатура
Эта клавиатура показательна в плане того, что она «резиновая», более того, она довольно старая, а значит, токопроводящие резинки клавиш изрядно изношены – посмотрим, как драйвер будет работать с этой клавиатурой.

Сборка устройства: Читать далее

047-Драйвер матричной клавиатуры 3х4 на ATtiny13 с UART выходом.

Автор: | 08.07.2010

титлВ предыдущей статье мы реализовали программный UART в ATtiny13. Чтобы показать целесообразность применения программного UART в ATtiny13 пришло время заюзать этот интерфейс в реальном устройстве.
Выбор реального устройства пал на устройства ввода – keypad. Кто не в курсе – это набор (матрица) клавиш, часто 3х4 (а-ля телефон). Такие кейпады продаются в радиомагазинах.
Вот купил один:

Заводской кейпад

Также заиметь такой кейпад можно способом расковыривания ненужной оргтехники (телефоны, калькуляторы – все пойдет в ход!) или, брутально, отпилить ножовкой по металлу кусок от ненужной «клавы» для PC.

Старые клавиатуры
Читать далее

046-Программный UART для ATtiny13.

Автор: | 01.07.2010

В заглавной статье по интерфейсам fkvfaydar обратил внимание на то, что неплохо было бы заиметь интерфейс UART в ATtiny13. Полностью согласен с fkvfaydar, более того, я считаю, что реализация программного UART для микроконтроллера ATtiny13 будет показательной в плане философии блога – удобные, недорогие устройства для Ваших проектов. Что может быть дешевле и проще ATtiny13? А значит, быть статье!

Программый UART в ATtiny13

ATtiny13 маленький и недорогой микроконтроллер, имеющий у себя на «борту» АЦП, что очень удобно для обслуживания датчиков и выносной периферии. Но у ATtiny13 есть один большой недостаток — отсутствие, каких либо, аппаратных интерфейсов для связи. Это сводит на нет все его достоинства. Будем это исправлять! Организуем программный интерфейс для ATtiny13! Читать далее

045-SPI. Применение в электронных проектах.

Автор: | 21.06.2010

ТитлЕще один интерфейс, которым можно без особых проблем связать устройство с электронным проектом — это SPI интерфейс.

SPI (Serial Peripheral Interface — последовательный периферийный интерфейс) как и UART довольно старый, простой и популярный интерфейс. Существует множество устройств работающие по этому интерфейсу (микроконтроллеры, EEPROM, ADC, DAC …). Будем и мы его использовать для наших устройств.
В SPI интерфейсе для передачи данных используется три линии: MOSI – передача; MISO – прием; SCK – тактирование. Дополнительно используется линия SS (Slave Select ?) – выбор устройства (если их несколько). SPI — полнодуплексный синхронный интерфейс — передача и прием осуществляется параллельно. Инициирует и тактирует обмен ведущее устройство – master (может быть только одно). Ведомое — slave-устройство (может быть несколько) принимает/отдает байт под действием тактового сигнала.

В микроконтроллерах AVR SPI интерфейс используется двойственно, как интерфейс связи и как интерфейс для последовательного внутрисхемного программирования. В подавляющем большинстве контроллеров SPI интерфейс присутствует (есть исключения в моделях Tiny), но даже если его нет, программно реализовать его не составит труда.

Итак, как устроен SPI интерфейс?
А устроен он до безобразия просто (его то и интерфейсом назвать сложно) — два сдвиговых регистра (master и slave), плюс генератор на стороне master – все! Сдвиговые регистры замкнуты в кольцо по линиям MOSI и MISO, тактовый сигнал от генератора подается на оба сдвиговых регистра (на slave через линию SCK).

Принцип SPI

Читать далее

044-UART. Применение в электронных проектах.

Автор: | 15.06.2010

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

Универсальный асинхронный приемопередатчик (UART) довольно старый и распространенный интерфейс. До недавнего времени разъем COM порта (тот-же UART только уровни напряжения другие) был обязательным атрибутом каждого компьютера. Теперь COM порт постепенно «отмирает» и если на «башнях» он еще не редкость, то на ноутбуках его уже нет и в помине. Но в виду простоты и популярности интерфейса подавляющее большинство микроконтроллеров имеет UART в составе своей периферии. И если персональный компьютер UART перестает удовлетворять из-за низкой скорости и невозможности расширения, то для микроконтроллеров интерфейс удобен и использование его будет продолжаться.
Раз UART есть во многих микроконтроллерах, значит мы его будем использовать как один из интерфейсов связи устройств блога с Вашими электронными устройствами.
Для начала немного теории работы интерфейса (без лишних подробностей). Для связи по интерфейсу UART используется две ножки контроллера  RXD – для приема сообщений (Receiver) и TXD – для передачи сообщений (Transmitter). UART — полнодуплексный интерфейс. Это значит, что приемник и передатчик работают независимо друг от друга. Более того, передатчик или приемник можно отдельно отключить, освободив ножку контроллера для других нужд. Передача (соответственно и прием) сообщений осуществляется фиксированными пакетами битов (такой пакет называют кадром). Кадр состоит из старт-бита (с него начинается каждый кадр), битов данных (может быть от 5 до 9 бит), бита проверки четности (проверка правильности передачи данных) и одного или двух стоп-битов (сигнал об окончании кадра).

Формат кадра UART

где:
IDLE — ожидание обмена — должна быть 1;
St — Старт-бит — всегда 0;
(n) — Биты данных — может быть от 5 до 9 бит;
P — Бит четности;
Sp — Стоп бит — всегда 1.

Читать далее

043–Интерфейсы связи электронных устройств.

Автор: | 05.06.2010

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

Нужна связь!

Вот список интерфейсов, с которыми мы будем работать.
Аппаратно поддерживаемые:
Эти интерфейсы не требуют особых ресурсов памяти и времени (работа на прерываниях). В языках высокого уровня (C, Pascal, Basic и т.д.) есть готовые процедуры для работы этими интерфейсами, поэтому их легко включить в работу основной программы.

UART (при условии согласования уровней, совместим с RS-232 и COM портом) – довольно старый и распространенный интерфейс для связи с периферией. Аппаратно реализован во всех современных микроконтроллерах.

SPI – самый быстрый и простой интерфейс. В любом микроконтроллере аппаратно реализован.

I2C (у Atmel он зовется TWI) – популярный двухпроводный интерфейс. Аппаратно реализован во многих микроконтроллерах.

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

BS – BitStream (битовый поток) – передача данных по одной линии в одну сторону (от устройства к главной схеме). Формат делал для своих нужд – понравился своей простотой. Отличается тем, что на приемной стороне практически не требует ресурсов и настройки (сам настраивается на частоту передатчика) и повесить можно на любую ножку контроллера.

PB – ParallelBits (параллельные биты). Это, даже, не интерфейс, а скорее «настроечные ножки». Нужен будет для того, чтобы задать режим работы устройства из нескольких возможных вариантов.

1WIR – это интерфейс, который позволит легко и дешево связать устройства в сеть как по одной линии, так и по IR каналу. Интерфейса еще не существует. Есть наметки его реализации. Я надеюсь, вместе мы его реализуем. Будет очень перспективный и интересный проект. Присоединяйтесь!

Особые:
1-Wire – однопроводный интерфейс от Dallas. Интересен простотой реализации сети устройств, но сложна программная реализация интерфейса (аппаратно поддерживает небольшое число контроллеров). Существует множество устройств, работающих с этим интерфейсом. 1-Wire — план на будущее. Будет время – буду добавлять устройства и с этим интерфейсом.

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

Следующие статьи будут посвящены описанию интерфейсов (не бойтесь, все будет очень просто).

042-Пайка SMD компонентов.

Автор: | 01.06.2010

ТитлВот, решил показать, как я паяю SMD компоненты («Surface Montage Details» — означает поверхностный монтаж деталей). Вообще, почему-то, бытует мнение, что паять SMD компоненты сложно и неудобно. Я постараюсь Вас переубедить в обратном. Более того, я докажу, что паять SMD компоненты намного проще обычных TH компонентов («Through Hole» в переводе «сквозь отверстие» — сквозьдырочные компоненты :)).

Если быть совсем уж откровенным у TH и SMD компонентов есть свои назначения и области использования и попытки с моей стороны убеждать Вас в том, что SMD лучше, немного не корректны. Ну да ладно — все равно, я думаю, Вам будет интересно почитать.

Знаете, какая главная ошибка тех, кто первый раз пробует паять SMD компоненты?
Шаг ножек SMD микроконтроллеровРазглядывая меленькие ножки микросхемы, сразу возникает мысль о том, какое тонкое жало нужно взять, чтобы паять эти мелкие ножки и не насажать «соплей» между ними. В магазине находим конусное тонкое жало, цепляем его на паяльник, набираем маленькую капельку припоя и пытаемся иголкой-жалом обпаять каждую ножку отдельно. Получается долго, утомительно и не аккуратно. Данный подход, казалось бы, логичен, но в корне не верен! И вот почему – паять SMD компоненты помогают такие «страшные силы» как поверхностное натяжение, силы смачивания, капиллярный эффект и не использовать их значит сильно усложнять свою жизнь. Читать далее

041-UART to USB – простой преобразователь на ATtiny2313.

Автор: | 27.05.2010

ТитлЧестно признаться, поначалу я не планировал повторять на микроконтроллере ATtiny2313 схему преобразователя UART to USB из прошлого поста, так как функциональность варианта на ATmega8/48/88/168 лучше, больше возможностей, небольшой размер. Но в виду большей доступности и меньшей стоимости микроконтроллера ATtiny2313 решил, все-таки, сделать еще один преобразователь. Начав делать новый преобразователь понял, что принял правильное решение. Разводка печатной платы для СМД компонентов получилась очень удачной (самому нравиться !) – односторонняя, компактная, без перемычек. Кроме того, неожиданно, для данного преобразователя нашлось необычное применение (об этом будет отдельный пост). Как и в предыдущей схеме для преобразователя будут варианты прошивок для SPI to USB, IN-OUT то USB, а попозже, когда разберусь с более срочными проектами, будут еще варианты применений. Короче – продолжение следует …

Внимание! Появилась новая версия печатной платы преобразователя. 055-UART to USB – простой преобразователь на ATtiny2313 (Версия 2). Внесены изменения делающее преобразователь еще удобнее, прошивка и драйвер остались прежними.

Итак, для начала схема преобразователя

Схема преобразователя UART to USB на ATtiny2313 Читать далее

040-UART(RS-232) to USB-простой преобразователь.

Автор: | 11.05.2010

Преобразователь УАРТНаконец-то закончились праздники, и пришло время чего-нибудь сделать.

Начнем, пожалуй, с необходимого устройства, облегчающего жизнь рядового электронщика – устройства связи с компьютером. Это нужно для того, чтобы передать данные в компьютер (температура с датчиков, положение дверей, частота вращения двигателя, таблица значений с регистратора …) или принять данные из компьютера (таблицы значений для вычислений, настоечные данные для устройств, новая прошивка для загрузчика…). Для отладки нового устройства (посмотреть что там, в мозгах микроконтроллера, происходит) вообще незаменимая вещь.
Как Вы знаете, существует множество интерфейсов, посредством которых микроконтроллер может общаться с внешним миром. Но если речь идет о связи с компьютером – вне конкуренции интерфейс RS-232 (COM порт). Причина — простота работы с портом со стороны компьютера и наличие большого количества программ для этого предназначенных. Кроме того, почти в каждом микроконтроллере есть аппаратно поддерживаемый интерфейс USART (это тот-же RS-232, только с напряжениями 0 — 5v), что делает процесс связи легко реализуемым.
Для того, чтобы привести уровни сигнала микроконтроллерного USART к уровням COM порта компьютера нужно собрать несложный преобразователь (например, на МАХ232), но можно пойти по более интересному пути
Читать далее