【ラズパイ】A/Dコンバータを使ってアナログ信号を扱う

2024/02/26

ADS1115 Cds サーボモーター ラズパイ

  • B!
サムネ
サムネ

今回はラズパイでADS1115(A/Dコンバータ)を使ってアナログ信号を扱えるようにします。

ラズパイのGPIOはアナログ入力に対応していないのでA/Dコンバーターで変換する必要があります。

アナログ信号をラスパイで扱えるようになることで電子工作の幅が広がります。

今回は、Cdsモジュールの信号に応じてサーボモーターを動かしてみます。

今回の目標

回路構成

使用するラズパイのピンアサインを確認してください。

ピンアサイン

ADS1115

VDD RaspberryPi 3.3v
GND RaspberryPi GND
SCL RaspberryPi SCL
SDA RaspberryPi SDA
A0 Cds AO

Cdsモジュール

VCC RaspberryPi 3.3v
GND RaspberryPi GND
A0 ADS1115 A0

サーボモーター

黄色 RaspberryPi PWM (GPIO 21)
赤色 RaspberryPi 5.0v
茶色 RaspberryPi GND

サンプルコード

I2Cを使ってCdsの出力信号を読み取ります。

サーボの回転角は最大180°であること、回転角は-90~+90°で制御する必要があることに気を付けないとサーボモーターは動きません。

ads1115_cds.py
  1. import RPi.GPIO as GPIO
  2. import time
  3. import sys
  4. import board
  5. import busio
  6. import adafruit_ads1x15.ads1115 as ADS
  7. from adafruit_ads1x15.analog_in import AnalogIn
  8.  
  9. i2c = busio.I2C(board.SCL, board.SDA)
  10. ads = ADS.ADS1115(i2c)
  11. cahnnel0 = AnalogIn(ads, ADS.P0)
  12.  
  13. Servo_pin = 21
  14.  
  15. GPIO.setmode(GPIO.BCM)
  16. GPIO.setup(Servo_pin, GPIO.OUT)
  17.  
  18. Servo = GPIO.PWM(Servo_pin, 50)
  19. Servo.start(0)
  20.  
  21. #cdsから値を取得する
  22. def read_cds():
  23. #print('Vol : ', round(cahnnel0.voltage, 1))
  24. cds = round(cahnnel0.voltage, 0) * 60
  25. return cds
  26.  
  27. #サーボモーターを動かす
  28. def servo_angle(angle):
  29. duty = 2.5 + (12.0 - 2.5) * (angle + 90) / 180
  30. Servo.ChangeDutyCycle(duty)
  31. time.sleep(0.3)
  32.  
  33. try:
  34. while True:
  35. angle = int(read_cds())
  36. #サーボは-90~+90°の範囲
  37. angle -= 90
  38. servo_angle(angle)
  39. #print('Angle : ', angle, '\n')
  40. time.sleep(1)
  41. except KeyboardInterrupt:
  42. servo_angle(-90)
  43. Servo.stop()
  44. GPIO.cleanup()
  45. sys.exit()

実行結果

周囲の明るさに応じてサーボモーターの回転角が変化します。

ラズパイでCdsのアナログ信号を読み取ってサーボを動かすためのPWM信号に置き換えることができています。

Cdsの部分を可変抵抗に変えれば、つまみを回すことでサーボモーターの回転角を決められるようになります。

Writer

アイコン
Python×Raspi IoTシステム・Bot・ラズパイの記録
  • プログラミング
  • IoT
  • Python
\FOLLOW ME/ 𝕏

Ranking

blogmura_pvcount

Community

Search