Hello everybody,
You may have wondered why I'm asking this because everywhere on the Internet one can find how to connect a 1wire device. But here is my problem.
You have to connect it with a 4.7k pull-up resistor between your data pin and +5V. That's how it has to be done.
But I can't do it like this because I'm not really trying to set this up by my self I'm actually trying to read out information of an EEPROM which is already set up on a board but in this instance with a 4.7k pull-down resistor between Ground and the Data Pin.
So I have two connections to connect with my arduino. Data and Ground with the resistor between it. But I have no idea how to do it like this. The official way with a pull-up resistor is pretty straight forward but I have no idea what one can do with a setup like this.
I have heard you may need a 12V source to do it? But how can I set this up without destroying my arduino or the EEPROM?
1-wire "works" by pulling the data line to GND for signalling. If you don't have the data line "pulled up"... the pull-down signalling action of the 1-wire devices is in vain... it has nothing to pull-down.
please take some time to real the fine documents at Dallas/Maxim about how 1-wire works. See figure 8 in the datasheet. The idle state for the 1-Wire bus pin is high... it goes ACTIVE low... so pulling towards GND potential with a pulldown makes the bus operative in an ACTIVE STATE... which will essentially make it "not work"
...and I have no idea what your current setup is... I get 403 forbidden
Glomby:
But I can't do it like this because I'm not really trying to set this up by my self I'm actually trying to read out information of an EEPROM which is already set up on a board but in this instance with a 4.7k pull-down resistor between Ground and the Data Pin.
I can't imagine why anybody would put a pull-down on a data pin. If the board is designed for 1-wire communications then it's a design error.
The best thing you can do is snip out that resistor (really!)
If you can't remove the resistor add a 6k8 pull-up to 12V - that in combination with the 4k7 to ground
will make a 2k8 pull-up to 4.9V (Thevenin equivalent).
If you can't remove the resistor add a 6k8 pull-up to 12V - that in combination with the 4k7 to ground
will make a 2k8 pull-up to 4.9V (Thevenin equivalent).
That sounds like a solution. So I connect the Arduino Data pin with the EEPROM Data Pin and a 12V external source with a 6k8 pull up resistor?
Like this?
Old post:
The second link should work now.
I can't just snip the resistor out because it is part of a setup which has to be the way it is. Or to be more precise. The chip is part of a cartridge for a 3D printer and the printer stores data on it for instance, how much filament is left.
So it is working or that's what I believe
My goal is just to read this data, so when the printer changes it I can take out the cartridge and "scan" the chip for the updated data.
By cutting the resistor out, the printer won't be able to read/write it anymore or at least this is what I believe. I didn't understand how this is supposed to work either but it has to work like that, maybe I have just misinterpreted something.
I've attached two pictures of the board now. They're in the OP.
If it's working, then that resistor must be part of a potential divider and the other half is somewhere else. The EEPROM must have a pullup on the data line when operating in parasitic mode (AKA with only 2 pins) It would be nice to know the facts.
And please... use the image upload feature of the forum... that image upload site you selected has to be among the worst you could chose.
This is everything I can get. The other half must be in the printer then but I can't open it up to take a look. I can build what ever has to be build to read out the chip outside of the printer but I can't change the board because it has to work in the printer as well.
I've reuploaded the pictures now, you can look them up in my OP.
But isn't MarkTs workaround already the solution? Adding a 6.8k pull-up with 12V on the arduino?
Glomby:
By cutting the resistor out, the printer won't be able to read/write it anymore or at least this is what I believe. I didn't understand how this is supposed to work either but it has to work like that, maybe I have just misinterpreted something.
Maybe they added it just to make life difficult for hackers.
Not sure where you "heard" that 12 volt was required. There is nothing in the data sheet about that. Some older variants of 1-Wire EEPROM's needed the 12V to write to the memory, but the DS2433 does not.
midon:
Not sure where you "heard" that 12 volt was required. There is nothing in the data sheet about that. Some older variants of 1-Wire EEPROM's needed the 12V to write to the memory, but the DS2433 does not.
The 12 volts are because of the pull down resistor. Otherwise you would just use 5V and a pull-up. I'm not the one who came up with 12V but it sounds reasonable to me and with a 6k8 pull-up you would end up with 4.9V again.
midon:
Not sure where you "heard" that 12 volt was required. There is nothing in the data sheet about that. Some older variants of 1-Wire EEPROM's needed the 12V to write to the memory, but the DS2433 does not.
The 12 volts are because of the pull down resistor. Otherwise you would just use 5V and a pull-up. I'm not the one who came up with 12V but it sounds reasonable to me and with a 6k8 pull-up you would end up with 4.9V again.
I'd try a 220 Ohm pullup to 5V and see what happens. The Arduino can pull that much current to GND, no problem. It might work.
Wow thanks I got a read. I had to use 6 36ohm resistors to get to 216ohm but it seems to work. I'm just not 100% sure if it's a perfectly stable connection because I'm getting my Hex code as desired but after a few lines it just returns zeros. Maybe I'm missing something or this is exactly what's on the chip. I need to do some testing now but it's a huge success so far.
But can you tell me exactly why the 220ohm resistor does the trick? Why not a 200ohm one?