Перейти к содержанию

Кнопки и АЦП


Рекомендуемые сообщения

Для сабжа точность не столь важна, т.к. есть программный диапазон значений АЦП. Но, есть разброс резисторов, температура,  напруга,  кол-во кнопок (нужно 5-7) и т.п.   Короче, все таки надо немного повысить точность, не усложняя схему дроселями и т.п.  У меня верхнее плечо УЖЕ  сформировано поддтягивающим внутренним резистором. Тогда что такое режим от "внутреннего 2,54 вольта"?  Эли подтяжку не делать? Потом у меня железо Ардуино Нано - и я не вижу там входа AVCC вообще. Есть AREF. Он поможет? 

16 мгц. Делитель на 128, дает 125 Кгц. 

ацп.jpg

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Только что, dim3740 сказал:

у меня железо Ардуино Нано

Ощущение, что в гугле вас забанили: https://www.google.ru/search?q=5+кнопок+ардуино+нано

 

Изменено пользователем ARV

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

да нет... я почитал, но в основном применяют внешние опорные источники. Если кто применяет внутренние подтяжки, как у меня, то не поясняют как это может сочетаться с режимом "опорных 2,54 вольта".  Просто пишут, что этот режим "не дает точность". Ну так, его бы вообще и не делал разработчик тогда:))) А мне как раз нужно найти компромисс между точностью и усложнением схемы. 

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

По ссылке - куча ГОТОВЫХ решений. Пройдитесь по ним, почитайте - у кого там проблемы с точностью?

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Спасибо:)) Я недопонимал, что есть опорное напряжение, как эталон, и измеряемое. Оба нужны, если меряется напряжение от внешнего источника. Для режима "кнопок", когда меряем по сути "сопротивления", напряжение на входе от внутреннего резистора, думал, и есть "опорное".  На другом форуме подсказали... Ну, нет опыта с АЦП пока((( 

Ссылка на комментарий
Поделиться на другие сайты

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

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

Продолжил работу... Теперь надо подключить энкодер, но его надо тоже подвести на аналоговые входы. Тут нет даже делителя, и для идентификации сравниваем с нулем. Это не сложно, и я очень не хочу ставить внешний резистор.  Примеров внутренней подтяжки в инете не много. Я верно делаю, что 1) иниц порт как "входной"? 2) делаю подтяжку как "цифровой"  порт 3) назначаю порт в АЦП, тем самым он переключается в аналоговый вход? Сложность еще в том, что у Меги328 порты 6,7 (именно они мне нужны для энкодера) обозначены как "ADC6", в то время как другие так: "PC5(ADC5)". Даташит ничего не говорит об работе внутренней подтяжки на 6,7 портах. 

ПС: с внешним сопротивлением энкодер на 6,7 портах работает нормально. 

Ссылка на комментарий
Поделиться на другие сайты

Подключить энкодер к АЦП не получается. Даже с внешним резисторами. В сети не нашел ни одного такого проекта. Но, может, АЦП как-то запустить  в режиме компаратора?  Или все это бесперспективно?

