Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/48: Рейтинг темы: голосов - 48, средняя оценка - 4.81
tymiomhomi
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 12
1

АЦП+бесконечный поворотный потенциометр (Atmega16)

01.08.2011, 12:30. Просмотров 8642. Ответов 8
Метки нет (Все метки)

Приветствую.

Имеется контроллер atmega16 и поворотный потенциометр, который может вращаться не ограниченное количество оборотов.
Садим движок потенциометра на АЦП контроллера и снимаем значения.
очевидно, при повороте, сопротивление снимаемое с "движка" меняется по часовой стрелке увелиивается, при переходе через "0" --> в максимум (скажем 10кОм), против часвой уменьшается, при переходе от максимума --> в "0".

Может кто с таким сталкивался? Посоветуйте, пожалуйста, программную оработку на СИ такой штуки, но ВАЖНО знать в каком направление в данный момент вращается потенциометр. У меня возникла сложность с переходом через "0", не могу сообразить.

Простейший способ без учета перехода через "0" выбрал бы таким.

// заходим в цикл когда значение АЦП изменилось, заранее, при инициализации объявили что а=0; скажем так.
while (read_adc(1)!=a)
{
if (read_adc(1)>a)
//одно направление вращения
{
b=read_adc(1)-a;

..., ... ..., ... ;
//присваиваем текущее значение АЦП
a=read_adc(1);
}
else
//другое направление
{
b=a-read_adc(1);

..., ... ..., ... ;
//присваиваем текущее значение АЦП
a=read_adc(1);
};
};
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2011, 12:30
Ответы с готовыми решениями:

Atmega16 АЦП
Здравствуйте! Пытался запустить АЦП на Atmeag16, с выводом значений на LCD. Что б долго не...

нелинейность АЦП AtMega16?
Пытаюсь использовать AtMiko16 для измерений напряжения. Использую внутренний ИОН(2.56). НО...

АЦП+ UART на ATmega16: проблемы
Добрый день. Имеются следующие проблемы. 1. При попытке наладить передачу значения АЦП по UART...

Atmega16, АЦП и Протеус [решено]
Блин, второй день мучаюсь. Схема на AtMiko16, меряю АЦП напряжение на аккумуляторе. Очень похожая...

АЦП в Atmega16 не хочет работать.
Здравствуйте. Вчера вот попытался заюзать встроенный АЦП у Atmega16, раскурил Даташит, настроил...

8
somyo_3
0 / 0 / 0
Регистрация: 09.01.2011
Сообщений: 544
01.08.2011, 13:05 2
Резистор в качестве энкодера?? Есть идея, я её набросаю когда попаду домой.
0
sohbtixhuk
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
01.08.2011, 13:13 3
Мерять можно "через производную" - если дельта больше нуля - по часовой, меньше нуля - против часовой. Если дельта внезапно со знаком минус и больше половины диапазона - значит был перход через ноль по часовой. Если больше половины и положительный - против часовой. Вроде так.
0
tymiomhomi
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 12
01.08.2011, 13:34 4
Резистор в качестве энкодера??

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

насчет "Производной" контроллер же относительно быстро соображающая "штуковина" поэтому в примере моего кода и так почти что производная. или я не понял что Вы (sohbtixhuk) имели ввиду
0
Ymk
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 2,233
01.08.2011, 13:37 5
а в статье dihaltа разве не написано было как его урабатывать? велосипедостроение?
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
01.08.2011, 14:19 6
Вот та статья, про которую говорит Ymk http://iosyitistromyss.ru/enkoder-iz-pe ... stora.html
0
tymiomhomi
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 12
01.08.2011, 14:27 7
Огромное спасибо! статейку я нашел.

все же остается конкретный вопрос, который пока мне не ясен.

DY HOTT:
Единственно что надо учитывать переход через ноль и программно игнорировать тот факт, что показания резко изменились от минимума до максимума.

так это описано в статье. как сделать это программно на СИ, непонятно мне. думаю вопрос пока тока в этом!
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
01.08.2011, 14:33 8
Если значение АЦП изменилось на какое-то слишком большое значение, то считаем что это был еще один шаг в текущем направлении.

Например, мы крутим по часовой стрелке. Значение плавно возрастает. И вдруг, падает до нуля. Так-как изменение было слишком резким, то мы игнорируем это и не меняем направления.
0
tymiomhomi
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 12
01.08.2011, 14:45 9
Благодарю! Концепция понятна! щас над кодом поразмыслю!
0
01.08.2011, 14:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2011, 14:45

Помогите настроить АЦП в ATMEGA16
Доброго времени суток, уважаемые форумчане! Опыт работы с микроконтроллерами у меня весьма мал,...

Вывод значений АЦП на семисегментники (Atmega16)
Помогите, пожалуйста, не могу разобраться с программой, в программировании новичок. Берем...

АЦП+UART+семисегментный индикатор(ATMega16, asm)
Пытаюсь разобраться с АЦП на AVR. Взял за исходник вот эту программу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru