Например TDA7294

Форум РадиоКот • Просмотр темы - Термопринтер из старого терминала (кассового аппарата)
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 21:14:23

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 35 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Ср сен 04, 2019 22:15:50 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Всем привет!
Имеется на руках дохлый терминал Ingenico I5100. Интересного в нем LCD дисплей wd-h12069-6ylyd и Термопринтер ELPM sen701130c. Очень интересно подключить термопринтер к Ардуино. Сам терминал признаков жизни не подает. По этому логическим анализатором (или осциллографом) смотреть нечего...
Что удалось узнать:
- скорость печати (ЛПС) 65 мм / С (при 7.2 В постоянного тока)
- ширина печати (мм) и 48 мм (384 точек),
- импульсный блок питания напряжением 5 ~ 8.5 отрицательного полюса источника питания логики 5В + 5%
- Определение температуры печатающей головки - термистор
(Перевод с Китайского) http://www.youboy.com/s502527612.html

Сама печатающая головка имеет маркировку gp16b337 (в Гугле пусто)
Немного прошелся тестером по плате, получилась (примерно) следующая распиновка:
Спойлер01 Steper Drive
02 Steper Drive
03 Steper Drive
04 Steper Drive
05 Оптопара (датчик наличия бумаги)
06 Оптопара (датчик наличия бумаги)
07 GND
08 VDD
09 VDD
10 VDD
11 sen723379d RAM FLASH MODULE
12 gnd
13 gnd
14 gnd
15 Соединен с 18 и идет на Триггер Шмидта (пин 6Y)
16 sen723379d RAM FLASH MODULE
17 +3.3
18 Соединен с 15 и идет на Триггер Шмидта (пин 6Y)
19 gnd
20 gnd
21 gnd
22 sen723379d RAM FLASH MODULE
23 sen723379d RAM FLASH MODULE
24 VDD
25 VDD
26 VDD

Где:
VDD - подключается (через мосфет) напрямую к блоку питания
15-й и 18-й соединены вместе
sen723379d RAM FLASH MODULE - "Мозги" терминала. Запаянная коробочка и залитая эпоксидкой....

Примерная схема с некоторыми компонентами:
Изображение
Из распиновки складывается подозрение что принтер подключается по i2c...

Может у вас есть какие-то мысли и идеи как его запустить?
Фото выложу чуть позже.

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Ср сен 04, 2019 22:31:55 
Друг Кота
Аватар пользователя

Карма: 187
Рейтинг сообщений: 8259
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Сообщений: 39544
Откуда: Нерезиновая
Рейтинг сообщения: 0
Не могу сказать на 100% про вашу "ТермоПечатающуюГоловку", но те, с которыми я сталкивался- это "по сути" - сдвиговый регистр, в который по сигналу "строб" просто записываются "нолики" или "единички", по окончании записи этой "строки пикселей" на ТПГ поступает сигнал "нагрев" соответствующих резисторов, потом ШД перемещает бумагу на "одну строку", а в ТПГ "закачивается" следующая строка "пикселей"..
Вот тут:

кто- то "баловался" с ТПГ от АМС-100..

Я так думаю, что ТПГ, "в основном" мало отличаются друг от друга - можно посмотрет, как реализуются подобные проекты на основе других ТПГ..

http://blog.eiva.info/2014/02/blog-post.html


Последний раз редактировалось АлександрЛ Ср сен 04, 2019 22:40:27, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Ср сен 04, 2019 22:32:27 
Вымогатель припоя
Аватар пользователя

Карма: 5
Рейтинг сообщений: 145
Зарегистрирован: Вс июл 07, 2019 16:12:46
Сообщений: 550
Рейтинг сообщения: 0
Может у вас есть какие-то мысли и идеи как его запустить?
А можно еще для начала поинтересоваться, в чем смысл всей затеи?
Вот напечатал, допустим, с ардуины "нечто" вместо чека, а "оно" через пару месяцев поблекло и почти пропало, как это часто бывает с теми же чеками... И...?

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


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Чт сен 05, 2019 08:49:33 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14056
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Обычная распечатка данных/текстов (вплоть до фото низкого разрешения).
8)
Кроме прочего термобумага разная бывает - смотрим термопринтеры для этикеток
(или термотрансфер)...
:roll:


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Чт сен 05, 2019 09:47:16 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Один из пинов определен:
16 - термистор (второй контакт идет на GND), только он прозванивается только в одну сторону. Это точно термистор. Проверял на нагрев.
остаются пины:
11 - ?
15+18 - ?
22 - ?
23 - ?

