Подключение к UNO HX711 в режиме 80Гц
- Войдите на сайт для отправки комментариев
Вс, 08/10/2017 - 13:01
Привет всем!
Подключаю тензодатчики к UNO через АЦП HX711. Использую библиотеку Queuetue HX711 Library version=1.0.2
В режиме замеров с частотой 10Гц все ОК, но мне это очень медленно. Перепаял перемычку на АЦП в режим 80ГЦ. Все работает как надо, но с периодичностью 10...20 сек приходит кривой замер с явно неверным 1 битом (см. рис.). Выглядит как ошибка передачи 1 бита данных по последовательной шине. Бороться с ним программно (удалять) - как-то не по феншую. На лицо ошибка передачи данных.
Никто не сталкивался с таким? Может при смене частоты замеров нужно и скорость передачи как-то подправить? Про это в даташите ничего нет... ((((
П.
P.S. Там чтение через ShiftIn() идет. Т.е. скорость сама определяется. Выходит наоборот - SCK короток.
Согласно даташиту частота как-то подозрительно широко может гулять - T3+T4 = 0.4 до 50 мкс
Есть подозрение, что с UNO с 16 МГц просто не успевает. Или кабель слишком длинный у меня - 2 м.
Кабель исключаем. Проверил без кабеля - та же фигня... (
Никто не ответил, а я нарыл за день столько, что можно книжку написать - "Как правильно и как НЕправильно работать с АЦП" )))))
Сначала думал, что проблема в самой функции ShiftIn(), т.к. я не вижу, что там внутри происходит. Отказался от всяких левых библиотек. Заменил на рекомендуемый производителем код (и это правильно!):
Потестировав понял, что кто-то или что-то иногда мешают читать данные. Пробовал даже перед считыванием ставить noInterrupts(). Путем долгих экспериментов осознал (наконец), что зависит это от времени выполнения основной части программы. Т.е. когда я не укладываюсь в отведенные 12,5 мс интервала между измерениями, то с некоторой вероятностью с АЦП считывается мусор. Перерыв весь интернет и форумы нашел!!!! Причем это относится не только к HX711, но и к большинству известных АЦП (например AD7798/AD7799). Но, это достойно отдельной темы с пояснениями и примерами. Поэтому, тут закрываю, чуть позже постараюсь все описать.
))))
Ждем подробного решения проблемы! С нетерпением! :)
Интересно чем всё закончилось? Где продолжение?