Как создать вентилятор с временным вентилятором
Нужно проветривать комнату? В этой статье вы узнаете, как я сделал вентилятор с синхронизацией по времени с помощью реле, чтобы выпустить влажный воздух в каюте моей лодки. Он управляется с помощью PIC16F628A и имеет ЖК-дисплей.
Пусть поток воздуха
В небольших комнатах, где вентиляция практически отсутствует, воздух, как правило, стоит на месте. Если воздух немного влажный, у вас наверняка есть плесень и грибы в определенных местах.
Плесень и грибы встречаются в природе и необходимы для разрушения листьев, дерева и других растительных остатков. Поскольку у меня в моей лодке много дерева, у меня наверняка будут плесень и грибы. Я не могу помешать им войти, но я могу принять некоторые меры, чтобы попытаться сохранить окружающую среду внутри моей лодки как враждебную для плесени и грибов.

Есть по крайней мере два способа справиться с этим. Один из способов - мыть и чистить в сжатые сроки. Теперь, как весело? Будучи выродка, которым я являюсь, вместо этого я кое-что наделал: вентилятор, который циркулирует и издает влажный воздух на фиксированной, временной основе.
Проектирование системы
Я хочу, чтобы система выполняла следующие действия:
- Распространение воздуха
- Автоматическое включение / выключение в постоянном интервале
- Запуск от аккумуляторной батареи автомобиля
- Содержите зарядное устройство для зарядки аккумулятора
- Содержит дисплей, отображающий время и другую информацию
Чтобы создать такую систему, мне понадобятся следующие части:
- Вентилятор 12v
- Микроконтроллер
- 12-вольтная батарея и зарядное устройство на 12 В
- 2 реле, что-то отслеживать время и винтовые клеммы.
- Другие части, согласно приведенному ниже списку
Я хочу, чтобы веер работал пять минут каждый час. Это будет жестко закодировано в программном обеспечении.
Установка будет работать от автомобильной батареи. Мой поклонник оценен 12v 4.5A. Чтобы аккумулятор всегда заряжался сверху, я подключу его к зарядному устройству. Чтобы зарядное устройство не перегружалось, когда вентилятор работает, я собираюсь заставить систему «отключить» зарядное устройство во время работы вентилятора. В одном реле будет работать вентилятор, а в другом реле будет работать зарядное устройство. Когда вентилятор работает, батарея не заряжается, а когда вентилятор не работает, аккумулятор заряжается.
Чтобы отслеживать время, я использую модуль GPS. В этом проекте я буду использовать модуль Skylab SKM53 (PDF). Это устройство отправляет несколько предложений NMEA по UART каждую секунду. В техническом паспорте рекомендуется использовать резистор подтягивания 10K как на RXD, так и на TXD. Это увеличит стабильность последовательных данных. Я этого не делал, и я не заметил никакой нестабильности. Мне может повезти. На той же странице в техническом описании указано, что следует добавить подходящие разделители. Электролиз 10 мкФ и керамика толщиной 0, 1 мкФ. Когда я макетировал схему, я использовал только керамику 0.1uF.

Снимок экрана из таблицы Skylab (PDF)
Я использую предложение «RMC», чтобы получить время. Примером предложения RMC является следующее:
$ GPRMC, 075747.000, A, +2233, 89990 N, 11405, 3368, Е, 3.9, 357.8, 260210,,, А * 6A
Первые числа после $ GPRMC - это время. В этом примере, время 07:57:47. Нам будет нужна эта информация.

Следующее, что нам понадобится, - это префикс, который говорит нам, имеет ли модуль GPS правильное исправление положения. В приведенном выше примере это капитал A после трех нулей.

«A» указывает действительное исправление, а «V» указывает на неверное исправление. В моем программном обеспечении я проверяю правильное исправление. Эти буквы чувствительны к регистру.
Чтобы структурировать проекты, мне нравится создавать блок-диаграмму. Таким образом, я «визуализирую» то, что я хочу делать.

На приведенной выше блок-схеме я разбил все на свой блок. Это также полезно, если мне нужно устранить схему или схему.
аппаратные средства
Принципиальная схема основана на блок-схеме. Я воспроизвел все блоки на блок-диаграмме, чтобы отразить компоненты и их соединения в схеме.

