Can I record and repeat an unknown data/command signal?

I apologize if this should be common knowledge, but google came up with nothing, and I am not a programmer. I want to use a device that has a signal lockout in the BMS(Battery Management System) I have a battery that the circuit board has failed in several ways, but for the moment the cells are charged, and the main ic still sends the run signal on the data pin. I'm having trouble tracing the board to figure out which of several possible signals the IC is sending. I don't want to buy 1000 ICs to make 3 adapters, and they are a bit smaller than I can solder anyway. I do not have a logic analyzer. The signal is sent briefly then the tool can be disconnected from that wire and still run. If the tools are powered by external power supply instead of the battery with the BMS circuit, then no other additional signals are sent, and the data line is cleaner on the oscilloscope. I just need to send this signal anytime the tool wakes. A continuous loop while a battery is connected would probably be fine, as long as the current draw is low for a 18v tool.

If it helps, the IC has the marking "B7790511" which google suggested the BQ7790511PWR data sheet, but the original battery circuit doesn't seem to line up with the suggested circuit diagrams.

I have a app on my phone called Zazza remote that works with a ir transceiver, where I can have it watch a signal, then remember and repeat that signal. Is there a way to do the same with Arduino and a two wire digital signal alternating between 3.3v and 0v?

What on earth are You talking about?
Please step back and read the first topic in the section. It tells You how to use this forum, how to get the best from it.

That thread just says, "Advice on general approaches or feasibility", which is exactly what I thought I was asking. Maybe I need be more concise for clarity, my apologies. I will attempt to restate the question and circumstance.

I have a broken battery circuit board. I would like to make a battery adapter to use a more reliable and easier to find battery. 4 out of 5 battery pins can be replaced with typical analog circuitry. However, the fifth pin sends a digital "turn on code". I do not have the tools to determine what format/profile/routine/standard the digital signal uses. Instead of using the broken BMS board in the adapter I would like to replace it with an Arduino board, programed to endlessly loop the "turn on" code of unknown type. Ideally, I want to do this by plugging in the two signal wires from the broken board, which still partially powers on, into the Arduino, then tell the Arduino to repeat what ever signal it just received(without knowing the type) repeatedly as long as there is power to the Arduino board.

Can I connect two data wires carrying an unknown signal to Arduino, and have Arduino record, and repeat the unknown digital signal on two output wires?

Here are some oscilloscope photos of the signal pin with the ground. You can also see some scorch marks on the board.

Hi, @joeysjunk

Do you mean;

What "several" ways has the BMS failed.
I interpret that you want to be able to monitor when the batteries are low and the "RUN" signal turns OFF.
Do you know if the damaged BMS will still signal OFF when the batteries get low?

If you use IR, what happens if you are out of relatively close range?

Thanks.. Tom.. :smiley: :+1: :coffee: :australia:

As to your first question, no.
The data sheet for the microchip says that it can have many configurations depending on # of 18650 cells, series or parallels, # of transistors, which protections are desired, as well as other factors, and can preform various functions, many more than I think are present. It says the IC is capable of creating multiple diagnostic/ circuit protection signals, as well as a tool activation signal. It provided multiple example circuit diagrams, none of which seemed to match this actual board, unless it is a combination of several. If certain features are enabled or disabled, then certain microchip pins will have continuity or not. These voltage/resistance readings could be used to test what features are active or disabled, which would have helped limit what type of signal it could be sending through the COM pin of the main board, and from that knowledge I could hopefully find out what encoding standard/protocol/etc was used to have a more precise search to find out if Arduino can replicate it. Unfortunately not all the traces are visible so I can't draw a circuit diagram, and my probes were too wide with my shaky hands to test the IC pins directly.

Test alligator leads slipped and shorted different parts of the battery board, on several occasions. The battery is fully charged, and but tests as defective by the charger. It used to power the drill despite testing defective, then I made another mistake and now the two positive rails have to be bridged to power the drill(B+ and CHG). One lead is listed as CHG which is different from the Battery +/- pins. This pin is some sort of regulated + power rail as some of the simpler tools like tire inflators and lights only use this pin and have no B+ terminal, however more advanced tools like the 1/2" drill I received, require both, and both leads go to different parts of the drill board. The CHG pin now shows the same voltage as the B+ pin, but drops to 5v the instant a load is applied, including a 0.5Amp LED. This makes one light model flicker, and another not run at all(These do not have B+ pins). Additionally I created a spark on the IC when my meters probes proved too wide to isolate individual microchip pins to identify the chip configuration, through checking voltage and continuity routs. Luckily the IC still seems to function as it can still generate the "turn on" code. Also, I connected terminals backwards when I erroneously decided I wasn't too tired to keep working on it, and saw some smoke from one spot that didn't have any circuit components, though oddly the drill did run however slowly.

The Drill, as a test subject, can be connected to a benchtop power supply providing the 20v to the B+/- pins, and a patch cable bridges the CHG and B+ pins, and a decade resistance box replaces the NTC pin which uses the same 10k thermister that most, if not nearly all batteries will provide(Bauer and Hercules are the only exceptions I know of running 100k.) With this setup the drill runs with only the B- and COM terminals connected to the drill. When the battery powers the drill, the COM line is messy on the oscilloscope, and has multiple seemingly random signals, as seen in the photo. It also occasionally sends a signal even as the drill is in hibernation mode. If the power supply powers the drill instead of the battery, only the start up signal is sent when the battery COM and B- pins first connect and then the COM pin goes silent. At this point the COM and B- pin can be removed and the drill will continue to run without issue. The run signal even before the battery board broke only transmitted once briefly, although other unknown and unnecessary signals are sent, even as the drill idles with no movement just the lingering led, and even after the drill goes dormant with no led. All testing has been done with a drill free spinning in the air, so no extraneous signals could have been warnings.

As there are only one or two items with this battery I am interested in like the RC truck, the plan was always to make an adapter, but this digital circuitry makes that complicated. I am used to working on machines from the 60's and 70's, and that is when much of my test equipment is from.

I was using the programable ir cellphone app as a example of what I want Arduino to do with the two data cables. There is no ir in the BMS circuit.

It occurs to me that maybe I should break my question into parts.

The Bio:
First, however, some background as to my skill level. I have been fixing machines, my own and those of friends/customers, for a few years now. This ranges from 1944 top of the line tube radios, to multi thousand dolor turntables, a Crosly I couldn't talk them out of, and occasionally non audio equipment such as lights, and power tools. I am fairly good with computers, once having 6 operating systems on a single hdd, and used to work with dos, not dosbox, and having once set up adhock dial up connections from wifi windows vista to a parallel port win98 laptop to install its PCMCIA wireless card. I do not however know much at all about Arduino, and only took an intro course in C++ programming. My knowledge centers on older equipment, and working within the bounds of operating systems and precompiled software.

The Problem:
I have a signal alternating between 5 and 3v and is a square wave, not a sine wave. Google says based on what my oscilloscope is showing it is a digital signal.

I want to record and repeat this digital signal which is encoded with an unknown/unidentified protocol. Arduino seems like it should be the correct tool for this task, albeit a tool I am unfamiliar with.

I know Arduino can replicate Serial (db9) protocols, so I am hoping it can replicate others.

The Questions:

  1. Can Arduino be set up to record and save a digital signal through two wire inputs?

  2. Does the signal protocol need to be known prior to recording, or can it record a raw signal for unprocessed duplication?

  3. Can this signal be stored even if power is removed from the Arduino, perhaps for over a month?

  4. Can Arduino be programed to output a digital signal through two output wires without specifying/identifying the signal protocol?

  5. Can Arduino be made to automatically repeat a signal endlessly without user input as long as power is applied?

These last two are probably easy, as I am not sure what module I might need, but it is probably obvious to one of you.

  1. Can an Arduino module capable of these things be made to run on 18v/20v natively?

  2. What would be the amp draw for an Arduino at 18v/20v when performing the above action?

Thank you for your time and help.

An Arduino is able to detect the change between o and 1 and you can record the time for each change in milliseconds. Each change and the time for each can be stored in an array. But the size must be limited because of the Arduino memory limit.
You can replay that stored data, using the 0 and 1 settings and the time in milliseconds for that signal to be output to a digital pin.
Then the question must be answered as to the length of the signal in time and is it ever repeated or is each signal unique?
Paul