Осталось определить что из них:
DI - данные для регистра (1 - точка, 0 - нет )
CLK - строб для них.
LAT - защёлка для регистра
STB - длительность импульса нагрева для нагревателей. (От неё зависит яркость отпечатка).

Можно как-то определить? Или только экспериментальным путем?

Фото:
Изображение Изображение Изображение Изображение Изображение

Добавлено after 18 minutes 12 seconds:
В саму Термо Печатающую Головку Шлейф заходит немного с другой распиновкой:
1 - VDD
2 - VDD
3 - ???? Пин 23
4 - ???? Пин 22
5 - GND
6 - GND
7 - Тр.Шм. Пин 18
8 - Тр.Шм. Пин 18
9 - Тр.Шм. Пин 18
10 - +3.3
11 - +3.3
12 - Термистор
13 - Тр.Шм. Пин 15
14 - Тр.Шм. Пин 15
15 - Тр.Шм. Пин 15
16 - GND
17 - GND
18 - ???? Пин 11
19 - NC
20 - VDD
21 - VDD

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Чт сен 05, 2019 13:23:12 
Мудрый кот

Карма: 10
Рейтинг сообщений: 272
Зарегистрирован: Пт мар 26, 2010 17:16:52
Сообщений: 1769
Откуда: Kazan
Рейтинг сообщения: 0
ЛСД и то интересней применить, в инете пишут "LCD Module PE12864 / driver ST7565S"
и примеры программ для него есть.


Вернуться наверх
 
В сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Чт сен 05, 2019 14:12:44 
Друг Кота
Аватар пользователя

Карма: 187
Рейтинг сообщений: 8259
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Сообщений: 39544
Откуда: Нерезиновая
Рейтинг сообщения: 0
Изображение

Здесь не хватает резинового ролика- вы его сами сняли, или его просто нет?
От какого аппарата этот принтер?
Вот здесь: http://www.kassmehanic.narod.ru/sheme.htm
есть схемы от некоторых кассовых аппаратов, смотрите, может, что- нибудь подойдёт..
У меня есть распиновка ТПГ, но только у неё 28- выводной разъём.. :facepalm:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Чт сен 05, 2019 14:34:49 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Разбираю терминал Ingenico I5100. Ролик есть, установлен на крышке держателя бумаги (часть корпуса). Все детали на месте.
Я в сети много чего пересмотрел. Нашел несколько распиновок, но все они были от одной и той же печатающей головки и тоже на 28 выводов.

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Пт сен 06, 2019 08:35:50 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14056
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Попробуй в местных ЦСО по обслуживанию кассовых аппаратов поспрашать - может у кого найдутся схемки.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Пт сен 06, 2019 15:04:06 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Ура! распиновку победил! Вот результат:
СпойлерSteper Drive
Steper Drive
Steper Drive
Steper Drive
Оптопара
Оптопара
GND (к оптопаре)
VDD
VDD
VDD
LAT
gnd
gnd
gnd
STB
Термистор
+3.3
STB
gnd
gnd
gnd
CLK
DI
VDD
VDD
VDD


Пример кода для Ардуино брал здесь: https://yadi.sk/d/xV_qJhSukBSlFg
Но никак не могу заставить правильно печатать. В примере есть тестовая картинка. У меня она "троится". А именно не зеркальные копии, а три слоя печатаются на одной линии, из-за этого изображение получается сжатое по высоте:
Изображение

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


Вложения:
termoprint.rar [9.61 KiB]
Скачиваний: 401

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Пт сен 06, 2019 17:10:34 
Друг Кота
Аватар пользователя

Карма: 123
Рейтинг сообщений: 7955
Зарегистрирован: Сб сен 13, 2014 16:27:32
Сообщений: 39199
Откуда: СпиртоГонск созвездия Омега
Рейтинг сообщения: 0
вот есть у мя штук 5 касовых принтоф ..ума не хватает придумать ну нахуя они мне нужны и чо с ними делать...была мысль отдат мчстудням на пыты в Лабораторию ТС
да далеко он

