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

Кнопки и АЦП


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

Для сабжа точность не столь важна, т.к. есть программный диапазон значений АЦП. Но, есть разброс резисторов, температура,  напруга,  кол-во кнопок (нужно 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-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 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 пользователей онлайн

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

    • Все предложенные к рассмотрению источники питания работают примерно по одному принципу: сетевое напряжение выпрямляется, фильтруется (получаем чуть больше 300 вольт постоянного), затем преобразуется снова в переменное, но уже на частотах в несколько десятков килогерц, понижается на трансформаторе и снова выпрямляется. За счёт высокой частоты преобразования используется трансформатор на ферритовом, а не на стальном, сердечнике, гораздо меньших габаритов и стоимости. Минусы: значительное усложнение схемы блока и вероятность возникновения различных помех от него. Модули управления (кроме первого) также являются импульными преобразователями, с теми же достоинствами и недостатками. Если нужно по быстрому собрать некое подобие ЛБП, то уж лучше брать модуль вроде этого. Ну и блок питания к нему соответствующий. Но не очень понятно, какой практический опыт можно получить от соединения готовых модулей парой проводов.  
    • У меня больше всего вопросов вызвала необычная схема обеспечения отрицательного питания. Автор этой обстоятельной заметки пишет: For this supply to work correctly, the transformer must have a secondary voltage of at least 18V RMS.  Почему? Что будет не так с отрицательным питанием, если напряжение на трансформаторе будет меньше 18В?   https://tinyurl.com/23mlwxtt - я в простейшей эмуляции ставлю 12В пикового напряжения для трансформатора и на стабилитроне все как положено: -5.6В.
    • Согласен, очень криво объяснил. Это работа трёх вольтовой линии, просто на диод шотки сдвоенный, на один анод приходит сигнал напрямую с трансформатора, а на второй через дроссель. Вольт/деление 5 вольт в клетке, тайминг по моему 10 МС. Третья фотография это сигнал на катодах уровень земли ровно по центру экрана. Но все линии по итогу в порядке 3.3 в, 5, в, 12 в и -12 в. Нагрузить все линии не могу сразу ,так как тут же выгорают транзисторы (имеется нагрузка 250 ватт по 10 ампер на каждую линию за исключением-12в), поэтому нагружаю 3.3 вольтовую линию на 10 ампер,  подключаю переменный резистор 50 ватт на 15 ом на 5 вольтовую линию и постепенно довожу до той той картины с перекосом (это гдето  50 ватт общее). По поводу микросхемы, вверху имеется скрин где между импульсами проскакивает мини импульс, если так можно сказать, он проскакивает и на одной  и на второй ноге (7,8). Микросхема не tl 494, а lw4933/abx942.1/c9421646. Далее они приходят на базы транзисторов 945g  коллекторы этих транзисторов соединены с  выводами трансформатора. Просто схема типовая, легче мне кажется просто привести фото самого блока, для тех кто разбирается будет гораздо информативне.  Диод шотки по 12 вольтовой линии был подгоревший, заменил на донора. Приводить скрины не буду что бы не захламлять тему. В итоге, пока все так же, при достижении определенной нагрузки суммарно где-то 50 ватт, появляется этот "выброс и перекос". По этому имеются мысли на два варианта, это микросхема , этот мини импульс между периодами, на низкой нагрузке особо не влияет, но при достижении определенной приводит с самовозбуждению входной цепи и непроизвольному открытию транзистора нижнего плеча. Либо дело в "горячей части", плавающий дефект в обвязке силовых ключей.  Спасибо за ответ.
    • @Gomerchik а вы контролировали как меняется уровень сигнала на А1 ардуины?
    • Спасибо за совет. Автором данного проекта я не являюсь, мне нужно было воссоздать уличный датчик для метеостанции взамен пропавшего(( Из разного найденного в интернете этот проект работает с моей станцией Орегон (спасибо автору). В понедельник попробую последовать Вашему совету. Но все равно куча непоняток  как блин это работает)) Если дело в неправильной отправки команды, то как на это влияет подключение датчика температуры? Если совсем не подключать таймер, то передача идет один раз (как и прописано в программе), станция принимает и отображает, но минут через сколько-то естественно станция уже ни чего не показывает, но с таймером питание полностью не пропадает с ардуинки, но передача сигнала каким-то образом работает по таймеру.  В моем понимании данная команда подается один раз потому, что таймер должен отключать питание МК после передачи сигнала и каждые 43 сек снова подавать питание (так того требует станция).  Ардуино передает показания температуры отключается полностью и 43 секунды мк не работает.  Сейчас у меня питание пока сделано на подпитке от солнечной батареи, но пару пасмурных дней и аккумулятор съедается до отключения(
    • thickman Так и сделаю. Вытащу из бу БП.  Буду знать, как отличить. Благодарю. Заменил транзисторы на IRFB20N50K. Картина стала, совсем другой.  Похоже трудность не в драйвере, на момент подвозбуда, переходные процессы, в нем, завершены. Увеличил затворные резисторы до 50ом, стало немного лучше.  Не понятно, почему верхний ключ греется несколько сильнее. Возможно, стоит посмотреть ток в коллекторе.  Снабберные емкости временно удалил, изменений не произошло.  Замена ТГР на другой, на кольце MSTN-16A-TH, так же, результата не принесла.   irfb20n50k.pdf
×
×
  • Создать...