roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 12:53

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 12 апр 2010, 01:59 
Не в сети

Зарегистрирован: 23 авг 2008, 22:28
Сообщения: 1158
Откуда: Санкт-Петербург
ФИО: Сергей
dabo писал(а):
SMT
так и не понял


на твоем фото лейбл с названием компании
Вложение:
Advanced-rotary-sensors-label.jpg
Advanced-rotary-sensors-label.jpg [ 25.82 КиБ | Просмотров: 2166 ]

Эта компания, возможно, выпускает (или выпускала) энкодеры типа TS1605 (сейчас среди их продуктов есть типы TS5...)
Если некоторые из их энкодеров используют Smartcoder (как описано в упомянутом документе), возможно он используется и в твоей железке. Возможно в других типах они эта система не используется. Просто предположение - на основе результатов поиска гуглом :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 12 апр 2010, 09:19 
Не в сети

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

Вопрос в том как правильно считать и вывести код с выходов датчика и может ли в нем не быть последовательности?


Последний раз редактировалось blindman 12 апр 2010, 09:58, всего редактировалось 1 раз.
Излишнее цитирование!!! В следующий раз выпишу предупреждение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 12 апр 2010, 11:10 
Не в сети

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

_________________
За здравый смысл у нас принимается мнение большинства.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 16 апр 2010, 17:13 
Не в сети

Зарегистрирован: 06 апр 2010, 13:44
Сообщения: 22
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 минуты:
Да, ещё списался с япошками


Вложения:
Комментарий к файлу: Получается по спецификации, код грея, за один оборот 2048 позиций
датчик.JPG
датчик.JPG [ 16.25 КиБ | Просмотров: 2111 ]
Комментарий к файлу: то что вижу
код.JPG
код.JPG [ 22.3 КиБ | Просмотров: 2111 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 18 апр 2010, 05:11 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 18 апр 2010, 18:12 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 19 апр 2010, 11:57 
Не в сети

Зарегистрирован: 24 ноя 2008, 19:43
Сообщения: 1054
Откуда: Казань
непереживай при нескольких циклах врашения повтор будет))а вращай ну через редуктор какой от игрушки равномерность же не важна))важна последовательность импульсов)) а ее мк считать то всегда сможет))и/или передать на комп))а уж комп то пусть тупо число в файл добавит или в массив))хоть 16 виде хоть в двоичном))хоть пусть БМП картинку рисует по пикселам)разници никакой)

Добавлено спустя 1 минуту 38 секунд:
мне такой код линейно расположеный нужен проста)))))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 19 апр 2010, 12:47 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Так а что вас не устраивает?
Первый бит у вас не относится к коду грея (это просто строб какой-то).

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

Вложение:
gray.JPG
gray.JPG [ 22.77 КиБ | Просмотров: 2051 ]


все тут чистенько.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 19 апр 2010, 13:09 
Не в сети

Зарегистрирован: 06 апр 2010, 13:44
Сообщения: 22
Michael_K

Спасибо за интересное замечание. И находку.
Первый бит просто меняется постоянно 2048 раз за оборот.
Соответственно проблема в том как вывести на монитор все 2048 позиций
Моим способом почему то выводиться раз в 10 меньше


Вложения:
харки.JPG
харки.JPG [ 166.28 КиБ | Просмотров: 2093 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 19 апр 2010, 16:02 
Не в сети
Аватара пользователя

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

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

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


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

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

Каким еще "вашим способом"? Вы код видите - он без пропусков...
Как уж там вы его выводите в монитор - это только вам известно :pardon:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 19 апр 2010, 17:25 
Не в сети
Аватара пользователя

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

_________________
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 20 апр 2010, 19:28 
Не в сети

Зарегистрирован: 06 апр 2010, 13:44
Сообщения: 22
Michael_K

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

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


vadinator

Не могу найти пример на Си про прерывания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 20 апр 2010, 20:00 
Не в сети

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

А у тебя там редуктора нету?
Неужели твоя терминалка больше 2048 строк не вмещает? Или у тебя особый(S/M) канал вывода?

_________________
За здравый смысл у нас принимается мнение большинства.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 20 апр 2010, 20:10 
Не в сети

Зарегистрирован: 06 апр 2010, 13:44
Сообщения: 22
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);
}
};
}
Почему обязательно нужен редуктор?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 20 апр 2010, 20:33 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
как мне кажется, вы упираетесь в скорость вывода.

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

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

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

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 4 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO