Hallo,
angeregt durch nachbrenner's erfolgreiche Experimente und angesichts der Tatsache, dass ich wegen der Feiertage nicht so schnell an einen Teensy3 komme, habe ich noch ein wenig mit Arduinos experimentiert.
Ergebnisse bis jetzt:
1. der Code läuft nach kleinen Anpassungen auf dem Arduino Mega und auf meinem Zielsystem, dem Arduino Pro Mini 3.3V.
2. Am Arduino Pro Mini kann ich den UniSense nur über Hardwareserial ansteuern - Softwareserial lieferte falsch Werte (keine Ahnung wieso ...). Das ist beim Entwickeln mühsam, aber im Betrieb egal.
3. Entscheidend ist offenbar die Verbindung zwischen der seriellen Schnittstelle und dem Single-Wire MSB.
Die passende Schaltung (2 Widerstände, 1 Diode) findet Ihr hier:
http://www.zier-net.de/mfg/technik/usbkabel/empfaenger.htm
4. Wenn man den Unisense eine zeitlang mit der richtigen Baudrate MLINK Andressen schickt, schaltet er zuverlässig in den MLINK/MSB Modus (Tipp des Entwicklers ...)
Das ist der Code, der in setup() abläuft, bevor die eigentliche Kommunikation beginnt:
// sends an address (0x00 to 0x0f) to the bus every 6ms to switch the Unilog device to MLINK/MSB mode
for (int n=1; n< 100; n++) {
for (byte i=1; i< 16; i++) {
MSB.write(i); // send sensor address
MSB.flush(); // make sure send is complete
delay(6); // wait up to 6ms for answer
}
}
Viele Grüsse,
Wolfgang