часы стрелочные (ремейк)

v.bay

✩✩✩✩✩✩✩
26 Окт 2026
3
0
Ремейк

Всем доброго времени суток. На просторах Ардуино наткнулся на стрелочные часы на stm32F103. Честно говоря, собрал от безделия, посмотреть на реализацию графики. Все нормально получилось, потребление при 3,26В - 48 мА, об автономном питании можно забыть. Начал рыть, через год заказал плату у китайцев, дорого, правда, обошлась – почти 12 тыс. за 5 шт. Но уже удила закусил, свистулька не давала покоя. Еще год танцев с бубном, в результате реализовал: уменьшил потребление до 20мА с включенной подсветкой (без нее 14мА) – уменьшил рабочую частоту до 24мГц, при питании STM 2,65В через ЧИП 63000. При емкости Акк 3200мА/ч хватает на 6-7 суток при условии: индикация активна только ночью. Решил вопрос с зарядкой – контролируя напряжение на Акк во время заряда и его отключение по достижении заданного напряжения и включения зарядки при падении напряжения до заданного уровня. Все это можно менять в программе. Это дало возможность продлить жизнь Акк. питать изделие от сети, (по возможности) через источник на контроллере Tny264, небольшим током 100-150мА. Он изначально создан работать день и ночь. Применил ЖК 2,8” технологии IPS, это позволило улучшить контрастность на порядок, угол обзора увеличился фантастически. Это позволило слегка подкрасить голубым циферблат круга, повеселей смотреться стало. Изменил положение экрана с 0 на 3. В качестве ключа отключающего минусовой провод зарядки от земли, использовал сборку 8205, кварц 4мГц. В качестве источника питания применил 63000, верхнее плечо делителя (ADJ) резистор 43кОм, нижнюю часть блочка, сточил до глины 01мкФ. Датчик положения свистульки опрашивается каждые 15 сек. и ВКЛ/ОТКЛ подсветку. А замер напряжения на Акк, происходит раз в минуту, и соответствующее действие. Цвета показаний напряжения: голубой - Акк заряжен, желтый - режим заряда подключен, оранжевый - во избежание выключения Акк, необходимо принять меры к зарядке. Часы при этом не остановятся, просто исчезнет подсветка. Последнюю плату хотел использовать на stm32L151C8U6 купил, установил, пытаюсь конвертировать с F103. Процесс начал не так давно, обычно, начинаю в зиму, по завершению дачной страды, но пока результат нулевой. Попробовал на платформе CubeIde тоже мимо, при компиляции требуется 2 библиотеки в репозиторий, а ее держатели в страну больше не поставляют продукт. Я давно слежу за вашей работой, по урокам, немного, начал понимать структуру платформы Ардуино со дня основания получаю журнал с сайта РадиоЛоцман и там читал ваши статьи. И, как не странно, я все понимаю в ваших публикациях. Что у меня не всегда получается. Бывает из за сленга, а то и слишком замысловато пишут. Вот и решил обратиться к сообществу вашего сайта, может поможете с конвертацией с F103 на L151? Думаю, многие использовали бы этот ЧИП в своих свистульках. Я на CubeIde при тактовой 16мГц, в режиме Run, получил потребление 3,5 мА, а это дорогого стоит.
 

Вложения

Изменено:

bort707

★★★★★★★
21 Сен 2020
3,542
1,009
Выкладываю вариант скетча
В вашем сообщении нет никакого скетча

источник на контроллере Tny264, небольшим током 100-150мА. Он изначально создан работать день и ночь. Применил ЖК 2,8” технологии IPS, ... В качестве ключа отключающего минусовой провод зарядки от земли, использовал сборку 8205, кварц 4мГц. В качестве источника питания применил 63000, верхнее плечо делителя (ADJ) резистор 43кОм, нижнюю часть блочка, сточил до глины 01мкФ.
Нюансы подключений лучше было бы выложить в виде схемы, чем описывать словами.
 
Изменено:

Эдуард Анисимов

★★★★★★★
23 Сен 2019
2,540
1,014
60
Марий-Эл
@v.bay, Нужно переключить все неиспользуемые выводы на аналог. Отключить тактирование неиспользуемой периферии. Потребление должно ещё упасть. Для ещё более низкого энергопотребления нужно использовать STM32L серии.
 

bort707

★★★★★★★
21 Сен 2020
3,542
1,009
Для ещё более низкого энергопотребления нужно использовать STM32L серии.
так он для этого сюда и пришел. Хочет, чтоб ему кто-то помог переписать код на L серию:

решил обратиться к сообществу вашего сайта, может поможете с конвертацией с F103 на L151?
 

Эдуард Анисимов

★★★★★★★
23 Сен 2019
2,540
1,014
60
Марий-Эл
@bort707, Чукча не читатель. Чукча писатель. :)
Не увидел сразу. Много бесполезного текста.
@v.bay, И писать нужно прошивку, а не скетч. И под CubeIDE. В Ардуино ИДЕ это сделать можно только через жопу.
 

v.bay

✩✩✩✩✩✩✩
26 Окт 2026
3
0
Пол дня рисовал схему.только закончил, редактор sPlan 7.0. не могу разместить на форуме. ругается не то расширение. Что не так? подскажите.
Давайте ошибки разберем, те что в скетче. Перечисляйте.
026-10-28 223256.png

Получилось,только такой формат.
 
Изменено:

bort707

★★★★★★★
21 Сен 2020
3,542
1,009
Давайте ошибки разберем
Ну для затравки -
Первое что бросаетсяв глаза

А. Неправильная работа с миллис:
C++:
if (targetTime < millis()) {
      ....
     targetTime = millis() + 498; //секунда
      ....
 }
При переполнении этот код будет глючить. (Вопрос о том, почему у вас секунда = 498 тиков таймера - оставим на потом, очевидно что вы игрались с частотой камня, а настройки счетчика не выставили)

Б. Выход за границу массива
C++:
char c1[] = { 0 };        //создаем масив
dtostrf(val, 5, 2, c1);   //конвертируем float -> char
Вот это очень грубая ошибка, чреватая утечкой памяти и зависанием всей программы
 

v.bay

✩✩✩✩✩✩✩
26 Окт 2026
3
0
Про ф-ю millis(): я уменьшил частоту (тактовую) в два раза, т.к. перестроить в скотче я не мог, уменьши через кварц (4мГц). Период увеличился в двое. весь внутренний подключенный фарш тоже работать стал медленнее. и функция millis() тоже. я разобрался с ней читая уроки Александра. Если туда заносить 1000 мсек, то часы будут ходить через 2 сек. Я и в оригинале заносил туда 999. и здесь пришлось подбирать число. Первые часы ходят 3 тий год без причины не вставали не разу. В оригинале были ошибки два значения календаря год и месяц прошедшие не удалялись. Теперь удаляется вес столбик, каждые сутки. а было каждый оборот вертушки.
Про массив: я, честно, не понял вопроса, ну да ладно. Создаю массив, как ЛОКАЛЬНУЮ переменную, после выхода за пределы блока, она просто сдуется, и следующий оборот вертушки, создастся снова, и так каждый оборот. Конвертация ну есть такая функция, не мной придуманная, и я ее использовал.