Intermittent ringer - 200mv to trigger with 4N35 optocoupler

Thread Starter

authorleon

Joined Nov 30, 2021
17
Hello all and thank you for having me.

Would like a little bit of help please.

I'm just getting to grass with electronics but here's the issue I have.

I have a cordless phone where I have pulled out the red and the black wire which would normally go to the speaker.

I have connected them to the 4N35 and on the other side I have connected an LED.

The ring there is not a consistent pattern. So the LED flickers on and off.

I need to find a way to get it to turn on a relay and to keep the relay on during the duration of the ring. I thought maybe I would have to use a capacitor but I'm not quite sure.

I have been looking online and am actually happy that I got the LED to work. But it does flicker on and off when it rings.

Thanks
 

Ian0

Joined Aug 7, 2020
4,869
Yes, a capacitor across the 4N35 collector and emitter would work. The value would depend on the length of the gaps between the rings, so you would have to experiment. Start at 10uF.
I would also suggest that you use an AC input opto-isolator such as TLP184. Or alternatively connect two 4N35s collector-to-collector, emitter-to-emitter, LEDcathode-to-LEDAnode, and LEDAnode-to-LEDCathode.
If you have a 24V supply, you might get it to switch a 24V relay, because they only need half the current of a 12V relay, but you might need some more gain.
 

Thread Starter

authorleon

Joined Nov 30, 2021
17
Hello so I've been unsuccessfully trying to get this to work.

Effectively I have a cordless phone and I have tapped into the speaker which gives out a 200 mV amount. It is an intermittent signal just like a normal home phone.

So unfortunately I only have 2.4 V which comes from 2 AA batteries to turn on a relay?

I only have 4N35 and a few PNP. I could really do was somehow because I can get the LED to work.

I tried using this as well. https://www.amazon.co.uk/gp/product/B07RKTYWJP/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&th=1 (ARCELI 5v 1 Channel SSR G3mb-202p Solid State Relay Module). But that did not work as well. I might be doing something wrong.

I could really do with some help. Thank you


a7XCzSg[1].png
 

Thread Starter

authorleon

Joined Nov 30, 2021
17
Oh right. Understood. Can somebody recommend what's the actual item I need to get them.

Or was that stated in the 1 after thr original post?
Thanks you
also, if anyone knows. Is it possible to use an Arduino to pick up that signal. because then I can write a piece of code to do whatever I want as long as I can get the signal in.
 

ericgibbs

Joined Jan 29, 2010
15,351
Hi a,
If the 200mV signal connected to an Arduino ADC input, you should be able to detect when the signal is being received.
Post a simple Sketch and I can build up a test board, we can compare results.

E
What is the frequency of the 200mV, and also I assume you mean 200mVrms, so that's about 0.28Vpk.

BTW: which Arduino MCU.?
 

Thread Starter

authorleon

Joined Nov 30, 2021
17
Okay. I will write that down now. Get a quick sketch of what I have. Including water recording from the oscilloscope.

Thank you very much
 

Thread Starter

authorleon

Joined Nov 30, 2021
17
Okay so effectively I have this now.

I have only connected the Arduino and round the blinking programme for the first time. Yay.

1638786424991.png

Here is the signal I recorded from my pocket oscilloscope:
1638786503311.png

My idea is that if I can get the signal detected on the Arduino. I can then write the program to do anything I want with the relay. Well that's the concept anyway
 

ericgibbs

Joined Jan 29, 2010
15,351
hi a,
This is a very simple Sketch, use the Serial Viewer
E
C-like:
/*
 Basic ADC read 06/12/2021  author Ringer2
*/
int ADCin0 = A0;
int ADC0val = 0;

void setup()
{
  Serial.begin(9600);
}
 
void loop()
{
  ADC0val= analogRead(ADCin0);
  Serial.println(ADC0val);
  Serial.print("   ");
  if (ADC0val>= 50){
  Serial.println ("Ringing");   
  }
 delay(500);
}
 

Attachments

ericgibbs

Joined Jan 29, 2010
15,351
Hi a,
This Sketch takes 100 ADC samples over a 1 Second Period, this is to ignore any noise that may appear on the 200mV Ringer signal.

E
C++:
/*
 Basic ADC read 06/12/2021  author Ringer3
*/
int ADCin0 = A0;
int ADC0val = 0;
int ADC0avg = 0;

void setup()
{
  Serial.begin(9600);
}

void loop(){
for (int i =0; i<= 100; i++){ //get100 samples
  ADC0val= analogRead(ADCin0);
  ADC0avg= (ADC0avg + ADC0val);// sum samples
  delay(10);//100samples*10mSec=1Sec Period
  }
  ADC0avg=(ADC0avg/100);
  Serial.println(ADC0avg); // Test ONLY
 
if (ADC0avg >= 50){ // check for over Limit
  Serial.println ("Ringing"); // greater thanlimit 
  }
 delay(500);
 ADC0avg=0; // clear average
}
 
Last edited:
Top