Не могу завести BMP085 на Атмеге32 в Codevision. Датчик брался в деалэктриме уже распаянный с подтяжкой, конденсаторами и стабилизатором на 3,3 В. Мега питалась от 5 В и 3,8 В (ниже уже не показывает ЖК). Проблема в том, что содержимое любого байта регистра возвращается как FF, да и при отключеном датчике программа работает также и показывает 255 (т.е. FF). Ощущение, что датчик совсем нерабочий. вот код чтения
Если Мега работала на +5, то эти +5 были и по SDA/SDL. Могло пожечь датчик.
Dj_Alex писал(а):
Ощущение, что датчик совсем нерабочий.
Документация на датчик читалась?
Dj_Alex писал(а):
i2c_start() выдает 1, что означает шина свободна. Это значит нет устройств?
А что говорит документация CV на эту функцию? Что должно вернуть?
Dj_Alex писал(а):
Как определить адреса устройств, которые висят на шине? В примере для Raspberry Pi значится #define BMP085_I2C_ADDRESS 0x77
Понятно, вопрос о документации снимаю как неактуальный. Я уже не удивлен. Такое ощущение, что нынче не модно читать документацию 4.2 Device and register address The BMP085 module address is shown below. The LSB of the device address distinguishes between read (1) and write (0) operation, corresponding to address 0xEF (read) and 0xEE (write).
Имхо, гораздо проще, быстрее и интереснее открыть даташит на BMP085, даташит на TWI в Атмеге и за полчаса набросать функции записи/чтения. Вместо использования каких-то примеров, без понимания что и как там делается. Спойлер
Код:
//---------- // команда чтения регистра BMP085 #define BMP085_R 0xEF
Согласно ДШ байт с I2C адресом для записи в BMP085 должен быть 0хЕЕ. Я не знаю как работает CodeVison, может он сдвигает адрес 0х77 на бит влево для получения 0хЕЕ. Однако, тогда, адрес для чтения 0х77 | 1 до сдвига будет тоже 0х77 (?) Попробуйте адреса 0хЕЕ и 0хEF. http://www.bosch-sensortec.com/content/language1/downloads/BST-BMP085-DS000-05.pdf
Народ, аналогичная проблема, помогите понять алгоритм обращения к датчику. У меня есть адаптер USB <-> I2C на микроконтроллере PIC (с поддержкой шины). Обмен данными с этим адаптером осуществляется через виртуальный COM-порт, собственно, какие последовательности я должен слать, например в терминал, чтобы получить данные?
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Спасибо, но если бы мне необходимо было получать данные микроконтроллером, то вопросов бы не было. У меня же замеры должны осуществляться компьютером через виртуальный COM-порт, который по сути выполняет функции шины I2C. И прежде чем написать софт, мне необходимо узнать, какую последовательность команд выставлять на шину I2C через тот же терминал, чтобы получить ответ от датчика.
Извините не понял сразу. Да пожалуй и никто не поймет. Вы ничего не сказали, что у вас за адаптер. Какой датчик температуры они там подключают... Надо разбираться как реализован т.н. "автомат состояний" в вашем пике. Обмен данных по iic шине с BMP085 приводится на стр. 15 даташита. Морока в общем. Проще к готовому проекту типа того, что я вам привел поддержку RS232 прикрутить.
Zorg - народ прав, в том, что ответ на Ваш вопрос присутствут в явном виде в ДШ на сенсор. Именно, внизу на стр. 18 приведен (осциллограммы) пример какие нужно формировать сигналы на выводах SDA и SCL для чтения 2-х байт из сенсора. В проектах на МК для работы с сенсором формируются точно такие-же сигналы, какие Вам нужно будет генерировать через преобразователь USB-I2C. Поэтому посмотреть исходник работающего проекта будет очень полезно. Кстати, не забудьте о необходимости формирования сигналов типа START, STOP, ACK, NACK, которые не сводятся просто к посылке определенных байтов в сенсор.
signed short ac1; signed short ac2; signed short ac3; signed short b1; signed short b2; signed short mb; signed short mc; signed short md; unsigned short ac4; unsigned short ac5; unsigned short ac6;
long bmp085Read2Bytes(unsigned char address) {
unsigned int msb=0; unsigned int lsb=0; unsigned int data;
delay_ms(10);
i2c_start(); //посылаем команду "старт" в шину i2c i2c_write(BMP085_W); //посылаем в шину адрес устройства i2c_write(address); //посылаем в шину адрес читаемой ячейки i2c_start(); // снова посылаем "старт" в шину i2c_write(BMP085_R); //пишем адрес устройства(BMP085) + состояние “чтение” msb=i2c_read(0); //принимаем данные с лини и сохраняем в переменную i2c_stop();
Ниже написанный код неверно выдает показания с датчика завышает примерно на 29 мм.рт.ст.
Завышение всегда одно и тоже - +29?
vvsv писал(а):
В чем может быть причина?
Уверен в том значении, от которого завышено? Может быть врет не BMP, а "калибровочный" замеритель?
По коду вроде бы все правильно. Могу только посоветовать вывести все-все сырые значения (калибровочных регистров, сырой замер давления и температуры), посчитать руками и сравнить. Я в своё время так нашёл ошибку со скобками.
Теперь имеется библиотека для работы BMP180 ( BMP085) на CodeVisionAVR
Прошу прощения за беспокойства, имеется датчик BMP180, хочу сделать метеостанцию, могу писать только CVAVR? подскажите какую библиотеку надо заменить? подскажите начинающему. Заранее спасибо.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения