Предновогодний минипроект: зеркальный шар.

Попались мне как-то в магазине зеркальные шарики, и сам не знаю почему, но захотел себе к НГ какую-нибудь новую светилку-крутилку. Шарик был куплен, и попутно начались попытки придумать ему интересное применение. К чему это привело попробую описать.
Т.к. просто поделка «Аля дискотека 90х» не очень интересна, хотелось заложить какую-нибудь изуминку в конструктив. Сначала я думал раскрутить этот шарик до пары-тройки тысяч оборотов, и в режиме стробоскопа вырисовывать что-нить на стенах (это давало бы возможность волучать не только точки, но и штрихи переменной длины), но корявость идеи вылезла довольно быстро: во-первых баланс у шарика ни к черту, и при том что он весит не очень много… Когда я подвесил его к обычному коллекторному двигателю и крутанул, в какой-то момент даже страшновато стало, ибо зеркальца пилены стеклорезом, и сорвись он — приятного будет мало… Ну а во вторых моего дохлого светодиода явно мало для такого режима…
В итоге я пришел к более простому решению: униполярный шаговик от дисковода:

Ну а в качестве свистоперделок просто изменение скорости/направления и яркости освещения…
Естественно для такого проекта актуально одно условие: элементная база берется из хлама который есть дома.
В итоге было решено применить:
1. Мозг: STM8S003F3, к которому я также прикрутил кварц на 12 МГц, а понял что с лихвой хватило бы внутреннего RC уже когда смотрел на запаянную плату.
2. Управление шаговиком: т.к. ШД униполярный, то ULN2004 — просто и дешего, и сдута с платы какой-то авто сигналки…
3. Драйвер светодиода — ST1S10: просто потому, что у меня их 98 штук в ленте, куплены за копейки… (Решение хреновое, ниже опишу).
После некоторого времени в альтиуме получилось как-то так:

Собирая это дело заодно отработал новые для себя особенности при изготовлении платы. (Контрастирование шаблона парами растворителя и маска из фоторезиста).
Платка получилась 39х42.

Т.к. не накосячить я не могу то футпринт для 78М05 получился ТО-263 ;)
Ну а теперь о том, что мне не нравится: а не нравится мне источник тока. С кондером 5 микрофарад он похоже заводится на какой-то гармонике, т.к. импульсы ШИМ идут парами — первый длиньше, второй короче, затем пауза… С кондером побольше все начинает работать нормально, но управление драйвером получается крайне кривое, ибо ST1S10 почти мгновенно устанавливает заданный ток, а большой кондер потом долго разряжается… В результате светодиод на узких коэф. управляющего ШИМ не спетится вообще, а потом резко начинает довольно ярко светить… (Узкие иголки сигнала EN микра вообще игнорирует). Короче если когда-нибуть буду переделывать эту штуку под RGB-светодиод, то воспользуюсь драйверами по схеме BSVi из его лампы настроения :).
Прошива пока что в стадии разработки. Сложного естественно быть ничего не может. Шагами движка рулит простенький автомат вида:
void Step(char dir)
{
switch (state) {
case 1:
C = 1; break;
case 2:
A = 0; break;
case 3:
B = 1; break;
case 4:
C = 0; break;
case 5:
D = 1; break;
case 6:
B = 0; break;
case 7:
A = 1; break;
case 8:
D = 0; break;
}
if (dir)
{
if (++state == 9)
state = 1;
} else
{
if (--state == 0)
state = 8;
}
}
Где A, B, C, D:
#define A PD_ODR_bit.ODR6
#define B PD_ODR_bit.ODR3
#define C PD_ODR_bit.ODR5
#define D PD_ODR_bit.ODR2
Управление СИДом через ШИМ TIM2.
Сейчас больше ломаю голову как заставить его красиво крутиться…
Вероятно прикручу несколько режимов сменяющих друг друга, как в китайских гирляндах… Вращение с изменением скорости, плавное изменение яркости, ну и возможно еще чего-нибудь придумаю…

5 комментариев
Крутая штуковина. Только, боюсь, шаговик рычать будет не в тему. Я вот тоже хочу что-то на новый год соорудить. Но, думаю, просто времени не хватит.
Насчет стабилизатора тока — ты попробуй не замедлять выход стабилизатора, а ускорять обратную связь. Это можно сделать, поставив в разрыв провода Vfb параллельную RC цепочку. И да, идейно правильнее было бы подмешивать выход контроллера в напряжение ОС, а не дергать Enable. Тогда отсутствовал бы ШИМ-эффект.
Кроме того, восприятие яркости у человека логарифмическое, поэтому и ШИМить нужно экспоненциально. К примеру, ШИМ=16 всего в два (а не в 4) раза ярче, чем ШИМ=4.
По стабилизатору тока — просто учту на будущее, если буду делать RGB контроллер… За совет по RC-цепочке пасибы, попробую посимулировать на досуге чтобы прочувствовать что к чему…
По логарифмической зависимости в курсе (из твоей же статьи про лампочку), реализую это в программе в любом случае…