Проект «Малина Пи»: контроль вентилятора постоянного тока
Управляйте вентилятором на основе текущей температуры с помощью малины Pi!
Требования
- Raspberry Pi
Используется в статье: Model B Revision 1.0 с Raspbian (Debian GNU / Linux 7.6 (wheezy))
- Датчик температуры I2C
Используется в статье: TMP102
- Способ подключения малины к интернету
Использовать в статье: Малина Pi подключена непосредственно к маршрутизатору
- Учетная запись Google для создания и доступа к листам
- NMOS или NPN-транзистор, способный обрабатывать требования к напряжению и току вентилятора
- Диод Шоттки
- Малый вентилятор постоянного тока
Используется в статье: вентилятор 12 В / 600 мА
Настройка оборудования
Датчик температуры
Следуйте инструкциям, приведенным в этой статье, чтобы подключить датчик температуры к малиновому Pi.
Поклонник
Следуйте приведенной ниже схеме подключения, чтобы подключить Raspberry Pi к датчику температуры и к вентилятору через транзистор. Диод там, чтобы предотвратить вентилятор от повреждения транзистора из-за потенциального отклика напряжения при выключении вентилятора. Диод в этой конфигурации иногда называют демпфером. Вы должны отрезать заземляющий провод, подающий вентилятор, чтобы последовательно поставить транзистор. В этой конфигурации транзистор действует как переключатель с низкой стороны.
Максимальный ток выхода Pi GPIO составляет 16 мА. Это означает, что транзистор должен иметь достаточно высокий hFE для проведения тока, необходимого для запуска вентилятора. Измените базовый резистор, чтобы ограничить количество тока, которое Pi передает на транзистор, чтобы избежать повреждения. Я использовал 180 Ом, которые давали бы базовый ток приблизительно (3, 3-0, 7) / 180 = 14, 4 мА. Выбранный транзистор I имеет hFE 150 при проводке 2А, поэтому включение нагрузки 600 мА не представляет проблемы.

Программного обеспечения
I2C
Следуйте этой статье, чтобы настроить I2C на связь с датчиком температуры.
Установка возможностей GPIO
Введите IPO в терминал Pi для установки возможностей GPIO: sudo apt-get install python-rpi.gpio
Тестирование соединений
Загрузите следующую программу Python в Raspberry Pi, чтобы проверить контроль вентилятора от GPIO. Запустите сценарий «turn_fan_on.py» или «turn_fan_off.py», чтобы проверить соединения.
turn_fan_on.py
import RPi. GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO. BCM) FAN_PIN = 23 GPIO.setup(FAN_PIN, GPIO. OUT) GPIO.output(FAN_PIN, True)
turn_fan_off.py
import RPi. GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO. BCM) FAN_PIN = 23 GPIO.setup(FAN_PIN, GPIO. OUT) GPIO.output(FAN_PIN, False)
Управление вентилятором на основе температуры
Следующий сценарий реализует некоторую логику, которая включает вентилятор, когда температура поднялась выше TEMP_THRESHOLD. Вентилятор будет оставаться включенным до тех пор, пока температура не опустится ниже порога - TEMP_HYST. Таким образом, вентилятор не включается и выключается, когда помещение находится рядом с температурным порогом.
import RPi. GPIO as GPIO import smbus import time #0 = /dev/i2c-0 #1 = /dev/i2c-1 I2C_BUS = 0 bus = smbus. SMBus(I2C_BUS) #7 bit address (will be left shifted to add the read write bit) 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) #Read the temp register temp_reg_12bit = bus.read_word_data(DEVICE_ADDRESS, 0) temp_low = (temp_reg_12bit & 0xff00) >> 8 temp_high = (temp_reg_12bit & 0x00ff) #convert to temp from page 6 of datasheet temp = (((temp_high * 256) + temp_low) >> 4) #handle negative temps 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) #control the fan based on the temp if(temp_F > TEMP_THRESHOLD): GPIO.output(FAN_PIN, True) if(temp_F < (TEMP_THRESHOLD - TEMP_HYST)): GPIO.output(FAN_PIN, False)
В видео ниже я использую кубики льда в пластиковом пакете, чтобы имитировать охлаждение комнаты. Когда кубики льда прикладываются к датчику температуры, вентилятор выключается. Когда я их удаляю, температура поднимается, и вентилятор включается.
Попробуйте этот проект сами! Получить спецификацию.