Считыватель RFID: рассказываем о технологии. Считыватель карточек RFID RC522 в домашнем хозяйстве

19 сентября 2013 в 18:32

Бюджетный UHF RFID считыватель и его развитие

  • Беспроводные технологии

Здравствуйте, досточтимые леди и джентльмены.
Самый дешевый UHF RFID считыватель или считыватель стандарта EPC Gen2 стоит в розницу никак не меньше 200 USD.

Как можно сделать работоспособный UHF RFID считыватель из деталей за 10 USD, и как можно было бы из этого извлечь пользу, рассказано ниже.

Большинство современных RFID считывателей стандарта EPC Gen2 использует специализированные микросхемы. Их выпускают компании Impinj, AMS и Phychips. Самые дешевые микросхемы стоят около 20 USD в партиях по 1000 штук. RFID считыватели получаются замечательные: мощные, шустрые и дальнобойные - но дорогие.
Весной этого года в Интернете появилась статья "Simple Low Cost UHF RFID Reader " о том, как из распространенных радиодеталей стоимостью около 5 USD в рознице собрать действующий RFID считыватель. Идея вроде как проста, но до реализации дошло только недавно. Предпосылка к разработке базируется на том, что очень часто вблизи от антенны нужно не спеша считать пару тройку меток, и платить много денег за считыватель скорострельностью 200-500 меток в секунду ни к чему. Блок схема считывателя представлена на картинке.


Её прелесть в простоте. Основой является обычный микроконтроллер, который формирует на ножке GPIO сигналы стандарта EPC Gen2, нужные для опроса метки. Сигналы передаются на микросхему трансмиттера Melexis TH72035, затем на антенну через каплер (coupler) Johanson 0910CF15B0100. Приемник собран на одном компараторе MAX931 по следующей схеме.


Логические сигналы с приемника поступают на другой вывод GPIO микропроцессора. Получаем простой софтовый UHF RFID считыватель. Конечно, написать софтовый EPC Gen2 RFID считыватель - это не фунт изюму. Но если четко определить цели и использовать только нужное подмножество протокола EPC Gen2, то задача упрощается значительно.
Авторы описываемого проекта одной из целей его дальнейшего развития считают размещение всех компонентов RFID считывателя на одной плате. Но не будет ли интереснее пойти в противоположном направлении? То есть разделить считыватель на физически обособленные функциональные модули и потом из разных модулей строить RFID считыватель с необходимыми характеристиками. Всё, что внизу, только идея, без детальной проработки.

Понятно, что главный модуль - микропроцессорный. Наверное, сделать его нужно на Cortex-M0, вывести на разъемы UART и USB с целью управления считывателем. Для подключения модуля приемопередатчика использовать разъем на 6 контактов: Rx, Tx, 2 на питание приемопередатчика, 2 GPIO. Таких разъемов можно сделать 2-4, насколько выводов микропроцессора хватит.
Модуль приемопередатчика подключаться к микропроцессорному модулю будет напрямую или через короткий кабель. Пожалуй, надо делать несколько вариантов модулей приемопередатчика с разной мощность и ценой, но одинаковым разъемом. 5-ый контакт разъема можно использовать для включения приемопередатчика, а 6-ой можно использовать под какой-то датчик при необходимости. Имеет смысл сделать печатную плату приемопередатчика с металлизированными торцевыми полуотверстиями. Тогда её можно будет припаивать к печатным платам с разными антеннами или печатной плате с коаксиальным разъемом SMA.
Итак, соединив микропроцессорный модуль и модуль приемопередатчика, мы получаем RFID считыватель. Но только ради этого городить огород не стоит. Пойдем дальше. Воткнем в 6-контактный разъем микропроцессорного модуля вместо приемопередатчика плату с драйвером RS422 и розеткой RJ45 (пара 1 - прием, пара 2 - передача, 3 - питание, 4 - GPIO). Такую же воткнем в приемопередатчик. Понятно, что теперь можно соединять микропроцессорный модуль и приемопередатчик с помощью любого патч-корда или использовать для соединения офисную СКС. В общем, антенна от микропроцессорного модуля может располагаться весьма далече. И никакого коаксиала.
Ну и это еще не всё :) RS422 - это шина. В приемопередатчике можно разместить микросхему D-триггера. Модули приемопередатчика соединить последовательно патч-кордами. Правда необходим второй разъем RJ45 или Т-разветвитель, если вместо D-триггера поставить синхронный счетчик. С помощью двух GPIO в четвертой паре UTP можно выбирать нужный приемопередатчик. Получается распределенный RFID считыватель, как на картинке.


