Страница 1 из 1

Arduino с АЦП ads1115/1015 на Labview

Добавлено: 11 ноя 2018, 11:57
gamster
Здравствуйте, у меня встал вопрос об использовании стороннего АЦП для Arduino, был взят gy-ads1115/1015, нужно использовать его в дифференциальном, и получаемые значения выводить на экран Labview. Т.к я профан и в Arduino и в Laview, ничегошеньки у меня не получилось). Использую я LINX, обычным светодиодом на Arduino Uno мигать получается, далее я понял, что для этого АЦП нет готового решения на LINX :).
Стал рыть в гугле, единственное, что я нашел, это американские форумы, всего два разных ВП, один вроде как работает и я получаю какие то значения с двух портов, но эти значения не понятны и никак не отражают истину (проверял на пальчиковой батарейки, с использованием мультиметра).
Так как товарищи прикладывали к своим постам только скрины, без готового ВП, я недолго думая начал воспроизводить в ручную данный ВП:
Скрин с англ. форума
Скрин с англ. форума
Всё бы ничего, да только моих знаний Labview оказалось недостаточным, и возникли вопросы, которые я пронумеровал в след скрине:
Вопросы
Вопросы
1) - Как я понял числом 48 мы обращаемся к определенному адресу. Как я понял это обычная константа, но когда я ее прописал, и запустил ВП она вместо 48 послала в цикл число 72, и соответственно во все блоки к которым она прицеплена. Но потом я присмотрелся и увидел что на картинке из америки, не просто константа 48 написана, а "x48" - что это и как выставить я не знаю.

2) - Под номером два я выделил адресные данные, как я понял мы этими двоичными кодами обращаемся к определенному порту на АЦП, их записать у меня тоже получилось. Но в конечном итоге если этот двоичный набор начинается с 1, типа 10000010, то он записывается, но как я выяснил для именно моего АЦП нужны такие данные:
Нужные данные
Нужные данные
правильные данные.PNG (2.59 КБ) 1917 просмотров
Вообщем как это записать я не понимаю, я уже пробовал менять форматы записи в настройках с обычных чисел на байты, ничего не выходит(

3) - Еще такой вопрос постиг меня, какие должны быть форматы у констант ? I32 или какие ?


Пожалуйста помогите :suicide:

ВП из амер. сети, человека у которого тоже ничего не получилось)(:
ADS1115 LINX voltage read (3).vi
(30.89 КБ) 100 скачиваний

Re: Arduino с АЦП ads1115/1015 на Labview

Добавлено: 11 ноя 2018, 13:41
IvanLis
gamster писал(а):1) - Как я понял числом 48 мы обращаемся к определенному адресу. Как я понял это обычная константа, но когда я ее прописал, и запустил ВП она вместо 48 послала в цикл число 72, и соответственно во все блоки к которым она прицеплена. Но потом я присмотрелся и увидел что на картинке из америки, не просто константа 48 написана, а "x48" - что это и как выставить я не знаю.
x = HEX отображение, переключить режим отображения можно так
Снимок экрана от 2018-11-11 13-13-40.png
gamster писал(а):2) - Под номером два я выделил адресные данные, как я понял мы этими двоичными кодами обращаемся к определенному порту на АЦП, их записать у меня тоже получилось. Но в конечном итоге если этот двоичный набор начинается с 1, типа 10000010, то он записывается, но как я выяснил для именно моего АЦП нужны такие данные:
............
Вообщем как это записать я не понимаю, я уже пробовал менять форматы записи в настройках с обычных чисел на байты, ничего не выходит
При записи чисел в двоичном виде "1" = "00000001"
т.е. считается что вы начинаете запись с младших разрядов, а недостающие приравниваются 0
gamster писал(а):3) - Еще такой вопрос постиг меня, какие должны быть форматы у констант ? I32 или какие ?
Вам можно контролировать тип в коде.
Например, если загорается "красная точка", значит выполняется преобразование.
При этом не нужно забывать о переполнении, например при суммировании двух U8 (unsigned int = 0..255) чисел, лучше сделать предварительное преобразование в U16, а при вычитании I16 (что бы иметь возможность работать с отрицательными значениями). Иначе получим 250+250=244, а не 500.
На практике достаточно привести тип одного из двух чисел, тогда :labview: сама остальные приведет к "большему", как она это сделала при умножении на DBL (Real type).
Снимок экрана от 2018-11-11 13-31-54.png
Получается, что на скрине скорее всего старший разряд умножается на I32 (256), а дальше все к нему приводится. В принципе можно сразу там DBL использовать, тогда при умножении на DBL (0.125) уже приведения не будет.

В примере :vi: , который Вы выложили закралась ошибка и нормального результата Вы не получите, т.к. там используется U8....
Снимок экрана от 2018-11-11 13-38-49.png
и результат после сложения непредсказуем :crazy:

Re: Arduino с АЦП ads1115/1015 на Labview

Добавлено: 11 ноя 2018, 16:03
Blackman
Выходные данные LINX (массив U8) надо преобразовать в массив I16. См. пример

Re: Arduino с АЦП ads1115/1015 на Labview

Добавлено: 11 ноя 2018, 17:07
gamster
Спасибо вам за то, что разжевали всё, завтра буду пробовать.