Здравствуйте, у меня встал вопрос об использовании стороннего АЦП для Arduino, был взят gy-ads1115/1015, нужно использовать его в дифференциальном, и получаемые значения выводить на экран Labview. Т.к я профан и в Arduino и в Laview, ничегошеньки у меня не получилось). Использую я LINX, обычным светодиодом на Arduino Uno мигать получается, далее я понял, что для этого АЦП нет готового решения на LINX :).
Стал рыть в гугле, единственное, что я нашел, это американские форумы, всего два разных ВП, один вроде как работает и я получаю какие то значения с двух портов, но эти значения не понятны и никак не отражают истину (проверял на пальчиковой батарейки, с использованием мультиметра).
Так как товарищи прикладывали к своим постам только скрины, без готового ВП, я недолго думая начал воспроизводить в ручную данный ВП:
Всё бы ничего, да только моих знаний Labview оказалось недостаточным, и возникли вопросы, которые я пронумеровал в след скрине:
1) - Как я понял числом 48 мы обращаемся к определенному адресу. Как я понял это обычная константа, но когда я ее прописал, и запустил ВП она вместо 48 послала в цикл число 72, и соответственно во все блоки к которым она прицеплена. Но потом я присмотрелся и увидел что на картинке из америки, не просто константа 48 написана, а "x48" - что это и как выставить я не знаю.
2) - Под номером два я выделил адресные данные, как я понял мы этими двоичными кодами обращаемся к определенному порту на АЦП, их записать у меня тоже получилось. Но в конечном итоге если этот двоичный набор начинается с 1, типа 10000010, то он записывается, но как я выяснил для именно моего АЦП нужны такие данные:
Вообщем как это записать я не понимаю, я уже пробовал менять форматы записи в настройках с обычных чисел на байты, ничего не выходит(
3) - Еще такой вопрос постиг меня, какие должны быть форматы у констант ? I32 или какие ?
Пожалуйста помогите
ВП из амер. сети, человека у которого тоже ничего не получилось)(:
Arduino с АЦП ads1115/1015 на Labview
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Arduino с АЦП ads1115/1015 на Labview
x = HEX отображение, переключить режим отображения можно такgamster писал(а):1) - Как я понял числом 48 мы обращаемся к определенному адресу. Как я понял это обычная константа, но когда я ее прописал, и запустил ВП она вместо 48 послала в цикл число 72, и соответственно во все блоки к которым она прицеплена. Но потом я присмотрелся и увидел что на картинке из америки, не просто константа 48 написана, а "x48" - что это и как выставить я не знаю.
При записи чисел в двоичном виде "1" = "00000001"gamster писал(а):2) - Под номером два я выделил адресные данные, как я понял мы этими двоичными кодами обращаемся к определенному порту на АЦП, их записать у меня тоже получилось. Но в конечном итоге если этот двоичный набор начинается с 1, типа 10000010, то он записывается, но как я выяснил для именно моего АЦП нужны такие данные:
............
Вообщем как это записать я не понимаю, я уже пробовал менять форматы записи в настройках с обычных чисел на байты, ничего не выходит
т.е. считается что вы начинаете запись с младших разрядов, а недостающие приравниваются 0
Вам можно контролировать тип в коде.gamster писал(а):3) - Еще такой вопрос постиг меня, какие должны быть форматы у констант ? I32 или какие ?
Например, если загорается "красная точка", значит выполняется преобразование.
При этом не нужно забывать о переполнении, например при суммировании двух U8 (unsigned int = 0..255) чисел, лучше сделать предварительное преобразование в U16, а при вычитании I16 (что бы иметь возможность работать с отрицательными значениями). Иначе получим 250+250=244, а не 500.
На практике достаточно привести тип одного из двух чисел, тогда сама остальные приведет к "большему", как она это сделала при умножении на DBL (Real type). Получается, что на скрине скорее всего старший разряд умножается на I32 (256), а дальше все к нему приводится. В принципе можно сразу там DBL использовать, тогда при умножении на DBL (0.125) уже приведения не будет.
В примере , который Вы выложили закралась ошибка и нормального результата Вы не получите, т.к. там используется U8.... и результат после сложения непредсказуем
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: Arduino с АЦП ads1115/1015 на Labview
Выходные данные LINX (массив U8) надо преобразовать в массив I16. См. пример
- Вложения
-
- ADC Raw Data Converter.png (19.12 КБ) 1872 просмотра
-
- interested
- Сообщения: 4
- Зарегистрирован: 24 окт 2018, 13:28
- Версия LabVIEW: 18
- Контактная информация:
Re: Arduino с АЦП ads1115/1015 на Labview
Спасибо вам за то, что разжевали всё, завтра буду пробовать.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2065 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 4 Ответы
- 220 Просмотры
-
Последнее сообщение Andrew Lunev
-
- 0 Ответы
- 1893 Просмотры
-
Последнее сообщение Anastasia
-
- 0 Ответы
- 343 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2386 Просмотры
-
Последнее сообщение dadreamer