Работа с голым камнем, attiny

Программирование модуля и подготовка к автономной работе

После загрузки предыдущей программы в Serial Monitor должны отображаться данные о температуре и влажности воздуха. Если это так, то  мы можем перейти к следующему примеру использования модуля SHT30.

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

Конечно, функции модуля здесь довольно ограничены, но в большинстве случаев их достаточно. На этот раз мы будем использовать библиотеку ClosedCube SHT31-Dю

Нам нужно подключиться к шине I2C и подать питание для программирования датчика. Датчик будет запрограммирована таким образом, что на выходном выводе будет сигнал высокого уровня, когда температура воздуха превысит 25 °C, и отключится, когда температура снизится  до 20 °C. Благодаря этому мы сможем смоделировать запуск, например, вентилятора.

#include <Wire.h>
#include "ClosedCube_SHT31D.h"
ClosedCube_SHT31D sht30;
void setup()
{
  Wire.begin();
  sht30.begin(0x44);//начало работы датчика
}

void loop()
{
  sht30.writeAlertHigh(25, 20, 0, 1); //установка значения
  delay(500);

}

Самая важная для нас строка кода :

sht30.writeAlertHigh (25, 20, 0, 1);

Эта часть кода отвечает за настройку пина сигнала тревоги в нашем модуле. Значения в скобках поочередно указывают: заданная температура, сброс температуры, заданная влажность, сброс влажности.

Что касается влажности, в данном случае она просто не учитывается. Если же мы хотим, чтобы датчик также учитывал влажность, то нам необходимо изменить значения.

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

Блок питания 0…30В/3A
Набор для сборки регулируемого блока питания…

Подробнее

Подключение двух светодиодов по схема PORT-PORT

В это схеме ничего сложного нет — меняя состояние выводов то в 1 то в 0 мы меняем напрявление тока включает то идин то другой диод. Для того чтобы погасить оба светодиода то нам нужно подать сразу на оба вывода либо высокое состояние 11 либо низкое это 00. Для того чтобы зажечь сразу два светодиода нам нужно сделать динамическую индикацию, быстро меняя состония обеих ножек с высокого на низкий. Если взять 3 вывода и использовать тот же принцип смены состояния ножек то можно подключить шесть светодиодов.

В данной схеме кнопки опрашиваются поочередно. Один вывод подтягивает внутренее сопротивление а другая дает 0. Нажатие кнопки дает 0 на подтянутом выводе а это фиксирует программа, таким образом,меняя роли выводов опрашивается каждая кнопка. Если у нас используется 6 выводов, то действуем по следующей схеме: одну ножку подтягиваем, другую делаем нулем а из третьей делаем состояние Hi-Z. Но тут тоже есть один минус. Допустим мы хотим опросить кнопку «В». Для этого верхнюю линию подтягиваем, среднюю делаем нулем, а нижнюю не задействуем в процессе или выставляем ее в стостоянии Hi-Z. Далее если мы нажмем на копку «B» то верхняя линия подтянится к нулю и программа поймет что нажата именно кнопка «B». В том случае если одновременно будут нажаты кнопки «E» и кнопка «Б» то верхняя линия такжн подтяница к 0 и программа поймет что была нажата кнопка «В», хотя мы ее не нажимали. 

К минусам такой схемы можно отнести не правильная обработка событый нажатия кнопок в случае одновременного нажатия нескольких кнопок.

Создание первого проекта

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

Сначала перейдите в: Файл -> Создать -> Проект (англ. File -> New -> Project) и в открывшемся окне выберите: Исполняемый проект GCC C (англ. GCC C Executable Project), а в текстовом поле Имя (англ. Name) дайте любое название вашему проекту.

Следующее окно, которое должно появиться, — это окно выбора устройства. Из списка выберите Atmega168. Насколько мне известно, это окно не имеет никакого смысла, так как мы все равно передаем имя устройства в AVRDUDE вручную (пока я не могу найти способ заставить Atmel Studio 7 автоматически отправлять имя устройства в AVRDUDE через аргументы).

Результатом должен стать файл main.c, содержащий код нашей программы, который будет запускать AVR. Однако сгенерированный код ничего не делает, поэтому замените все содержимое файла main.c с помощью приведенной ниже программы (обязательно сохраните файл после ввода нового кода).

#define F_CPU 800000UL // Я использую кристалл 8 МГц

#include <avr/io.h>
#include <avr/delay.h>

int main(void){
	DDRD = 0xFF; // Сделать порт D портом выхода

	while(1){
		PORTD = 0xFF;
		_delay_ms(1000);
		PORTD = 0x00;
		_delay_ms(1000);
	}
}

