Энкодеры — датчики угла поворота

Содержание

Подключение поворотного энкодера с Ардуино

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

Для этого понадобятся:

  • любое устройство Ардуино, например, Arduino UNO, Arduino Mega, Arduino Leonardo, Arduino 101, Arduino Due;
  • любой энкодер Ардуино.

Обзор поворотного энкодера

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

Энкодеры - датчики угла поворота

Пины, и что они означают:

  • CLK: выход A (цифровой);
  • DT: выход B (цифровой);
  • SW: нажатие кнопки (цифровой);
  • + : VCC-напряжение питания;
  • GND: заземление.

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

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

Чтобы определить направление и проверить, вращается ли штифт по часовой стрелке или против часовой стрелки, нужно сделать следующее:

  • Если вращающийся вал движется по часовой стрелке, то сигнал A опережает B. В одни и те же моменты времени, A и B будут находиться на противоположных частях прямоугольной волновой функции.
  • Если вал движется против часовой стрелки, то сигнал B опережает A.

Подключение

Если говорить в общем, то CLK, DT и SW, должны быть подключены к цифровым выводам на Ардуино, + должен быть подключен к 5V, а GND заземлен.

Пошаговая инструкция подключения проводов энкодера к Ардуино:

  1. CLK: подключите конец провода к пину CLK на поворотном энкодере, затем к любому цифровому выводу на Arduino (оранжевый провод).
  2. DT: подключите конец провода к пину DT, затем к любому цифровому контакту на Arduino (желтый провод).
  3. SW: подключите конец провода к пину SW, далее к любому цифровому контакту на Arduino (голубой провод).
  4. + : подключите провод к пину +, затем к контакту +5V на Arduino (красный провод).
  5. GND: подключите конец провода к пину GND на энкодер с контактом GND на Arduino. (Черный провод).

Как кодировать

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

Что понадобится:

  • датчик поворотного энкодера;
  • Ардуино;
  • пьезодатчик;
  • провода.

Вот сам код:

Описание кода

Итак, сначала нужно определить контакты, к которым подключен кодер, и назначить некоторые переменные, необходимые для работы программы. В разделе «Настройки» нужно определить два контакта в качестве входных данных, и запустить последовательную связь для печати результатов на последовательном мониторе. Также нужно прочитать начальное значение вывода A, затем поместить это значение в переменную aLastState.

Далее в разделе цикла снова изменить вывод A, но теперь поместить значение в переменную aState. Таким образом, если повернуть вал и сгенерировать импульс, эти два значения будут отличаться. Сразу после этого, используя второй параметр «if», определить направление вращения. Если выходное состояние B отличается от A, счетчик будет увеличен на единицу, в противном случае он будет уменьшен. В конце, после вывода результатов на мониторе, нужно обновить переменную aLastState с помощью переменной aState.

Это все, что нужно для этого примера. Если загрузить код, запустить монитор и начать вращать вал, значения станут отображаться на мониторе.

Упрощенный пример

Следующий пример кода продемонстрирует, как считывает сигналы Arduino на датчике энкодера. Он просто обновляет счетчик (encoder0Pos) каждый раз, когда энкодер поворачивается на один шаг, а параметры вращения отправляются на порт ПК.

Код:
Следует обратить внимание на то, что приведенный выше код не является высокопроизводительным. Он предоставлен для демонстрационных целей

Монтаж энкодеров

По монтажу сразу скажу главное – вал энкодера по отношению к валу механизма должен быть надежно зафиксирован!  Обычно это делается при помощи шестигранных винтов.

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

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

Энкодеры - датчики угла поворота

Энкодер механически соединен с приводом через соединительную муфту для компенсации несоосности

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

Энкодеры - датчики угла поворота

Энкодер с полым валом, надет на вал редуктора

Обратите внимание – корпус энкодера целиком и полностью держится на валу редуктора. От проворачивания его держит металлический поводок

Популярные статьи  В розетке ток постоянный или переменный

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

Бывают сквозные полые валы, когда ось механизма проходит через энкодер насквозь.

Дальнейшее описание, включая форму волны энкодера

Ниже приведено изображение, показывающее формы сигналов каналов A и B кодера:

Энкодеры - датчики угла поворота

Это может прояснить, как работает выше указанный код. Когда устройство обнаруживает переход от низкого к высокому уровню на канале A, он проверяет, перешел ли канал к B высоким или низким уровням. Затем происходит увеличение/уменьшение переменной, чтобы учесть направление, в котором кодер должен вращаться. Это нужно, чтобы генерировать найденную форму волны. Также на изображении показаны переходы красным или зеленым цветом. Они зависят от того, в каком направлении движется кодировщик.

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

Руководство по энкодерам и тому, как оно подключается к Ардуино, закончилось. Благодаря этому можно получить общее представление о том, что из себя представляют данные устройства, и как они работают.

Типы приборов

Устройства бывают нескольких типов. Типы энкодеров: инкрементальные и абсолютные, оптические и механические. Далее будет рассмотрено, что такое энкодер инкрементального типа, а затем обозрены другие типы.

Инкрементальные энкодеры

