В общем не пошла стандартная библиотека в CVAVR. И так как в термостате нужен только один датчик, то сделал так: Всё вроде бы работает индикаторы не мерцают никаких 9999 не проскакивает. Индикация динамическая, кнопки настроек 4шт. работают по прерыванию таймера. Буду гонять и смотреть. Не знаю на сколько всё правильно сделал, возможно всё не правильно, но в железе вроде бы всё стабильно.
Спойлерwhile (1) {
//////////////////////////////// замер температуры //////////////////////////////////////////
if (flag==30){ // замер t по таймеру 0 w1_init(); w1_write(0xcc); w1_write(0x44); if (z==1){ delay_ms(800); // задержка вводится только 1 раз после включения питания } w1_init(); w1_write(0xcc); w1_write(0xbe); temper=w1_read(); //формирование полученного значения температуры temper=((w1_read())<<8)+temper; temper=temper/16; // плюсовая температура с датчика приходит умноженная на 16, поэтому делим на 16
flag=0; // обнуляем переменную flag z=3; c=temper; // присваиваем переменной с значение переменной temper
if (temper<0){ // если температура меньше 0 то - temper=0.0-temper; // преобразуем в понятный вид }
display1=temper; // присваиваем переменной display значение переменной temper для вывода на индикатор b++; }
//////////////////////////////// управление нагрузкой
if (temper>=display){ // если температура достигнет заданной термостатом PORTC.5=0; // выключить нагрузку } if ((temper<termdown)&(b==2)){ // если температура достигнет нижнего значения гистерезиса PORTC.5=1; // включить нагрузку } b=1; termdown=display-m+1; // переменная termdown нижний предел термостата, равен разности term и m
_________________ Что поиск рулит знаю. Забанен во всех поисковых системах.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Карма: 67
Рейтинг сообщений: 1012
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 18809 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
Вадиматоричик писал(а):
в отдельную тему.
Здорово. Обычно после этого ещё дают ссылку на тему.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Подскажите, какие есть идеи. Есть DS1820, подключил к атмеге16, вывожу на дисплей. Только при комнатной температуре датчик показывае минус 33 градуса. Греешь пальцами - показыает минус 27.5, если греть зажигалкой осторожно - то уходит выше нуля температура. В чем может быть проблема?
Короче,вот состряпал прогу термометра для 2х датчиков с выводом на два 7-мисегментника.Индикация нормальная,но при отсутствии датчиков индикаторы показывают -15.Почему,понять не могу? И может кто-нить знает,как можно сделать вывод десятых долей градуса? Применена мега16. Хотел сначала на меге8 сделать,но побоялся по 2 раз- ряда на 1 вывод вешать а ключи на транзюках было лень делать.Пришлось лупить из гаубицы по мухам....
Карма: 67
Рейтинг сообщений: 1012
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 18809 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
eduardo писал(а):
Почему,понять не могу?
Видимо, "111111111111111111111111" в отсутствие датчика воспринимается как число в доп. коде, и после махинаций с битами дробной части и/или знака получается "11111111111111110000". Количество "1" примерное.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Если датчика нет, то ds18b20_temperature(&rom_code[0][0]) вернет -9999, что в 16-ричном целочисленном виде есть D8F1, а так, как переменная temp1 - типа unsigned char (вот тут и ошибка), то в нее попадет F1 - что соответствует -15 в знаковом представлении. И, вообще-то, ds18b20_temperature(&rom_code[0][0]) возвращает float (это к тому, что можно десятые доли спокойно использовать).
Побитное И по маске с байтом, в котором единицы в дробной части, конкретно для 18b20 LS байт содержит дробную часть в младших четырех битах, т.е. байт маски 0x0F. Аналогично можно определить знак - побитное И старшего MS байта температуры c байтом, в котором единичка только в старшем разряде - 0x80.
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
eduardo писал(а):
Почему,понять не могу?
Вся проблема в использовании каких-то сторонних недобиблиотек, и от незнания их работы. 100500-ый раз совет - разберитесь с протоколом 1-Wire, потом покурите даташит на датчик и сделайте всё самостоятельно. Ничего там сложного нет - обычное ногодрыганье с задержками.
Вся проблема в использовании каких-то сторонних недобиблиотек, и от незнания их работы. 100500-ый раз совет - разберитесь с протоколом 1-Wire, потом покурите даташит на датчик и сделайте всё самостоятельно. Ничего там сложного нет - обычное ногодрыганье с задержками.
Да только я не знаю как это делать.... Как например сделать на Си,чтобы контроллер установил шину в низкое состояние на какой-либо период времени?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения