Имеется стандартная клавиатура 4х4. Собрал выводы через резисторную сборку на один провод, как это уже успешно делал, настроил показатели, все заработало. Но! Стоило подключить оборудование вместо питания по USB к внешнему источнику, как все цифры уплыли. Блок питания импульсный 12В, питание проходит через понижающий преобразователь снижается до 9В, подается на RAW (VIN). Выставил питание как можно точнее, сделал небольшой разброс по замеру, вроде бы заработало стабильно, но сомнения остались. Напряжение с точностью до сотых удержать трудно, на него влияет всё, от напряжения в сети до работы нагрузок на плате. Есть ли способ запитать клаву гарантированно точно? А может быть учитывать уровень бортового напряжения при каждом замере и вносить поправки программно? Думаю, что опыт решения такого вопроса был бы полезен не только для этого конкретного случая, но и для правильного подключения любого аналового датчика.
Не надо резисторную клаву, она от колебаний температуры тоже плавает сильно, поэтому наложение вольтовых и температурных флюктуаций дадут такое, что замучаешься компенсировать. Возьми входной регистр - как раз 8 линий получается, тогда на МК пойдёт всего 2-3 пина и 1 байт данных.
обычная тактика - в качестве vref использует то же напряжение, что и для датчика. Тогда получаем в ацп мк нормированное на vref (=Vc датчика) значение.
1) Питание такого блока должно обеспечиваться отдельным регулятором; 2) Для более точного измерения чего-либо через АЦП, напряжение AREF стабилизируется тоже отдельно от общего питания с помощью внутреннего либо внешнего ИОН (источника опорного напряжения). На атмеге можно воспользоваться встроенным источником опорного напряжения 1.1V, а входы поделить.
2 для точного измерения показания аналоговых датчиков , например hih - датчиков влажности и похожих нам важно не абсолютное значение выходного напряжения, а Vout/Vc, так что наиболее точным будет измерение Vout аналогового датчика с подачей Vc на Vref микроконтроллера. А задача "более точного измерения чего-либо через АЦП"- это более общая и , в общем, совершенно другая задача.
1 тогда нужно на Vref подать (возможно, уменьшенное до значения, заведомо меньшего напряжения питания мк) напряжение питания резисторной матрицы клавиатуры, тогда при измерении мы будем получать наиболее точное значение сопротивления. Не забываем (при необходимости) учесть скалирование напряжения матрицы и , возможно, адекватно скалировать выходное напряжение матрицы. Но в общем, если матрица резисторная, ничего не мешает питать ее от того же источника, что и мк, и не множить сущности - в реальности тут наиболее простой путь будет и наиболее точным.
Два регистра потребуется один входной, другой выходной, такой способ не сильно сэкономит ноги, а их не хватает. Если резюмировать сказанное: поставить на питание клавиатуры доп стабилизатор? У Про Мини где AREF вообще?
у меня мини нет, в нано - это 18 нога, называется ARef. Стабилизатор - нет, не обязательно. ,Я не очень понимаю что значит "стандартная" - если вы можете запитать ее от 5 В (или 3.3, или то что у вас идет на питание мк) и подать то же напряжение на ARef, то задача будет решена. Ну с точностью нестабильности питания на времени порядка времени заряда емкости увх для ацп. Но это уже высший эмбеддинг, не забивайте голову.
ps да, в мини про ARef зашунтирован кондером на землю и не выведен, ну тогда остается самый простой путь - запитать и матрицу, и ардуину от одного источника и не ломать голову. В вашем случае (по схеме официальной ардуины ) Вам нужно подать на матрицу напряжение с ноги 4 ардуины Vcc. Дело в том, что в самой ардуине стоит стабилизатор, и колебания напряжения на RAW не приводят к колебаниям Vcc и у вас показания ползут. Сделайте как я советую, думаю проблем не будет.
Напряжение от Ардуины плавает несмотря на то что стабилизировано. Включается один единственный внешний светодиод и оно просаживается с 5,01 до 4,8, а это критично для показаний клавиатуры. Вот думаю запитать клавиатуру отдельно от Ардуины от 9В через стабилизатор, что обеспечит независимость от перепадов вызваных потребителями (тех же светодиодов, например), плюс чутка раздинуть разброс сопротивлений внутри ряда, пользуясь тем, что кнопок в ряду всего 3.
ну плавает и плавает (хотя просадка 7% от одного светодиода выглядит подозрительной), если вы подключите клавиатуру к Vcc у вас напряжение на входе и выходе клавы и напряжение Vcc( в нашем случае оно же Vref) будет плавать СИНХРОННО и не даст вклада в ошибку. А если запитать отдельно, как вы думаете - то сумма ошибок у вас будет среднеквадратичное по перепадам, т.е. не меньше чем 7%.
это зависит от установки в регистре опорника ацп, но по умолчанию Vref=Va=Vcc, если конечно в ардуине не сделано иначе. Но это вряд ли.
Да, опытным путем заметил, что показания в у.е. не меняются при разных источниках. Но от некоторых источников показания стабильнее, от других немного плавают, растащу поравномернее по шкале, добавлю плюс-минус и буду считать, что дело в шляпе.