Зачем нужен USB: а для того, чтобы уметь присоединить считыватель к планшетнику с Android.

Решение применимо, где не нужна большая скорость считывания меток и дальнобойность.
1. Для гастрономов не годится. Это RFID магазины будущего. А RFID магазины настоящего - это универмаги (обувь и одежда). Там RFID считыватели уже используются в примерочных (вместе в интерактивным дисплеем), на кассах и умных полках с товаром.
2. Склады с европоддонами (цепочка модулей приемопередатчика там, где находятся левые углы палет).
3. Пропускная система на разные массовые мероприятия.
4. Наверняка где-то ещё.

Сегодня урок о том как использовать RFID-ридер с Arduino для создания простой системы блокировки, простыми словами - RFID-замок.

RFID (англ. Radio Frequency IDentification, радиочастотная идентификация) - способ автоматической идентификации объектов, в котором посредством радиосигналов считываются или записываются данные, хранящиеся в так называемых транспондерах, или RFID-метках. Любая RFID-система состоит из считывающего устройства (считыватель, ридер или интеррогатор) и транспондера (он же RFID-метка, иногда также применяется термин RFID-тег).

В уроке будет использоваться RFID-метка с Arduino. Устройство читает уникальный идентификатор (UID) каждого тега RFID, который мы размещается рядом со считывателем, и отображает его на OLED-дисплее. Если UID тега равен предопределенному значению, которое хранится в памяти Arduino, тогда на дисплее мы увидим сообщение «Unlocked» (англ., разблокировано). Если уникальный идентификатор не равен предопределенному значению, сообщение "Unlocked" не появится - см. фото ниже.

Замок закрыт

Замок открыт

Детали, необходимые для создания этого проекта:

  • RFID-ридер RC522
  • OLED-дисплей
  • Макетная плата
  • Провода

Дополнительные детали:

  • Аккумулятор (powerbank)

Общая стоимость комплектующих проекта составила примерно 15 долларов.

Шаг 2: RFID-считыватель RC522

В каждой метке RFID есть небольшой чип (на фото белая карточка). Если направить фонарик на эту RFID-карту, можно увидеть маленький чип и катушку, которая его окружает. У этого чипа нет батареи для получения мощности. Он получает питание от считывателя беспроводным образом используя эту большую катушку. Можно прочитать RFID-карту, подобную этой, с расстояния до 20 мм.

Тот же чип существует и в тегах RFID-брелка.

Каждый тег RFID имеет уникальный номер, который идентифицирует его. Это UID, который показывается на OLED-дисплее. За исключением этого UID, каждый тег может хранить данные. В этом типе карт можно хранить до 1 тысячи данных. Впечатляет, не так ли? Эта функция не будет использована сегодня. Сегодня все, что интересует, - это идентификация конкретной карты по ее UID. Стоимость RFID-считывателя и этих двух карт RFID составляет около 4 долларов США.

Шаг 3: OLED-дисплей

В уроке используется OLED-монитор 0.96" 128x64 I2C.

Это очень хороший дисплей для использования с Arduino. Это дисплей OLED и это означает, что он имеет низкое энергопотребление. Потребляемая мощность этого дисплея составляет около 10-20 мА, и это зависит от количества пикселей.

Дисплей имеет разрешение 128 на 64 пикселя и имеет крошечный размер. Существует два варианта отображения. Один из них монохромный, а другой, как тот, который использован в уроке, может отображать два цвета: желтый и синий. Верхняя часть экрана может быть только желтой, а нижняя часть - синей.

Этот OLED-дисплей очень яркий и у него отличная и очень приятная библиотека, которую разработала компания Adafruit для этого дисплея. В дополнение к этому дисплей использует интерфейс I2C, поэтому соединение с Arduino невероятно простое.