В цикле:
ADCSRA|=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
	ADMUX =0x46;  // опорный на 5 вольт, и 6 порт
	_delay_us(500);
	ADCSRA|=(1<<ADSC);   //Начать преобразование 
	while ((ADCSRA & 0x10)==0); 
	if ((ADCL|ADCH<<8)>50) // хватит 8 разрядов.  50 - любое значение больше нуля и шумов
	{
		adc6=0b01000000; .
	}
	else
	{
		adc6=0;  
	}
	
	ADMUX =0x47;  // опорный на 5 вольт, и 7 порт
	_delay_us(500);
	ADCSRA|=(1<<ADSC);   
	while ((ADCSRA & 0x10)==0);
	if ((ADCL|ADCH<<8)>50)
	{
		adc7=0b10000000;
	}
	else
	{
		adc7=0;
	}
	
	NewState=adc6|adc7; // сворачиваем в один байт
	
	if(NewState!=OldState)
	{
		switch(OldState)

 

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

Это вообще изврат. Используй его как обычные цифровые выходы. Просто эти выводы не разведены в контроллере в DIP-версии, а в SMD у корпуса больше выводов и эти выводы выведены наружу. Если с ними работать как и с остальными цифровыми, не работает?

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

Учение - изучение правил. Опыт - изучение исключений.

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Alexeyslav сказал:

Если с ними работать как и с остальными цифровыми

ты где в регистрах видел, чтобы они упоминались, как цифровые?

цифровыми они быть не могут, так как цифровому порту они ни как не привязаны.

Мудрость приходит вместе с импотенцией...

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

Ссылка на комментарий
Поделиться на другие сайты

Код мой верный, энкодер запустился с внешними резисторами. Никаких средств подавления дребезга энкодера не применил. А в кнопками, парадокс,  геморой продолжается. Хотя время нажатия кнопки куда больше времени шариков энкодера.  Дело в питании, имхо. При отладке питание идет одновременно от 3-х источников: БП платы, от ЮСБ для COM порта платы, от программатора ISP.... (Как они на плате там объединяются - мне не ведомо(((  да и не интересно это. ..) . А в реальной работе - надо отдельно - или от БП, или от ЮСБ.  Вот АЦП и прыгает(((( 

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

Да, верно, задача изначально была, что не хватает портов...

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

1 hour ago, dim3740 said:

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

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

Это хорошо видно из схемы портов.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, dim3740 сказал:

Вот АЦП и прыгает

Неужели так сильно прыгает? По какой схеме подключены кнопки?

21 час назад, dim3740 сказал:

очень не хочу ставить внешний резистор

Очень зря. 

Ссылка на комментарий
Поделиться на другие сайты

20 минут назад, snn_krs сказал:

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

http://arduino.net.ua/Arduino_articles/Arduino_proekty/Podkljuchenie knopok k odnomu analogovomu vhodu/

Тут опровергается это.... см. текст после example 25.2  , нр у меня не работало((

Резисторы поставлены теперь везде.   Схема такая, только разные номиналы,  3,3 вольта, и нет R1 . Поэтому код сравнения на нижнюю кнопку такой:  "if (voltage>0) && (voltage < скажем... 40) ... может есть шумы при закорачивании кнопки на землю? Если сравнивать не с нулем, то отсекаются "верные" нажатия,  что также плохо.   

кнопки.jpg

Ссылка на комментарий
Поделиться на другие сайты

Во-первых, подключение кнопок неверное. Пока ничего не нажато, вход АЦП висит в воздухе и ловит невесть что. Должно быть как-то так

image.png.b910d6898018b0c54962b50dffe25f32.png

Либо в твоей схеме вход АЦП подтянуть на землю. Во-вторых, делай так, чтобы при нажатия кнопок отличались друг от друга хотя бы на 100 единиц. Плюс можно сделать 3-4 усреднения. Шумы у тебя именно из-за кривого подключения. В тех же машинах именно по такому принципу работают кнопки управления магнитолой на руле.

Ссылка на комментарий
Поделиться на другие сайты

В 15.02.2018 в 08:26, dim3740 сказал:

меряем по сути "сопротивления"

Измерения сопротивления ни что иное, как измерение напряжения.Точнее его падения.

Ссылка на комментарий
Поделиться на другие сайты

Всем спасибо. В т.ч. за "матчасть":)) Задача была же (и мною не очерчена изначательно) КАК переподключить кнопки и энкодер в готовом проекте/плате, переконфигурировав функции ацп/цифр портов. Малой кровью, с минимумом доп.деталей. Можно "с извратом", и программными изощрениями.

Решено(? тестю) через  SMD резисторы (нет ни кондеров, ни дросселей),  циклах на совпадение значений. Никаких аппарат. средств подавления дребезга нет (но это заслуга имеющейся RTOS... шутка:P). И все же одна кнопка, которая при нажатии садит АЦП на землю упорно (1 случай из 10) "ловит" соседнюю кнопку. Хотя шаг -  целых 200 выборок. Опорными напряжениями - (не особенно понимаю что это такое),  не заморачивался в применении к задаче кнопок. Хотя поэтому и есть гуляния при разных БП(((((

 

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

2 минуты назад, dim3740 сказал:

И все же одна кнопка, которая при нажатии садит АЦП на землю упорно (1 случай из 10) "ловит" соседнюю кнопку.

Повторюсь еще раз. Ничего сажать на землю не надо. Надо менять одно плечо ДЕЛИТЕЛЯ и все. При этом в отжатом состоянии на вход АЦП тоже должно подаваться некоторое напряжение. И подобрать сопротивления резисторов надо так, чтобы кнопки отличались друг от друга как можно сильнее. Например, 1-я - 1В, 2-я 1,5В, 3-я - 2В и т.д. Ничего не нажато - 0,5В. Соответственно шаг подбирается в зависимости от количества кнопок. Внутреннего опорника для этого более чем достаточно.

Ссылка на комментарий
Поделиться на другие сайты

Вариантов решения можно предложить много. Многое что вы рекомендуете, типа не оставлять в воздухе я понимаю. Хотя и "воздух" я отфильтровал программно .Вопрос: Чем может "повредить"/"быть неудобным/ненадежным и т.п. вариант, когда нижняя кнопка закорачивает вход АЦП на землю, и мы программно отслеживаем нулевую выборку, или близкую к ней? 2)  По плечам: я писал что сделал плечи по "уму"... т.е. номиналы резисторов в прогрессии, т.е, 150 ом, 1,2 ком, 2,4 ком, и т.п. что дает максимальный шаг выборок/диапазонов и повышает надежность. У меня 0-200-400-900... любые гуляния укладываются в эти 900-400 или 400-200... Кроме... нулевого. Речь о нем, хотя там тоже 200. Я могу еще резак повесить и на эту ногу, т.е. сместить уровень, но хотел бы понять почему косячит)))

П.С, Схема пока все же моя, но "воздух" убрал резистором на 5 в + программно.  "В отжатом все состоянии" на вход идут все 5 в. Переделывать схему нереально. 

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

В общем, вроде, я сам давал ответ выше

http://forum.cxem.net/index.php?/topic/200029-кнопки-и-ацп/&do=findComment&comment=2949464

на косяк, и забыл о нем.... Куча переделок за день((((( Нулевой уровень тем плох, что нужно иметь запас выборок как в плюс, так и в минус. Нулевой не дает минусов по определению:))) Сейчас сделаю смещение и думаю все будет ок. 

Изменено пользователем dim3740
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...