Reading digital input less than 2 volts (A7201A chip)

I have to read a 2volt signal as digital input, is that possible?
Maybe with some hardware...

Specs:
I have to read the data_out from a A7201A chip, i've found that topic ( Digital input to read dataout from Energy Monitor - Project Guidance - Arduino Forum ) but i cannot read the digital input because the signal has too low voltage.

The connection that i have made is: GND chip > GND Arduino, DataOut from chip > Digital Arduino Pin.

Checking with oscilloscope i've found that data_out has an output of maximum 2volt (2,3 but good signal is at 2V) structured like this:
very long 2v pulse signal = start communication
long 2v pulse signal = 1
short 2v pulse signal = 0
Every 1 or 0 is a bit.
Complete transmission is: StartCommunication + 72 bit (9 byte)
One transmission every six seconds
(I've found full specs of signal at: electrohome [licensed for non-commercial use only] / Efergy Elite Wireless Meter Hack)

Tries that i've made:
With Data_Out -->Digital IN , GND --> GND, timing in microseconds

  1. DigitalRead -> No signal (only low)
  2. SoftwareSerial --> No signal, at any baud rate, also added "uncommon" baud rate in SoftwareSerial (3200,6400)

With Data_Out -->Digital IN, GND -->AREF

  1. SoftwareSerial --> Received Data but inusable at any baud rate, maybe the signal is not parsed as it is

With Data_Out -->AnalogIN, GND-->GND
1.AnalogRead --> Parsing only value over 100 i've readings every six seconds (OK), but except for the last reading value (470) i receive always value from 100 to 200 (i think that's incorrect for a 2V signal). I also think that with AnalogRead i have to do a lot of code for parsing voltage...

Hardware Tries:
Using a 3,5mm red led (1,7v connected to data_out and gnd of the chip) i've a blink every six seconds (correct).
-Maybe i could made an optocoupler (red led or IR + phototransistor, light isolated) to have higher voltage at input?
-With an IR LED could i "read" data with an IR receiver?

Note:
-The chip could also provide a clock_out pin, maybe it could be usefull for setting baudrate in SoftwareSerial or for synching readings

  • I think that maximum load on Data_Out is about 20-30mA

If possible:

  • Using DigitalInput i could use pulseIn() to grab each bit
  • Using SoftwareSerial i have ready data
  • During Tests sometimes arduino hangs (maybe for excessive load), in final project i will run the readings every 5 sec from last, that could solve issue?

Any help is apreciated, thanks

Checking with oscilloscope i've found that data_out has an output of maximum 2volt (2,3 but good signal is at 2V)

You 'could' do it with a transistor (I --> V) or (MOS)FET voltage level shifter (Google for examples) but I think I would use a SN74LV1T04 and simply invert the logic to the Arduino and program accordingly. You can get an acceptable sub-5V supply to the chip by using silicon power diodes strung in series until an acceptable Vcc is reached. At that time, you should be getting a transition of >= 2.7V on the Arduino digital pin which will give a guaranteed logic 1.

PDF: http://www.ti.com/lit/ds/symlink/sn74lv1t04.pdf

Ray

Thanks, i will try that and then give a feedback...