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

Блог им. N1X

Попались мне как-то в магазине зеркальные шарики, и сам не знаю почему, но захотел себе к НГ какую-нибудь новую светилку-крутилку. Шарик был куплен, и попутно начались попытки придумать ему интересное применение. К чему это привело попробую описать.

Т.к. просто поделка «Аля дискотека 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 комментариев

avatar
С почином!

Крутая штуковина. Только, боюсь, шаговик рычать будет не в тему. Я вот тоже хочу что-то на новый год соорудить. Но, думаю, просто времени не хватит.

Насчет стабилизатора тока — ты попробуй не замедлять выход стабилизатора, а ускорять обратную связь. Это можно сделать, поставив в разрыв провода Vfb параллельную RC цепочку. И да, идейно правильнее было бы подмешивать выход контроллера в напряжение ОС, а не дергать Enable. Тогда отсутствовал бы ШИМ-эффект.

Кроме того, восприятие яркости у человека логарифмическое, поэтому и ШИМить нужно экспоненциально. К примеру, ШИМ=16 всего в два (а не в 4) раза ярче, чем ШИМ=4.
Комментарий отредактирован 2012-12-27 16:16:00 пользователем bsvi
avatar
Шаговика кстати за счет мягкого подвеса не слышно вообще, даже стоя рядом на табуретке… Шаги слышны только по вибрации если взяться за двиг. Движение шара тоже плавное, за счет цепочки, которая рывки демпфирует…

По стабилизатору тока — просто учту на будущее, если буду делать RGB контроллер… За совет по RC-цепочке пасибы, попробую посимулировать на досуге чтобы прочувствовать что к чему…

По логарифмической зависимости в курсе (из твоей же статьи про лампочку), реализую это в программе в любом случае…
Комментарий отредактирован 2012-12-27 19:56:30 пользователем N1X
avatar
Для шагового двигателя будет лучшим полушаговый режим.
методы шагания при данном подключении
avatar
Так куда уже полушаговее =) Приглядитесь к коду…
avatar
Извиняюсь, с первого разу не въехал. Да и не сразу рассмотрел что подача импульсов в порядке чередования «DBCA».
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.