Они распространены больше всего. В инкрементальном варианте вращательное движение вала преобразовывается в электрические импульсы. Его конструкция состоит из диска с прорезями и оптических датчиков.

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

Энкодеры - датчики угла поворота

Этот вид работает следующим образом. У него есть начальная нуль-метка, или выход Z, и два дополнительных выхода — A и B. Датчик создает две линии сигналов со смещенными на четверть фазы импульсами относительно друг друга. Разница импульсов указывает на направление вращения, а их количество — на угол поворота.

Энкодеры - датчики угла поворота

Разновидность инкрементальных энкодеров — сдвоенные, или квадратурные. Они состоят из двух датчиков, которые срабатывают со смещением в полшага. Квадратурные считают количество импульсов и учитывают направление.

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

Абсолютные энкодеры

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

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

Энкодеры - датчики угла поворота

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

Единственный существенный недостаток этого типа угловых датчиков — необходимость все время переводить код Грея в двоичный код для регистрации положения датчика.

Многооборотные датчики поворота

Абсолютные энкодеры могут быть однооборотными и многооборотными.

Однооборотные показывают абсолютное значение после одного оборота. После этого код возвращается к начальному значению. Такие датчики используют в основном для измерения угла поворота.

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

Оптические энкодеры

Диск оптического энкодера изготавливают из стекла. Отличие этого типа угловых датчиков, в наличии оптического растора, перемещающегося при вращении вала. При этом он создает поток света, который регистрирует фотодатчик.

Энкодеры - датчики угла поворота

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

Оптические угловые датчики бывают фотоэлектрическими и магнитными.

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

Фотоэлектрические датчики основаны на том же принципе. В них свет преобразуется в электрические сигналы.

Механические энкодеры

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

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

Типы поворотных энкодеров и как они работают

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

Механический поворотный энкодер

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

Энкодеры - датчики угла поворота

Механический поворотный энкодер — это распространенный, недорогой вариант, который состоит из металлического диска и работает следующим образом:

  1. Металлический диск, расположенный на вале, используется вместе со стационарным подборщиком и вращается.
  2. Во время вращения, создается уникальный сигнал преобразуемый в код.
  3. Это означает, что каждое изменение положения фиксируется.
  4. Код используется для определения точного положения вала.

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

Оптические поворотные энкодеры

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

Энкодеры - датчики угла поворота

Процесс определения положения с помощью оптических энкодеров:

  1. Диск, прикрепленный к валу, вращается.
  2. В зависимости от положения диска, проходящий свет либо пропускается, либо блокируется.
  3. Полученный проходящий свет преобразуется в электрический сигнал.
  4. Преобразованный сигнал затем становится цифровым. Это используется для определения положения, скорости, угла и прочих параметров.

Магнитные энкодеры

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

Энкодеры - датчики угла поворота

Процесс определения положения с помощью магнитных энкодеров:

  1. Присоединенный диск вращается.
  2. Магнитные датчики обнаруживают изменение магнитного поля из-за вращения.
  3. Такие изменения преобразуются в синусоидальные волны и преобразуются в цифровые сигналы для получения желаемого результата.

Выбор лучших энкодеров для Ардуино

Чтобы упростить процесс выбора энкодера к Arduino, здесь будет подборка каждого варианта.

Поворотный энкодер EC11

Энкодеры - датчики угла поворота

Нужен простой угловой энкодер, который поможет начать распознавать вращающийся вал с помощью Ардуино? Тогда стоит выбрать EC11.

Устройство имеет в общей сложности 5 контактов, 3 с одной стороны для вращательного кодирования, которым требуется простая цепь для подачи постоянного тока 5В. Два других замыкаются при нажатии, поэтому нет недостатка в какой-либо функциональности при использовании этого энкодера с Ардуино.

Магнитный энкодер Grove AS5600

Нужно устройство, которое может одновременно работать как магнитный потенциометр или магнитный энкодер с отличной надежностью и долговечностью? Тогда это устройство отлично подойдет.

Энкодеры - датчики угла поворота

Оно не только работает в обоих направлениях, но по сравнению с традиционным энкодером/потенциометром, Grove AS5600 бесконтактный, без ограничения угла поворота, обеспечивает высокоточный сигнал. Все это стало возможным благодаря встроенному AS5600, основанному на эффекте Холла.

Grove — оптический поворотный прибор

Этот оптический датчик угла поворота (для уно, нано и других) включает в себя инфракрасный излучатель и два фототранзисторных детектора. Подходит не только для определения скорости/вращения, но и для определения направления вращения.

Энкодеры - датчики угла поворота

Его особенности:

  • двойные фототранзисторные детекторы, могут определять направление вращения;
  • встроенные светодиодные индикаторы;
  • интерфейс Grove для простоты использования с Ардуино.

Инкрементальный энкодер

Инкрементальный энкодер

Две прямоугольные волны в квадратуре. Направление вращения обозначается знаком фазового угла AB, который в данном случае отрицательный, потому что A следует за B.

Концептуальный чертеж механизма датчика углового инкрементного энкодера с соответствующими логическими состояниями сигналов A и B

