Сканер штрихкода. Как он работает?

Попал мне в руки сканер штрих-кода. В общем-то старая модель, 2002 года. Но в сканерах немногое с тех пор изменилось, и для понимания принципа действия подойдет.



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

Как оказалось, проблема не стоит и выеденного яйца — надо двигать не сканер, и не штрих-код. Надо двигать подсветку!



Пытаемся получить фотографию луча:


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

Смысл вы поняли? Сложно, но тем не менее, невероятно просто. Луч лазера, который двигает микроконтроллер, проходит попеременно светлые и темные участки штрих-кода. Известна скорость луча, известно время начало движения. А простой фотоприемник(с красным фильтром), опрашивается тем же контроллером на предмет яркости пятна. В тот момент, когда луч проходит светлый участок, яркость максимальна — весь свет отражается в фотоприемник. Когда же свет попадает на темный участок(полоску) штрих-кода, яркость минимальна, большая часть излучения поглощается темной краской.



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


Ага, попался. Третьего луча не видно, потому что с точки зрения фотоаппарата, да и глаза, это не луч, а сектор круга, соответственно, яркость намного снижена.


Зеленым пунктиром обозначены возможные положения зеркала, синими стрелками — колебания зеркала и луча на выходе, красной линией и пунктиром — путь прохождения луча.

Плата, еще плата:



В полусборе выглядит так:


В качестве разъема используется 10P10C:


Модель и внешний вид:



Подключается он по стандартному разьему PS/2, эмулирует клавиатуру, после штрих-кода выдает ентер. Это позволяет записывать коды хоть в блокнот.




  • +15
  • 08 марта 2011, 18:07
  • vvzvlad

Комментарии (54)

RSS свернуть / развернуть
Спасибо за обзор! Меня самого раньше терзала идея насчет того каким образом они работают.
0
Спасибо. Всю жизнь мучался, не знал, как оно работает.
0
Да, бедный ты бедный, мученик наш :)
+2
Да, страдал, ночами не спал)
0
Отличная статейка
0
Статья не открыла сути. Даже не ответила на Ваши мысли «просто фото-приемником не обойтись, придется использовать либо камеру с оптикой, и сложный софт для распознавания, либо проводить тонкой щелью „
Я ожидал найти в этом посте принцип функционала распознавания самого штрих-кода, а не принцип позиционирования
>>>>>Но в сканерах немногое с тех пор изменилось
В современных ручных так и осталось разве что элементная база поменялась, а в настольных, например Магеланах крутится призма и там сложная система зеркал.
0
ну, как стало понятно — можно обойтись и фотоприемником, считывая яркость луча в известные промежутки времени. принцип распознавания — это уже математика, а мне была интересна сама идея.

разбирал я настольный. тоже самое, только лазеров больше, призма крутится, на каждую полосу — свой датчик. ну и сложная система синхронизации всего этого добра
0
В том то и дело что не понятно. Вы лишь изложили суть позиционирования лазера. Про «можно обойтись и фотоприемником, считывая яркость » слова не было. А из фразы «надо двигать не сканер, и не штрих-код. Надо двигать подсветку!» совсем не делается вывод что «можно обойтись и фотоприемником, считывая яркость ».
Я лишь излагаю свою критику. Знающие люди проглотят эту статью додумав недостающее сами, либо проглотят не заметив.
Начинающим или незнающим эту тему будет сложно понять.
0
так лучше? действительно, что-то я про принцип и не написал. посыпаю голову пеплом.
0
Супер! Плюс за статью!
0
А мне попался сканер без лазера, но со светодиодами… И приемником там была ПЗС-матрица длиной с отпечаток штрих-кода. То есть вариантов исполнения сканеров масса, главное — что и как они передают в ПК.
0
ага, читал про такие. фоток не осталось? там, насколько я помню светодиоды загорались поочередно, и в хитром порядке. а дальше — матан.
0
Фоток пока нет потому что один лежит уже разобранный на запчасти, а вот второй — целый, но несфотографированный :)
0
Хм… А вот никто не даст ссылки на собственно сам формат торгового штрих-кода?
0
  • avatar
  • _YS_
  • 08 марта 2011, 21:25
Их превеликое множество. Но в основной части применяют EAN-13
0
Вот как раз множество-то и смущает. Я уже мучал гугл на эту тему, но так и не смог понять, какой же тип кода применяется на самых обычных товарах в магазинах. EAN-13, говорите?
0
Да, на весах в штрих коде кодируется вес и артикул, а штучный товар только артикул.
0
я бы заменил слово артикул на словосочетание «код товара в базе ТУ магазина»
0
угу)))
0
В качестве разьема решили не заморачиваться, и использовали RG45
там 10 контактов.

Подключается он по стандартному разьему PS/2

а так же по RS232 и USB (HID или RS232 эмуляция)

