캡스톤_졸업작품2018. 12. 23. 19:48

라즈베리파이로 모터 작동을 제어해 봅니다.


해당 홈페이지를 참조하여 진행했습니다.

https://www.hackster.io/stuman2000/control-a-12-volt-fan-with-a-rasberry-pi-and-a-transistor-53c06c


1. 준비물 빵판, NPN트랜지스터, 다이오드, 저항, 점퍼선


저항은 1킬로옴을 트랜지스터는 TIP 120을 사용했습니다.


다이오드는 역전류로 인한 라즈베리파이 손상을 위해서 전류가 한쪽 방향으로 흐르게 해줍니다.


저항은 B(베이스)에 과전류가 흘러 트랜지스터가 손상되는걸 방지합니다.


처음에 작은 트랜지스터를 사용했다가. 제대로 작동을 하지 않고 뜨겁게 과열되는 현상이 일어났습니다. 자기가 사용하고자 하는 트랜지스터를 구글에 검색한 뒤 메뉴얼을 찾아 알맞은 트랜지스터인지 찾아봐야 합니다. 또한 트랜지스터마다 베이스 콜렉터 이미터 위치가 다르기 때문에 이것도 찾아봐야 합니다.

 


제가 사용하고자 하는 트랜지스터의 메뉴얼입니다.



윗 그림은 NPN 트랜지스터의 회로도입니다. 

B(베이스) 에 일정 전압이 가해지면 C(콜렉터)의 흐르던 전류가 B의 전류와 합쳐져 E(이미터)로 흐르게 됩니다.  

라즈베리파이에서 디지털 출력을 하면 모터가 작동하는 회로를 만들려고 합니다. 해당하는 부분이 전압에 견딜 수 있는지 메뉴얼을 통해 확인합니다.


2. 선 연결하기




윗 사진은 제가 참조한 사진입니다. 여기에다가 따로 디지털 출력이 제대로 되는지 확인하고자 옆에다가 LED 를 달아놨습니다.




최종적으로 만들어진 빵판의 모습입니다.


윗 사진은 라즈베리 파이 b+ 의 핀 정보입니다.  원하는 GPIO 슬롯에다가 점퍼선을 연결한 뒤 base에다가 연결하면 됩니다. 저는 여기서 따로 LED를 키기 위해서 GPIO 하나와 접지 Ground 를 하나 더 사용했습니다. 



최종적으로 완성된 라즈베리파이 연결사진입니다. GPIO2와 GPIO3 접지 Ground 2개를 사용했습니다.


3. 코드 실행


import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

print("start")

GPIO.setup(2, GPIO.OUT)
GPIO.output(2, False)
GPIO.setup(3, GPIO.OUT)
GPIO.output(3, False)


time.sleep(10)

GPIO.output(2, True)
GPIO.output(3, True)

time.sleep(10)

GPIO.output(2, False)
GPIO.output(3, False)

raw_input('end")

GPIO.cleanup()


윗 코드를 통해서 GPIO 2와 3에 True 값을 주면 모터가와 LED 가 켜지면서 작동하고 False 를 주면 둘 다 작동을 멈추는 모습을 볼 수 있습니다.

Posted by richcherry