8

Часы на АЛ304 с BLUETOOTH. Пост №2

Всем привет! Продолжаю цикл о часах на ал304. Начало тут.  Сегодня поговорим о схемотехнике и разберём отдельные узлы прибора.

Итак, так как я обычно сначала делаю плату, а потом уже рисую схему, то сегодня речь пойдет о ней.

Собственно сама схема (возможны ошибки):

Как видно, сердце моих часов - камень Атмега 328p (Далее МК). Индикаторы (с общим катодом) анодами подцеплены к МК напрямую, так как цеплять резисторы по линиям сегментом как на меня не целесообразно, резисторы в цепи катодов + сопротивление открытого транзистора достаточно, чтобы не выжечь порты МК. Коммутируется каждый сегмент классическим образом - через транзисторный ключ. Блютуз (далее БТ) включен к МК через резисторы, так как есть небольшая разница в логических уровняв между МК и БТ. В первой ревизии часов был установлен стабилизатор ASM1117-3.3, но он жрал батарею на глазах, а здесь каждый миллиампер на счету. Поэтому излишки напряжение убрал с помощью диода Шотки D1.

Зарядку для АКБ хотел сделать на ТР4056 но он по размерах мне не очень да и греется сильно. Гугление привело меня в сторону BRCL3160. Принцип работы прост - стоит компаратор , опорный источник напряжения и "ключ". При достижение на выходе VDD напряжения заряда, которое задается падением напряжения на резисторе R9, ключ размыкается и заряд не идет. Диод D2 препятствует возможному разряду АКБ из за  утечки (какой - вопрос, но так спокойнее). Схема цепи заряда состоит из трех элементов и подключается паралельно АКБ, за искобчением "входного" контакта GND:

Питание БТ по даташиту 3,3 вольта. Но по сути он работает в пределах 2,9-4 вольт и в теории работает от литий  полимерного АКБ. Но макс. напряжение заряда 4,2 вольта. Убрать излишек можно тем же диодом SS14 (D1). При этом при использовании ASM1117-3.3 разница в напряжении на входе и выходе должна быть в пределах 1,2 вольт.  При  этом, если АКБ "сядет" до 3,6в то БТ "получит" около 2,4 вольт и выйдет в дверь отключится. По этому организовал питание через диод (с падением около 100 мВ). Таким Образом получил разброс не 3,6-2,4 вольт, а 4,1- 3,1 вольт ( отсечка контроллера на батарее). Для обеспечения пикового токового питания БТ применено "тантал" на 100 мкФ х 6В:

Подключение вибро - такое же как и разрядов на индикаторе. ТТP223 подключена по даташиту,  добавлен конденсатор между ножкой тача и землёй на 30р , иначе срабатывал сам по себе.

В модуле сенсорной кнопки роль конденсатора выполняет площадка касания и слой текстолит.

Далее интереснее. Микроконтроллеру надо "знать" сколько батарея ещё "протянет". Соответственно надо снимать напряжение на батареи и передавать его на аналоговый вход МК. Сказано - сделано. НО! По умолчанию источником опорного напряжения (далее ИОН) является напряжение питания МК. Можно конечно установить TL431  и напряжение с него подать на вход AREF. Но как видно из схемы :

стабилитрон чудом превратился в конденсатор.  Почему? В МК уже есть несколько ИОН с разными номиналами. Включается он командой analogReference(type), где type команда, которая выставляет нужное напряжение ИОН:

- DEFAULT - источник питания МК.

- INTERNAL - 1.1 Вольт.

- EXTERNAL - напряжение на AREF.

Нас интересует второй вариант. По этому в void setup запишем команду analogReference(INTERNAL).

Далее получается, что МК не увидит напряжение на аналоговых входах выше 1.1 вольта. На помощь приходит резисторный делитель:

Коротко о номиналах. Напряжение на выходе резисторного делителя считаем по формуле Uвх/Uвых = (R2/R1). Для нас справедливо уравнение  VCC/Uвых.=R10/R11). При 1,1 вольте сигнал на пине будет равен 1023. Значит нам не  разрешено выходить за 1,1 вольт. Базовым резистором R10 возьмём номинал в 10К (если сильно большой взять - будет влияние помех сильное).
И так, что нам известно:
Входное напряжение (мах.) -4,2в.

Опорный резистор - 10кОм.

Выходное напряжение - 1,1 в.

Формула расчета верхнего плеча будет R11=R10*(VCC/Uвых)

Подставим значения и получим :

R11=10кОм*(4,2в/1,1в)=38.2 кОм. Нам нужен резистор на 39 кОм (стандартный номинал).

Но я возьму с запасом на 50 к.

Далее. Максимальное напряжение у нас будет меняться в зависимости  от разряда АКБ. Следовательно меняться будет и напряжение на делителе, что нам и надо. Теперь нужно заставить МК "Видеть" напряжение, а не значения. Для этого нужно преобразовать значение на пине А2 (25 нога МК) в напряжение и записать в переменную типа float.
Делается это так:


float volt=0.00;  //создаем переменную в начале программы и ставим значение с 2-я разрядами после  запятой (для точности)


volt = (analogRead(2)*1,1)/1024;  // в переменную записываем значение, считаное с пина А2 умноженное на максимальное напряжение ИОН и разделено на разрядность АЦП МК (1024 для АтмегаХХХ (от 0 до 1023)).


А далее определяем максимальное и минимальное значение батареи (для меня это 4,2 в - 3,4 в) и вычисляем напряжение на выходе резисторного делителя. Для меня это 0,7в - 0,56в.


А далее отображаете инфу как и время.

По дальнейшему развитию проекта (програма, схема и т д.) - следующий пост)

С уважением ваш ChuzhoiChelovek!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества