ChuzhoiCHelovek

ChuzhoiCHelovek

Пикабушник
поставил 1 плюс и 1 минус
211 рейтинг 2 подписчика 2 подписки 4 поста 1 в горячем

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

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

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

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

Часы на АЛ304 с BLUETOOTH. Пост №2 Atmega, Arduino, Часы, Своими руками, Винтаж, Украшение, Стиль, Программирование, C++, IDE, Схема, Радио, Длиннопост

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

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

Часы на АЛ304 с BLUETOOTH. Пост №2 Atmega, Arduino, Часы, Своими руками, Винтаж, Украшение, Стиль, Программирование, C++, IDE, Схема, Радио, Длиннопост

Питание БТ по даташиту 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В:

Часы на АЛ304 с BLUETOOTH. Пост №2 Atmega, Arduino, Часы, Своими руками, Винтаж, Украшение, Стиль, Программирование, C++, IDE, Схема, Радио, Длиннопост

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

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

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

Часы на АЛ304 с BLUETOOTH. Пост №2 Atmega, Arduino, Часы, Своими руками, Винтаж, Украшение, Стиль, Программирование, C++, IDE, Схема, Радио, Длиннопост

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

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

- INTERNAL - 1.1 Вольт.

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

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

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

Часы на АЛ304 с BLUETOOTH. Пост №2 Atmega, Arduino, Часы, Своими руками, Винтаж, Украшение, Стиль, Программирование, C++, IDE, Схема, Радио, Длиннопост

Коротко о номиналах. Напряжение на выходе резисторного делителя считаем по формуле 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!

Показать полностью 5

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

Всем привет, дороги читатели! Длинопост!

В одном из магазинов города наткнулся на очень интересные индикаторы АЛ304 и всего по 10 гривен. Понравились - беру!

Сразу в голове идея  - часы! Но не простые.

Функции планирую следующие:

- отображение времени ( само собой);

- уведомление о звонке (надпись CALL + вибро);

- уведомление о сообщениях ( надпись MESS + вибро);

- просмотр даты;

- будильник;

- сброс звонка;

- индикация заряда батареи;


Что то и этого сделаю, а что то может нет, но да ладно.


Первым делом самолеты надо разобраться с деталями, и вот что у меня оказалось под рукой (Цена в Украине):

- Микроконтроллер Atmega328p (TQF32). (Брал на али по 0,8$ за шт.)

- Горсть транзисторов 8050 (для катодов индикаторов и вибро мотора.(по 50 коп. х 5шт.=2.5 грн.)

- Керамический резонатор в SMD исполнении. (3 грн.)

- Контроллер сенсорной кнопки ТТР223 (да, кнопка одна и да, она сенсорная(планирую 

акриловый верх)) (2 грн.).
- Контроллер заряда BRCL3160MF (1.5 грн.).  Даташит!

- Индикатор АЛ304 (10грн. х4 шт.= 40грн.).

- Микро USB (5грн.).
- Резисторы: (15шт. х 0,3грн. = 4.5 грн.).

-10 Ом  (4шт.).

-100 Ом  (1шт.).

-1 кОм  (7шт.).

-10 кОм  (2шт.).

-56 кОм  (1шт.).

-Конденсаторы: (5шт. х 1грн. =4 грн.)

-0.1 мкФ  (2 шт.).

-1 мкФ  (2 шт.).

-100  мкФ  (1 шт.). Выпаян с какой то платы.

-Диоды SS14(можно и 4148) (2шт. х 0,5грн. =1 грн.).

-Блютуз НС-05 (остался от других проектов) (50 грн.).

-Аккумулятор liPol 500mAh - (50 грн.).

-Текстолит - бесплатно!

Итог: 185грн.

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


Далее в SL5.0 набросал примерный чертеж . получилось вот что (новая плата, на момент написания этой статьи не готовая):

Часы на АЛ304 с BLUETOOTH. Пост №1 Arduino, Программирование, Smart, Часы, Bluetooth, Видео, Длиннопост

Видите что куда? Нет? И я не вижу!
А так???

Часы на АЛ304 с BLUETOOTH. Пост №1 Arduino, Программирование, Smart, Часы, Bluetooth, Видео, Длиннопост

Далее печатаем фотошаблон, клеим фоторезист, светим, травим , сверлим, паяем и получаем нечто такое:

Часы на АЛ304 с BLUETOOTH. Пост №1 Arduino, Программирование, Smart, Часы, Bluetooth, Видео, Длиннопост

Так как в программирование я не очень, пришлось шуршать гуглом, чтоб найти, простое решение  динамической индикации. Решение нашел вот тут: ссылка! и немного скорректировал под себя.

Слово о программе. Делал я ее в Arduino  IDE. а заливал следующим образом:
- берем ардуино нано і заливаем скетч Arduino as ISP.

- в настройках ардуино ИДЕ ставим галочку в пункте "Компиляция"

Часы на АЛ304 с BLUETOOTH. Пост №1 Arduino, Программирование, Smart, Часы, Bluetooth, Видео, Длиннопост

-пишем код для часов, и компилируем его для плати Уно, Нано и т.д. ( Любая плата с контроллером Атмега 328.)

В окне компиляции видим, куда компилятор сохраняет hex, bin и  rom файлы.

Нас интересует этот путь :

Часы на АЛ304 с BLUETOOTH. Пост №1 Arduino, Программирование, Smart, Часы, Bluetooth, Видео, Длиннопост

С помощью команды Win+R  отрываем "выполнить" . Вводим команду "AppData", в папке Local ищем папку "Temp", а в ней открываем папку arduino_build_хххххх, где хххххх - номер сборки, которую показал компилятор. Видим следующие:

Часы на АЛ304 с BLUETOOTH. Пост №1 Arduino, Программирование, Smart, Часы, Bluetooth, Видео, Длиннопост

Нас интересует один из этих файлов. Разница в том, что приставка with_bootloader означает, что по мимо самой программы запишется сам загрузчик для платы ардуино. Но нам это не нужно, так ка загрузчик иногда тормозит роботу микроконтроллера. В файле Clock имеется всё, что нам надо но без загрузчика. Копируем этот файл например на рабочий стол.

Далее нам надо с вами прошить этот файл в часы. Для этого  подключим микроконтроллер (уже распаяный и с установленным резонатором к запрограммированной  Ардуинке по ISP:


Микроконтроллер  Ардуино  (Уно .Нано.)

17  (SCK)  13

16  (MISO)  12

15  (MOSI)  11

29  (Reset)  10

VCC  5V

GND  GND

Далее нужно установить программу AVRDUDE с поддержкой ардуино плат. ТЫК!

И настраиваем его как в описании. Если всё правильно настроили то при нажатии на DETECT  у вас должен определится МК  АТмега 328р. ( если не получилось то проверьте соединение и поменяйте местами пин 12 и 11 на ардуино!)


Фьюзы настраиваем на внешний кварц :

L=0xFF

H=0xDA

E=0xFD


Следующим этапом стала проверка возможности передачи информации по блютузу. Для этого на скорую руку собрал не большое приложение в AppInventor. скачал на телефон , сделал конект с телефона с блютузом часов. 
Часы на АЛ304 с BLUETOOTH. Пост №1 Arduino, Программирование, Smart, Часы, Bluetooth, Видео, Длиннопост

Программа читает цифры с поля ввода и при нажатии на "Отправить"  шлет их по блютуз.
Блютуз на часах подключен с аппаратному UART. Поэтому нам надо использовать стандартную библиотеку Serial. Код для реакции будет ну очень простой, нам всего лишь надо принять данные, сохранить их в переменную и показать на "экране" часов.


Делается это так:


int digital =0000;  //тут изначальное значение цифр на экране

void setup(){

Serial.begin(9600);  // включаем монитор порта на скорость 9600 бод

// другой код из сетапа

}

void loop(){

if(Serial.available()){  //если данные пришли

digital=Serial.parseInt();  //переводим их в цифры и записываем переменную.

// другой код из цикла.

}

Далее , когда подставим эти строки в пример динамической индикации то получим следующее:


На этом первая часть статьи завершилась. Почему в место графического экрана 7 сегментник, да просто я так захотел. Такая моя идея. Предложения, критику приму с радостью. По поводу схем и всего остального - ждите в следующих статьях. Пишу с работы.

С уважением! Ваш Чужой Человек!

Показать полностью 7 1

Робот на Уно совестимой платформе (продолжение)

Привет, дорогой читатель. Немало воды утекло, как я выложил пост о роботе  на уно совестимой платформе. Благодаря вашим комментариям и своему зрению на основной плате кое что поправил:
- Заменил разъем USB type B на  микро USB.
- Поставил моторы с большими оборотами.

- Сделал поменьше упоры.

- Заменил резистор 0.4Ом в цепи зарядки на предохранитель.

- Заменил аккумулятор  на меньший по габаритам но с емкостью 1200мАч.

- Переделал схему компаратора для оптопар (ранее сигнал поступал на не инвертирующие входы).

- Исправил косяки с шелкографией.

- Заменил кварцы из поверхностного монтажа сквозной.

- Добавил индикаторы работы датчиков линии.


Также получил платы расширения, распаял их  и установил. К езде по черной линии у робота прибавилось умение ехать "на свет" Измерять температуру и давление, Обнаруживать препятствия. Также появилась возможность ИК контроля. Для разнообразия ещё установил 3 программируемых адресных светодиода и OLED дисплей 128х32 точки.

На плате есть место под макет и стабилизатор с возможностью переключение 3,3-5вольт.

Финальный вариант представлен ниже) Всех благодарю за комментарии и оценки!
Хорошего вечера!



Вид спереди.

Робот на Уно совестимой платформе (продолжение) Arduino, Uno, Робототехника, Уно, Робот, Своими руками, Электроника, Программирование, IDE, Длиннопост

Вид сзади!

Робот на Уно совестимой платформе (продолжение) Arduino, Uno, Робототехника, Уно, Робот, Своими руками, Электроника, Программирование, IDE, Длиннопост

Вид сверху!

Робот на Уно совестимой платформе (продолжение) Arduino, Uno, Робототехника, Уно, Робот, Своими руками, Электроника, Программирование, IDE, Длиннопост
Робот на Уно совестимой платформе (продолжение) Arduino, Uno, Робототехника, Уно, Робот, Своими руками, Электроника, Программирование, IDE, Длиннопост
Робот на Уно совестимой платформе (продолжение) Arduino, Uno, Робототехника, Уно, Робот, Своими руками, Электроника, Программирование, IDE, Длиннопост
Показать полностью 5

Робот на Уно Совместимой платформе

Робот на Уно Совместимой платформе Робототехника, Arduino, Робот, Программирование, Разработка, Своими руками, Свежее, Электроника, Видео, Длиннопост

Всем привет! Не пинайте сильно, это мой первый пост на пикабу. Сегодня речь пойдет об очень интересном проекте. Как то раз мне понадобилось сделать простое устройство, чтоб научить детей программированию. Всё то, что имеется в сети либо дорого, либо не удовлетворяет мои запросы. Хотелось сделать что то простое и компактное, но в то же время функциональное. Назвал робота muBot! Так как это был первый мой серьезный проект - решил делать платы в Китае.

Заказал из Китая 5 штук.

Коротко  шо по чём (основная плата):

- МК - Atmega328p-au

- Драйвер моторов MX1508

- Датчик черной линии сделан на микросхеме LM393

- Заряд АКБ сделан на ТР4056.

- Юсб - ЮАРТ сделан на CH340G

- 2 двигателя N20 100об./мин.

- разъем USB-B.

- li-pol аккумулятор 3,7в ( в моём случае старая батарея от iphone 4s)


Схемы все по даташитам, как по мне - самое верное решение!


Кроме того сделал шилд (который ещё в дороге) где есть место под OLED дисплей  128х32, барометр BMP180, сонар НС-SR04, 2 фоторезистора с компаратором LM393, 3 адресных светодиода, термометр LM35, стабилизатор 3,3в, ИК-приемник пульта ДУ, место под макетирование и несколько свободных пинов под свои нужды. Неплохо как по мне.


Устройство получилось компактным 100х130х60мм.


Спустя месяц ожиданий платы пришли, можно паять!

Робот на Уно Совместимой платформе Робототехника, Arduino, Робот, Программирование, Разработка, Своими руками, Свежее, Электроника, Видео, Длиннопост

Около 2 часов спустя белый кругляшек стал похож на что то - напоминающее плату с колёсиками! На 3д принтере напечатал упоры, чтобы плату не  клонило со стороны в сторону.

Робот на Уно Совместимой платформе Робототехника, Arduino, Робот, Программирование, Разработка, Своими руками, Свежее, Электроника, Видео, Длиннопост

Осталось дело за малым - прошивка. Дабы упростить задачу, решил залить бутлоудер от Ардуино Уно, так как это самая ходовая плата, и при работе с ней проблем не возникает. После загрузки загрузчик (прям игра слов какая то!) надо установить драйвер СH340 и программировать из под Ардуино ИДЕ ка обычную Ардуино Уно.


Осталось дождаться плат шилда, и завершить сие чудо полностью,  А пока на этом всё! Всем удачи и хорошего настроения!

Робот на Уно Совместимой платформе Робототехника, Arduino, Робот, Программирование, Разработка, Своими руками, Свежее, Электроника, Видео, Длиннопост
Показать полностью 4 1
Отличная работа, все прочитано!