View previous topic :: View next topic |
Author |
Message |
supermarkao236
Joined: 05 Jan 2020 Posts: 3
|
PIC CCS thermal printer development program MP105 - APS |
Posted: Sun Jan 05, 2020 10:25 am |
|
|
I need help developing the control software for a MP105 thermal printer - APS
Would anyone have something like that?
Following is the printer datasheet:
http://www.cerne-tec.com.br/Datasheets/MP105_rev_b.pdf
The engine logic is done.
The printer control pins: (DATA, CLK, PLAT, STROBE)
THANKS |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19518
|
|
Posted: Sun Jan 05, 2020 10:49 am |
|
|
You have a lot of work to do.
This is not a complete printer, just a mechanism.
To print anything, you have to work out the exact pattern of dots and
send these along the line, together with a clock pulse.
Then you need to operate the stepper motor to move forward.
You also need to read the thermistor sensor to know if you are driving too
hard.
You are going to need a font table, and code to rasterise the required text
into dot patterns. Then correct timing for the output of this, and then
operate the stepper.
It's a lot of work. |
|
|
supermarkao236
Joined: 05 Jan 2020 Posts: 3
|
|
Posted: Sun Jan 05, 2020 11:44 am |
|
|
Thank you for your help.
I am aware that it takes a lot of work to figure out the printing points.
I would like someone to help you have a program as a starting point.
I appreciate the tips. |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Sun Jan 05, 2020 11:52 am |
|
|
As Mr. T says, a lot of work, BUT it can be done if broken down into 'stages'.
Consider that the printhead consists of 192 'pixels'. That would breakdown to 32 characters 6 pixels wide, making easy 5x7 font with a 1 pixel space between characters. Use 5x7 font with 1 pixel spacing between lines.
Look at almost any LCD module datasheet for bit patterns to create the font table.
Your best friends in this project are 1/4 square graph papaer and a pencil ! Use them to see HOW the characters are created, how a line of text is done. Much of the 'math' can be figured out this way BEFORE actually powering up the printer.The actual control of 'print a line of dots, advance paper' would be the next stage.
This IS the way I did it 3 decades ago with 'simple, cheap' mechanical print mechanisms....though cut in Assembler, the process is the same, start small, build upon sucesses.... |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19518
|
|
Posted: Sun Jan 05, 2020 12:12 pm |
|
|
Basically the graphic LCD driver shows the steps to convert a character
into 'points'.
Start with just a basic 'line' stored in memory, and generate the code
to write this to the printer line, and the code to operate the stepper.
Ideally use a bipolar stepper driver chip that allows the current to be
controlled and has options to maintain drive when not stepping, but reduce
this current to a low figure.
Be aware of just how serious the supply requirements are 3.8A if you
print a solid line. 340mA for the stepper (which is an inductive load), so
even if you turn the current down to just 20% when not moving, you need a 4A supply.
Once you have the line being printed, then use the LCD graphic code
to generate the lines being needed.
If you want to draw graphics, you will need to think what you actually
'need'. So (for instance), if you wanted a 'line' algorithm that allowed
XOR when a line crossed, you would have to have a PIC that had
enough RAM to hold a significant lump of the image. However restrict
the pen to 'set only' operation, and instead it can be done on a line by
line basis without needing a buffer like this.
Now you have to read the thermistor, and if the head starts to get too
hot, slow down the print rate. |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Mon Jan 06, 2020 9:37 am |
|
|
The 'scary' part of this project is the lack of documentation ! I looked online for an hour,sure lots are selling it, but no 'how-to' details.
I understand there's 192 'dots' on the printhead BUT is it LSP or MSP order ?
Do you clock the pixels in left to right or right to left ? I'd assume left to right BUT would need to cut code to test.
The mechanical printers I used were right to left,presumably faster for applications like adding machines.....
Jay |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19518
|
|
Posted: Mon Jan 06, 2020 9:46 am |
|
|
Note 1, under the table giving printhead electrical characteristics.
First bit of data entered (Dot 1) is the first bit of data printed (FIFO),
left side of TPH, top view (gearing side of the printer).
The data is actually sent as three blocks of 64 bits with the different
STB line saying which block it is. |
|
|
supermarkao236
Joined: 05 Jan 2020 Posts: 3
|
|
Posted: Mon Jan 06, 2020 3:14 pm |
|
|
Thank you for your help.
I am beginning to understand how the printing system works by your help.
I have the original card that printed the text sent via serial TX in 9600:
Code: |
#include <18f4550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG,NOCPD,PUT,NOWRT,BROWNOUT
#use delay(clock=4000000)
#use RS232(baud=9600, parity=N, bits=8, xmit=PIN_C6,rcv=PIN_C7,stream=RECEIVED)
|
Send to print the characters:
Code: |
fprintf(RECEIVED,"----------------");
delay_ms(500);
|
The images below are of the oscilloscope on the DATA and STROBE pin sent to the printer:
https://ibb.co/HdfPsk7
https://ibb.co/PcPJFsD
Tks |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Mon Jan 06, 2020 5:01 pm |
|
|
You MUST have some kind of 'interface' or 'control' board between the PIC and the printer, as the original posting links to a 'basic' OEM style printer device. |
|
|
|