...

воскресенье, 16 февраля 2014 г.

Радиоуправляемый выключатель своими руками. Часть 2 — Тестирование и подготовка

Этот пост — продолжение серии рассказов о том, как можно сделать своими руками выключатель полезной нагрузки.




В первой части была описана «железячная» составляющая: особенности ее проектирования и производства.

Сегодняшний пост описывает шаги по подготовке среды разработки Arduino и полное тестирование изготовленного модуля.




Для работы с изготовленным модулем потребуется любой ISP-программатор. Я буду использовать имеющийся USBtinyISP, вы можете использовать такой же или любой другой (например, сделать ArduinoISP из имеющейся платы ардуино).





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

Теперь необходимо проверить ее работоспособность.


Проверка МК




Проще всего это сделать следующим образом: подключить программатор и считать значения фьюзов.

Поскольку пост ориентирован на новичков, то буду использовать наглядные инструменты и покажу, как это сделать максимально просто: будем использовать графическую оболочку Avrdude-GUI.



  1. Скачиваем пакет Avrdude-GUI по ссылке.

  2. Распаковываем полученный архив в какую-нибудь папку.

  3. Запускаем avrdude-GUI.




После этих нехитрых действий появится окно типа:

Теперь необходимо сделать минимальные настройки: выбрать используемый программатор (поле Programmer), используемый порт (Port), указать используемый МК (Device).


Теперь подключаем программатор к компьютеру, а сам программатор — к нашей плате.


В секции «Fuse» нажимаем кнопку «Read». Если все сделано правильно — в соответствующих полях появятся значения фьюзов:





Если что-то пошло не так
Наиболее вероятны следующие ошибки:

1. Где-то непропай (или наоборот, «сопля»). Тогда в результате попытки считать фьюзы появится сообщение о такой ошибке:



Для исправления ситуации отключайте плату от программатора и очень придирчиво проверяйте качество пайки:



  • тонкой иглой проверяйте, насколько хорошо припаяны все ноги МК,

  • через увеличительное стекло отсматривайте подозрительные места,

  • прозванивайте тестером цепи от разъема ISP до МК,

  • проверяйте цепи питания.


2. Неверно выбран тип МК. Сообщение об ошибке будет выглядеть примерно так:



В моем случае как раз такая ошибка и возникла. Произошло это из-за того, что я использовал ATmega168p, а в программе выбрал ATmega168.

Чипы эти максимально близки, но у них разная сигнатура, о чем система заботливо сообщила. При этом программа подсказывает и решение проблемы — проверить правильно выбранный чип или отключить проверку сигнатуры (добавив ключ "-F" в поле «Command Line Option»).


Я воспользовался именно вторым решением (в данном случае это абсолютно нормально).


Правильнее было бы, конечно, открыть файл avdude.conf и добавить там информацию о ATmega168p, но оставим это на моей совести.






С помощью этой же оболочки можно и записать необходимые фьюзы.

В нашем случае требуется обеспечить работу МК от внутреннего осциллятора на частоте 8МГц. Для этого можете использовать для ATmega168p те значения, что приведены выше на скриншоте.



Фьюзы «объясняют» МК, в каком режиме он должен работать. О том, какие значения необоходимо прописывать (или понять значения приведенных выше) можно с помощью «калькулятора фьюзов AVR», который доступен, например, по этой ссылке.





Теперь можно приступать к следующему этапу: проверка возможности программирования МК и тестирование остальной «периферии» на плате.

Подготовка среды разработки




Для этого следует сделать еще один подготовительный шаг: необходимо для среды Arduino создать соответствующую «плату». Делается это следующим образом: нужно открыть текстовым редактором файл boards.txt, который находится внутри папки \ARDUINO\hardware\arduino, где «ARDUINO» — корневая папка, в которой находится среда разработки.

В этот файл необходимо добавить следующие строчки:



##############################################################

s168po8.name=Sensor168p (int8MHz, 1.8V)

s168po8.upload.protocol=arduino
s168po8.upload.maximum_size=14336
s168po8.upload.speed=19200