Теперь пришло время скомпилировать код и загрузить его на устройство AVR. Первый шаг — убедиться, что наш проект использует компилятор WINAVR. Щелкните правой кнопкой мыши проект и выберите «Дополнительно» (англ. — Advanced) в окне свойств.

В окне «Дополнительно» убедитесь, что в поле «Набор инструментов» (англ. — Toolchain Flavour) выбран WINAVR.

Сохраните проект и скомпилируйте его, нажав: Build -> Build Solution (или нажав F7). Если все идет по плану, в окне вывода должно появиться следующее сообщение:

Build succeeded.

========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

Это означает, что наш проект успешно скомпилирован и готов к передаче на наш чип. Чтобы запрограммировать устройство, убедитесь, что USBASP подключен как к ПК, так и к цепи Atmega, к цепи подано питание и что к микросхеме подключен кристалл (в случае, если микросхема была настроена для использования внешнего кристалла).

Затем, после всего этого, нажмите: Инструменты -> USBASP (англ. Tools -> USBASP), и все будет работать автоматически.

Если все хорошо, светодиод в вашей цепи должен начать мигать. Ниже приведен вывод AVRDUDE в Atmel Studio 7, показывающий, как выглядит успешная программа.

avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude.exe: Device signature = 0x1e9406
avrdude.exe: NOTE: FLASH memory has been specified, an erase cycle will be performed
             To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: warning: cannot set sck period. please check for usbasp firmware update.
avrdude.exe: reading input file "0x26"
avrdude.exe: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude.exe: 1 bytes of lfuse written
avrdude.exe: verifying lfuse memory against 0x26:
avrdude.exe: load data lfuse data from input file 0x26:
avrdude.exe: input file 0x26 contains 1 bytes
avrdude.exe: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude.exe: verifying ...
avrdude.exe: 1 bytes of lfuse verified
avrdude.exe: reading input file "c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex"
avrdude.exe: writing flash (184 bytes):

Writing | ################################################## | 100% 0.11s

avrdude.exe: 184 bytes of flash written
avrdude.exe: verifying flash memory against c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex:
avrdude.exe: load data flash data from input file c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex:
avrdude.exe: input file c:\users\robinlaptop\Documents\Atmel Studio\7.0\OurFirstAVR\OurFirstAVR\Debug\OurFirstAVR.hex contains 184 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 0.10s

avrdude.exe: verifying ...
avrdude.exe: 184 bytes of flash verified

avrdude.exe: safemode: Fuses OK

avrdude.exe done.  Thank you.

Как разобрать напольный вентилятор

Из сказанного понятно: внутри напольного вентилятора ломаться нечему. Это двигатель и конденсатор. Остальное приходится на механическую часть, редуктор. При наличии свиста и шума попробуйте смазать шестерни. Как это делать, понятно из сказанного. В корпусе редуктора пара отверстий для этих целей. Солидол сгодится для пластиковых деталей.

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

↑ Результаты проделанной работы

На мой взгляд, выглядит всё круто и аккуратно. Мама очень довольна изобретением и боится нажимать на кнопки, что бы без привычки ничего не сломать. Выставил температуру в +4,5° и гистерезис в 1,5°. Итого вышло, что холодильник включается при +6° и выключается при +3°. По времени вышло, что компрессор работает 10 минут и отдыхает 55 минут, а это 0,15 рабочего времени. В Интернете сказано, что диапазон соотношение цикла работы/отдыха в 0,2-0,9 считается нормальным. Думаю, моя цифра показывает, что экономия электроэнергии находится на высоком уровне.

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

Что такое гибкий датчик?

Гибкий датчик (FLEX sensor) представляет собой преобразователь, чье сопротивление изменяется если изменяется его форма (датчика). Внешний вид данного датчика показан на следующем рисунке.

Как правило, данный датчик используется для измерения изменений линейности. Когда датчик изогнут, его сопротивление сильно изменяется. Этот эффект продемонстрирован на следующем рисунке.

В нашей схеме мы будем конвертировать изменение сопротивления датчика в изменение напряжения с помощью делителя напряжения (см. рисунок ниже). Делитель напряжения в нашем случае будет состоять из постоянного резистора R1 и переменного резистора R2, роль которого будет выполнять наш гибкий датчик. Средняя точка делителя напряжения будет использоваться для измерений. Когда сопротивление резистора R2 будет изменяться, то и напряжение в средней точке делителя будет изменяться пропорционально (линейная зависимость). Таким образом, степень изогнутости (или линейности) гибкого датчика будет преобразовываться в изменение напряжения.

