Voor een doe het zelf projectje (PID regelen van mijn espressomachine) ben ik aan het stoeien geslagen met een arduino en deze thermokoppel module. De module bevat o.a. een ZMD 31050. Deze chip is uit te lezen via I2C. Dat uitlezen zou op moeten leveren:
Echter dit levert thermalVoltage == thermalEquilibrium op. Het lijkt dus alsof slechts de eerste twee bytes worden gelezen. Ik heb ook al gecontroleerd of er daadwerkelijk 4 bytes worden gelezen (return waarde requestFrom) en of bytes beschikbaar zijn (Wire.available()) maar dit lijkt allemaal zo te zijn. Er worden gewoon 4 bytes gelezen van de module, maar somehow zijn de eerste twee gelijk aan de laatste twee.
ra ra hoe kan dat?
- Byte 0 MSB voltage thermokoppel
- Byte 1 LSB voltage thermokoppel
- Byte 2 MSB PT 1000 referentietemperatuur
- Byte 3 LSB PT 1000 referentietemperatuur
C++:
1
2
3
| Wire.requestFrom(0x78, 4); int thermalVoltage = (Wire.receive() << 8) + Wire.receive(); int thermalEquilibrium = (Wire.receive() << 8) + Wire.receive(); |
Echter dit levert thermalVoltage == thermalEquilibrium op. Het lijkt dus alsof slechts de eerste twee bytes worden gelezen. Ik heb ook al gecontroleerd of er daadwerkelijk 4 bytes worden gelezen (return waarde requestFrom) en of bytes beschikbaar zijn (Wire.available()) maar dit lijkt allemaal zo te zijn. Er worden gewoon 4 bytes gelezen van de module, maar somehow zijn de eerste twee gelijk aan de laatste twee.
ra ra hoe kan dat?