Easyelectronics.ru

Электроника для всех
Текущее время: 22 сен 2019, 13:40

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Еще один термометр
СообщениеДобавлено: 18 апр 2012, 23:26 
Старожил

Зарегистрирован: 02 фев 2012, 19:05
Сообщения: 228
Откуда: Киев
У меня изучение чего-либо нового (не важно в какой области) лучше всего получается тогда, когда есть реальная задача. Если задачи нет – значит ее надо придумать :)
То есть обучение происходит следующим образом:
1. Поиск и обзор информации по теме. Тут я день-два читаю все, что смогу найти по теме, но практически не вникаю в детали. Основная цель – понять общий принцип и узнать существующие возможности и стандартные подходы к решению задач. Когда доходит до реальных задач – имея эти знания, можно быстро раскурить детали.
Изучать все детально и впрок считаю нецелесообразным – пока дело дойдет до практики – нюансы все-равно забудутся. В этом месте хорошо подходит поговорка - Теория без практики мертва, но и практика без теории слепа. Тоесть основная задача этого шага – “прозреть”.

2. Тут появляется (или придумывается) задача (желательно посложней и помногогранней), которая бъется на части и начинается прототипирование отдельных частей, а, соответственно, и детальное изучение различных возможностей, обнаруженных на первом этапе. Тоесть тут мы “оживляем” теорию.

3. В итоге собираю из прототипов частей решение задачи (пока тоже в виде прототипа) и отлажываю его (заставляю все части работать совместно). Все, задача решена – осталось на основе функционально прототипа сделать законченное решение (на основе – не значит взять прототип и превратить в продукт, чаще всего прототип как раз выбрасывается).
Так... Что-то длинное предисловие получилось. Ну да ладно, может кому полезно будет :)

Итак, продолжая заниматься изучением электроники вообще и микроконтроллеров вчастности, а также совмещая приятное с полезным, придумал я себе сложную (для моего уровня) задачу. Пока не скажу какую. Сделаю – отчитаюсь. Скажу только что одним из аспектов задачи является необходимость контроля температуры в 3-х точках и отображение 2-х из них.
Ну а то о чем буду сегодня отчитываться – собственно побочный продукт решения основной задачи.
Итак, что у меня получилось:
Термометр на 2 температуры. В качестве датчиков – 2 DS18B20. Подключены к одному выводу МК. Питание паразитное. При запуске МК производит поиск устройст на шине 1-wire, а затем периодически опрашивает их и выводит значение полученных температур на два трехсимвольных семисегментных индикатора. Индикация динамическая. Использованы 2 сдвиговых регистра 74HC595 – один определяет какие сегменты зажигать, второй – какой символ светить. Таким образом, индикация отбирает всего 3 ноги МК (при желании можно уменьшить хоть до 1-й) и позволяет управлять 8-мю семисегментными символами. Да, регистры с защелкой. Потому проталкивание данных для следующего символа никак не влияет на то, что горит сейчас.
В данном проектике 2 задачи критичных по времени – это динамическая индикация (чуть задержался – видно промаргивание индикаторов) и работа по 1-wire где вообще нужно выдерживать микросекундные задержки. Вначале я какое-то время пытался “вручную” распараллелить их, но безуспешно. Либо таки есть хоть и слабое но заметное мерцание раз в 2-3 секунды, либо полностью ломается работа с датчиками. Понимая что индикация и опрос будут хоть и важными, но далеко не самыми основными и ресурсоемкими операциями в основной задаче – склепал некое подобие риалтайм квазимногозадачной операционной системы с приоритетами задач. Звучит громко. На самом деле есть всего 2 процесса, один основной с низким приоритетом (индикация), второй с высоким (1-wire так как тут микросекунды играют роль). Когда необходимо уделить внимание шине 1-wire – выполнение основного процесса прерывается (с сохранением контекста) и управление передается на высокоприоритетный.
При таком подходе мерцание отсутствует как класс.
Всего получилось порядка 650 байт кода и все это с большим запасом уместилось во флеше ATTiny13. Код пока особо не оптимизирован. Уверен что можно освободить еще байт 100-150.

Кроме того, у тиньки осталось две (если не считать ресет то одна) свободных ножки. Одну хотел использовать для автоматического выключения (обестачиваения) всей схемы через 10 секунд после включения, но не успел – по определенным причинам хотел получить готовое устройство до Пасхи. Поэтому просто подключил питание через кнопку без фиксации.

P.S. Давненько не брал я асемблер в руки :) С прошлого тысячелетия.
Вернулось давно забылое чувство тотального контроля :)