после штрих-кода выдает ентер
а может и до. и не только энтер. Что жать в начале (до 3-х символов для Voyager, что у вас) и в конце настраивают с помощью настроечных шк
0
там 10 контактов.
поправил.

а так же по RS232 и USB (HID или RS232 эмуляция)
так usb там нет вообще?

а может и до. и не только энтер. Что жать в начале (до 3-х символов для Voyager, что у вас) и в конце настраивают с помощью настроечных шк
о. спасибо, интересно.
0
USB как интерфейс там есть. Просто такой сканер в системе распознается либо как клавиатурный (чаще), либо как USB->RS232

А еще интереснее вариант когда сканер распознается как HID, но по спец комбинации в начале посылки драйвер распознает это как посылку со сканера и эмулирует RS232.
0
ну в этом конкретном же нет? на плате не нашел ничего похожего.
0
Модели Metrologic (ныне Honeywell) свежего года выпуска поддерживают работу с несколькими интерфейсами. Меняешь кабель, сканируешь шк и у тебя сканер с RS232.
0
А что такое шк?
0
Штрих-код
0
еще хочу дополнить — что именно выдает сканер наружу (код + перед строки итд), обычно в достаточно широких пределах настраивается через сканирование специальных кодов из его инструкции :)
0
Угу и называется это префиксом и суфиксом.
0
помнится мне, не только префиксы и суфисксы бывают, еще какие-то штуки встречал.

Но в данном случае не суть важно. Важно, чтоб любопытные в инструкцию не забывали заглядывать :)
0
Куда то сдриснули все картинки. Видать пикаса зажмотила. Ты бы их или в пост загрузил или на habreffect.ru/ загрузил.
0
да, не это синхронизация так «удачно» прошла. сейчас верну.
0
хорошо! Теперь я знаю, как ЭТО работает)
А почему я не могу проголосовать за эту статью?
+1
Вам не хватает рейтинга, нужно написать какую-нибудь статью и получить за неё плюсов.
0
о, понятно :-)… бум писать
+1
Описание, классификация и принцип работы сканеров штрих-кода www.bar-code.ru/state_scaner.html, www.jasmi.ru/automation/scan.html.
Может кто самодельный сканер сделал или делает. Готовые то стоят мама не горюй. А содержимое а ля мышка компьютерная… Тема то интересная и востребованная. Домашняя библиотека, картотека, мини склад радиодеталей по коробкам и пакетикам (в смысле учёт)…
0
500 рублей — не настолько много, чтоб заморачиваться с самоделкой.

кто будет смотреть — у второй ссылке точка в конце, уберите прежде чем открывать.
0
Я имел ввиду нормальный «лазерный» сканер, совместимый, стабильно считывающий, USB.
0
если делать «лазерный» и юсб, то тоже 500 рублями не обойдешся.
юсб есть за 700 с копейками.
0
Хотелось бы альтернативу www.scancode.ru/catalog/item/13/353/
Ну или что то близкое. Если это реально кустарным способом сделать…
0
ну, сделать-то реально. вопрос только в блоке развертки(который с зеркалами и лазером). да и бт прикрутить не проблема. только вот обойдется это дороже, чем аналогичное промышленное решение :)
0
Примерно таким образом www.un7ppx.narod.ru/device1/indicator26.htm
Только с учётом современной элементной базы.
0
Зачем? какие задачи дома может решать сканер в виде ручки?

это не рфид, и не датаматрикс, количество символов кода довольно ограничено(особенно с применением такого конструктива). что можно считывать, чего нельзя прочитать?
0
Покопался в интернете (не глубоко) и дешевле 3000 рублей новый промышленный не нашёл.
0
www.sunsky-online.com/list/100906.htm
и инфракрасные, и лазерные, и юсб.
0
Спасибо. А это чудо китайской техники будет работать например с 1С без проблем…
0
1с — это домашнее применение?)
скорее всего будет, китайцы не дураки, и вряд ли стали что-то мутить с протоколами. да и настроить наверняка можно.
ну вот этот точно будет — www.sunsky-online.com/view/20442/PS2+Barcode+Scanner+Laser+Reader+Metrologic.htm
раз он ps2, значит эмулирует клавиатуру.
0
Стоимость доставки у китайцев тоже не слабая…
0
9 долларов? нормально. выбирайте China Post, один хрен 20 дней идет.
0
Понял. Спасибо.
0
Кстати, а у девайса на фотках где фотодатчик?
0
  • avatar
  • Vga
  • 25 марта 2011, 05:27
на 6 фотке, слева темная фмгня пластмассовая. там два фотодиода.
0
тьфу, справа.
0
Светодиодные не имеют такого подвижного зеркала.

В современных все чаще стоит камера, что бы 2-D читать и с экранов мобильников считывать инфу.
-1
на год не посмотрел
+1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.