_________________
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Сб сен 07, 2019 20:09:00 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14056
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Я таки "многофайловики" под адуринкой малость удавил...
Теперь можно будет и поиграться в свое удовольствие - может таки и до принтеров доберусь, чуток поотдохнувши.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Пн сен 09, 2019 09:45:37 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
В общем, промучился я с весь день... Немного поигравшись с временем прожига выяснил что это не расслоение, а именно дублирование. Печатающая головка похоже неравномерно все пропечатывает, из-за чего копии казались слегка разными (и я подумал что изображение расслаивается). Дублируется изображение из-за неправильно заданных границ печати. Дублирование убрал. В строке for(int i=0; i<16; ++i) 16 заменил на 48.

Настроил печать, теперь по высоте изображение получается нормальным. Печать ускорилась в 2 раза, но все равно очень медленно печатает: более 200!!! мс на каждую строку (длинной 384 точек). Вот код:
Спойлерvoid processPrintBitmap()
{
int fireTime = 5;
Serial.print("Burning: ");
digitalWrite(TPH_PIN_ENABLE, LOW); // подаем питание на мотор и головку

for (int l=0; l<78; ++l)
{
for (int p = 0; p<12; ++p) //прогоняем 12 раза каждую строку, тк одновременно можно нагревать только 32 точки - да, это не оптимально...
{
for (int i = 0; i < 48; ++i)
{
for (int j = 0; j < 8; ++j)
{
uint8_t pinValue = LOW;
if (i/4==p) //каждый цикл печатаем по 1 четвертой (32 точки)
{
pinValue = bitRead(bitmap[l*16+15-i], j) != 0 ? HIGH : LOW;
}
digitalWrite(TPH_PIN_INPUT, pinValue);
delayMicroseconds(10);
digitalWrite(TPH_PIN_CLOCK, HIGH);
delayMicroseconds(10);
digitalWrite(TPH_PIN_CLOCK, LOW);
delayMicroseconds(10);
}
}

digitalWrite(TPH_PIN_LATCH, LOW);
delayMicroseconds(10);
digitalWrite(TPH_PIN_LATCH, HIGH);
delayMicroseconds(10);
digitalWrite(TPH_PIN_STROBE, HIGH);
delay(fireTime);
digitalWrite(TPH_PIN_STROBE, LOW);
digitalWrite(TPH_PIN_INPUT, LOW);
}

_steper(); // 1 шаг мотора
delay(1);
_steper(); // 1 шаг мотора
}
digitalWrite(TPH_PIN_ENABLE, HIGH);
Serial.println("DONE!");
}


Но все равно мне очень сложно разобраться в том как происходит сам процесс вывода данных (прожига). К тому же код нужно оптимизировать. Скорость печати просто ужасная! Я пробовал оптимизировать Вывод данных, но не вышло. Стоит немного что-то изменить в функции, как все перестает вообще печатать. То есть выходит чистая бумага. Из минусов кода - удержание в памяти буфера печати. Который занимает абсолютно всю ОЗУ Atmega328, что тоже не фонтан...
В качестве контроллера возьму плату stm32f103c8t6, это решит проблему с памятью и недостатком пинов, но на скорость печати не повлияет. Остается главный вопрос: как оптимизировать скорость печати??

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Пн сен 09, 2019 12:37:05 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14056
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Вывод данных подобен выводу в растровой развертке.
Засылаем строку из точек. Даем импульс нагрева. Смотрим температуру головки.
Выполняем сдвиг ленты.
Затем все повторяем.
Одно замечание...
Головка поделена на несколько секторов со своими сдвиговыми регистрами.
Следовательно или те регистры включены последовательно или у каждого еще свой вывод CS.
Если одновременно все получат данные - будем иметь столько копий, сколько тех регистров.
:roll:
Буфер изображения может быть внешний (включая микроСД), расширение количества выводов - используем соответствующие микросхемы из логики-рассыпухи.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Вт сен 10, 2019 09:27:31 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Все регистры включены последовательно, всего 12 регистров по 32 точки. Дерганьем вывода LATCH определяется сколько регистров будут прожигаться.
Ускорил вывод еще больше: убрал все паузы, и вместо digitalWrite(); прописал прямую запись в порт: PORTB &= ~(1<<1);
Из минусов: сейчас нужно каждый регистр прожигать отдельно. То есть:
закинули 32 точки - прожиг - пауза на прожиг 5 мс - следующий регистр... - сдвиг ленты (тоже пауза).
В такой последовательности на печать строки в 384 точки (все 12 регистров) уходит ну очень много времени. Даже с удалением всех пауз и ускорением записи.
Еще не понятно зачем 8 раз подряд передавать одну и ту же точку:

