цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Управляем вентилятором с помощью Raspberry Pi

Управляем вентилятором с помощью Raspberry Pi

Автор: Mike(admin) от 28-04-2017, 20:05

Одной из задач, решаемых системами домашней автоматизации, является изменение климата в помещении с целью его поддержания в оптимальном для человека состоянии. Самым простым способом реализовать такое поддержание – управление вентилятором.


Для создания не очень сложных систем домашней автоматизации сегодня зачастую применяют одноплатный компьютер Raspberry Pi, с помощью которого можно без проблем реализовать управление вентилятором.


В данном обучающем проекте Raspberry будет управлять небольшим вентилятором 12 В на основании показаний температуры датчика TMP102. TMP102 представляет собой цифровой датчик температуры, измеряющем в диапазоне от –25 °C до +85 °C и имеющем точность 0.5 °C. Связь с TMP102 осуществляется по протоколу I2C. Напряжение питания датчика может быть в диапазоне от 1.4 В до 3.6 В, сам он располагается в миниатюрном корпусе SOT563. Чтобы не заморачиваться с пайкой этого компонента, компания Sparkfun выпускает удобные модули с TMP102. Ниже представлена схема подключения Raspberry Pi к датчику температуры TMP102 и цепи управления вентилятором. Цепь управления состоит из NPN-транзистора 2N3904, резистора 180 Ом и диода Шоттки. Диод предназначен для предотвращения повреждения вентилятора транзистором из-за потенциального оттока напряжения при отключении вентилятора. Диод в этой конфигурации иногда называют демпфером. Транзистор в данной конфигурации работает в качестве ключа, включая и отключая вентилятор. При такой схеме подключения и таких компонентах можно управлять нагрузкой с потребляемым током до 2 А.


Управляем вентилятором с помощью Raspbery Pi

Код для Raspberry Pi представлен ниже. Этот код позволяет включать вентилятор, когда температура поднимается выше TEMP_THRESHOLD. Вентилятор будет работать до тех пор, пока температура не опустится ниже порога TEMP_HYST. Таким образом, вентилятор будет поддерживать оптимальную температуру в определенном диапазоне.



import RPi.GPIO as GPIO
import smbus
import time
I2C_BUS = 0
bus = smbus.SMBus(I2C_BUS)
    
#7-битный адрес, будет смещен, чтобы добавить бит записи/чтения
DEVICE_ADDRESS = 0x48      
TEMP_THRESHOLD = 78
TEMP_HYST = 2

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
FAN_PIN = 23
GPIO.setup(FAN_PIN, GPIO.OUT)

while True:
	time.sleep(1)
	#Считываем регистр с температурой
	temp_reg_12bit = bus.read_word_data(DEVICE_ADDRESS , 0 )
	temp_low = (temp_reg_12bit & 0xff00) >> 8
	temp_high = (temp_reg_12bit & 0x00ff)
	#конвертируем температуру
	temp  = ((( temp_high * 256 ) + temp_low) >> 4 )
	#обрабатываем отрицательную температуру
	if temp > 0x7FF:
		temp = temp-4096;
	temp_C = float(temp) * 0.0625
	temp_F = temp_C * 9/5+32
	print "Temp = %3.1f C -- %3.1f F" % (temp_C,temp_F)

	#управляем вентилятором на основании данных о температуре
	if(temp_F > TEMP_THRESHOLD):
		GPIO.output(FAN_PIN, True)
	if(temp_F < (TEMP_THRESHOLD - TEMP_HYST)):
		GPIO.output(FAN_PIN, False)



© digitrode.ru


Теги: Raspberry Pi, TMP102, датчик температуры



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий