Отчитываюсь.
1) Индикатор с переходником на PCF8574 дышит, т.е. библиотека готова в полном объёме.
2) Энкодеры дышут.
3) АЦП дышит (убил 2 часа пока искал КЗ на землю Vref пина). Показания стоят как вкопанные. Единственный прикол - пока не промыл хорошенько плату, где-то была утечка и при висящем в воздухе входе (БП не подключен) оба канала измерения напряжения показывали от 7 до 12 единиц (из 1024)... Надо либо переходить на выводные деталюхи, либо убирать +5В питания из-под СМД резисторов и конденсаторов в измерительной части. После промывки всё стало на свои места.
4) Для измерения напряжения не пришлось вносить никаких коэфициентов. Всё оказалось очень точно (при условии использования 1% резисторов). Формула оказалась очень простой:
- Код: Выделить всё
U = read_adc() * 250 / 1024 *(180+56) / 56 + 1;
для канала 0-10В, где
250 - опорное напряжение,
1024 - разрешение АЦП,
180 - резистор 18кОм,
56 - резистор 5,6кОм,
1 - маленькая корректировка.
и
- Код: Выделить всё
U = read_adc() * 250 / 1024 *(180+16) / 16 + 4;
для канала 0-30В, где
250 - опорное напряжение,
1024 - разрешение АЦП,
180 - резистор 18кОм,
16 - резистор 1,6кОм,
4 - маленькая корректировка.
При такой формуле показания совпадали с показаниями двух поверенных мультиметров (UNI-T и Mastech) с разницей в 1 единицу в младшем разряде в диапазоне от 3 до 13В (пока больше не нашёл

), т.е. не более 10мВ. Есть подозрение (завтра проверю) что достаточно добавить 1 разряд и не понадобится "маленьких корректировок". Или может надо поточнее указать номиналы резисторов.
Вобщем дело движется!