Блин, бесит она уже меня. Поставил сиё цифровое потенциомерство (1 кОм) в обратную связь для импульсного БП, мол с энкодера и ИК-пульта круто же управлять током и напряжением, аля лабораторный БП. Но не могу заставить работать потенциометр стабильно. Он ошибается 3-5 раз из 10. Т.е. выставляет ползунок в не верное положение. Практически хаотично, как буд-то биты теряет и записывает мусор. Т.е. я могу несколько раз отправить 8-ми битное число 127 и из 10 раз подряд только 5-7 раз он выставит верное значение равное половине его диапазона. Что не так может быть? При чем, одинаково, что я использовал аппаратный SPI, что написал программный. Вот даташит на AD8402
Но как могут быть проблемы в схеме, если частично, но работает? Я еще RS и SHDN объединил и посадил на +5V. Вроде же правильно сделал, они в даташите со знаком инверсии обозначены, для того чтобы потенциометр не выключался и не сбрасывался? Схема обратной связи то простая: http://img.radiokot.ru/files/94196/1d0y9ehkti.jpg Без цифрового потенциометра, если его заменить просто обычными, то все работает, но вот с ЦП, он хаотично, ИНОГДА, выставляет не верные значения. Почти в больше половины случаях он же все верно выставляет, но почему такая не стабильность? Провода SPI (SS, CLK, SDI) длиной всего не более 17 см, что для SPI вполне не критично, просадки по напряжению 5V нет. Запутался.
Могут помехи по питанию сносить крышу потенциометру? У меня и Ardu UNO и ЦП питает импульсный понижающий DC-DC преобразователь на 5V. Но Arduino не жалуется и конденсаторы в фильтрах стоят.
17 см это многовато. Помехи по питанию могут. Что за фильтры там у вас это еще не известно. Вы их рассчитывали?
Нет не рассчитывал, DC-DC преобразователь питается от отдельного маленького трансформатора к импульсному БП никакого отношения не имеет. Фильтры стандарт - электролиты (1000 мкФ) + керамика (0.1 мкФ). Если мерить мультмиетром в режиме переменки выход DC-DC, там 0.1 мВ, конечно очень условный способ измерять пульсации, но пока только так. В коде все нормально? Посылаем адрес либо 0, либо 1, потом само число по битого, никаких задержек не нужно?
Кто вас такому стандарту научил - ставить огромные конденсаторы куда попало? У любого регулятора напряжения есть окно по задержке обратной связи, и если из него выскочить, то вся цепь начнет самовозбуждаться.
Это просто накопительный конденсатор на выходе DC-DC. https://yandex.ru/images/search?tex...ACLcB/s1600/9819c6.jpg&pos=1&rpt=simage&lr=54
rkit, Вы были правы по поводу разводки и длины линии SPI. Подтянул каждую линию SPI (SS, CLK, SDI) резисторами 560 Ом к +5В на стороне цифрового резистора (после 17 см проводов), улучшив тем самым фронты. Стало гораздо лучше, ошибки потенциометра еще случались, но гораздо реже. Потом протянул линию GND напрямую к потенциометрам, ошибок пока не наблюдаю. Спасибо, что обратили внимание на разводку. Просто я был почти убежден, что проблема могла скрываться в коде, а точнее в таймингах. Не думал, что потенциометр будет так критичен к различным помехам и длине сигнальных проводов. На счет не до конца Вас понял, можете подробнее пояснить? Ведь обратная связь у LM2596 - 4 нога "FB" и задается резистивным делителем UR1 и R1. Конденсатор C2 может быть практически любым, его емкость задается исходя из тока потребления нагрузки. Вроде так?