Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.07.2010, 13:17
|
|
Прохожий
Регистрация: 13.11.2009
Сообщений: 6
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Особенности ADC у ATTiny
Всех приветствую.
Я только несколько дней назад начал заниматься темой AVR, правда до этого имел опыт работы с логикой, кое-какими аналоговыми схемами и ассемблером.
Сейчас делаю простой тестовый проект на контактной макетке для ATTiny13A: потенциометр, положение которого может оцифровываться и отправляться по последовательному интерфейсу 7-битным кодом (по MIDI, если точно). В момент передачи моргает светодиод.
Вся MIDI-часть и диод работают стабильно и проверялись на передаче тестовой цепочки данных из ППЗУ (разве что посылает мусор во время включения и выключения питания), но есть непонятные для меня проблемы с работой потенциометра.
От пот-ра типа B я ожидаю более-менее линейной характеристики, подключая его как делитель напряжения от Vcc (после регулятора питания L7805) до GND. Снимаемые во Free Run режиме значения я выравниваю влево, сдвигаю на разряд направо и принимаю в качестве текущего 7-битного значения оцифровщика, и отправляю на порт если оно отличается от предыдущего.
Однако вместо равномерного распределения значений я получаю экспоненциальную характеристику: На углах От 0 до половины, значения растут примерно от 0 до A0, а далее резко бегут до 7F на положении примерно 90%. Фишка в том, что я замерял тестером изолированный от входа АЦП выход пот-ра и там всё чётко: на середине около 2.5 В, наверху около 5. Как только я подключаю его к микросхеме, происходит что-то для меня неясное. Тестер видит между пот-ром и входом АЦП потенциалы относительно земли где-то от 3.1 до 3.6 В, а ток вообще настолько маленький, что тестер его не видит вообще. Наверное это говорит об очень высоком входном сопротивлении микросхемы, но я не пойму, что это означает.
Пробовал использовать разные потенциометры: 1К, 10К, 100К, B, A, ограничивать ток до него и после него разными резисторами, пробовал использовать повторители на ОУ, внешние источники напряжений и всё бестолку: АЦП упорно работает экспоненциально. Мне кажется, что-то я делаю всё-таки не так.
Кстати, я питаюсь от кроны. Попробовав вместо неё адаптер я не смог заставить схему работать вообще, впрочем ток я не пробовал ограничивать. Схему я прилагаю, а также код программы. Был бы рад, если бы кто-то мне мог объяснить, что я делаю не так, да и как правильно запитать контроллер от адаптера через L7805 (замечу, 78L05 я по ошибке сжёг, и сейчас именно L7805, они чуток отличаются.)
Последний раз редактировалось rpocc; 06.07.2010 в 13:20.
Причина: Добавил пару слов в описание работы программы
|
|
|
|
06.07.2010, 15:07
|
|
Вид на жительство
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
|
Re: Особенности ADC у ATTiny
У 7805 на входе и на выходе должны быть кондеры по 100нФ на землю. диод в цепи ресета нужно убрать. Конденсатор с ноги ресет на общий сделать 100нФ
Если уж надо большая линейная точность то рекомендую сделать валкодер из колесика старой мышки.
А потенциометр работает не линейно вероятно из за банальной нестабильности опорного напряжения.
__________________
Найди путь или проложи сам!
|
|
|
|
06.07.2010, 15:14
|
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Re: Особенности ADC у ATTiny
Резистор то у Вас линейный? Или взят от какого-то регулятора громкости?
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
|
|
|
|
06.07.2010, 16:07
|
|
Прохожий
Регистрация: 13.11.2009
Сообщений: 6
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Особенности ADC у ATTiny
Сообщение от MasterMushi
|
У 7805 на входе и на выходе должны быть кондеры по 100нФ на землю. диод в цепи ресета нужно убрать. Конденсатор с ноги ресет на общий сделать 100нФ
|
Спасибо, прямо сейчас попробовал всё сделать. Идея с 100нФ сама по себе хоршая, но к сожалению, всё осталось точно так же. Повторил измерения вольтметром — тоже без изменений. Кстати, я всё это пробовал на двух контроллерах, дабы исключить вероятность неисправности.
Сообщение от MasterMushi
|
Если уж надо большая линейная точность то рекомендую сделать валкодер из колесика старой мышки.
|
Идея сама по себе полезная и валкодер уже есть, но он занимает больше дырок, к тому же хотелось бы оставить возможность кодировать напряжение поступающее извне. Думаю, если бы это было приложение связанное исключительно с крутилками, я бы выбрал валкодеры, хотя они и слишком дорогие.
Сообщение от OneTech
|
Резистор то у Вас линейный? Или взят от какого-то регулятора громкости?
|
В даный момент — подстроечник на 1K. Повторюсь, я замерял его работу вольтметром. В изоляции от контроллера он работает линейно.
|
|
|
|
06.07.2010, 16:24
|
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Re: Особенности ADC у ATTiny
Честно говоря я так и не понял что отсылается к ПК и в каком формате. А так в симуляторе студии погонял, всё работает честно и нелинейности не вижу.
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
|
|
|
|
06.07.2010, 16:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.10.2004
Адрес: Нижний Новгород
Сообщений: 1,746
Сказал спасибо: 416
Сказали Спасибо 1,240 раз(а) в 551 сообщении(ях)
|
Re: Особенности ADC у ATTiny
если потенциометр советский то А - сопротивление изменяется пропорцио-
нально нахождению подвижного контакта, Б - по логарифмическому зако-
ну, В - обратно логарифмическому закону.
http://mpek.org/_ld/0/32_rez.pdf
импортные
http://lib.chipdip.ru/078/DOC000078820.pdf
Последний раз редактировалось anatol378; 06.07.2010 в 16:47.
|
|
|
|
06.07.2010, 16:49
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Особенности ADC у ATTiny
На С в CV ADC выглядит так
attiny13A.rar
там есть проект для Протеус. Линейность соблюдается.
|
|
|
|
06.07.2010, 16:54
|
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Re: Особенности ADC у ATTiny
Насколько я понял отправляемый байт имеет формат UART-а. Переписал отправку байта по своему, проверте, может и заработает как нужно.
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
|
|
|
|
06.07.2010, 17:00
|
|
Прохожий
Регистрация: 13.11.2009
Сообщений: 6
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Особенности ADC у ATTiny
Сообщение от anatol378
|
если потенциометр советский то А - сопротивление изменяется пропорцио-
нально нахождению подвижного контакта, Б - по логарифмическому зако-
ну, В - обратно логарифмическому закону.
|
Я могу ошибаться, но по-моему наша кириллическая классификация немного отличается от западной. Я использую китайские.
Сообщение от OneTech
|
Честно говоря я так и не понял что отсылается к ПК и в каком формате.
|
Это просто не совсем для ПК предназначено. MIDI в какой-то степени похож на UART: 31250 bps, 8-N-1, но там другие электрические уровни используются и это однонаправленный протокол не использующий какие-то вещи типа синхронизации, RTC, CTS и т.д. Я плохо разбираюсь в тонкостях работы последовательного порта, но по идее, если как-то возможно на 31250 бодах (+/- 1%) прослушивать сырой поток данных, то там можно увидеть отсылаемые при изменениях трёхбайтовые последовательности B0, 07, xx, где xx - 00—7F.
Кстати, я ваш код попробовал прошить, работает также как и мой, хотя я заметил немного другой обработчик прерывания АЦП, но видимо, это не так существенно.
Однако, есть неожиданное развитие темы. Я сейчас откопал 100-омный подстроечник, и сразу всё стало работать почти как положено, то-есть, видимо, АЦП зависит от тока (стало намного линейнее, но всё равно некоторое ощущение экспоненциальности остаётся). Возможно по этой же причине неадекватно себя ведут внешние источники измеряемых напряжений. Может быть существует какая-то известная фича связанная с электропараметрами входов у этих контроллеров? У меня отродясь потенциометров с таким маленьким сопротивлением не было, да и проблема с внешним входом так не решается.
Попробовал также сейчас использовать питание от адаптера на 300—400 мА. пока отличий от батарейки не вижу.
Последний раз редактировалось rpocc; 06.07.2010 в 17:37.
|
|
|
|
06.07.2010, 17:00
|
|
Вид на жительство
Регистрация: 09.10.2009
Сообщений: 356
Сказал спасибо: 21
Сказали Спасибо 64 раз(а) в 46 сообщении(ях)
|
Re: Особенности ADC у ATTiny
CodeNameHawk, интересно зачем CV генерит так:
Код:
|
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); |
Что обозначают & 0xff?
Число же байт, что очищать собрались?
__________________
Делая дело нужно в него верить на все 100%, иначе неизбежно будут возникать ошибки подпитывающие подсознательное сомнение.
Последний раз редактировалось OneTech; 06.07.2010 в 17:05.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:58.
|
|