roboforum.ru

Технический форум по робототехнике.

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

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Re: Оптический энкодер.

Сообщение SMT » 12 апр 2010, 01:59

dabo писал(а):SMT
так и не понял


на твоем фото лейбл с названием компании
Advanced-rotary-sensors-label.jpg
Advanced-rotary-sensors-label.jpg (25.82 КиБ) Просмотров: 1988

Эта компания, возможно, выпускает (или выпускала) энкодеры типа TS1605 (сейчас среди их продуктов есть типы TS5...)
Если некоторые из их энкодеров используют Smartcoder (как описано в упомянутом документе), возможно он используется и в твоей железке. Возможно в других типах они эта система не используется. Просто предположение - на основе результатов поиска гуглом :)
SMT
 
Сообщения: 1158
Зарегистрирован: 23 авг 2008, 22:28
Откуда: Санкт-Петербург
ФИО: Сергей

Re: Оптический энкодер.

Сообщение dabo » 12 апр 2010, 09:19

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

Вопрос в том как правильно считать и вывести код с выходов датчика и может ли в нем не быть последовательности?
Последний раз редактировалось blindman 12 апр 2010, 09:58, всего редактировалось 1 раз.
Причина: Излишнее цитирование!!! В следующий раз выпишу предупреждение
dabo
 
Сообщения: 22
Зарегистрирован: 06 апр 2010, 13:44

Re: Оптический энкодер.

Сообщение zubr » 12 апр 2010, 11:10

так ты выложи свой код
и выложи результат
и посмотрим есть там последовательность или нет
иначе сложно твоими глазами ее искать..
За здравый смысл у нас принимается мнение большинства.
zubr
 
Сообщения: 431
Зарегистрирован: 20 ноя 2008, 19:31
Откуда: Чернобыль
прог. языки: асмемблер
ФИО: Валентин Семенович

Re: Оптический энкодер.

Сообщение dabo » 16 апр 2010, 17:13

zubr
A0 и A1 для того чтобы выводить только если поверну датчик, ничего умней не придумал


while (1)
{
A0=A1;
A1=PINC.0;
if (A0!=A1){
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\r" ,PINC.0,PINC.1,PINC.2,PINC.3,PINC.4,PINC.5,PINC.6,PINC.7,PINA.0,PINA.1,PINA.2,PINA.3,PINA.4,PINA.5,PINA.6,);
}
};
}

Добавлено спустя 4 минуты:
Да, ещё списался с япошками
Вложения
датчик.JPG
Получается по спецификации, код грея, за один оборот 2048 позиций
датчик.JPG (16.25 КиБ) Просмотров: 1932
код.JPG
то что вижу
код.JPG (22.3 КиБ) Просмотров: 1932
dabo
 
Сообщения: 22
Зарегистрирован: 06 апр 2010, 13:44

Re: Оптический энкодер.

Сообщение Ворон » 18 апр 2010, 05:11

тебя не сильно затруднит выложить весь код грея картинкой или архивои на все позиции?)) :oops:
Ворон
 
Сообщения: 1054
Зарегистрирован: 24 ноя 2008, 19:43
Откуда: Казань

Re: Оптический энкодер.

Сообщение dabo » 18 апр 2010, 18:12

Дело в том что я и хочу вывести на экран весь код. без пропусков
А таким способ как я делаю походу вывожу только часть
Помогите
dabo
 
Сообщения: 22
Зарегистрирован: 06 апр 2010, 13:44

Re: Оптический энкодер.

Сообщение Ворон » 19 апр 2010, 11:57

непереживай при нескольких циклах врашения повтор будет))а вращай ну через редуктор какой от игрушки равномерность же не важна))важна последовательность импульсов)) а ее мк считать то всегда сможет))и/или передать на комп))а уж комп то пусть тупо число в файл добавит или в массив))хоть 16 виде хоть в двоичном))хоть пусть БМП картинку рисует по пикселам)разници никакой)

Добавлено спустя 1 минуту 38 секунд:
мне такой код линейно расположеный нужен проста)))))
Ворон
 
Сообщения: 1054
Зарегистрирован: 24 ноя 2008, 19:43
Откуда: Казань

Re: Оптический энкодер.

Сообщение Michael_K » 19 апр 2010, 12:47

Так а что вас не устраивает?
Первый бит у вас не относится к коду грея (это просто строб какой-то).

А остальные биты - чистый код грея.
Меняется в каждый момент только один бит.
Пропусков у вас нету никаких.