При проектировании схем с делителем напряжения следует принимать во внимание то, что входной ток на АЦП микроконтроллера AVR должен быть не менее 50 мкА. Поэтому следует правильно выбирать резисторы делителя напряжения чтобы минимизировать влияние нагрузки (loading effect) резистора на проходящий через делитель ток

Мы будем использовать делитель напряжения таким образом, что при входном напряжении на нем 25В мы на его выходе будем получать напряжение 5В. Таким образом, в программе нам будет нужно умножать измеренное значение напряжение на 5 чтобы рассчитать истинное значение напряжения.

Принцип действия

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

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

Между собой они отличаются только в быстроте реакции на перемену температуры в доме.

Принцип действия аппарата основан на следующих этапах:

  1. В результате изменения температуры обогреваемого объекта, происходит перемена работы теплоносителя в отопительном механизме.
  2. Вместе с этим, это заставляет сифон увеличивать или уменьшать свои габариты.
  3. После этого, происходит смещение золотника, который балансирует впуск теплоносителя.
  4. Внутренняя часть сифона заполнена газом, способствуя равномерной регулировке температуры. Встроенный термодатчик следит за внешней температурой.
  5. Каждому значению уровня тепла приравнивается конкретное значение силы давления рабочей атмосферы внутри сифона. Недостающее давление возмещает при помощи пружины, которая контролирует работу штока.
  6. В результате повышения градусов конус клапана начинает передвигаться в сторону закрытия до того момента, пока уровень рабочего давления в сифоне не станет уравновешенным благодаря усилиям пружины.
  7. В случае понижения градусов, работа пружины носит обратный характер.

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

Схема

Построение схемы довольно простое и может быть выполнено с использованием большинства методов построения схем, включая макет, картон, монтажную плату и печатную плату.

Схема в этом проекте показывает использование простой цепи регулятора мощности (с использованием 7805), которую обеспечивает устройство ATMEGA 5В, но оказывается, что программатор USBASP обеспечивает приблизительно 3,3 В. Несмотря на это, лучше обеспечить внешнее питание, чтобы USBASP не потреблял слишком много тока из любого USB-порта.

Программатор USBASP, который я купил, также шел с конвертером, который преобразует 10-контактный разъем в более удобный 6-контактный программный разъем. Тем не менее, header использует двухрядный шаг 2,54 мм, что означает, что он не может быть подключен к макету. Чтобы обойти это, я просто подключил разъем к проводам, которые соединяются с различными пинами на макете.

А теперь программное обеспечение

Драйвер программатора AVR Pocket

Драйвер Windows для программатора AVR Pocket – тот же, что используется программатором Adafruit USBTiny. Перейдите на страницу Adafruit и нажмите на ссылку для подписанного драйвера USBtinyISP, созданного с помощью libusb v1.12. Это позволит вам загрузить zip-файл, содержащий два файла installer.exe: один для 32-разрядных систем, второй для 64-разрядных. Дважды кликните по тому, что подходит для вашего компьютера с ОС Windows, и драйвер будет установлен.

Только после установки правильного драйвера Windows вы можете в первый раз подключить программатор AVR Pocket к компьютеру. Вам понадобится кабель USB-A на miniUSB-B. Когда вы подключитесь, загорится синий светодиод PWR и красный светодиод Stat1; два синих светодиода могут также загореться и/или замигать. Windows попытается найти драйвер, при необходимости, вы должны указать Windows расположение правильного драйвера. После правильной установки программатор AVR Pocket появится в диспетчере устройств в устройствах libusb-winXX как «USBtiny»; он не будет перечисляться как COM-порт. Смотрите скриншот ниже:

Программатор AVR Pocket в диспетчере устройств Windows

Atmel Studio 7

Как и многие фирмы-разработчики микроконтроллеров, Atmel имеет собственную интегрированную среду разработки (IDE), которая работает с их аппаратными предложениями: Atmel Studio 7. Хотя это не единственный способ программирования микроконтроллеров Atmel, но это наиболее полнофункциональный способ для Windows 7, 8 и 10 (и для 32-х, и для 64-х разрядных вервий); к сожалению, она не может использоваться с операционными системами Linux и Mac.

Количество опций в Atmel Studio 7 может показаться для нового пользователя огромным. Таким образом, поэтапный подход, представленный в данной статье, значительно упростит процесс знакомства. Начните с загрузки и установки IDE на ваш компьютер. Руководство пользователя Studio 7 и большое количество дополнительной информации также доступны для загрузки.

