top of page
Поиск
  • Фото автораpates00n

Принтер рукописного текста на Epson LX-300



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


"Почерк", которым пишет такой принтер, трудно назвать каллиграфическим, но он вполне читаемый и понятный.









Буквы пишутся с помощью восьми возможных движений пера - вверх, вниз, вправо, влево и по диагонали – вверх-влево, вверх-вправо, вниз-влево, вниз-вправо.



Это очень напоминает почтовый индекс, который пишется на конверте.


Движение пера- это совместная работа двигателя каретки (G - горизонтальное перемещение) и двигателя подачи (V - вертикальное перемещение).

Каждый из двух шаговых моторов управляется двумя сигналами:

  • dir - направление вращения двигателя

  • st - сделать шаг, если st=1


Таким образом движение пера кодируется четырьмя битами. Но каждое из этих движений может быть и с опущенным пером и с поднятым пером, в зависимости от того, надо ли нарисовать линию или просто перейти с поднятым пером к следующей точке. То есть требуется ещё один бит для кодирования подъёма пера.



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


Байты направления движения хранятся в программной памяти Arduino Nano. Почему в программной - оперативной памяти может и не хватить для большого текста, да и не рационально для этой задачи использовать ОЗУ, объём которого в Arduino и так небольшой.


Но тут есть одна тонкость. Дело в том, что в механизм подачи бумаги - это понижающий редуктор из двух шестерёнок. И как водится, там где шестерёнки – там обязательно имеется небольшой люфт. В нашем случае он примерно равен одному ходу. Поэтому при смене направления вверх-вниз движения двигателя подачи приходится делать один лишний ход для компенсации этого люфта.



Для двигателя каретки такой проблемы нет, потому что каретка через ременную передачу непосредственно соединена с валом шагового двигателя.





Для примера рассмотрим, как принтер пишет букву «б».

Поле для письма у нас повёрнуто на 90 градусов и буквы пишутся сверху вниз. Буквы вписываются в вертикальное поле из восьми линий. Буква всегда начинается на пятой линии, на этой же пятой линии и заканчивается её написание. Так мы добиваемся соединения прописных букв между собой

Из памяти Ардуино по порядку берутся команды направлений для вращения шаговых двигателей на один ход.

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

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


Хочется заметить, что за один такой элементарный ход перо прорисует линию длиной примерно один миллиметр. Но в свою очередь один элементарный ход состоит из пятнадцати шагов шагового двигателя. Итак, команда от Ардуино на шаговый двигатель сделать один шаг приводит к смещению пера примерно на 60 микрон.


Я заготовил Excel файл, в котором сохранил эти наборы русских букв и нескольких символов:

Если не будет хватать каких-то символов или букв, то создать их можно самостоятельно .



Схема принтера


От аккумулятора питание 12 Вольт через предохранитель поступает на контакты реле.

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

Шаговые двигатели каретки и подачи бумаги управляются через драйвер шагового двигателя А4988.



Управление от Ардуино по двум линиям:

  • DIR – направление вращения.

  • STEP – сделать один шаг.

Выводы MS1, MS2, и MS3 задают разрешение микрошага для мотора подачи на полный шаг, для мотора каретки на четверть шага.


Узел подъёма опускания пера я сделал из механизма загрузки диска от старого CD привода.


Коллекторный двигатель управляется драйвером L293. Для фиксации момента подъёма пера пришлось поставить концевой выключатель.

Этот узел можно очень упростить, если выполнить его на серводвигателе.



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


Печатную плату я не разводил, монтаж выполнил на макетной плате.

Здесь показана разводка проводниками без Arduino и драйверов A4988:


Вид макетной платы с установленными элементами:



Ни и общий вид конструкции в корпусе принтера.







449 просмотров0 комментариев

Недавние посты

Смотреть все

コメント


bottom of page