for (int i = 0; i < 48; ++i)
{
for (int j = 0; j < 8; ++j)
{
uint8_t pinValue = LOW;
if (i/4==p)
{
..читаем бит
}
..записываем бит
}
}

Можете мне объяснить как это работает?

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Вт сен 10, 2019 11:05:26 
Друг Кота
Аватар пользователя

Карма: 123
Рейтинг сообщений: 7955
Зарегистрирован: Сб сен 13, 2014 16:27:32
Сообщений: 39199
Откуда: СпиртоГонск созвездия Омега
Рейтинг сообщения: 0
может поискать листинги исходникоф для касовых дел? там вроде очень быстый код написан правда по семью мк51совместимых...но печатае влет даже новые чеки на стакрых касах после апгрейда прошивки где графическая херня идентификатор идут на чеке

_________________
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Вт сен 10, 2019 14:03:45 
Друг Кота
Аватар пользователя

Карма: 93
Рейтинг сообщений: 1351
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14056
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Исходники вряд-ли найти удастся...
А вот типовую схему и кратенькое описание от мини500-02 или ешшо чаво... вполне...
Но там принтера другие... хотя...
Разве что с шаговым движком дополнительно разбираться...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Ср сен 11, 2019 22:07:37 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Все заработало с вот такой конструкцией:
Спойлер
Код:
void processPrintBitmap()
{
    int fireTime = 1;
    for (int l=0; l<134; ++l)
    {
        for (int p = 0; p<12; ++p) //прогоняем 12 раза каждую строку, тк одновременно можно нагревать только 32 точки - да, это не оптимально...
        {
            for (int i = 0; i < 48; ++i)
            {
                for (int j = 7; j > -1; j--)
                {
                    uint8_t pinValue = LOW;
                    if (i/4==p) //каждый цикл печатаем по 1 четвертой (32 точки)
                    {                 
                        pinValue = bitRead(bitmap[l*48+i], j) != 0 ? HIGH : LOW;
                        if (pinValue){
                            StrobeEn = true;
                        }
                    }
                    digitalWrite(DATA_IN, pinValue);
                    digitalWrite(CLOCK, HIGH);
                    digitalWrite(CLOCK, LOW);
                }
            }
            digitalWrite(LATCH, LOW);
            digitalWrite(LATCH, HIGH);
            if (StrobeEn){
                digitalWrite(POWER_ENABLE, HIGH); // подаем питание на мотор и головку
                digitalWrite(STROBE, HIGH);
                delayMicroseconds(800);
                digitalWrite(STROBE, LOW);
                digitalWrite(POWER_ENABLE, LOW);
            }
            digitalWrite(DATA_IN, LOW);
        }       
        digitalWrite(POWER_ENABLE, HIGH); // подаем питание на мотор и головку
        _steper(); // 1 шаг мотора
        delay(1);
        _steper(); // 1 шаг мотора
        digitalWrite(POWER_ENABLE, LOW);
       
    }
    _Standby();
    digitalWrite(POWER_ENABLE, LOW);
    Serial.println("DONE!");
}

Ниже прикрепляю весь код (скетч).

Хоть печать и ускорилась в несколько раз, но все же очень далека от той, какой должна быть. Сейчас картинка "Панды" (тестовой картинки) размерами 384х134 (48х16 мм) печатается за (примерно) 3 секунды. А это в 7 раз медленнее чем должно быть.
Изображение
Вот пример работы аппарата, с которого я взял термопринтер: https://youtu.be/NpgrLEuK3cg?t=57
Вот еще пример: https://youtu.be/pXnbft-Jdpk?t=131
Такая скорость печати возможна ТОЛЬКО если "прожиг" будет происходить вместе с шагом двигателя, то есть без пауз на печать, а одновременно.