gray.JPG
gray.JPG (22.77 КиБ) Просмотров: 1874


все тут чистенько.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Оптический энкодер.

Сообщение dabo » 19 апр 2010, 13:09

Michael_K

Спасибо за интересное замечание. И находку.
Первый бит просто меняется постоянно 2048 раз за оборот.
Соответственно проблема в том как вывести на монитор все 2048 позиций
Моим способом почему то выводиться раз в 10 меньше
Вложения
харки.JPG
dabo
 
Сообщения: 22
Зарегистрирован: 06 апр 2010, 13:44

Re: Оптический энкодер.

Сообщение Michael_K » 19 апр 2010, 16:02

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

Как-то так примерно:

Код: Выделить всёРазвернуть
code = GetGreyCodeFromEncoder();
for(i=1;i<n;i++) // n - это количество бит в вашем коде
{
   code ^= (code>>1);
}
// Теперь code перекодирована из грея в номер позиции.


Вообще, не понял ваших трудностей. :pardon:

Добавлено спустя 2 минуты 21 секунду:
Моим способом почему то выводиться раз в 10 меньше

Каким еще "вашим способом"? Вы код видите - он без пропусков...
Как уж там вы его выводите в монитор - это только вам известно :pardon:
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Оптический энкодер.

Сообщение vadinator » 19 апр 2010, 17:25

Первый бит повесьте на прерывание по изменении сигнала... и мееедддлллееенннооо вращайте, лучше мотором через редуктор.
ЗЫ...Заодно, считайте количество прерываний...на небольшой скорости, можно выводить в последовательный порт и номер отсчёта заодно...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

Re: Оптический энкодер.

Сообщение dabo » 20 апр 2010, 19:28

Michael_K

Про перевод из кода грея, находил. Спасибо.

Проблема в том чтобы пока я кручу вал, делая один оборот.
На мониторе я увидел все 2048 комбинаций кода с датчика


vadinator

Не могу найти пример на Си про прерывания.
dabo
 
Сообщения: 22
Зарегистрирован: 06 апр 2010, 13:44

Re: Оптический энкодер.

Сообщение zubr » 20 апр 2010, 20:00

Забудь про прерывания.
Это плохой совет был. Иначе еще одним верующим в потусторонние силы больше станет.
Сначалы с выводом разобраться бы тебе.

А у тебя там редуктора нету?
Неужели твоя терминалка больше 2048 строк не вмещает? Или у тебя особый(S/M) канал вывода?
За здравый смысл у нас принимается мнение большинства.
zubr
 
Сообщения: 431
Зарегистрирован: 20 ноя 2008, 19:31
Откуда: Чернобыль
прог. языки: асмемблер
ФИО: Валентин Семенович

Re: Оптический энкодер.

Сообщение dabo » 20 апр 2010, 20:10

zubr

Терминалка вмещает.
Но вот таким способом если дописать счетчик (переменную n) я вижу не 2048 а где то 150-200 выводов на экран терминалки

while (1)
{
A0=A1;
A1=PINC.0;
if (A0!=A1){
n++;
printf("%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d\r" ,PINC.0,PINC.1,PINC.2,PINC.3,PINC.4,PINC.5,PINC.6,PINC.7,PINA.0,PINA.1,PINA.2,PINA.3,PINA.4,PINA.5,PINA.6,);
printf("%d",n);
}
};
}
Почему обязательно нужен редуктор?
dabo
 
Сообщения: 22
Зарегистрирован: 06 апр 2010, 13:44

Re: Оптический энкодер.

Сообщение Michael_K » 20 апр 2010, 20:33

как мне кажется, вы упираетесь в скорость вывода.

допустим вы передаете на каждое состояние 16 байт (15 цифр и CR) на скорости 115200
Даже если не учитывать, что принтф занимает время, допустить, что передача идет непрерывно и т.д.,
то получается, что вы не можете передавать более 720 состояний в секунду.
Это означает, что самая максимальная-премаксимальная скорость вращения вала будет порядка
один оборот за три секунды... это если вращать ОЧЕНЬ равномерно - иначе пропуски неизбежны.

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

А если у вас скорость передачи, скажем, 19200, то вращать нужно еще в шесть раз медленнее
(порядка 3 об/минуту)...

Вот ваши ограничения - поэтому и редуктор вам рекомендуют... прерывания-то конечно можно использовать,
но дело имхо не в этом.
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Пред.След.

Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron