Easyelectronics.ru

Электроника для всех
Текущее время: 18 ноя 2019, 10:26

Часовой пояс: 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 Кб]
Скачиваний: 559
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 Кб]
Скачиваний: 446
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

Сейчас этот форум просматривают: sdv_cyborg


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

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

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