Столкнулся еще с одной неприятной вещью. Нагар на печатающей головке. Он образуется сразу же после первой печати, и с каждой последующей печатью становится только хуже. Нагар легко убрать. Но все же он образуется потому что лента во время прожига стоит на месте и прилипает к головке. Кстати, время прожига на это не влияет. "Пригорание" происходит даже на самых блеклых отпечатках. Если делать печать на движущейся ленте, то такого не происходит (проверял).
НО! Текущий алгоритм не подходит для печати "на лету". Я пробовал. Происходит расслоение изображения. Каждые 32 точки происходит 1/2 шага мотора (1 прожиг), таких сегментов 12, 12 полу-шагов мотора, соответствует 3-м строкам... На одной линии (строке) это не заметно, но вот следующая строка (линия) отстоит от первой в 3 раза дальше чем должна быть. Изображение пропечатывается хорошо, но "полосатое" и в 3 раза выше чем должно быть. В общем, данный алгоритм не подходит. Если бы можно было прожигать одновременно всю линию, или несколько сегментов то проблем бы не было...
Может у кого-то есть идеи как сделать одновременный прожиг? То есть как сделать запись сразу во все регистры, а не в 1 из 12?

P.S. ...на заметку: скорость печати на прямую зависит от напряжения питания головки. Если напряжение питания 7-8 вольт то на прожиг одного сегмента нужно примерно 5 мс. Если напряжение 12 вольт то 1 мс вполне достаточно. Как результат - увеличение скорости в 2-3 раза...


Вложения:
termoprint.rar [9.03 KiB]
Скачиваний: 445

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Чт сен 12, 2019 21:05:58 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Спасибо! Заработало! Немного переделал, теперь летает! На печать всего буфера (384х134 точек) уходит в среднем 600 мс. При чем скорость печати зависит от количества точек в линии: меньше точек - меньше время на прожиг - быстрее печать. А если точек в линии нет, то вообще пропускается без задержки на прожиг!
Три строчки "среднего" шрифта печатаются "примерно" за 500 мс!!!
Картинка панды печатается дольше, до 1 сек. Из-за того что там много сплошных участков.

Функция печати:
Спойлер
Код:
void processPrintBitmap()
{
    for (int l=0; l<134; ++l)
    {
        for (int i = 0; i < 48; ++i)
        {
            for (int j = 7; j > -1; j--)
            {
                uint8_t pinValue = LOW;               
                pinValue = bitRead(bitmap[l*48+i], j) != 0 ? HIGH : LOW;
                if (pinValue){
                    StrobeEn++;
                }
                digitalWrite(DATA_IN, pinValue);
                digitalWrite(CLOCK, HIGH);
                digitalWrite(CLOCK, LOW);
            }
        }
        digitalWrite(LATCH, LOW);
        digitalWrite(LATCH, HIGH);
        if (StrobeEn>0){
            digitalWrite(POWER_ENABLE, HIGH); // подаем питание на мотор и головку
            digitalWrite(STROBE, HIGH);
            delay(2);
            _steper();
            if (StrobeEn>32){
                delay(((FireH-FireL)/100.0*(0.17667*(sq(StrobeEn)/100.0*StrobeEn)))/1000+FireL);
            }else{
                delay(1);
            }
            digitalWrite(STROBE, LOW);
            digitalWrite(POWER_ENABLE, LOW);
        }else{
            _steper(); // 1 шаг мотора
            delay(1);
        }
        digitalWrite(DATA_IN, LOW);     
        digitalWrite(POWER_ENABLE, HIGH); // подаем питание на мотор и головку
        _steper(); // 1 шаг мотора
        delay(1);
        digitalWrite(POWER_ENABLE, LOW);
        StrobeEn=0;
    }
    _Standby();
    digitalWrite(POWER_ENABLE, LOW);
}

Я использовал не линейную зависимость длительности прожига от количества пикселей в линии. График функции выглядит как парабола. Формула выглядит так:
Код:
((FireH-FireL)/100.0*(0.17667*(sq(StrobeEn)/100.0*StrobeEn)))/1000+FireL

где:
FireH - максимальное время прожига линий с наибольшим заполнением. Измеряется в мс. У меня установлено значение 12 мс
FireL - минимальное время прожига, если точек очень мало (на пример одна...) Измеряется в мс. У меня установлено 2 мс
StrobeEn - количество пикселей в строке
0.17667 - коэффициент: 100/566, как высчитал 566, уже не вспомню... расчеты не сохранил. Но он на прямую зависит от количества точек на головке (384).
_Standby() - функция отключает питание шаговика, чтобы не перегрелся.

Функция принимает не линейное значение от 2 до 12 (FireH и FireL)

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

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Термопринтер из старого терминала (кассового аппарата)
СообщениеДобавлено: Пт сен 13, 2019 10:11:43 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 542
Откуда: Николаев / Украина
Рейтинг сообщения: 1
Вот результат:


_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 35 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y