Lesson 9 4N35

Introduction

In this lesson, let’s learn the operational principle of 4N35 chip. We analyze the principle in this way: using 4N35 chip to drive a LED, and then explaining the phenomenon of LED and the internal structure of the chip.

Newly Added Components

_images/image2201.png

Principle

4N35

4N35 is a general-purpose optocoupler. It consists of gallium arsenide infrared LED and a silicon NPN phototransistor. What an optocoupler does is to break the connection between signal source and signal receiver, so as to stop electrical interference. 4N35 can be used in AV conversion audio circuits that is widely used in electrical isolation of a general optocoupler.

_images/image2211.png

See the internal structure of the 4N35 above. Pin 1 and 2 are connected to an infrared LED. When the LED is electrified, it’ll emit infrared rays. To protect the LED from burning, usually a resistor (about 1K) is connected to pin 1. Then the NPN phototransistor is power on when receiving the rays, and then it can control the load connected to the phototransistor. Even when the load short circuit occurs, it won’t affect the control board, thus realizing good electrical isolation.

Schematic Diagram

In this experiment, use an LED as the load connected to the NPN phototransistor. In program, a LOW level is given to Pin 11, then the infrared LED will emit infrared rays. After that, the phototransistor receives infrared rays and gets electrified, and the LED cathode is LOW, thus turning on the LED.

_images/image2221.png

Build the Circuit

Note

pay attention to the direction of the chip by the concave on it.

_images/image136.png

For C Language Users

Command

1. Go to the folder of the code.

cd /home/pi/electronic-kit/for-raspberry-pi/c/Lesson_9_4N35

2. Compile the code.

gcc 9_4N35.c -lwiringPi

3. Run the executable file.

sudo ./a.out

You will see the LED blinking.

Note

If it does not work after running, or there is an error prompt: “wiringPi.h: No such file or directory”, please refer to C code is not working?.

Code

#include <wiringPi.h>
#include <stdio.h>

#define OptoPin  0

int main(void)
{
    // When initialize wiring failed, print message to screen
    if(wiringPiSetup() == -1){
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(OptoPin,OUTPUT);

    while(1){
        // Turn LED off
        digitalWrite(OptoPin, HIGH);
        delay(500);
        // Turn LED on
        digitalWrite(OptoPin, LOW);
        delay(500);
    }
    return 0;
}

Code Explanation

14.    pinMode(OptoPin,OUTPUT);

Initialize pins. Set the output pin of 4N35, Optopin to OUTPUT mode.

18.        digitalWrite(OptoPin, HIGH);

Set OptoPin as LOW (0V), thus the optocoupler is energized, and the pin connected to LED conduct to low level. Then the LED will light up.

21.        digitalWrite(OptoPin, LOW);

Set OptoPin as HIGH (3.3V), thus the optocoupler is not energized, and the pin connected to LED cannot conduct to low level. Then the LED goes out.

For Python Language Users

Command

1. Go to the folder of the code.

cd /home/pi/electronic-kit/for-raspberry-pi/python

2. Run the code.

sudo python3 9_4N35.py

You will see the LED blinking.

Code

Note

You can Modify/Reset/Copy/Run/Stop the code below. But before that, you need to go to source code path like electronic-kit/for-raspberry-pi/python. After modifying the code, you can run it directly to see the effect.

import RPi.GPIO as GPIO
import time

Pin_4N35 = 17

# Define a setup function for some setup
def setup():
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(Pin_4N35, GPIO.OUT, initial=GPIO.LOW)

# Define a main function for main process
def main():
    while True:
        # Turn off LED
        GPIO.output(Pin_4N35, GPIO.HIGH)
        time.sleep(0.5)
        # Turn on LED
        GPIO.output(Pin_4N35, GPIO.LOW)
        time.sleep(0.5)

def destroy():
    # Turn off LED
    GPIO.output(Pin_4N35, GPIO.HIGH)
    # Release resource
    GPIO.cleanup()

# If run this script directly, do:
if __name__ == '__main__':
    setup()
    try:
        main()
    # When 'Ctrl+C' is pressed, the child program
    # destroy() will be  executed.
    except KeyboardInterrupt:
        destroy()

Code Explanation

1.         GPIO.output(Pin_4N35, GPIO.HIGH)

Set OptoPin as high level (3.3V), thus the optocoupler is not energized, and the pin connected to LED cannot conduct to low level. Then the LED goes out.

1.         time.sleep(0.5)

Wait for 0.5 second. The on-off frequency of the optocoupler can be changed by modifying this parameter.

1.         GPIO.output(Pin_4N35, GPIO.LOW)

Set OptoPin as low level (0V), thus the optocoupler is energized, and the pin connected to LED conduct to low level. Then the LED will light up.

Phenomenon Picture

_images/image137.jpeg