- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Solved! Go to Solution.
- Labels:
-
PSoC 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Component OneWire.cylib has while only 5 commands. Working with multiple sensors are not available. I hope you will be able to add the necessary commands.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi pavloven,
I have tried your read_rom code and got it working OK in PSoC 5 with a DS18B20 sensor - thanks for posting this. Now I would like to import your component into another project (it that's OK?!) but I'm having trouble. Your component seems to use a "virtual pin" - "Pin 1" for the calling code - which isn't physically connected to the 1 wire - the sensor is physically connected to the pin in the OneWire component. I can't see how this is mapped - there doesn't seem to be aliases used. It obviously works fine in your application - what am I missing?
I'm relatively new to the PSoC so I hope you can help. Many thanks.
By the way, I had some trouble actually trying to make a temperature measurement - it was OK reading and writing to the registers. I solved this by setting the output pin in the OneWire component to "Strong Drive" - I think this was necessary as I had it connected in "parasitic power" mode with no separate Vcc supply.
Also, it does seem a bit strange that there isn't a built in 1-Wire component in PSoC creator when there is one in PSoC Developer!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi pavloven,
Update on the previous post. I have got it working now - I hadn't worked out the reason for "pin 1" in the main schematic before and now think that it is needed to allow the compiler to access the functions in your OneWire component. Anyway, including this lone "Pin_1" Output Pin mapped to an unused real physical pin allowed it to work within my application.
One additional point I should have mentioned last time. In order to read temperatures or anything else after the initial device type/serial number read command, it is necessary to first do a bus reset command and then a "skip rom" command as we only have one device on the interface.
Start the temperature measurement: -
OneWire_BusReset();
OneWire_Write8(0xCC); // skip rom command
OneWire_Write8(0x44); // measure the temperature - need to allow correct time before read
Read the measured temperature result bytes: -
OneWire_BusReset();
OneWire_Write8(0xCC); // skip rom command
OneWire_Write8(0xBE); // read scratchpad - temperature result has been written here
Pin_1_Write(Pin_1_Read()^1); // set pin 1 to read
uint8 TempResultLSB = OneWire_Read8(); // LSB of temperature result - see datasheet to decode (depends on resolution setting of the 18B20
uint8 TempResultMSB = OneWire_Read8(); // MSB of temperature result
Once this was in place I have now had reliable transactions for 24 hours plus continuous running measuring around 5 times/second. We have received a very occasional 85 DegC value which means that the device has reset but this is easily filtered out.
Hopefully this helps a little.
Thanks again for the starting code!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hi i am trying to interface ds18b20 to psoc 3 can you give a detail explanation on how to please. I am new at using psoc. please help.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
andyf,
IMHO, reading the DS18B20 at rate of 5Hz is too fast: (i) temperature equilibration time for this sensor is about 1 sec - strobing sensor any faster will show "smeared" data, (ii) self-heating due to ADC conversion is noticeable already at 1 Hz repetition, e.g. in 12-bit mode (0.1 C resolution) the temperature displayed is typically 0.1C higher as measured at e.g. 0.2 Hz.
You may check also another component for DS18B20 (written for PSoC5 though):