s168po8.bootloader.low_fuses=0xe2
s168po8.bootloader.high_fuses=0xde
s168po8.bootloader.extended_fuses=0x00
s168po8.bootloader.path=atmega
s168po8.bootloader.file=ATmegaBOOT_168_pro_8MHz.hex
s168po8.bootloader.unlock_bits=0x3F
s168po8.bootloader.lock_bits=0x0F

s168po8.build.mcu=atmega168p
s168po8.build.f_cpu=8000000L
s168po8.build.core=arduino
s168po8.build.variant=standard

##############################################################




В первой строке указывается «имя платы», которое вы потом будете выбирать в среде программирования (можете указать любое, какое вам нравится).

Особенное внимание обратите на параметры, которые описывают фьюзы, тип МК и частоту, на которой будет работать устройство.

После этих несложных манипуляций можно запускать среду Arduino и убедиться в том, что «новая плата» появилась в списке доступных (в меню «Сервис — Плата» надо выбрать нашу: Sensor168p (int8MHz, 1.8V)).


Тест кнопок и реле




Напомню, что по схемотехнике ключи для управления реле подключены к цифровым пинам D3 и D4, а кнопки — к аналоговым A1 и A0.

Сделаем простейший тест для проверки нормального функционирования кнопок и реле:



// реле
int r1 = 3; // D3
int r2 = 4; // D4

// кнопки
int b1 = 15; // A1
int b2 = 14; // A0

void setup() {
// реле
pinMode(r1, OUTPUT);
pinMode(r2, OUTPUT);
// кнопки
pinMode(b1, INPUT);
pinMode(b2, INPUT);
// включим подтягивающие резисторы для кнопок
digitalWrite(b1, HIGH);
digitalWrite(b2, HIGH);
}

void loop() {
// если нажали кнопку b1 - включим реле r1
if (digitalRead(b1) == LOW) {
digitalWrite(r1, HIGH);
}
else {
digitalWrite(r1, LOW);
}

// если нажали кнопку b2 - включим реле r2
if (digitalRead(b2) == LOW) {
digitalWrite(r2, HIGH);
}
else {
digitalWrite(r2, LOW);
}
}




Загружаем этот тест в наше устройство.

Перед загрузкой не забываем выбрать используемый программатор в меню «Сервис» — «Программатор».


Поскольку используется программатор, то процедура чуть иная — надо в меню «Файл» выбирать пункт «Загрузить с помощью программатора» (или просто нажать комбинацию клавиш Ctrl+Shift+U).


Если все сделано правильно, то при замыкании кнопок будут щелкать соответствующие реле.



Вышеприведенный тестовый скетч не отрабатывает «дребезг» и нужен исключительно для быстрой проверки функционирования платы.





Если что-то пошло не так
Типичных проблем две:


  1. Что-то неправильно сделано в среде Arduino (тогда появляются сообщения о проблемах с загрузкой в МК).

  2. Проблемы в аппаратной части (при этом загрузка проходит успешно, но реле не щелкает).




В первом случае нужно проверить все шаги, что описаны раньше (работа с файлом boards.txt, правильно выбранная результирующая плата и программатор).

Во втором случае лучшими помощниками снова станут принципиальная схема, лупа, острая иголка и тестер.




После этого остается только проверить все ли в порядке с разъемом для подключения nRF24L01+.


Тест интерфейса для nRF24L01+




На этом этапе мы не будем писать код, а просто проверим электрические цепи: при подключенном программаторе (или источнике питания 5В) измеряем напряжение между 1 и 2 контактом разъема RF24 — должно быть 3.3В.

Теперь отключаем программатор (или источник питания) и прозваниваем все цепи разъема на предмет отсутствия замыкания между соседними и наличие соединения с соответствующими пинами МК (см.схему из предыдущего поста).


Проверка высоковольтной части




Поскольку наше устройство в последующем будет коммутировать высоковольтную нагрузку, следует очень придирчиво проверить эту часть:


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

  2. Прозвоните тестером все цепи, заодно определите, на каких контактах клеммника у вас нормально замкнутые (НЗ) и нормально разомкнутые (НР) контакты.


Результат




После всех проверок у вас на руках — полнофункциональный и полностью готовый к последующему программированию модуль. Ваша среда программирования так же подготовлена для дальнейших шагов.

Продолжение следует...


Полезные ссылки:


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


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

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