본문 바로가기
자격증 공부/임베디드기사

공부한 것 기록하기 2 (논리 회로 / 논리적인 것을 물리적으로 만들어보기)

by 인성패밀리 2023. 9. 13.
반응형

프로그래밍에서도 자주 사용되는 논리 연산 and or not이 있습니다.

 

이와 동일한 개념으로 회로에서는 0과 1로 논리적인 과정을 표현하는 것이 논리 회로입니다.

 

논리 회로는 가장 기초적인 회로를 논리적으로 표현한 것으로 실제 회로를 해석할 때 사용된다.

 

기본적으로 not, buffer, and, or gate가 있다.

 

이때 gate란 하나 이상의 논리 입력에 대해서 하나 이상의 출력이 있는 것을 gate라고 한다.

 

NOT gate

이 회로는 입력이 들어오면 반대로 반전시키는 역할을 하게 된다.

논리 기호와 진리표

 

이것을 실제 회로로 구성해보았다. 실습은 arduino와 트랜지스터(NPN)로 구현하였다.

실제 회로
스케메틱으로 표현

 

AND gate

모든 입력이 1이여야 최종 출력도 1인 gate입니다.

논리 기호와 진리표
Arduino와 NPN 트랜지스터로 만든 실제 회로
스케메틱

이 포스팅 속에 회로에 대해서 저항 값은 정밀하게 계산되어 정하지 않았으며 대략적으로 정했습니다. 대충 테스터기로 찍어보면서 저항 값도 눈대중으로 정했으며 누가 보면 이에 대한 내용에 큰 충격을 금할 수 없겠지만 제 관점은 논리적인 회로를 물리적으로 표현해보고 싶었던 마음이 크기에 계산까지하면 도중에 흥미를 떨어트릴 것 같아 크게 신경쓰지 않았습니다.

 

물론 이 같은 생각은 나중에 크게 잘못 되었음을 깨달았습니다.(하...XOR )

역시 datasheet를 꼭꼭 챙겨서 봐야함을 다시 한 번 느꼈습니다.

 

OR gate

두 개 이상의 입력 중 한 개 이상의 입력이 1이면 출력도 1인 gate입니다.

논리 기호와 진리표
두 개의 회로 모두 or gate입니다.
TR 두 개인 스케메틱
TR 한 개인 스케메틱

 

이런 논리적인 회로를 실제 물리적으로 구현해보니 책장 옆 각 gate에 작게 적혀있는 회로 그림 뭔지 잘 몰랐는데 많은 시행착오를 겪으면서 그 회로가 어떤 것인지 조금 씩 이해가 가기 시작했습니다.

 

또한 실습하면서 스위치는 사용하지 않고 모두 전자적으로 제어하기 위해 트랜지스터를 사용했으며 Arduino로 코드를 조작하여 테스트 해보았습니다.

아래는 실습에 사용한 코드입니다.

#define A 2
#define B 3

void setup() {
  // put your setup code here, to run once:
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
  Serial.begin(9600);
}

String str1;
void loop() {
  // put your main code here, to run repeatedly:
  if (Serial.available()){
    str1 = Serial.readString();
    if (str1[0] == '1' and str1[1] == '1'){
      digitalWrite(A, 1);
      digitalWrite(B, 1);
      Serial.println("A = 1, B = 1");
    } else if (str1[0] == '0' and str1[1] == '1'){
      digitalWrite(A, 0);
      digitalWrite(B, 1);
      Serial.println("A = 0, B = 1");
    } else if (str1[0] == '1' and str1[1] == '0'){
      digitalWrite(A, 1);
      digitalWrite(B, 0);
      Serial.println("A = 1, B = 0");
    } else if (str1[0] == '0' and str1[1] == '0'){
      digitalWrite(A, 0);
      digitalWrite(B, 0);
      Serial.println("A = 0, B = 0");
    }
  }
}

 

반응형

댓글