В техническом описании для регулятора LM7805 указано, что для стандартного приложения вам потребуется всего 0, 33 мкФ на входном штыре и 0, 1 мкФ на выходном выводе. Итак, почему я использую разные ценные колпачки и некоторые дополнительные? Я использую их для сглаживания ввода и вывода. Это может быть слишком много, но у меня очень хороший опыт в этой конфигурации регулятора. Если вы не используете конденсаторы, регулятор может начать колебаться. Регулятор LM7805 - это старый линейный регулятор. Почему бы не использовать современный регулятор переключения? Коммутационные регуляторы намного эффективнее линейных регуляторов. Это то, что я укладывал.








Я мог бы сэкономить на частях и пространстве, используя только одно реле. Я хочу два реле. Одна из причин использования двух реле - это то, что я хочу немного сократить время между зарядным устройством и выключить вентилятор.
Я импортировал список деталей из BOM. ULP в OpenOffice Calc и удалил некоторые ненужные столбцы:

Не показывать в схеме мои предохранители. У меня есть номинальный предохранитель на 12 В 8 А на положительном проводе вентиляторов, и у меня на зарядном устройстве положительный провод.

Программного обеспечения
Вы можете загрузить C-source из ссылки для загрузки в конце этой статьи. Код хорошо прокомментирован, но я сделаю некоторые дополнительные моменты здесь.
Когда я делаю программу, я следую определенной структуре. На этой диаграмме показана структура:

Код начинается с включения необходимых библиотек, за которыми следуют биты конфигурации. В качестве хорошей практики программирования считается включение битов конфигурации в исходный код. Тогда будет намного легче увидеть, что вы сделали, а другим - помочь устранить неполадки. Кроме того, если вы заработаете проект через несколько месяцев, вы сразу увидите бит.
Когда конфигурационные биты в порядке, я перехожу к определениям. Здесь я определяю скорость кристалла, которую я подключил к схемам. Также определены порты микроконтроллера.
Следующее - переменные: все переменные объявляются здесь.
Теперь пришло время прототипировать функции. Здесь я перечисляю все функции, которые использует программа. Некоторые программисты считают это пустой тратой времени, но мне это нравится, и я держу ее. Это действительно необходимо, если вы структурируете программу с функциями после основного цикла программы.
Далее идут функции. Теперь очень важно начать комментирование. Обычно у меня есть несколько строк над каждой функцией, которые рассказывают, что делает функция вообще. Я также комментирую строки кода внутри функций.
Одним из примеров является функция, которая инициализирует порт UART в этом проекте:
// FUNCTION TO INIT THE UART PORT void uart_init(void) { TXSTAbits. BRGH = 0; // high baud selection bit, 1=high, 0=low TXSTAbits. SYNC = 0; // USART mode selection bit, 1=sync mode, 0=async mode TXSTAbits. TX9 = 0; // 9-bit selection bit, 1=9-bit transmission, 0=8-bit transmission RCSTAbits. CREN = 1; // Continous receive enable bit, 1=enable continous receive /* Calculate the SPBRG with 16MHz crystal 16MHz 16000000 /9600 = 1666.6666 1666.6666 / 64 = 26.0416 26.0416 - 1= 25.0416 25.041 = 25 */ SPBRG = 25; // 9600-n-8-1 PIE1bits. RCIE = 1; // USART receive interrupt enable bit, 1=enable RCSTAbits. SPEN = 1; // Serial port enable bit, 1=serial port enable TXSTAbits. TXEN = 1; // transmit enable bit, 1=transmit eanble return; }
Вы увидите первую строку комментария, объясняющую, что делает функция. Затем все строки кода прокомментированы, поэтому я знаю, что происходит.
Когда все функции находятся на месте, пришло время для основной программы. Основная программа начинается с нескольких операторов, прежде чем она войдет в цикл, который запускается вечно.
Скачать код
Вывод
В этой статье я попытался сделать среду в моей лодке враждебной для плесени и грибов, как я могу, с вентилятором, который дует и циркулирует в воздухе. Вентилятор подключен к трубе, выходящей из кабины. Я использовал GPS-модуль для отслеживания времени, и я использовал два реле для включения / выключения вентилятора. Чтобы аккумулятор оставался заряженным, я использовал другое реле для включения и выключения зарядного устройства.
Я оставляю его читателю, чтобы перейти на следующий уровень и отобразить дату.
Зачем использовать GPS-модуль? Я мог бы использовать микроконтроллер как простой таймер. Затем мне пришлось сделать какой-то интерфейс, чтобы установить время. Или я был бы счастлив, если бы он работал без учета реального времени. Он будет работать в течение 5 минут каждый час. С помощью GPS я могу запрограммировать его на пять минут на каждый час.
Картина

Попробуйте этот проект сами! Получить спецификацию.