Ну вроде все.
Остались только фотки:

Плата (вообще получилась не очень, да и пайка, мягко говоря, оставляет желать лучшего)
Со стороны индикаторов:
Изображение

Обратная сторона:
Изображение

Зажим для батарейки сделал из двух контактов от реле:
Изображение

В корпусе:
Изображение

Ну и собственно как оно в работе:
Изображение

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 18 апр 2012, 23:28 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Молодца! :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 18 апр 2012, 23:32 
Старожил

Зарегистрирован: 28 дек 2010, 03:18
Сообщения: 741
Откуда: Оренбург
Вы питание с 6-и до 5-и вольт стабилитроном опустили что ли?
Ногти стричь нужно.

_________________
arogov.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 18 апр 2012, 23:35 
Старожил

Зарегистрирован: 02 фев 2012, 19:05
Сообщения: 228
Откуда: Киев
Alekzzz писал(а):
Вы питание с 6-и до 5-и вольт стабилитроном опустили что ли?


Нет. Просто диод. За компанию и защита от переполюсовки.

Alekzzz писал(а):
Ногти стричь нужно.


Ногти не мои :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 18 апр 2012, 23:36 
Старожил

Зарегистрирован: 14 мар 2012, 13:58
Сообщения: 1727
Про ногти я еле сдержался :D

"Корнет! Вы - женщина!?!?" (С)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 18 апр 2012, 23:39 
Старожил
Аватара пользователя

Зарегистрирован: 08 апр 2010, 20:45
Сообщения: 722
А где схема, чертежи ПП?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 18 апр 2012, 23:41 
Старожил

Зарегистрирован: 02 фев 2012, 19:05
Сообщения: 228
Откуда: Киев
WildCat писал(а):
А где схема, чертежи ПП?


Все будет. Надо только причесать немного.
В последний момент менял схему (назначение ножек) в угоду разводке.
Потому сейчас на схеме одно, в разводке другое, в протеусе третье...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 19 апр 2012, 01:27 
Старожил

Зарегистрирован: 02 фев 2012, 19:05
Сообщения: 228
Откуда: Киев
В архиве схема, плата, модель, а также исходники.

Основные функции для работа с шиной 1-wire основаны на реализации Radoslaw Kwiecien, но существеено переработаны, благодаря чему размер этого кода уменьшился более чем на 35%.

Для поиска устройств на шине реализован алгоритм найденный здесь.
(смотреть комментарий некоего Bob Jensen в самом низу)

Сам код поиска очень компактный, но кусок записи найденного серийника может быть существенно оптимизирован.
Я же пытался "экономить" регистры, так как в моем случае каждая задержка - это, по сути, возврат в основной процесс и необходимо сохранение контекста.
Поэтому каждый полученный бит проталкивается через все 8 байт в RAM, что не есть оптимально с точки зрения кода.
(В принципе даже в моем случае можно было изначально просто разделить регистры между процессами и вообще не париться с контекстом, кроме стека и SREG. Но, хорошая мысля приходит опосля)


Вложения:
Комментарий к файлу: схема, плата, модель, исходники
termometer.zip [46.59 Кб]
Скачиваний: 556
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 19 апр 2012, 01:28 
Старожил
Аватара пользователя

Зарегистрирован: 07 фев 2012, 17:42
Сообщения: 1067
Откуда: Москва-Ялта
Как всегда великолепно!

_________________
http://petro-ewlab.com/index.php
майл v.petroew@gmail.com тел. +79152374003
Копипастер, имеет склонность к собирательству информации...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 19 апр 2012, 01:53 
Старожил

Зарегистрирован: 02 фев 2012, 19:05
Сообщения: 228
Откуда: Киев
Спасибо.

Но качество платы и пайки меня совсем не устраивает.
Че-то не поддается мне ЛУТ - то хорошо выйдет, то опять никак.
Сейчас пытаюсь осваивать фоторезист.
Первые результаты обнадеживают.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 19 апр 2012, 18:09 
Старожил
Аватара пользователя

Зарегистрирован: 08 апр 2010, 20:45
Сообщения: 722
2victor.s
А можно схему и печатку в ПДФ или еще каком формате? А то не у всех стоит DipTrace...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Еще один термометр
СообщениеДобавлено: 20 апр 2012, 18:04 
Старожил

Зарегистрирован: 02 фев 2012, 19:05
Сообщения: 228
Откуда: Киев
Можно


Вложения:
Комментарий к файлу: схема и печатка в pdf
pcb.zip [151.86 Кб]
Скачиваний: 445
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB