Главная  
09.02.2012 г.
Главная
Проекты
Статьи
Начинающим
Архив новостей
Ссылки
Контакты
Поиск
Файлы
Форум
Карта сайта
Авторизация





Забыли пароль?
Ещё не зарегистрированы? Регистрация
Поддержи наш сайт!
Через WebMoney

 R785211844650
 Z210696637574
 E368177590409

или
пополни нашу копилку



Форум ARV Research
Добро пожаловать, Гость
Пожалуйста Вход или Регистрация.
Забыли пароль?
Датчики DS18*20 и все что с ними связанно (1 просматривает)
_GEN_GOTOBOTTOM Ответить

TOPIC: Датчики DS18*20 и все что с ними связанно

#4509
ICETUX (Пользователь)
Новичок
Постов: 23
graphgraph
Датчики DS18*20 и все что с ними связанно 12.03.2010 12:55 Репутация: 0  
Здравствуйте форумчане.
Темы похожей не нашел здесь, поэтому решил создать.
Тема такая: собираю систему защиты блока питания
усилителя на МК AT90S8515, для контроля температуры планирую использовать датчики DS1820, планирую разместить 7-10 датчиков
на отдельные выходы МК, затем опрашивать их в цикле и в зависимости
от наибольшей температуры регулировать скорость вращения кулеров
с помощью ШИМ канала.
Подскажите пожалуйста кто работал с такими датчиками их лучше использовать с таким подключением как я указал выше или лучше объеденить в сеть, а затем опрашивать?
И еще вопрос после того, как датчик получил команду на конвертацию
температуры полученное значение сохраняется во внутреннем регистре датчика до следующего запроса или удаляется?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4510
ARV (Администратор)
Администратор
Постов: 1871
graph
В ответ на: Датчики DS18*20 и все что с ними связанно 12.03.2010 13:58 Репутация: 166  
можно и так и эдак, в основе выбора должна быть какая-то важная причина сделать именно так. вот вы почему решили разнести их по портам? это ведь лишние резисторы на подтяжки... ну и немного удивляет количество датчиков для защиты блока питания... не многовато ли? дело, конечно, не мое, но странно все-таки

что касается значения температуры, то оно сохраняется во внутреннем ОЗУ датчика до запуска очередного измерения или отключения питания.
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4513
ICETUX (Пользователь)
Новичок
Постов: 23
graphgraph
В ответ на: Датчики DS18*20 и все что с ними связанно 12.03.2010 21:35 Репутация: 0  
Да ARV вы правы причина действительно в таком решении есть, мне просто как новичку в деле программирования МК
показалось немного сложным работать с сетью датчиков на шине.
По количеству датчиков все просто, просто мы с товарищем собираем усилитель звука, а датчики темперытуры планируем установить на теплоотводящих пластинах транзисторов,усилителей мощности.Может кто подскажет ответы на следующие вопросы:
- если на шине несколько датчиков то по команде поиск адресов ответ в каком формате будет выдан на Мк;
- достаточно ли в начале программы найти все устройства на шине, записать их в переменные, а затем использовать их при опросе;
- после того как активируется конкретное устройство на шине все дальнейшие команды на конвертацию, чтение запись будут касаться только этого датчика или как-то иначе.
- и как посоветуете сохранять результаты преобразований от датчиков для дальнейшего сравнения, в регистрах или лучше выделить под это дело память МК.

Кстати ARV отдельное вам спасибо за статью по программированию датчиков и описании работы шины i-wire на ассемблере, очень помогла, одна из самых адекватных, которые доводилось читать. Так что кто планирует работать с i-wire обязательно читать, снимает кучу вопросов.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4514
ARV (Администратор)
Администратор
Постов: 1871
graph
В ответ на: Датчики DS18*20 и все что с ними связанно 13.03.2010 10:10 Репутация: 166  
вы тогда прочтите и общую статью об интерфейсе, возможно, тогда и вопросов меньше будет по логике работы с сетью датчиков. а пока вот ответы на ваши вопросы:

1. говорить о "команде" поиска особо и не стоит, т.к. ответ на эту команду весьма хитрый. лучше говорить о функции поиска устройств (библиотечная ф-я для 1-wire). так вот, функция поиска при каждом вызове возвратит вам или адрес (8 байт) очередного девайса на шине, или 0, если больше девайсов нету. т.е. ее надо вызывать в цикле до тех пор, пока все устройства не будут найдены. разумеется, возвращенные адреса надо где-то сохранять.
2. именно так: сначала нашли все, а потом используем. но такой подход верен только для стационарной системы, в которой количество девайсов на шине постоянно и не меняется в процессе работы (ваш случай). если же девайсы на ходу подконнекчиваются и отключаются - надо искать всякий раз перед обращением или избрать иной алгоритм работы.
3. до подачи сигнала RESET работа ведется только с "активированным" по адресу устройством.
4. советую писать программу на Си и, соответственно, не ломать голову над местом хранения данных - храните их в переменных или массивах, а конкретное место выберет компилятор.

