Принтер для нанесения рисунка на пасхальные яйца

Скоро праздник Пасха (4-го апреля), и к нему нужно как следует подготовиться. Не знаю как кто, а я люблю этот день. Это весенний праздник и, к тому же, на нем поедаются всякие вкусности.
Мы решили сделать специальное устройство для раскрашивания яиц.


Нам понадобится:

  • энтузиазм;
  • плата Марсоход;
  • старый принтер – в нем два моторчика;
  • старый CD привод;
  • кисточки;
  • краски;
  • крутые яйца Smile

Разбираем старый струйный принтер, но так, чтобы устройство горизонтальной подачи печатающей головки осталось работоспособным.  Саму печатающую головку выбрасываем. При внимательном просмотре убеждаемся, что моторчик на горизонтальной подаче – двухфазный. Про управление шаговыми двигателями можно почитать на нашем сайте здесь. Моторчик подключаем к плате Марсоход.


printer_back

Найдем подходящий кусок фанеры и установим платформу от принтера на нее.
На место печатающей головки устанавливаем второй моторчик от того же принтера (он стоял на подаче бумаги). Тут придется немного повозиться. Мы установили еще одну шестеренку для понижения передачи и уже к шестеренке крепим кисточку.

kist
Платформа для вращения яйца сделана из CD привода. Возможно это самая сложная механическая часть устройства. Сложная она не по устройству, а из-за того, что пришлось много думать как соединить в единое целое множество разных деталек от разного компьютерного хлама.

rotate_egg

На самом деле в этом узле стоит коллекторный двигатель. Он работает сразу при подаче напряжения питания. Яйцо будет устанавливаться и вращаться на четырех маленьких ролика этой платформы вот так:

rotate_egg2

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

kistochka

Нам нужна небольшая модификация платы Марсоход. Дело в том, что на ней установлены два разъемчика для подключения двух трехфазных шаговых двигателя. В нашем устройстве оказалось два двухфазных двигателя и их труднее подключить. Для управления двухфазным двигателем нужно иметь 4 выхода на плате, а не 3 как в случае с трехфазником. Нам не хватает еще двух «сильных» выходов. Ток через обмотку течет довольно большой, поэтому нужно объединить несколько выходов. На плате есть 8 светодиодов. Объединяем выходы led[3:0] и led[7:4] в две группы. Присоединяем к ним еще во выходу pt_right и pt_left, которые есть на плате.

На схеме проекта для платы Марсоход видно какие выходы к какой фазе двигателя подключены. Клик на картинке должен ее увеличить.schema_eggs_small


Теперь наверное само сложное. Нужно написать программу для платы Марсоход. Мы сделаем это на языке программирования аппаратуры Verilog.
Весь проект Altera QuartusII для платы можно выкачать здесь:

.
А вот небольшой фрагмент кода программы принтера на Verilog:


always @(*)
begin
case(prog_ptr)
8'd0:    begin motor=0; dir=0; numsteps=18; end    //кисть вверх
8'd1:    begin motor=0; dir=1; numsteps=16; end    //кисть вниз
8'd2:    begin motor=1; dir=1; numsteps=96; end    //до левого края
8'd3:    begin motor=1; dir=0; numsteps=64; end   //к стакану справа
8'd4:    begin motor=0; dir=1; numsteps=10; end    //кисть к стакану
8'd5:    begin motor=1; dir=1; numsteps=32; end    //к стакану центр
8'd6:    begin motor=0; dir=0; numsteps=6;  end   //мыть кисть
8'd7:    begin motor=0; dir=1; numsteps=3;  end    //мыть кисть
8'd8:    begin motor=0; dir=0; numsteps=3;  end    //мыть кисть
8'd9:    begin motor=0; dir=1; numsteps=3;  end    //мыть кисть
8'd10:    begin motor=0; dir=0; numsteps=3;  end    //мыть кисть
8'd11:    begin motor=0; dir=1; numsteps=6;  end    //мыть кисть
8'd12:    begin motor=1; dir=0; numsteps=48; end   //к стакану справа
8'd13:    begin motor=0; dir=0; numsteps=32; end    //кисть вверх

//взять желтой краски
8'd14:    begin motor=1; dir=1; numsteps=96; end    //до левого края
8'd15:    begin motor=0; dir=1; numsteps=11; end    //кисть вниз
8'd16:    begin motor=1; dir=0; numsteps=2; end   //вправо
8'd17:    begin motor=1; dir=1; numsteps=2; end    //влево


Обратите внимание, что в нашем «принтере» нет датчиков положения головки и кисточки. Тут мы немного поленились, это можно было бы сделать. С другой стороны программирование теперь не очень сложное. Двигаем головку до упора. Как упрется в препятствие дальше не идет – проскальзывает. Зато теперь знаем «точку нуля». От нее начинаем отсчет шагов для шаговых двигателей. Так делаем и для горизонтальной подачи и для подачи кисточки.
Теперь, когда все готово, можно пытаться пробовать рисовать.

printer_ready

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

Мы продолжаем эксперименты теперь уже не с акварельной, а с гуашевой краской – она вроде бы поярче.


printer_guash

О результатах использования гуашевой краски сообщим дополнительно Smile

printer_works
Надеюсь вам понравился наш принтер для рисования на куриных яйцах.


Добавить комментарий