Arduino с АЦП ads1115/1015 на Labview

Простейшие вопросы в области инженерной разработки

Arduino с АЦП ads1115/1015 на Labview

Postby gamster on 11 Nov 2018, 11:57

Здравствуйте, у меня встал вопрос об использовании стороннего АЦП для Arduino, был взят gy-ads1115/1015, нужно использовать его в дифференциальном, и получаемые значения выводить на экран Labview. Т.к я профан и в Arduino и в Laview, ничегошеньки у меня не получилось). Использую я LINX, обычным светодиодом на Arduino Uno мигать получается, далее я понял, что для этого АЦП нет готового решения на LINX :).
Стал рыть в гугле, единственное, что я нашел, это американские форумы, всего два разных ВП, один вроде как работает и я получаю какие то значения с двух портов, но эти значения не понятны и никак не отражают истину (проверял на пальчиковой батарейки, с использованием мультиметра).
Так как товарищи прикладывали к своим постам только скрины, без готового ВП, я недолго думая начал воспроизводить в ручную данный ВП:
Из интернета.PNG
Скрин с англ. форума

Всё бы ничего, да только моих знаний Labview оказалось недостаточным, и возникли вопросы, которые я пронумеровал в след скрине:
Вопросы.png
Вопросы

1) - Как я понял числом 48 мы обращаемся к определенному адресу. Как я понял это обычная константа, но когда я ее прописал, и запустил ВП она вместо 48 послала в цикл число 72, и соответственно во все блоки к которым она прицеплена. Но потом я присмотрелся и увидел что на картинке из америки, не просто константа 48 написана, а "x48" - что это и как выставить я не знаю.

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

Вообщем как это записать я не понимаю, я уже пробовал менять форматы записи в настройках с обычных чисел на байты, ничего не выходит(

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


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

ВП из амер. сети, человека у которого тоже ничего не получилось)(:
ADS1115 LINX voltage read (3).vi
(30.89 KiB) Downloaded 16 times
gamster
interested
interested
 
Posts: 4
Joined: 24 Oct 2018, 13:28
LabVIEW Version: 18
Karma: 0

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

Postby IvanLis on 11 Nov 2018, 13:41

gamster wrote:1) - Как я понял числом 48 мы обращаемся к определенному адресу. Как я понял это обычная константа, но когда я ее прописал, и запустил ВП она вместо 48 послала в цикл число 72, и соответственно во все блоки к которым она прицеплена. Но потом я присмотрелся и увидел что на картинке из америки, не просто константа 48 написана, а "x48" - что это и как выставить я не знаю.

x = HEX отображение, переключить режим отображения можно так
Снимок экрана от 2018-11-11 13-13-40.png


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

При записи чисел в двоичном виде "1" = "00000001"
т.е. считается что вы начинаете запись с младших разрядов, а недостающие приравниваются 0

gamster wrote: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:
User avatar
IvanLis
professor
professor
 
Posts: 4658
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2010
Karma: 735
hardware VIP bloggers teachers

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

Postby Blackman on 11 Nov 2018, 16:03

Выходные данные LINX (массив U8) надо преобразовать в массив I16. См. пример
Attachments
ADC Raw Data Converter.png
ADC Raw Data Converter.png (19.12 KiB) Viewed 263 times
Blackman
leader
leader
 
Posts: 806
Joined: 17 Jan 2016, 15:02
Medals: 1
Activity (1)
LabVIEW Version: 6.1,8.5,20
Karma: 240
VIP

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

Postby gamster on 11 Nov 2018, 17:07

Спасибо вам за то, что разжевали всё, завтра буду пробовать.
gamster
interested
interested
 
Posts: 4
Joined: 24 Oct 2018, 13:28
LabVIEW Version: 18
Karma: 0


Return to Для чайников

Who is online

Users browsing this forum: Google and 21 guests

cron