Products > Test Equipment
External Display for Agilent 34401A (or any DMM with RS232 Output Stream)
<< < (4/8) > >>
SArepairman:
can you post the code etc so I can build one?
i don't care if its a rough prototype
quantumvolt:
Absolutely barebone - tested. The trigger is optional - unless you choose Single Trig the DMM will just stream data (so throw out the trig code). Set DB9 pin 6 DSR high 5V. Two wires needed for read only - DMM Tx to Arduino and ground. Level shift and inversion/polarity of high low is all over internet (and flebay RS232-TTL converter USD 2-5). Guess you know (I didn't).

For more - search 'Arduino serial DB9', 'Arduino software serial' and ' Arduino 1602 I2C' and you can read until you puke  :o. As it is supposed to be a dialect of C++ code, you can tweak it into any uC with the needed similar libraries. Of course there is more to it than just reading the string from the DMM and echo it to the PC. That's the DIY part ...


--- Code: ---#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

SoftwareSerial mySerial(10, 11); // RX, TX RS232 - DMM TX to Arduino Digital Pin 10
LiquidCrystal_I2C lcd(0x27,16,2);  // I2C 16 chars 2 lines I2C display addr. 20 or 27, fleabay USD 5-6

String inData;
int trigpin = 13;  // your choice


void setup() 
{
  pinMode(trigpin, OUTPUT);     
  Serial.begin(9600); // Serial hardware to PC
  // Serial.println("Setup");
  mySerial.begin(9600);  // SoftwareSerial port to DMM
  lcd.init();  // I2C to 1602 Display
  lcd.backlight();
  lcd.print("Init LCD");
  delay(1000);
  // Trigger
  digitalWrite(trigpin, HIGH);
  inData = ""; // Clear read buffer
  lcd.clear();
}

void loop()
{
  digitalWrite(trigpin, LOW); //
  delay(10); // adjust
  digitalWrite(trigpin, HIGH);
  //delay(5); 
  // Serial.println("trig");

  delay(1000);  // or whatever

  while (mySerial.available() > 0)
  {
    char recieved = mySerial.read();
    inData += recieved;

    // Process message when new line character is recieved
    if (recieved == '\n')
    {
      Serial.print("Arduino Received: ");
      Serial.println(inData);
      inData = inData.substring(0, inData.length()-7); // cut exponent for test, see DMM manual for string format
      lcd.clear();

      lcd.print(inData);
      lcd.print(" Str"); // a string - not a number - unparsed for exponent
      // delay(1000);
      inData = "";
    }
  }










--- End code ---
george graves:
subscribe!
bingo600:
I'd suggest a RasPI as the "logic" ....
HDMI out and also a serial in.

Get a cheap PC-Screen with HDMI/DVI & off you go.
You could use mathplotlib or whatever for statistics.

/Bingo
timb:

--- Quote from: bingo600 on November 09, 2013, 04:40:20 pm ---I'd suggest a RasPI as the "logic" ....
HDMI out and also a serial in.

Get a cheap PC-Screen with HDMI/DVI & off you go.
You could use mathplotlib or whatever for statistics.

/Bingo

--- End quote ---

That's what I was thinking as well. Even if you don't want to go the HBMI route you could still get a cheap 5"+ touchscreen (SPI or 16-bit parallel interface) off eBay to use with the fbtft driver so it shows up as any other frame buffer device (letting you use it for console and Xorg access). Then just get a USB bluetooth dongle plus bluetooth transceiver and you'll be in business! (I own one of those transceivers and can vouch for the functionality.)

You could even throw on a USB GPIB adapter (plus linux-gpib drivers) and you'd have easy access to a whole range of scopes and other devices.

That FBTFT project really is pretty awesome. I've used it for some $15 Chinese screens with great success! Here's a couple of pictures where I'm driving a 2.8" touchscreen over SPI:





Navigation
Message Index
Next page
Previous page
There was an error while thanking
Thanking...

Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod