Products > Test Equipment
Fluke 87IV please whisper in my IR :P
frenky:
Tnx for supporting my efforts.
I have now removed the external usb2serial module because I can send out pulses of serial data on pin1 which is tx of arduino.
In the folowing days I'll publish code for complete IrDA encoder/decoder so anybody could use 2$ arduino instead of expensive Fluke cable. The code should work with Fluke Forms...
Sent from my LG-D855 using Tapatalk
dxl:
I own a Fluke 187 and this sounds very interesting. Thank you for your detailed reports! :)
frenky:
My arduino code is almost ready and meanwhile I have found conversion from IrDA to bluetooth:
http://goods.ruten.com.tw/item/show?21649693608363
It also shows that IrDA module in 87IV is actually HSDL-3200: http://www.efo.ru/components/avago/catalog/files/pdf/5989-3019EN.pdf
And IrDA encoder/decoder IC is TIR1000: http://www.ti.com/lit/ds/symlink/tir1000.pdf
Edit:
With this info it would be also easy to convert 87IV and 89IV from IrDA to basic Serial IR as in newer models...
Just remove IrDA encoder IC and put in IR diode and phototransistor as in IR2USB cable...
frenky:
Software implementation of IrDA encoding/decoding is ready for public eye. :P
DSO says it works:
So the schematics is really simple: (RX is connected to pin D2 because there is no hardware interrupt on RX pin)
Readable arduino code:
--- Code: ---#include "DigitalIO.h"
const uint8_t interruptPinIrRx = 3;
const uint8_t interruptPinRX = 2;
const uint8_t PINIrTx = 7;
const uint8_t PINSerialTX = 1;
void setup() {
fastPinMode(PINSerialTX, OUTPUT);
fastDigitalWrite(PINSerialTX, HIGH);
pinMode(interruptPinIrRx, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPinIrRx), sendTX, FALLING);
fastPinMode(PINIrTx, OUTPUT);
pinMode(interruptPinRX, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPinRX), sendIr, FALLING);
}
void sendTX() {
fastDigitalWrite(PINSerialTX, LOW);
delayMicroseconds(105);
fastDigitalToggle(PINSerialTX);
}
void sendIr() {
delayMicroseconds(46);
while (digitalRead(2)==LOW){
fastDigitalWrite(PINIrTx, HIGH);
delayMicroseconds(20);
fastDigitalToggle(PINIrTx);
delayMicroseconds(85);
}
}
void loop() {
}
--- End code ---
Fast less readable code:
--- Code: ---const uint8_t PINIrTx = 7;//PD7
const uint8_t PINSerialTX = 1; //PD1
const byte interruptPinIrRx = 3;//PD3 INT1
const byte interruptPinRX = 2; //PD2 INT0
void setup() {
pinMode(PINSerialTX, OUTPUT);
pinMode(interruptPinIrRx, INPUT_PULLUP);
attachInterrupt(1, sendTX, FALLING);
pinMode(PINIrTx, OUTPUT);
pinMode(interruptPinRX, INPUT_PULLUP);
attachInterrupt(0, sendIr, FALLING);
}
void loop() {
PORTD |= _BV(PD1);
}
void sendTX() {
PORTD &= ~_BV(PD1); //go LOW on pin 1(TX)
delayMicroseconds(105);
PIND = _BV(PD1); //toggle pin 1
}
void sendIr() {
delayMicroseconds(46);
while ((PIND & (1<<PD2))==0){ //while interruptPinRX is LOW, output 20us pulses
PORTD |= _BV(PD7); //go HIGH on pin 7 (IR diode)
delayMicroseconds(20);
PIND = _BV(PD7); // go LOW (toggle pin) on pin 7 (IR diode)
delayMicroseconds(85);
}
}
--- End code ---
First test with arduino serial monitor:
And a final test with FlukeView Forms:
A guess next is a mini IrDA shield for Arduino Nano. ;D
serggio:
Hi,
At what points in your scheme you control signal by oscilloscope? Could you post form of your signal between ground and D3 input?
p.s. solution with additional BT module cool, but would be interesting know, how often that guy change battery in him meter.. :)
Navigation
[0] Message Index
[#] Next page
[*] Previous page
Go to full version