AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
16.11.2016, 19:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Работа с AD7799
Сообщение от Mr.Denis
|
Здравствуйте!
Помогите пожалуйста разобраться с чтением и данных
|
Попробуй так:
PHP код:
|
result = ((unsigned long int) a ‹‹ 16) + ((unsigned long int) b ‹‹ 8) + (unsigned long int) c;
|
|
|
|
|
16.11.2016, 20:39
|
|
Временная регистрация
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Работа с AD7799
Godzilla82,
Спасибо, за ответ!
Тоже самое выводит:
Нажмите, чтобы открыть спойлер
6554367
6616063
6549759
6607871
6629887
6446847
6577919
6480895
6552063
6783743
Эти показания при том что датчик не нагружен, если я даже рукой нагружаю датчик, то показания меняются в большую сторону.
Если я правильно понимаю, то когда датчик не нагружен показания должны быть значительно ниже.
Думаю может что-то с настройками ошибся!?
Настройки: Continuous-Conversion Mode, Gain = 128, Chenel = 2, Update Rate = 4.17, Unipolar, No Buffer.
Спасибо!
|
|
|
|
16.11.2016, 21:02
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Работа с AD7799
Сообщение от Mr.Denis
|
Unipolar.
|
почему однополярный? как подключен датчик? сколько милливольт с датчика выходит (померять тестером)?
|
|
|
|
16.11.2016, 21:27
|
|
Временная регистрация
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Работа с AD7799
Сообщение от Godzilla82
|
как подключен датчик?
|
К второму входу АЦП. +Сигнал к AIN2(+) / -Сигнал к AIN2(-)
Тут на сто процентов не уверен, потому что на датчик спецификации нет.
Мог перепутать +Сигнал с -Сигнал.
Сообщение от Godzilla82
|
сколько милливольт с датчика выходит (померять тестером)?
|
Относительна +Сигнал / -Сигнал = 0 Вольт.
Относительно GND / +Сигнал = 2.448
Относительно GND / -Сигнал = 2.448
Питание датчика и REF АЦП = 4.90
Тестером измерял как постоянное напряжение в режиме Авто.
Сообщение от Godzilla82
|
почему однополярный?
|
На этот вопрос у меня нет адекватного ответа.(
Спасибо!
|
|
|
|
16.11.2016, 21:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Работа с AD7799
У вас дифференциальное подключение датчика. Поэтому в конфигурации надо устанавливать двуполярный режим.
Диапазон кодов при двуполярном режиме расписан в даташите.
|
|
|
|
16.11.2016, 22:06
|
|
Временная регистрация
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Работа с AD7799
Получается что, от 0x000000 до 0x800000 значения со знаком -, а от 0x800000 до 0xFFFFFF со знаком + ?
Если это так, то тогда мне нужно сделать что-то типа:
Value -= 0x800000
Спасибо!
|
|
|
|
16.11.2016, 22:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Работа с AD7799
нужно значение, выдаваемое без нагрузки принять за ноль. и это значение вычитать из результатов измерений.
|
|
|
Сказали "Спасибо" Godzilla82
|
|
|
17.11.2016, 00:19
|
|
Временная регистрация
Регистрация: 24.08.2010
Сообщений: 74
Сказал спасибо: 41
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Работа с AD7799
Что-то я совсем запутался...(
Считал 24-bit регистр данных, и положил в переменную result:
PHP код:
|
unsigned long result = 0;
SPI_WriteByte(0x58);
unsigned char a = SPI_Read();
SPI_WriteByte(0x00);
unsigned char b = SPI_Read();
SPI_WriteByte(0x00);
unsigned char c = SPI_Read()
result = ((unsigned long) a ‹‹ 16) + ((unsigned int) b ‹‹ 8) + c;
|
Получается что в result находятся голые данные с АЦП. Правильно получается, что при частоте опроса 4.17Гц. из 24 бит мы реально имеем 18 бит? Если да, то тогда мы можем первые 6 бит откинуть.
Теперь получается 18 битный результат и часть шумов(помех) откинуты?
После этого результат нужно отфильтровать, а потом преобразовывать?
Спасибо!
|
|
|
|
17.11.2016, 00:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,049
Сказал спасибо: 3,040
Сказали Спасибо 3,209 раз(а) в 2,179 сообщении(ях)
|
Re: Работа с AD7799
Сообщение от Mr.Denis
|
Получается что, от 0x000000 до 0x800000 значения со знаком -, а от 0x800000 до 0xFFFFFF со знаком + ?
|
Абсолютно не так.
+макс. 0x7FFFFF
+1 0x000001
0 0x000000
-1 0xFFFFFF
-макс. 0x800000
Уберите "unsigned" и компилятор всё сделает сам.
|
|
|
|
17.11.2016, 00:40
|
|
Почётный гражданин KAZUS.RU
Регистрация: 29.10.2006
Сообщений: 1,446
Сказал спасибо: 99
Сказали Спасибо 317 раз(а) в 233 сообщении(ях)
|
Re: Работа с AD7799
Сообщение от Mr.Denis
|
то тогда мы можем первые 6 бит откинуть.
Теперь получается 18 битный результат и часть шумов(помех) откинуты?
После этого результат нужно отфильтровать, а потом преобразовывать?
|
Усреднять лучше с шумами. Точнее получится.
Сообщение от ForcePoint
|
+макс. 0x7FFFFF
+1 0x000001
0 0x000000
-1 0xFFFFFF
-макс. 0x800000
Уберите "unsigned" и компилятор всё сделает сам.
|
Сообщение от ForcePoint
|
Абсолютно не так.
|
Почитайте даташит на AD7799. Там своё представление:
-MAX = 0
0 = 2^23
MAX = 2^24.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:14.
|
|