рекомендую так же задуматься над другим подходом к работе с кучей датчиков. сначала вы при помощи компьютера определяете адрес каждого вашего датчика, и помечаете каждый датчик, например, краской. в итоге вы имеете табличку типа "синий - адрес 0022003440560, красный - адрес 485623863, и т.д.". затем вы распаиваете свои датчики по схеме, при этом вы уже знаете, температуру какого узла будет мерить синий или иной датчик. в программе своей вы жестко забиваете таблицу адресов ваших датчиков, и пишите ее уже зная, какой адрес какую температуру выдает (синий - левый канал, красный - правый, зеленый - блок питания и т.д.). при этом вам не надо искать датчики, нет путаницы с тем, как понять, какой адрес какой узел измеряет (что неизбежно, если вы будете искать датчики в программе), если откажет какой-то датчик - вы сразу узнаете, какой именно. минус тут тоже есть: если датчик откажет и его вы замените - придется перекомпилировать программу, т.е. записать его адрес в нее заново.

Содержимое поста отредактировано: ARV, в: 13.03.2010 10:12
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4611
ICETUX (Пользователь)
Новичок
Постов: 23
graphgraph
В ответ на: Датчики DS18*20 и все что с ними связанно 23.03.2010 12:37 Репутация: 0  
Доброго времени суток!
ARV огромное спасибо за ссылку на статью, очень полезна.
Но вот по ходу дела возникли еще некоторые вопросы, возможно
немного смешные и немного не в тему, сильно не пинайте новичка
в деле прграммирования МК.
Как уже писал хочу использовать около 10 датчиков DS1820 МК AT90S8515 но кроме опроса датчиков и регулирования скорости кулера
по ШИМ каналам планирую управлять питанием блока питания, через
кнопку сеть. Вопрос такой:
- если посадить эту кнопку на вывод INT0 и назначить на него прерывание а затем например между замерами температур с разных датчиков разрешать прерывания для МК и соответственно отслеживать
нажатие кнопки "сеть" или же лучше отслеживать состояние вывода
МК программно или же при таком количестве датчиков контроль температуры сделать на одном МК, а все остальное на другом дополнительном МК.
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4629
ARV (Администратор)
Администратор
Постов: 1871
graph
В ответ на: Датчики DS18*20 и все что с ними связанно 24.03.2010 08:10 Репутация: 166  
так что вы от меня-то хотите? на сколько у вас хватит опыта программирования - так и делайте. я с кнопками по прерываниям не заморачиваюсь, до сего дня обходился программным опросом.
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4768
ICETUX (Пользователь)
Новичок
Постов: 23
graphgraph
В ответ на: Датчики DS18*20 и все что с ними связанно 22.04.2010 18:06 Репутация: 0  
Доброго времени суток всем!
Продолжаю ботроться со своим девайсом.
Возник вопрос, может кто сталкивался. Как я выше писал датчиков DS1820 у меня
7-8 штук, схему решил реализовать на каждую ногу МК по датчику. Как я понял
из статьи от ARV (познавательно спасибо) сброс RESET шины и ожидание ответа от датчика
по времени где-то 0,9 мкс, затем анализируем флаг Z (есть датчик или ошибка).
Вопрос вот в чем:
Возможно ли подавать сигнал RESET сразу на несколько датчиков и соответственно реализовать
проверку на наличие или это не реально, т.к ответ от датчика может поступить в интервале от 60-240мкс и отследить какой из датчиков ответил точно невозможно, т.е делать только так: проверяем один датчик, ждем ответа, ели все ок, то следующий датчик и т.д.???
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4769
ARV (Администратор)
Администратор
Постов: 1871
graph
В ответ на: Датчики DS18*20 и все что с ними связанно 22.04.2010 19:04 Репутация: 166  
думаю, что возможно, только придется в нужном промежутке "опроса" делать многократное считывание порта и двоиичное И между считанными значениями, примерно так:
Code:

 PORTB 0// к этому порту подключены датчики DDRB 255// выдаем во все 8 линий низкий уровень delay(RESET_TIME); // отрабатываем длительность импульса RESET DDRB 0// отпускаем все линии delay(RESPONCE_TIME); // ждем интервал перед ответами char result 0xFF// это переменная для хранения "ответов" for(char i=0i<25i++){ // 25 раз будем опрашивать    result &= PINB;    delay(3); // задержка между опросами } // теперь в result будут 0 в тех битах, по линиям которых были ответы от датчиков


вот как-то так примерно
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4807
ICETUX (Пользователь)
Новичок
Постов: 23
graphgraph
В ответ на: Датчики DS18*20 и все что с ними связанно 28.04.2010 12:22 Репутация: 0  
ARV Спасибо за полезный совет.
Продолжаю биться со своим девайсом.
Вопрос не много не в тему, но в рамках устройства. Подскажите,
пишу процедуру выключения управляемого устройства, нужно
остановить кулеры управляемые ШИМ (OC1A, OC1.Если сделать так:
OUT TCCR1B,0<<CS12|0<<CS11|0<<CS10; остановить таймер счетчик
OUT TCCR1A,0<<COM1A0|0<<COM1A1|0<<COM1B0|0<<COM1B1;отцепить выводы от таймера
то эта команда сбросит состояние выводов (OC1A,Oc1 или их нужно еще отдельно обнулять?
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
#4808
ARV (Администратор)
Администратор
Постов: 1871
graph
В ответ на: Датчики DS18*20 и все что с ними связанно 28.04.2010 14:26 Репутация: 166  
с чего произойдет изменение регистра, к которому вы не обращаетесь? разумеется, OCRxx останутся неизменными.
Не стыдно не знать, стыдно не учиться
  Для добавления сообщений Вы должны зарегистрироваться или авторизоваться.
_GEN_GOTOTOP Ответить
© Copyright 2007 Best of Joomla, Работает на FireBoardполучить последние сообщения прямо на Ваш рабочий стол