Вращающийся инкрементальный энкодер является наиболее широко используемым все энкодерами благодаря своей способности предоставлять информацию о местоположении в реальное время. Разрешение измерения инкрементального энкодера никоим образом не ограничивается его двумя внутренними инкрементными датчиками движения; на рынке можно найти инкрементальные энкодеры с числом отсчетов до 10 000 на оборот или более.

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

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

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

Некоторые инкрементальные энкодеры имеют дополнительный «индексный» выход (обычно обозначаемый Z), который излучает импульс, когда вал проходит под определенным углом. После каждого поворота сигнал Z утверждается, обычно всегда под одним и тем же углом, до следующего изменения состояния AB. Это обычно используется в радиолокационных системах и других приложениях, где требуется регистрационный сигнал, когда вал энкодера расположен под определенным опорным углом.

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

Недорогие инкрементальные энкодеры используются в . Обычно используются два кодировщика: один для определения движения влево-вправо, а другой для определения движения вперед-назад.

Другие поворотные энкодеры с импульсным выходом

Датчики вращения с одним выходом (например, тахометры ) не могут использоваться для определения направления движения, но подходят для измерения скорости и положения при постоянном направлении движения. В некоторых приложениях они могут использоваться для измерения расстояния движения (например, футов движения).

Что такое энкодер?

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

  • скорость вращения,
  • расстояние (длину),
  • направление вращения,
  • угловое положение по отношению к нулевой метке.

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

Популярные статьи  Что такое система АСКУЭ, расшифровка термина, принцип работы АСКУЭ

Энкодеры - датчики угла поворота

Этикетка инкрементного энкодера Sick, установленного на валу двигателя постоянного тока. Основной параметр – 1024 импульса на оборот

Энкодеру найдено множество применений, учитывая возможности последующей обработки его сигнала. Например – измерение погонной длины какого-либо материала, измерение угла открытия/закрытия задвижки, точное позиционирование деталей при перемещении и обработке. Конкретные примеры будут ниже.

Энкодеры, о которых идёт речь в статье,  в некоторых источниках называются датчиками углового перемещения, датчиками угла поворота, и даже “N-кодером”.

Монтаж и подключение датчиков поворота

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

Важно прочно закрепить корпус датчика при монтаже

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

Энкодеры - датчики угла поворота

Варианты подключения

В самом простом варианте, энкодер подключают к счетчику, запрограммированному измерять скорость.

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

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

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

После подключения желательно проверить все мультиметром.

Технологии

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

  • Механический : также известен как токопроводящие энкодеры. Серия кольцевых медных дорожек, вытравленных на печатной плате, используется для кодирования информации с помощью контактных щеток, считывающих проводящие области. Механические энкодеры экономичны, но подвержены механическому износу. Они распространены в человеческих интерфейсах, таких как цифровые мультиметры .
  • Оптический : здесь используется свет, падающий на фотодиод через прорези в металлическом или стеклянном диске. Также существуют светоотражающие версии. Это одна из самых распространенных технологий. Оптические энкодеры очень чувствительны к пыли.
  • Осевой магнитный : в этой технологии обычно используется специально намагниченный двухполюсный неодимовый магнит, прикрепленный к валу двигателя. Поскольку он может быть прикреплен к концу вала, он может работать с двигателями, у которых только 1 вал выходит из корпуса двигателя. Точность может варьироваться от нескольких градусов до менее 1 градуса. Разрешение может составлять от 1 градуса до 0,09 градуса (4000 CPR, количество за оборот). Плохо спроектированная внутренняя интерполяция может вызвать дрожание на выходе, но это можно преодолеть с помощью внутреннего усреднения выборки.
  • Внеосевой магнитный : в этой технологии обычно используются ферритовые магниты на резиновой связке, прикрепленные к металлической втулке. Это обеспечивает гибкость дизайна и низкую стоимость для индивидуальных приложений. Благодаря гибкости многих микросхем внеосевого энкодера, они могут быть запрограммированы на прием любого числа полюсов ширины, поэтому микросхему можно разместить в любом положении, требуемом для приложения. Магнитные энкодеры работают в суровых условиях, когда оптические энкодеры не работают.

Оптикоэлектронные датчики углового положения (энкодеры)

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

Энкодеры - датчики угла поворота

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

Энкодеры - датчики угла поворота

Слева (голубой) диск инкрементального энкодера, 2 фотодатчика и «сдвинутые» прорези позволяют опредеить направление вращения вала. Справа (зеленый) диск абсолютного энкодера. В приведенном примере это 3-х битный абсолютный энкодер, с прорезями на диске соответствующих коду Грея. Абсолютный энкодер позволяет определить точное угловое положение вала в любой момент.

Основные типы

Абсолютный

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

Абсолютный энкодер имеет несколько кодовых колец с различными двоичными весами, которые обеспечивают слово данных, представляющее абсолютное положение энкодера в пределах одного оборота. Этот тип энкодера часто называют параллельным абсолютным энкодером.

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

Инкрементальный

Инкрементальный энкодер

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

Оцените статью
Добавить комментарии

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: