Найти в Дзене

Возможно ли сделать принтер чеков на ардуино UNO?

Оглавление

Мы расскажем как любой школьник может сделать принтер для печати на термоленте в среде Ардуино? И хватит нам для этого самой дешевой из плат Ардуин - Ардуино Uno.

Как оказалось в этом нет ничего сложного:

Выбираем принтер Fujitsu FTP-628MCL101#57

На алиэкспресс примерно 750р. Можете также на нашем сайте купить...
На алиэкспресс примерно 750р. Можете также на нашем сайте купить...

Почему именно принтер FTP-628MCL101#57 - потому , что он недорогой , надежный и очень распространенный.

Подключение принтера:

Для подключения принтера понадобится примерно такая плата:

Обращайтесь у нас есть лишние за недорого...
Обращайтесь у нас есть лишние за недорого...

Распиновка контактов:

-3

Собираем примерно такой макет на Ардуино UNO:

Аккумулятор 7.4В (синий), красная кнопка для прогона бумаги, плата драйвера двигателя DRV8833 , ардуино Uno все..
Аккумулятор 7.4В (синий), красная кнопка для прогона бумаги, плата драйвера двигателя DRV8833 , ардуино Uno все..

Для того, чтобы напечатать точки на термо бумаге достаточно соединить всего несколько линий:

#define TH_LATCH 2

#define TH_STROBE_1 3

#define TH_STROBE_2 4

#define TH_STROBE_3 5

#define TH_STROBE_4 6

#define TH_STROBE_5 7

#define TH_STROBE_6 8

#define TH_Clock 11

#define TH_DATA_Input 10

#define btn 13 // так для прогона ленты на всякий случай

Далее желательно не забыть обеспечить начальные уровни сигналов:

LAT подтягиваем резистором примерно 10КОм к +5В

STB1..6 = 0 (желательно подтянуть резисторами к земле)

Для лучшего понимания можно посмотреть на внутреннюю организацию термо-головки:

-5

И конечно надо взглянуть на диаграммы сигналов , которые надо подавать с ардуины на принтер:

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

Частота CLK условная (не фиксированная) - на самом деле все работает по фронтам вверх или вниз.

Алгоритм управления термо-головкой такой:

Не забываем запитать принтер от напряжения 7.4В.

1. устанавливаем CLK в 0

2. ждем 1мкс

3. в DATA IN устанавливаем значение первой точки (HIGH - это жжечь)

4. ждем 1мкс

5. поднимаем CLK в 1

6. ждем 1мкс

7. тут можно считать записанное значение из DATA OUT (но это не обязательно)

... повторяем 1..7 64 раза (для первых 64 точек, тут происходит запись значения в SHIFT REGISTER)

8. устанавливаем LAT в 0 , CLK еще в 1

9. ждем 1мкс

10. поднимаем LAT в 1 (тут происходит запись 64 точек в LATCH REGISTER)

11. ждем 1мкс

... повторяем 1..11 6 раз (для 6 частей термоголовки)

12 . устанавливаем нужный STB в 1, остальные естественно в 0

13. ждем 3 миллисекунды (нормальное время для прожига точек)

14. скидываем STB в 0.

... повторяем пп 12..14 для оставшихся 5 STB

Исходники проекта находятся здесь : https://kkmspb.ru/development/arduino/Fujitsu-FTP-628MCL101.php

Управление двигателем принтера для протяжки термо бумаги

Используем примерно такую плату драйвера двигателя DRV8833 :

с обратной стороны подписаны контакты:
с обратной стороны подписаны контакты:

Заодно кстати разносим код по разным файлам для удобства.

Определяем выводы для управления двигателем:

Поскольку цифровых выводов нам уже не хватает на ардуине, напрашивается управление обмотками двигателя подключить к аналоговым выходам (с ШИМ). Заодно можно и менять крутящий момент обмоток двигателя.

#define motorA 14 // IN1 DRV8833

#define motorNA 15 // IN2 DRV8833

#define motorB 16 // IN3 DRV8833

#define motorNB 17 // IN4 DRV8833

Двигатель закрутился на радость очень ровно и быстро. Код смотрите в скетче внизу по ссылке (закладка motor4).

И наконец реализуем посылку строки на COM порт Ардуины и ее печать на принтере

Через Serial.readString() читаем строку из COM порта. Далее с помощью таблицы шрифтов (см. закладку в проекте font_8_5) преобразуем символы в точки.

И вуаля первый опыт удался :

-8

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

Полный код скетча можно скачать на странице https://kkmspb.ru/development/arduino/Fujitsu-FTP-628MCL101.php

Ждем ваших комментариев , предложений и пожеланий!

Готовы помочь энтузиастам , есть лишние платы переходники FPC-30P 1.0мм, DRV8833 и др.