Arduino с АЦП ads1115/1015 на Labview

Простейшие вопросы в области инженерной разработки
Ответить
gamster
interested
interested
Сообщения: 4
Зарегистрирован: 24 окт 2018, 13:28
Версия LabVIEW: 18
Контактная информация:

Arduino с АЦП ads1115/1015 на Labview

Сообщение 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 КБ) 1870 просмотров
Вообщем как это записать я не понимаю, я уже пробовал менять форматы записи в настройках с обычных чисел на байты, ничего не выходит(

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


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

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

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

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

Сообщение 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:
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

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

Сообщение Blackman »

Выходные данные LINX (массив U8) надо преобразовать в массив I16. См. пример
Вложения
ADC Raw Data Converter.png
ADC Raw Data Converter.png (19.12 КБ) 1850 просмотров
gamster
interested
interested
Сообщения: 4
Зарегистрирован: 24 окт 2018, 13:28
Версия LabVIEW: 18
Контактная информация:

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

Сообщение gamster »

Спасибо вам за то, что разжевали всё, завтра буду пробовать.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»