HP45_Standalone_3.0 Controller Software ( C# )

Powder and inkjet printing
Post Reply
smeric
Posts: 10
Joined: Sat Mar 14, 2020 11:08 am
Location: Turkey & Sweden

HP45_Standalone_3.0 Controller Software ( C# )

Post by smeric »

I need to control HP45 head for one line printing for understand this head. I wanna start a project like that picture. But firstly I need understand HP45 nozzles and Standalone controller serial interpreter.

example2.png
example2.png (17.5 KiB) Viewed 3379 times
I will connect only encoder to that controller. that program will produce serial code to send the controller from text. I hope someone can help me to take that information.
selimmeriçMSc Electric & Electronic Eng.
void main(){return null;}
User avatar
dragonator
Site Admin
Posts: 484
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: HP45_Standalone_3.0 Controller Software ( C# )

Post by dragonator »

The full explanation will take a little time. I will upload the code tomorrow, and start answering the questions you asked here and in private over the following days. I have to dig a bit how it works myself as well. Some layers are abstracted away for me.
User avatar
dragonator
Site Admin
Posts: 484
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: HP45_Standalone_3.0 Controller Software ( C# )

Post by dragonator »

Attached is the version of Oasis SA, or Oasis standalone. This is a test version I used to test the DMA printhead. Integration into any project is strongly discouraged. The current Oasis controller is a spaghetti mess.

You can load in an image, press convert SA, and it will prepare the file for standalone printing. If you have a printhead connected and press print, it will send the whole image to the head. It will place the image roughly at 100mm. If your image is larger than the roughly 1000 lines, unexpected things will happen.

As to your question in private message:
when I write someting to buffer how its fireing ? when a encoder step come? of there are any other command?
I need basicly what will I send to fire ink. and what will I send after come to encoder data.
The encoder keeps the position for the center of the printhead. The HP45 has it's nozzles in 2 rows of 150 nozzles each, roughly 4mm apart. It also calculated the position for the left and the right rows of nozzles. When a row of nozzles on your printhead reaches the position of the next inkjet line (while moving in the correct direction) it will load the next data of that new line for that row. The same goes for the other row. Each row keeps separate track of where it is in the buffer. Only when both rows have printed a line from the buffer is that line removed. The encoder velocity and direction is also kept track of. The velocity is used to determine at what frequency to fire the nozzles. For this calculation it uses the velocity, the DPI, and the density. This is why the current firmware cannot handle negative directions. The velocity is used unaltered. Negative velocity gives negative firing delay, making the firing delay hours long. The updated version will be able to handle it.

I will see if I can give more explanation on data to send and other questions you had before the end of tomorrow. If you have questions in the meantime, feel free to ask.
Attachments
Oasis controller SA01 20200422.zip
(389.68 KiB) Downloaded 184 times
User avatar
dragonator
Site Admin
Posts: 484
Joined: Fri Aug 14, 2015 4:48 pm
Location: The Nethelands
Contact:

Re: HP45_Standalone_3.0 Controller Software ( C# )

Post by dragonator »

The data you need to send before printing varies much on what you want to do.

On Oasis I use the following commands:
"BCL" : Buffer clear. Clears all lines in the buffer. This is to clear anything left in the buffer
"SDP" : Set DPI (with the value for DPI). Needs to be proper division of 600, so 600, 300, 200 or 150. This also means that you need to send less data over serial. At 300DPI, you only have to send 150 nozzles of data. Each pixel is now printed by 2 nozzles. (At 150 DPI each pixel you send is printed by 4 nozzles)
"SDN" : Set density, in whole percent. 100 is the default. What percentage of the head's default DPI you print. At 150, you print at 900 DPI in the sweeping direction.

(I give the numbers in integers here as an example, you will need to send in base64)

As variables to keep checking while printing:
"BWL" Returns to you how many lines you can still send
"BRL" Returns to you how many lines you can still print (read) before the head runs out.

Encoder resolution is by stored in the firmware, tab position, at the top. "#define encoderResolution 600.0"

If you have any more questions on how to control the head feel free to ask.
Post Reply