В Studio 7 включена поддержка нескольких аппаратных программаторов, но точный выбор зависит от того, какой микроконтроллер Atmel вы собираетесь использовать. На скриншоте ниже справа перечислены программаторы, поддерживающие ATmega328P.

Программаторы, поддерживающие ATmega328P

Как вы можете видеть, программатор AVR Pocket отсутствует в списке. Однако его всё еще можно использовать с Studio 7 с помощью программного обеспечения под названием AVRDude.

AVRDude

AVRDude – это утилита командной строки, которая используется для скачивания и загрузки данных с микроконтроллеров Atmel. Существуют версии, доступные и на Linux, и на Windows. На момент написания статьи последняя доступная версия – 6.3; ее можно скачать здесь. Пользователи Windows должны скачать avrdude-6.3-mingw32-zip (нажатие на ссылку запустит скачивание zip-файла!), распаковать файлы и установить AVRDude

Обратите внимание, что установка программы в корневой каталог диска необязательна, но упростит ее использование с Atmel Studio 7. Если доступна версия, более новая, чем 6.3, то вы можете установить ее по своему усмотрению

Руководство пользователя AVRDude доступно здесь.

Чтобы проверить правильность установки и работы AVRDude, выполните следующие действия:

  1. нажмите кнопку «Пуск» Windows;
  2. в поле поиска введите cmd и нажмите Enter. Откроется окно командной строки DOS;
  3. в командной строке перейдите в каталог, в котором установили AVRDude;
  4. введите и нажмите Enter. Если всё хорошо, AVRDude вернет список поддерживаемых устройств Atmel.

Смотрите скриншот ниже для примера процедуры

Обратите внимание, что скриншот был усечен и отображает только часть списка поддерживаемых устройств Atmel

Список поддерживаемых устройств

UART и ISP

Для подключения прошиваторов к голому чипу нам нужно будет изучить распиновку (pinout) на нужный микроконтроллер. Распиновки бывают цветные и красивые (часто с ошибками), а бывают более серьёзные и правильные. Лучше всего открыть даташит на нужный МК и на второй же странице найти 100% правильную распиновку. Например для ATmega328, ATtiny85 и ATtiny13:

На данных “схемах” подписаны все функции пинов МК. Чтобы загрузить прошивку через USB-TTL, то есть при помощи “живущего в памяти” загрузчика (bootloader), МК должен иметь на борту аппаратный UART, то есть пины RX и TX. Если таких пинов нет – прошивку можно загрузить только через ISP программатор. Вы спросите, а как же Digispark? Там стоит МК ATtiny85, у которого нет UART, но прошивка загружается через USB! Верно, но там хитрые разработчики сделали не менее хитрый загрузчик, который имитирует USB, и прошивка на Digispark загружается при помощи специальной программы, которая запускается в фоне, когда вы нажимаете кнопку “Загрузить” в Arduino IDE. Резюмируя для общего случая:

  • Если в МК прошит загрузчик (bootloader) и на борту имеется аппаратный UART (пины RX TX), прошивку можно загрузить через USB-TTL “загружатор”, также через него можно заниматься отладкой кода при помощи Serial.
  • Если в МК нет пинов RX TX, значит прошивку можно загрузить только при помощи ISP программатора, да и о загрузчике в целом можно забыть, не нужен он. Отладкой всё ещё можно пользоваться, подключив USB-TTL и подняв на МК “программный” UART. Например в ядре для ATtiny85 (об этом ниже) уже идёт встроенный SoftwareSerial и можно им пользоваться.

Виды

Металлоискатель своими руками

В простейшем варианте (реле холодильника) применяют механический переключатель. Для более точной регулировки (обороты двигателя) используют не только микроэлектронику, но и специализированное программное обеспечение.

Терморегулятор на трех элементах

Чтобы сделать простой терморегулятор своими руками схема для блока питания персонального компьютера подходит лучше других вариантов.


Регулятор вентилятора для компьютерного БП

Термистором измеряют температуру в контрольной точке. Потенциометром устанавливают оптимальное значение для включения вентилятора. Изменять обороты данная схема не способна. Подключает индуктивную нагрузку MOSFET транзистор. Допустимо применение аналога с подходящими силовыми характеристиками.

Терморегуляторы для котлов отопления

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


Схема термостата с индикацией показаний на LCD экране

Цифровой терморегулятор

В этом примере разработчики создавали устройство поддержания температурного режима в хранилище фруктов (овощей). Для анализа поступающих данных выбрана микросхема со следующими блоками:

  • таймеры;
  • генератор;
  • два компаратора;
  • модули обмена, сравнения и передачи данных.

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


Схема с регулировкой гистерезиса

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Семинар по технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: