Daugelis iš mūsų turi spausdintuvus ir stengiasi taupyti, nepirkdami originalių jų eksploatacijos medžiagų. Tokiais atvejais kasetes pildome įvairiose įmonėse arba tai bandome daryti patys. Kai kurių spausdintuvų papildytos kasetės po papildymo turi būti „nuresetintos“. Ne išimtis ir spalvotas lazerinis spausdintuvas Samsung CLB-300.
Visos „normalios“ Samsung CLB-300 tonerio talpyklos (4 vnt.) turi EEPROM. Sakydamas „normalios“ turiu omenyje ne tas, kurios būna pridėtos perkant naują spausdintuvą, o tas, kurias perkame atskirai. Prie naujo spausdintuvo tonerio talpyklų dėl kažkokių priežasčių jokių identifikacijos priemonių gamintojas nepridėjo, bet pasibaigus talpyklai (tiksliau išspausdinus tam tikrą kiekį lapų), jau būtina naudoti kasetes su EEPROM. Spausdintuvas identifikuoja tonerio talpyklas pagal EEPROM turinį, tad vien papildžius tonerio talpyklas, spausdintuvas vistiek sakys, kad jos tuščios. Taigi, būtina pakeisti ir EEPROM turinį.
Talpyklose naudojami standartiniai 24×02 serijos I2C EEPROM. Jų programavimui pasidariau su PonyProg suderinama Easy I²C programatorių, kurį sudaro keletas komponentų.
Nuskaitęs EEPROM turinį pamačiau tam tikrą duomenų struktūrą, kuri kartojasi. Viduje tokie duomenys:
- spausdintuvo modelis
- talpyklos spalva (C, M, Y, K), kad nebūtų sumaišomos skirtingų spalvų
- rinka, kuriai skirta talpykla (EUR)
- pagaminimo data
- CRUM
Svarbiausias dalykas yra CRUM ir DATA. Pagal juos nustatoma, kad įdėta nauja talpykla. Pakeitęs šiuos duomenis EEPROMe, įdėjau talpyklą į spausdintuvą ir spausdintuvas sėkmingai atpažino kaip naują talpyklą.
Can you show us the circuit schematic, i’m doing one using arduino, but i’m with some problems programming the i2c
Hi. Circuit is very simple. If you use hardware I2C interface, connect SDA and SCL pins together. Also you have to use internat or external pull up resistors.
Talking abou I2C EEPROM protocol, everything is written in datasheet.
Thanks for the reply, I+m dealing with a problem that my arduino hangs on Wire.endTransmission(), sometimes I can program but is not always i dont know why. I’m thinking that the problem is that arduino uses 5v source and maybe i’ll have to make an i2c level shifter, thats no problem the 2n7002 is kinda cheap, but i’m not sure if this is the problem, and in local shop dont have the mosfet.
The CPL-300 chip has internal pullup’s of 10k do we need to use external pullups too ? I’have saw that the i2c address is diferent to each color so I have determined color of toner by scanning all possible addresses, and then I send a new flash with a random year and a random DRUM ID.
I don’t use Arduino and don’t know what function Wire.endTransmission() do. If you are powering everything from 5V no problems would be with logic levels.
Total resistance of line (SDA or SCL) pullups (connected in parallel) could’t be less than 2.2 kOhm.
Yes, each color eeprom have diferent i2c address and you can find which color by scaning I2C addresses.
As far as I remember, it is needed to change only CRUM in EEPROM content.
Hi.
Do you know the I2C addresses for each chip?
Thank you.