- 필수 구성 요소
- PCF8591 ADC / DAC 모듈
- Raspberry Pi의 I2C 핀
- Raspberry Pi와 PCF8591 ADC / DAC 모듈 인터페이스
- 아날로그 디지털 변환 (ADC)을위한 Python 프로그램
대부분의 센서가 아날로그 값으로 출력을 제공하고 이진 값만 이해하는 마이크로 컨트롤러에 입력하기 때문에 아날로그에서 디지털로 변환하는 것은 임베디드 전자 장치에서 매우 중요한 작업입니다. 따라서 아날로그 데이터를 처리 할 수 있으려면 마이크로 컨트롤러에 Analog to Digital Converter 가 필요합니다.
일부 마이크로 컨트롤러에는 Arduino, MSP430, PIC16F877A와 같은 ADC가 내장되어 있지만 일부 마이크로 컨트롤러에는 8051, Raspberry Pi 등과 같은 ADC가 없으며 ADC0804, ADC0808과 같은 외부 아날로그-디지털 변환기 IC를 사용해야합니다. 아래에서 다양한 마이크로 컨트롤러가있는 ADC의 다양한 예를 찾을 수 있습니다.
- Arduino Uno에서 ADC를 사용하는 방법?
- Raspberry Pi ADC 튜토리얼
- ADC0808과 8051 마이크로 컨트롤러의 인터페이스
- AVR 마이크로 컨트롤러를 사용하는 0-25V 디지털 전압계
- STM32F103C8에서 ADC를 사용하는 방법
- MSP430G2에서 ADC를 사용하는 방법
- ARM7 LPC2148에서 ADC를 사용하는 방법
- MPLAB 및 XC8과 함께 PIC 마이크로 컨트롤러의 ADC 모듈 사용
이 튜토리얼에서는 PCF8591 ADC / DAC 모듈을 Raspberry Pi와 인터페이스하는 방법을 배웁니다 .
필수 구성 요소
- 라즈베리 파이
- PCF8591 ADC 모듈
- 100K 냄비
- 점퍼 케이블
최신 Raspbian OS가 설치된 Raspberry Pi가 있고 퍼티와 같은 터미널 소프트웨어를 사용하여 Pi에 SSH로 연결하는 방법을 알고 있다고 가정합니다. Raspberry Pi를 처음 사용하는 경우이 문서에 따라 Raspberry Pi를 시작하십시오. 그래도 문제가 발생하면 도움이 될 수있는 수많은 Raspberry Pi 자습서가 있습니다.
PCF8591 ADC / DAC 모듈
PCF8591은 8 비트 아날로그-디지털 또는 8 비트 디지털-아날로그 변환기 모듈로 각 핀이 최대 256 개의 아날로그 값을 읽을 수 있습니다. 또한 보드에 LDR 및 서미스터 회로가 제공됩니다. 이 모듈에는 4 개의 아날로그 입력과 1 개의 아날로그 출력이 있습니다. I 2 C 통신에서 작동 하므로 직렬 클럭 및 직렬 데이터 주소를위한 SCL 및 SDA 핀이 있습니다. 2.5-6V 공급 전압 이 필요하며 대기 전류가 낮습니다. 모듈의 전위차계 손잡이를 조정하여 입력 전압을 조작 할 수도 있습니다. 보드에는 세 개의 점퍼도 있습니다. J4는 서미스터 액세스 회로 를 선택하기 위해 연결되고, J5는 LDR / 포토 저항기 액세스 회로 를 선택하기 위해 연결됩니다.J6은 조정 가능한 전압 액세스 회로를 선택하기 위해 연결됩니다. 보드 D1 및 D2-에 두 개의 LED가 있습니다. D1은 출력 전압 강도를 표시하고 D2는 공급 전압의 강도를 표시합니다. 출력 또는 공급 전압이 높을수록 LED D1 또는 D2의 강도가 높아집니다. VCC 또는 AOUT 핀에서 전위차계를 사용하여 이러한 LED를 테스트 할 수도 있습니다.
Raspberry Pi의 I2C 핀
Raspberry Pi와 함께 PCF8591 을 사용 하려면 먼저 Raspberry Pi I2C 포트 핀을 알고 Raspberry pi에서 I2C 포트를 구성해야합니다.
아래는 Raspberry Pi 3 Model B +의 핀 다이어그램이며, I2C 핀 GPIO2 (SDA) 및 GPIO3 (SCL) 이이 튜토리얼에서 사용됩니다.
Raspberry Pi에서 I2C 구성
기본적으로 I2C는 Raspberry Pi에서 비활성화되어 있습니다. 따라서 먼저 활성화해야합니다. Raspberry Pi에서 I2C를 활성화하려면
1. 터미널로 이동하여 sudo raspi-config를 입력합니다.
2. 이제 Raspberry Pi 소프트웨어 구성 도구가 나타납니다.
3. 인터페이싱 옵션 을 선택한 다음 I2C를 활성화합니다.
4. I2C를 활성화 한 후 Pi를 재부팅합니다.
Raspberry Pi를 사용하여 PCF8591의 I2C 주소 스캔
이제 PCF8591 IC와 통신을 시작하려면 Raspberry Pi가 I2C 주소를 알아야합니다. 주소를 찾으려면 먼저 PCF8591의 SDA 및 SCL 핀을 Raspberry Pi의 SDA 및 SCL 핀에 연결하십시오. 또한 + 5V 및 GND 핀을 연결하십시오.
이제 터미널을 열고 연결된 I2C 장치의 주소를 알기 위해 아래 명령을 입력하십시오.
sudo i2cdetect –y 1 또는 sudo i2cdetect –y 0
I2C 주소를 찾은 후 이제 회로를 구축하고 Raspberry Pi와 함께 PCF8591 을 사용하는 데 필요한 라이브러리를 설치할 차례 입니다.
Raspberry Pi와 PCF8591 ADC / DAC 모듈 인터페이스
Raspberry Pi와 PCF8591의 인터페이스를 위한 회로도 는 간단합니다. 이 인터페이스 예제에서는 아날로그 핀에서 아날로그 값을 읽고 Raspberry Pi 터미널에 표시합니다. 100K 팟을 사용하여 값을 변경할 수 있습니다.
VCC 및 GND를 Raspberry Pi의 GPIO2 및 GPIO에 연결합니다. 다음으로 SDA와 SCL을 각각 GPIO3 및 GPIO5에 연결합니다. 마지막으로 100K 포트를 AIN0과 연결합니다. 16x2 LCD를 추가하여 터미널에 표시하는 대신 ADC 값을 표시 할 수도 있습니다. 여기에서 Raspberry Pi와 16x2 LCD 인터페이스에 대해 자세히 알아보십시오.
아날로그 디지털 변환 (ADC)을위한 Python 프로그램
완전한 프로그램 및 작업 비디오는 이 튜토리얼의 끝에 제공됩니다.
먼저 I 2 C 버스 통신용 smbus 라이브러리 와 시간 라이브러리를 가져 와서 값을 인쇄하는 사이에 휴면 시간을 제공합니다.
smbus 가져 오기 시간 가져 오기
이제 몇 가지 변수를 정의하십시오. 첫 번째 변수는 I 2 C 버스의 주소를 포함하고 두 번째 변수는 첫 번째 아날로그 입력 핀의 주소를 포함합니다.
주소 = 0x48 A0 = 0x40
다음으로 smbus 라이브러리의 SMBus (1) 함수 개체를 만들었습니다.
버스 = smbus.SMBus (1)
지금에 동시에 첫 번째 행은 IC 지시 제 아날로그 입력 핀의 아날로그 측정을 수행한다. 두 번째 라인은 아날로그 핀에서 읽은 주소를 변수 값 으로 저장 합니다 . 마지막으로 값을 인쇄하십시오.
while True: bus.write_byte (address, A0) value = bus.read_byte (address) print (value) time.sleep (0.1)
이제 마지막으로.py entension을 사용하여 일부 파일에 파이썬 코드를 저장하고 아래 명령을 사용하여 라즈베리 파이 터미널에서 코드를 실행하십시오.”
파이썬 filename.py
코드를 실행하기 전에 I 2 C 통신을 활성화 하고 모든 핀이 다이어그램과 같이 연결되어 있는지 확인 하십시오. 그렇지 않으면 오류가 표시됩니다. 아날로그 값은 아래와 같이 터미널에 나타나기 시작해야합니다. 냄비의 손잡이를 조정하면 값의 점진적인 변화를 볼 수 있습니다. 프로그램 실행에 대해 자세히 알아보기
완전한 파이썬 코드와 비디오 는 다음과 같습니다.