Try to find the Saar 128 manual. It describes also the pressure of the ink at the head (it is actually supposed to be negative).
You can test if your communication is working by fully connecting the serial bus and checking if the data that is pushed in on the MISO pin also comes out again on the MOSI pin after passing the nozzles (just send more data than you have nozzles). The manual will also give you all the necessary timing information. Make sure to measure signals with a scope to verify that they are really there and the timing is correct. Lastly, don;t forget to prove the head clock data (!MHz, IIRC).
Hacking the Xaar 128 printhead
-
- Posts: 5
- Joined: Thu Nov 10, 2022 1:57 pm
Re: Hacking the Xaar 128 printhead
Inkjet inks are typically around the thickness of water, and at most, high fat milk. If this is a photopolymer ink for 3D printing I guarantee you will not be able to eject it.gogatam wrote: ↑Sun Jun 25, 2023 2:07 pmHi, Wonko!Wonko wrote: ↑Wed Jun 21, 2023 12:19 pm Pin 24 of the printhead "READY" is an output from the printhead to the Arduino if you choose to connect it. If READY is high, you can check nFIRE. It is switched high a soon as two of the three firing cycles got triggered. I have no idea what "nReady" signal you are referring to.
Yes, MISO, MOSI and SCK must be assigned connections between the Arduino and the printhead. MOSI is the actual data from the Arduino to the head. SCK is the clock signal that tell the printhead when to read from the MOSI line. MISO is only used if you control more than one printhead through a single serial connection. Either nSS1 or nSS2 must be set to low when transmitting pixel data to teh head.
My code and PCBs are here: https://github.com/MatthiasWM/Xaar128 . No power supply PCB though.
We are trying to get our head to work, but there are problems with printing. We took Gkyle's code as a basis (https://github.com/gkyle/xaar128 ), we hear a sound coming from the head and everything seems to be working. The problem lies in the presentation of the material. We use a photopolymer that we feed through the tube, but it flows out without running the code. When you run the code, the material does not come out in the volume in which it should come out. Can you please tell me how to control the flow of material so that there is not too much of it and, at the same time, enough for printing?
Re: Hacking the Xaar 128 printhead
Does anybody else have the problem, that pin 9 is not working anymore? It once produced a 1 MHz square wave, but now it just completely stopped working. I tried other codes, that use pin 9 for generating a pwm signal... but it never worked.
Re: Hacking the Xaar 128 printhead
Pin 9 is marked as TEST 0, and the discs say "not required for operation, should not be connected".For pin 28 however, marked CLK, you must provide a 1 MHz clock signal to the print head. No PWM, just a 50:50 clock.
Re: Hacking the Xaar 128 printhead
Hey, yeah sorry I actually meant pin 28, on the arduino uno its assigned to pin 9. I switched the uno to a nano and it works now. I get the 1 MHz clock signal on CLK and my electronic circuit produces 35V for the printhead. Yesterday I connected the printhead, but unfortunately it didnt jet. Somehow the arduino IDE acts up, after I connect the printhead with the FFC connector. It shows, that no arduino is connected when I try to upload the code. I always have to restart the IDE and reconnect the arduino to my laptop. I'm not sure, if the problem lies in the nano, but it uses the same microcontroller as the uno, so that doesn't make sense.
I use the code from gkyle and I don't understand some parts:
Code: Select all
#include "Arduino.h"
//#include "carriage.h"
#include "xaar128.h"
int PENDING = 200;
int CYCLES = 1;
Xaar128 xaar128;
void setup (void) {
Serial.begin(115200);
//Carriage carriage;
xaar128.init();
// Set up a 1mHZ square wave for Xaar state machine CLK.
// http://forum.arduino.cc/index.php?topic=103370.0
TCCR1A = _BV(COM1A0); // toggle OC1A on compare match
OCR1A = 7; // top value for counter
// UNO //TCCR1B = _BV(WGM12) | _BV(CS10); // CTC mode, prescaler clock/1
TCCR1B = _BV(WGM12) | _BV(CS10); // CTC mode, prescaler clock/1
Serial.print("Begin: ");
Serial.println(PENDING);
float steps = 0.0;
float fails = 0.0;
//carriage.init(LOW);
xaar128.powerUp();
delay(1000);
for (int c=0; c<CYCLES; c++) {
for (int p=0; p < PENDING; p++) {
xaar128.loadData(p);
delayMicroseconds(1);
if (!xaar128.fire()) fails++;
//carriage.step();
steps++;
}
/*
carriage.changeDir();
for (int p=0; p < PENDING; p++) {
carriage.step();
}
carriage.changeDir();
*/
}
delay(100);
xaar128.powerDown();
//carriage.shutdown();
printSummary(fails, steps);
}
void printSummary(float fails, float steps) {
Serial.println("Done.");
float f = fails / steps;
Serial.print("Steps: ");
Serial.print(steps);
Serial.print(" Fails: ");
Serial.print(fails);
Serial.print(" Failure Rate: ");
Serial.println(f, 4);
}
void loop (void) {} // end of loop
![Confused :?](./images/smilies/icon_e_confused.gif)
Re: Hacking the Xaar 128 printhead
Has anyone tried to supply ink via a syringe to provide negative pressure? To me it seems like the easiest way to test code without dealing with a complex ink supply system, but I'm unsure if the negative pressure will be too much.