Вам нужно только подключить два провода, за исключением Vcc и GND. Если вы новичок в Arduino и хотите использовать недорогой и простой дисплей в вашим проекте, начните с этого.

Шаг 4: Соединяем все детали

  • Программирование микроконтроллеров
  • Как известно, во многих системах доступа используются карты RFID стандарта EM-Marin с частотой 125 КГц. Не исключением стал и домофон моего дома. Одна проблема – неплохо бы научиться копировать такие карты, ибо ценники на их копирование не радуют. В сети, конечно, существует довольно много схем копировщиков (да и китайцы продают свои копировщики за копейки - правда, они часто при копировании ставят свой пароль на болванки), но почему бы не собрать свой собственный копировщик? Вот об этом и нижеприведённая статья.

    Начинать разработку копировщика стоит с выяснения, а на что вообще можно скопировать такие метки? Почитав форумы, можно узнать, что наиболее распространёнными болванками для копирования являются T5577, T5557, EM4305.

    Теперь нужна схема. Возьмём аналоговую часть такого копировщика у RECTO и подключим её к микроконтроллеру atmega8. Дополним преобразователем уровней для подключения к COM-порту на базе max232 (желающие могут использовать ST232 или ещё что, чтобы подключится по USB, но у меня на компьютере COM-порт есть, как есть и переходник USB-COM, так что у меня такой задачи не стояло).

    Получится вот такая схема:

    Что она из себя представляет? Сдвоенный эмиттерный повторитель, колебательный контур, детектор и RC-фильтры. За счёт того, что RC-фильтры имеют разные постоянные времени, сравнивая между собой уровни напряжения между каскадами можно выделять изменение сигнала RFID-метки. Данной задачей у нас будет заниматься встроенный в atmega8 компаратор. Генерацию 125 КГц сигнала у нас будет обеспечивать встроенный в atmega8 ШИМ-контроллер.

    Комбинация RFID-метка – считыватель образуют трансформатор, где метка является вторичной обмоткой. Передача информации меткой производится путём изменения нагрузки вторичной обмотки. В результате в катушке считывателя (первичной обмотке) изменяется ток. Выделением этих импульсов тока и занимается приведённая выше аналоговая часть схемы. Колебательный контур нужно настроить на максимальное напряжение в контрольной точке, например, сматывая/наматывая витки катушки. Правда, говорят, лучше всё же напряжение немного меньше максимума - стабильнее работает. У меня в контрольной точке около 40 В.

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

    Метод расшифровки манчестерского кодирования и код для этого я взял у Shads . Можно, конечно, было написать свой собственный, но я торопился запустить копировщик - хотелось убедиться, что схема рабочая и приём меток производится. Так этот фрагмент и остался в коде копировщика. Также оказалось, что у меня компаратор настроен инверсно, чем нужно коду декодирования. Изменил в коде. Итак, мы получили последовательности нулей и единиц. Как из них получить код карты?

    А очень просто. Примем, что номер карты по нибблам имеет вид AB CD EF GH IJ . Карта выдаёт вот что:

    1) Девять единиц в начале;
    2) Ниббл A;
    3) Чётность ниббла A (1 бит);
    4) Ниббл B;
    5) Чётность ниббла B (1 бит);

    16) Ниббл I;
    17) Чётность ниббла I (1 бит);
    18) Ниббл J;
    19) Чётность ниббла J (1 бит);
    20) Ниббл чётности колонок для нибблов A B C D E F G H I J;
    21) Бит 0.

    Считываем все 64 бита, расшифровываем и получаем 40 бит кода карты. Логично, что если самому выдать такой код, замыкая катушку карты приложенной к считывателю, мы получим эмулятор карты. Но сейчас нас интересует не он.

    Карту мы читать научились, а вот как передать данные карте? Для этого нужно просто включать или выключать частоту 125 КГц в соответствии с протоколом обмена с картой. На время “молчания” считывателя карта питается запасённой энергией.

    Болванки T5557/T5577 полностью совместимы между собой по протоколам записи, однако, имеют немного разные минимальные и максимальные времена импульсов (к счастью, времена T5557 перекрываются с T5577). У EM4305 протокол записи иной.

    Чтобы записать T5557 я воспользовался кодом BolshoyK . В таблице ниже указаны параметры сигналов для брелока T5557.

    Запись начинается с сигнала StartGape – требуется отключить сигнал 125 КГц примерно на 300 мкс. Это сигнал карте, что сейчас ей начнут передавать данные. Дальше следует передать болванке информацию. Кодирование передаваемых данных – тот же манчестер.

    Болванки T5557/T5577 и EM4305 многофункциональные и умеют разные виды модуляций, поддерживают пароли и ещё много чего. В каждой болванке на борту имеется набор блоков по 32 бита. Назначение этих блоков разное. В некоторых – выдаваемый код ключа (он занимает два блока). В других – конфигурация. В третьих – идентификатор производителя. Мы будем использовать ограниченный функционал, поэтому желающие разобраться, что значат все эти биты, могут заглянуть в документацию к болванкам (я приложил её к архиву).

    Блоки собраны в две страницы (0 и 1).

    В нулевой странице есть блок конфигурации с индексом 0. Его мы и будем задавать. Для T5557/T5577 у нас будут следующие конфигурационные байты: 0x00,0x14,0x80,0x40 в соответствии с таблицей из документации (красным я отметил выбранные единичными битами режимы):

    Таким образом, у нас выбрано: частота передачи данных RF/64 (125 КГц/64), кодирование типа манчестер, выдача блоков до второго (в блоках 1 и 2 у нас будет располагаться код, выдаваемый картой). Перед записью следует отправить код операции (2 бита opcode) и один бит защёлки (lockbit). Коды операции 10b и 11b предшествуют записи данных для страниц 0 и 1 (младший бит задаёт номер страницы, старший - код записи страницы). У нас выдаётся 10b для кода операции (вся работа идёт с нулевой страницей) и 0b для бита защёлки. После передачи всех этих данных необходимо передать трёхбитный адрес записываемой страницы. Все передачи данных для T5557/T5577 ведутся от старшего бита к младшему.

    Задав код карты в блоках 1 и 2 и конфигурацию в блоке 0 можно получить дубликат RFID-метки. Как видите, всё просто.

    Следующий тип болванок – это EM4305. Вот разбираться с записью этой болванки мне пришлось самому. Она также состоит из блоков по 32 бита, но назначение их иное.

    Кодирование передаваемых карте данных – по перепадам за интервал времени. Если перепад за интервал времени был, то это ноль, а если не было - единица. Конфигурационное слово хранится в 4 байте и для себя я определил его так: 0x5F,0x80,0x01,0x00 (кодирование манчестер, RF/64, выдача слова 6). В слова 5 и 6 я записываю код карты (те самые 64 бита, что выдаёт карта). EM4305 требует чтобы передача велась от младшего бита к старшему. Карта понимает, что с ней начинают обмен после выдачи ей комбинации импульсов:

    1. Отключаем поле на 48 мкс.
    2. Включаем поле на 96 мкс.
    3. Выключаем поле на 320 мкс.
    4. Включаем поле на 136 мкс.
    5. Отключаем поле до следующей команды.
    Команда на запись блока карте передаётся так:
    1. Шлём вышеуказанную последовательность импульсов.
    2. Шлём 0b.
    3. Передаём CC0-CC1 и их чётность P. (0101b для записи, см. таблицы ниже).
    4. Передаём адрес блока (см. таблицу), два дополняющих нуля и чётность адреса.
    5. Передаём данные блока (32 бита).

    Формат команды


    Коды команд

    Формат адреса блока

    Таким образом задаётся конфигурация болванки EM4305 и её код.

    Собственно, ничего большего простому копировщику и не требуется.

    Я сделал несколько вариантов копировщика с разными дисплеями. Например, вот копировщик с дисплеем 1602:

    А вот видео работы копировщика на дисплее LPH9157-02.

    1 Описание считывателя RFID RC522

    Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP . Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.

    Микросхема MFRC522 поддерживает следующие варианты подключения:

    С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC -меток.

    RFID - это сокращение от "Radio Frequency IDentification" и переводится как «радиочастотная идентификация».
    NFC - это "Near field communication", «коммуникация ближнего поля» или «ближняя бесконтактная связь».

    2 Схема подключения RFID-RC522 к Arduino

    Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.


    Питание модуля обеспечивается напряжением от 2,5 до 3,3 В. Остальные выводы подключаем к Arduino так:

    Пин RC522 Пин Arduino
    RST D9
    SDA (SS) D10
    MOSI D11
    MISO D12
    SCK D13

    Не забывайте также, что Arduino имеет специальный разъём ICSP для работы по интерфейсу SPI. Его распиновка также приведена на иллюстрации. Можно подключить выводы RST, SCK, MISO, MOSI и GND модуля RC522 к разъёму ICSP на Ардуино.

    3 Библиотека для работы Arduino с RFID

    Микросхема MFRC522 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её паспорт (datasheet) . Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек , написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDE\libraries\


    Установка библиотеки "rfid-master" для работы Arduino с RFID-метками

    После этого запустите среду разработки Arduino IDE.

    4 Скетч для считывания информации, записанной на RFID-метке

    Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.


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

    #include #include const int RST_PIN = 9; // пин RST const int SS_PIN = 10; // пин SDA (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // создаём объект MFRC522 void setup() { Serial.begin(9600); // инициализация послед. порта SPI.begin(); // инициализация шины SPI mfrc522.PCD_Init(); // инициализация считывателя RC522 } void loop() { // Ожидание прикладывания новой RFID-метки: if (! mfrc522.PICC_IsNewCardPresent()) { return; // выход, если не приложена новая карта } // Считываем серийный номер: if (! mfrc522.PICC_ReadCardSerial()) { return; // выход, если невозможно считать сер. номер } // Вывод дампа в послед. порт: mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }

    Текст скетча достаточно хорошо прокомментирован.

    Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master .

    5 Дамп данных с RFID-метки

    Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M , через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.


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

    Примечание

    Да, с помощью модуля RFID-RC522 можно записать данные на билет метро. Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится - это сразу будет обнаружено и карта будет забракована турникетом:) А вот использовать билеты метро для записи на них небольших объёмов данных - от 1 до 4 кб - можно. И способы применения этому ограничены только вашей фантазией.

    Метка EM4100 хранит 64 бита данных, значит, конструкция должна содержать 64-битный сдвиговый регистр, составленный из восьми 8-битных регистров 74HC165. Регистр перезагружается после каждых 64 сдвигов, чтобы сбросить данные и начать сначала. Данные на входах регистра следующие:
    • Паттерн синхронизации: девять единиц
    • Идентификатор производителя/версии: 2 блока по 5 бит, из которых 4 бита - данные, а пятый - четность
    • Уникальный идентификатор: 8 блоков по 5 бит, из которых 4 бита - данные, а пятый - четность
    • Контрольная сумма: 4 бита четности, подсчитанные по столбцам
    • Стоп-бит: «0»

    Даже метки с шифрованием уязвимы для множества атак. Кроме того, становится все легче эмулировать метки на смартфонах с поддержкой NFC (которые обычно работают на 13,56 МГц). Просто правильно напишите приложение для модуляции поля, и вы сможете делать все, что хотите.

    В качестве стандартной отмазки напомню, что автор (И переводчик! - Прим. перев. ) не несет никакой ответствености за последствия использования информации из данной статьи. Читатель должен сам отвечать за все свои действия.

    Корпус

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

    С работающим станком мы получили возможность протестировать наш проект в реальной жизни. Корпус для нашей RFID-метки сделали из 2-миллиметрового огрстекла. Этот корпус - первый объект, сделанный на PhotonSaw, да!

    Родилась идея расположить катушку на внешней стороне корпуса. Сперва было решено использовать половину высоты корпуса, но это не работало на практике (дополнительные отверстия в длинных сторонах, таким образом, не используются). Катушка просто великолепно разместилась по периметру всего корпуса, хотя у меня были сомнения, не будет ли прямоугольная обмотка (105x55 мм) слишком большой для нормальной электромагнитной связи.

    Тестовая катушка была намотана, без всяких расчетов, проводом 0,4 мм в 66 витков. И, очевидно, нам опять повезло, потому что катушка получилась точно такой как надо, индуктивностью 645 мкГн, с подключенной меткой давая резонансную частоту 125,2 кГц. Тест на дверном считывателе показал, что прототип работает просто прекрасно с этой катушкой.

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

    Станок PhotonSaw еще не совсем в нормальном состоянии: гравировка на верхней крышке значительно съехала. Необходимо его окончательно отладить перед изготовлением финальной версии корпуса. Изогнутые контуры также подверглись ошибке расчета в программном обеспечении, так как луч не вернулся в начальное положение после прохода замкнутой траектории. Но во всяком случае, кривые выглядят действительно гладкими.

    Сборка печатной платы

    Прибыла заказанная плата:

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

    Через разделительную емкость (47 пФ имеют сопротивление примерно 27 кОм на частоте 125 кГц) и защитные диоды ток поступает на шины питания. Энергии, поступающей с катушки, хватает на поддержание напряжения питания около 1 В. Ток может достигать 250-500 мкА. Удивительно, но микросхемы 74HC, похоже, работают при таком питании. К сожалению, при таком напряжении происходят довольно странные вещи. Микросхемы 74HC имеют внутреннюю схему сброса, и нужно убедиться, что она срабатывает. Обратите внимание, что отключение защитных диодов не помогает. На входах микросхем есть внутренние защитные диоды, которые в этом случае открываются и выполняют ту же работу.

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

    Симптомы наблюдались следующие: метка работает некоторое время, при этом посылая корректные данные. Если катушку убрать от считывателя, а затем вернуть обратно, можете делать ставки, выключится ли при этом метка. Иногда срабатывает, иногда - нет. Отключение ФАПЧ ухудшает ситуацию. Низкое энергопотребление приводит к тому, что ридер время от времени будет принимать данные от выключенной метки. Вот что значит «энергоэффективная система».

    Существует два решения: 1) уменьшить конденсатор в цепи восстановления тактового сигнала до 15 пФ, и 2) включить между питанием и землей резистор 22-100 кОм для сброса лишней энергии. Второй метод приводит к росту утечек во время работы и на самом деле не требуется при уменьшении емкости конденсатора. Тем не менее, он предусмотрен как опция, и это все равно лучше, чем неопределенное состояние микросхем.

    Модуляция током или напряжением

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

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

    Было принято решение перевести модулятор из режима модуляции напряжением в режим модуляции током. Для первого режима резистор находился в цепи стока, а теперь он включен между истоком и землей. На этом резисторе будет падать напряжение затвор-исток, пока не останется значение чуть выше порога открывания транзистора (0,9-1,1 В), которое переведет транзистор в линейный режим. Теперь ток через транзистор будет стабильным, независимо от напряжения на стоке.

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

    Законченная версия 1

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

    (картинки кликабельны)





    Видео-демонстрация

    Заключение

    Вы можете подумать, что этот проект, собранный на логике 7400, можно отнести к ретро-схемотехнике, но это не совсем так. Во-первых, современное семейство 74HC не такое уж и старое. Во-вторых, низкопотребляющие схемы всегда актуальны. В-третьих, микросхемы одиночных логических элементов (такие, как использованный триггер Шмитта) часто используются в современных разработках. Часто забывают, что развитие технологий не прекращается и для старых семейств микросхем. Они просто стали менее заметны на фоне общего разнообразия.

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

    Я должен признаться, что микросхемы 74HC сделаны очень, очень хорошо. Разработчики знали, что они делают, и достигли очень низкого энергопотребления. Сперва у меня были некоторые сомнения, сможет ли метка работать от пассивного питания, но после прочтения спецификаций это осталось лишь вопросом правильной схемотехники. Хотя, есть еще возможности для оптимизации различных частей метки.

    Теперь посмотрим, как этот проект покажет себя на конкурсе 7400 2012 года. Подача заявок на конкурс заканчивается 31 ноября. Пожелаем автору удачи! - Прим. перев.

    Теги: Добавить метки