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
- DigitalRead -> No signal (only low)
- SoftwareSerial --> No signal, at any baud rate, also added "uncommon" baud rate in SoftwareSerial (3200,6400)
With Data_Out -->Digital IN, GND -->AREF
- 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