В настоящее время я пытаюсь установить связь с датчиком температуры / относительной влажности на регистраторе данных CR1000x (ведущим является регистратор данных)
В настоящее время я использую следующий код:
Public TemporaryRead as Long
BeginProg
PortPairConfig(C5,2) 'set C5 for SCL and C6 for SDA and at 3.3V'
I2COpen (C5, 500000) '500 mHZ start at port C5
I2CWrite (C5, &H44, &H2130, 3, &H2)
Scan (1, Sec, 0, 0)
PanelTemp (PTemp, 60)
Battery (Batt_Volt)
I2CWrite (C5, &H44, &HE000, 2, &H2)
I2CRead (C5, &H44, TemporaryRead, 4, &H5)
NextScan
EndProg
Однако переменная TemporaryRead выводится как значение -1.
Несколько ссылок, которые помогут вам получить эту работу
- программа написана на CRBasic, некотором проприетарном языке / редакторе, который
походит на Basic для оборудования Campbell Scientific
- I2CWrite (BeginPort, Адрес, Источник, NumBytes, Опция)
- Источник - инструкция по записи в I2C, в паспорте сказано, что это
16-битные команды, поэтому поверх 8-битного адреса я классифицирую NumBytes как 3 байта
- Параметр «Перезагрузка», «Старт» и «Стоп» (111). Таким образом, старт без остановки - 010 (2)
I2CRead (BeginPort, адрес, пункт назначения, NumBytes, опция)
- Место назначения - переменная для сохранения содержимого в
- Возвращает 16-битное значение температуры и 16-битное значение влажности, поэтому я поставил 4 байта
- Опция (остановка, запуск, перезапуск) (Перезапуск с остановкой 101 -> 5)
Таблица данных датчиков: https://www.sensirion.com/fileadmin/user_upload/customers/sensirion/Dokumente/0_Datasheets/Humidity/Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital.pdf
- 0x2130 - периодические измерения 1 в секунду
- 0xE000 - выборка данных
- 0x44 - адрес датчика
На страницах 9 и 11 таблицы данных я получил команды для ввода в методы I2CWrite для этого датчика. Буду очень признателен за любую информацию о том, где я ошибаюсь и как я могу правильно общаться с этим датчиком