roboforum.ru

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

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




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

Зарегистрирован: 06 апр 2010, 13:44
Сообщения: 22
Люди местные, Здравствуйте.
Есть у меня вот такой вот датчик. (см фото) (контроллер Mega32)
Работает сейчас это так:
Выставляю датчик в положение 1. Нажимаю кнопку запоминаю позицию 1. Выставляю датчик во второе положение (строго по часовой стрелке). Нажимаю кнопку запоминаю позицию 2. Нажимаю кнопку старт, двигатель начинает крутить датчик против часовой стрелки доходит до позиции 1 и движется к позиции 2, и так от одной точки к другой.

Помогите разобраться с ним более доскональна...
Есть несколько вопросов:
Нужно разобраться с кодом с датчика. Возможно ли такое что последовательности кода нет?
Сейчас все 15 выходов привязаны к портам С и А
Как мне вывести все данные с датчика (чтоб посмотреть последовательность) не потеряв какое нибудь из них и последовательность?
Датчик много оборотный.В датчике два диска.Даже если учесть что с первого диск 10 бит а со второго диска 5. Минимальный угол получается 360/1024=0,35 градуса.
Просто есть мысли что так неправильно получится ptintf("A0=%d A1=%d .....",PINA.0,PINA.1......); К тому же если я чуть двину вал датчика в обратную сторону то опять же косяк.

Сразу ещё вопрос, возможно ли измерять скорость?


Вложения:
Комментарий к файлу: Датчик и двигатель
16032010016.jpg
16032010016.jpg [ 89.22 КиБ | Просмотров: 3925 ]
Комментарий к файлу: Датчик
16032010012.jpg
16032010012.jpg [ 99.46 КиБ | Просмотров: 3936 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Оптический энкодер.
СообщениеДобавлено: 06 апр 2010, 14:33 
Не в сети

Зарегистрирован: 20 ноя 2008, 19:31
Сообщения: 431
Откуда: Чернобыль
прог. языки: асмемблер
ФИО: Валентин Семенович
почитай про код грея http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%93%D1%80%D0%B5%D1%8F

если есть таймер в контроллере - можно мерить скорость

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


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

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


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

Зарегистрирован: 08 фев 2009, 10:13
Сообщения: 700
Откуда: Воротынск
прог. языки: C,C++,C#,Java
ФИО: Дмитрий
ИМХО, тема не соответствует разделу. :)

_________________
Язык Ада - официально был признан министерством обороны США для создания ПО военной техники


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

Зарегистрирован: 06 апр 2010, 13:44
Сообщения: 22
Это я тоже думал, что не соответствует. Извините
А как перекинуть и куда?


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

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

А ерунда может быть на выходе потому что, например, если энкодер сломан :)))

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


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

Зарегистрирован: 06 апр 2010, 13:44
Сообщения: 22
Энкодеров у меня несколько)))

Так вопрос в том, как правильно посмотреть битики?

То что по порядку они выстроены я проверял.


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

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

теперь возми второй бит. ....

так пока все биты не кончатся.
В конце передай в порт "\n"

И в любой терминалке красиво увидешь все свои битики :beer:

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


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

Зарегистрирован: 19 янв 2010, 14:51
Сообщения: 979
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим
zubr+1...
dabo, если логического анализатора нет, то читай биты по прерыванию последовательного порта (с макс. скоростью) и передавай в комп... а энкодер крути очень медленно, возможно лучше моторчиком с регулятором скорости... :good:
Можно кстати и не битики передавать, а шестнадцатеричные представления, во многих программах для работы с последовательным портом, есть преобразование типов принятых данных...
Если есть LPT, то можно и с помощью него попробовать...правда там не больше 12 входов получается вроде...

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


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

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


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

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

Знаю я кто первый кто последний)
Не проще тогда так:
printf("C0=%d,C1=%d,C2=%d,C3=%d,C4=%d,C5=%d,C6=%d,C7=%d,A0=%d,A1=%d,A2=%d,A3=%d,A4=%d,A5=%d,A6=%d,A7=%d\n",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,PINA.7);


vadinator

А можно поподробнее про прерывания? Не разу не пользовался.


Какие есть предложения о том как угол мерить?

Добавлено спустя 1 минуту 41 секунду:
SMT писал(а):
Smartcoder не подходит?



Что это?


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

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

http://tamagawa-seiki.com/english/products/sensor.html - в pdf-е упоминается такой
Вложение:
Advanced-rotary-sensors-extract.JPG
Advanced-rotary-sensors-extract.JPG [ 29.72 КиБ | Просмотров: 3770 ]


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

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

В микроконтроллерах как правило существуют прерывания возникающие как при приёме байта из uart-а, так и при окончании передачи...в большинстве сред программирования, можно использовать мастер конфигуратор, который автоматически создаёт подпрограммы обработки этих прерываний...в них вы уже и добавляете собственный код, который будет например помещать следующее значение в регистр uart-а, и когда передача байта завершилась, автоматически вызывается эта процедура... нужно только на начальном этапе, при инициализации МК положить в регистр первое значение...а дальше всё будет происходить автоматом, так вы сможете обеспечить максимальную скорость передачи данных, при выбранной скорости последовательного порта. Последнее время мало занимаюсь МК, но в основном пользовался ICC... боюсь пример из одной среды, мало поможет пользователю другой. Попробуйте сами познакомиться поближе с системой прерываний для АВР...в выбранной вами среде. Очень пригодится в будущем...а так-же посмотрите на прерывания по таймеру счётчику, это позволит чётко формировать временные отрезки в ваших программах.

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


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

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

vadinator
интересно

Народ почему не работает на Си в кодвизионе двойное условие?
если одно=порту1 и другое=порту2 то ...


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

Зарегистрирован: 18 апр 2009, 22:18
Сообщения: 10668
потому, что оно работает :) перефразирую. чтобы получить правильный ответ, нужно задать правильный вопрос. или так: чтобы программа работала так как надо, нужно правильно её написать. ещё перефразирую. потому, что у вас не выполняется одно из условий.
ПС :pardon: лирические вопросы:
- вы вообще в своём условии сравниваете или присваиваете?
- вы вообще уверены, что у вас в "порт1" или "порт2" именн то, что вы думаете?


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

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


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

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


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

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