Часы на атмега 328 своими руками

Добавил пользователь Cypher
Обновлено: 02.09.2024

– часы, формат отображения времени 24-х часовый, часы:минуты.

– цифровая коррекция точности. Возможна ежесуточная коррекция ±25 сек. Установленное значение в 1 час 0 минут 30 сек будет прибавлено/вычтено из текущего времени.

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

– термометр. Диапазон измеряемой температуры -55,0 ? 125,0 о С. Если температура выше 99,9 или ниже -9,9 о С десятые доли градуса не отображаются.

– настраиваемая анимация смены показаний.

– использование энергонезависимой памяти микроконтроллера для сохранения настроек при отключении питания.

– если в основном режиме нажать на кнопку PLUS , то на индикаторы выводится время, если нажать на MINUS – температура. При отпускании кнопок возобновляется автоматическая смена показаний.

– автоматическая регулировка яркости индикатора в зависимости от освещенности.

2. Настройка.

2.1. При включении питания часы в основном режиме.

2.2. Нажатием на кнопку MENU производится вход в режим настроек и выбора группы параметров для установки. В пределах группы выбор параметра для установки производится кнопкой SET . По-очереди доступны для установки:

Группа CLOC :

– секунды (обнуляются при нажатии на кнопки PLUS или MINUS );

– величина коррекции. В старшем разряде символ "с".

Группа ALAr :

– активация будильника. На индикаторе " On ", если работа будильника разрешена, " OFF ", если запрещена;

– минуты срабатывания будильника;

– часы срабатывания будильника.

Группа diSP :

– время индикации текущего времени. В старших разрядах символы " tc ". Диапазон установки 0?99 сек. Если установлен 0, то время отображаться не будет;

– время индикации температуры. В старших разрядах символы " tt ". Диапазон установки 0?99 сек. Если установлен 0, то температура отображаться не будет;

– выбор эффекта анимации. В старших разрядах символы " EF ". Если установлен 0, смена информации будет проводиться без эффектов , если выбран автоматический режим (символ "А"), то будет производиться поочередная смена эффектов. Если выбран режим r , то смена эффектов будет производиться случайным образом.

– выбор скорости анимации. В старшем разряде символ " P ". Диапазон установки 0?99. Одна единица соответствует примерно 2 мсек, чем выше величина, тем медленнее идет анимация.

Группа LiGH :

– включение автоматического управления яркостью индикатора. В старшим разряде символ " A ", в младших " On ", если автоматическое регулирование разрешено, " OF ", если яркость устанавливается вручную;

– минимальный порог яркости для автоматического режима. В старших разрядах символы " L _ ".

– максимальный порог яркости для автоматического режима. В старших разрядах символы " L ? ".

– уровень яркости в ручном режиме. В старших разрядах символы " L – ".

2.3. Устанавливаемый параметр мигает.

2.4. Удержанием кнопок PLUS / MINUS производится ускоренная установка параметра.

3. Примечания.

1. Для минимального и максимального порогов яркости диапазон установки 0 ? 99, но программой вводятся ограничения: минимальный не может быть больше либо равным максимальному и наоборот.

2. При установке параметров яркости информация на индикаторе отображается с выбранной величиной яркости.

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


4. Особенности схемы.

1. Если предполагается использовать функцию автоматической регулировки яркости индикатора, то вместо RV 1 устанавливается фоторезистор. А значение резистора R 17 следует подобрать для получения нужной чувствительности системы.

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

3. Пищалка BUZ 1 должна быть со встроенным генератором. В зависимости от тока потребления возможно придется установить усилитель (транзисторный ключ).

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

5. При прошивке МК следует установить FUSE для работы от внутреннего тактового генератора частотой 8 МГц. Пример установки FUSE для программы PONYPROG на скриншоте.


6. В проекте (это по сути уже схема) не показаны выводы питания микросхем.

7. Файл screen.jpg является скриншотом проекта на тот случай, если Proteus не установлен.

Для обсуждения материалов статьи создана тема.

Видео работы программы, о т пользователя wolf2000.

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

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

Схема часов не сложная, плюс, я сделал в ней некоторые упрощения. Что получилось, я привожу ниже. Оригинальная и упрощенная схема, разведенная в Proteus, имеется в АРХИВЕ. В данном архиве приведены также прошивки ATmega8, дающие разный функционал часам, пример выставления фьюзов, полная инструкция по настройке часов и их возможностях, а так же разведенная печатная плата в формате *.lay6. Печатная плата разводилась мной под уже имеющийся корпус. В архиве представлены прошивки для индикаторов с общим анодом и катодом.

Хочу признать, что часы получились отлично. В часах есть будильник (как разовый, так и по дням недели), термометр. Для регулировки освещения индикатора в дневное и ночное время, могут использоваться как предустановки в часах, так и специальный датчик (фоторезистор). Есть возможность коррекции времени, если оно отстает или спешит; цифровая коррекция отображения температуры с градацией 0,1?С.

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

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

Пользователь "yurich" предоставил свой вариант разводки платы под корпус советских часов "Кварц". Файл можно скачать ЗДЕСЬ.

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

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

Схема часов не сложная, плюс, я сделал в ней некоторые упрощения. Что получилось, я привожу ниже. Оригинальная и упрощенная схема, разведенная в Proteus, имеется в АРХИВЕ. В данном архиве приведены также прошивки ATmega8, дающие разный функционал часам, пример выставления фьюзов, полная инструкция по настройке часов и их возможностях, а так же разведенная печатная плата в формате *.lay6. Печатная плата разводилась мной под уже имеющийся корпус. В архиве представлены прошивки для индикаторов с общим анодом и катодом.

Хочу признать, что часы получились отлично. В часах есть будильник (как разовый, так и по дням недели), термометр. Для регулировки освещения индикатора в дневное и ночное время, могут использоваться как предустановки в часах, так и специальный датчик (фоторезистор). Есть возможность коррекции времени, если оно отстает или спешит; цифровая коррекция отображения температуры с градацией 0,1?С.

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

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

Пользователь "yurich" предоставил свой вариант разводки платы под корпус советских часов "Кварц". Файл можно скачать ЗДЕСЬ.

УРЯ. ждемс зозулю барометр эффекты. Вот подарочек . Дякую
__________________________________________________________________
Добавьте бегущую анимированную заставку!!
Soir 2015 UA

"Борітеся — поборете!
Вам Бог помагає!
За вас правда, за вас слава
І воля святая!"
________________________
Save Ukraine! Stop Putin!

Думаю, уже будет 2016

Я тут подумал и к алгоритму интересно бало бы добавить возможность изменения сигнала зозуленьки. Ну, типО на флешку накатал мелодий, всунул и выбирай. Как идея?

Думаю, уже будет 2016

Я тут подумал и к алгоритму интересно бало бы добавить возможность изменения сигнала зозуленьки. Ну, типО на флешку накатал мелодий, всунул и выбирай. Как идея?

Говорилку автор делал, как сюда ее всунуть? Возможно вариант на выбор:
1. разовый сигнал
2. =кол-ву часов
3. Оff
Зозуля супер: забыл предупредить что бы при 19-оо пела 7-мь раз, Вы так как необходимо и сделали !!

_________________________________________________________________________
Первый запуск макета:
1. в меню настройки времени индикации нет изменения отображения давления
2. Нет измерения давления, с датчиком и без показание 791 (BMP-180 рабочий) сейчас 741 мм
3. Во время срабатывания кукушки на экране температура, если можно, выводить на это время часы!

"Борітеся — поборете!
Вам Бог помагає!
За вас правда, за вас слава
І воля святая!"
________________________
Save Ukraine! Stop Putin!

Тема часов на микросхеме DS1307 довольно актуальна — это простое, но в то же время интересное устройство. Кроме того, оно может реально пригодиться. Но описывать отдельно микросхему смысла нет, поэтому я решил собрать себе подобное устройство, заодно рассказать о том, какие шишки набил при этом. Сам процесс разработки и сборки буду описывать, по мере прохождения некоторых этапов готовности девайса.

sch1307

Курим даташит и пытаемся разобраться что к чему. Идем слева направо, CPU — микроконтроллер ( то есть наша atmega), два резистора, написано pull up — значит подтягивающие (можно взять по 10к), кварц на 32768Гц, сама микросхема и батарейка. Выход SQW/OUT может дрыгаться с частотой 1Hz, 4kHz, 8kHz, 32kHz, пока нам это не интересно. Пожалуй, этой информации пока достаточно, хочется уже чего нибудь накодить ?

Создаем проект в CodeVision, в разделе I2C находим ds1307 и включаем его в проект. Хорошо бы еще выводить куда нибудь информацию, например на LCD и пара кнопок не помешает.

i2c_setup

Все что нужно это LCD настроить на порт D и три кнопки с подтяжкой на вход. Далее нужно вывести на LCD время, для этого заглянем в мануал CodeVision и возьмем оттуда пример. Оказывается все просто — есть функция устанавливающая время:
rtc_set_time(3,0,0); //установить 03:00:00

И есть функция, позволяющая считать текущее время:
rtc_get_time(&h,&m,&s);

т.е. после вызова данной функции в переменных h, m, s будут находиться часы(h), минуты(m) и секунды(s). Осталось вывести их на экран. Уж это мы умеем делать)
Итоговый код будет выглядеть так:

shc_proteus

Собираем и тестируем в протеусе:

Схема и прошивка

Добавим в проект внешнее прерывание по низкому уровню (low level) на ножке Int1 и включим подтяжку. Выход DS1307 настроим на частоту 1Гц. Кстати, читать мануалы полезно, нашел интересную особенность — подтягивающие резисторы на ножках SCL, SDA должны быть 3,3k — 4,7k. Учтем это.

shc_proteus_v2

Получившийся код будет выглядеть так:

interrupt [EXT_INT1] void ext_int1_isr(void)

В прерывании выставляем флаг, разрешающий вывод времени, в основном цикле, если флаг выставлен, то показываем время, если не выставлен ничего не делаем.

Теперь перейдем к следующему вопросу, на сколько эффективно использовать sprintf? Чтобы не разводить пустых разговоров, приведу 2 куска кода, которые выполняют одно и тоже — выводят информацию о времени на дисплей.

Первый вариант, уже нам известный:

Согласитесь просто в использовании и наглядно. Теперь вариант номер 2:

lcd_putchar(hour/10+0x30); lcd_putchar(hour%10+0x30); lcd_putchar(':'); lcd_putchar(min/10+0x30); lcd_putchar(min%10+0x30); lcd_putchar(':'); lcd_putchar(sek/10+0x30); lcd_putchar(sek%10+0x30);

Некрасиво, когда в основном цикле мешанина из кода, поэтому вывод информации можно засунуть в функцию. В основном цикле останется

Объявление самой функции будет выглядеть так:

Теперь в нашу прошивку, нужно добавить вывод даты. Установка даты, производится следующей функцией:

rtc_set_date(6,13,10,13); //6- день недели, 13 - день, 10 - месяц, 13 - год

Прочитать текущую дату можно аналогично чтению времени:

rtc_get_date(&week_day,&day,&month,&year); //день недели, день, месяц, год

Вывод даты можно организовать, пока что в основном цикле, рядом со временем, полный исходный код получился такой:

Схема и прошивка:

Перейдем к организации меню. Самый главный вопрос состоял в том, как оно все должно выглядеть, т.е. нужно было сформулировать техническое задание(т.з.).
Мне хотелось, чтобы это были отдельные экраны:
-главный экран;
-экран настройки времени;
-экран настройки даты;
-экран настройки будильника.

При этом обойтись четырьмя кнопками — вверх, вниз, влево, вправо. Переход между экранами должен осуществляться кнопками вверх и вниз. Настройка производится на соответствующем экране. Применяемый микроконтроллер atmega8. Вот такое примитивное т.з.

То что размер кода будет достаточно большой было понятно изначально. При этом нужно было его разбить на логически связанные части. С частями все понятно — обработка одного экрана одна часть кода. Поэтому начал с того, что основной цикл разбил на четыре части, переключения между которыми производится оператором switch. Внутрь засунул функции — пустышки. Кнопки 0(вверх) и 3(вниз) порта C позволяют изменить переменную menu. Таким образом мы скачем между менюшками. Но пока такая прошивка еще работать не могла, ибо функции еще не определены.

Теперь это уже была рабочая прошивка, в которой можно было переключаться между менюшками и смотреть статичные надписи. Настало время оживить эти надписи. С главным экраном проблем не было, вывод времени/даты аналогичен предыдущему уроку.

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

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

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

if(PINC.0==0) //кнопка вверх < if(subProgram==1) //subProgram=1 - изменяем часы < a_hour++; . >if(subProgram==2) //subProgram=2 - изменяем минуты < a_min++; . >if(subProgram==3) //subProgram=3 изменяем флаг будильника < . >>

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

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

shc_proteus_v4

Пример взят из примеров в папке CodeVision\examples\lcd char.

typedef unsigned char byte; //переопределяем тип flash byte char_table[8]=< //рисуем свой символ 0b10000000, 0b10000100, 0b10001110, 0b10001110, 0b10001110, 0b10011111, 0b10100100, 0b11000000>; // function used to define user characters void define_char(byte flash *pc,byte char_code) < byte i,address; address=(char_code

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

Начнем с печатной платы, для этого требуется программа, которая позволяет рисовать печатки. Существует множество подобных программ: P-cad, Altium, Sprint layout… Мне нравится Альтиум, только потому, что для него куча готовых библиотек с элементами, ибо тратить время на набивку собственной библиотеки элементов, на мой взгляд не дело. Общий смысл всех подобных программ одинаков — сначала рисуется электрическая схема.

scha_1307

Далее данные о связях элементов передаются в трассировщик.

exchange_1307

В трассировщике все элементы уже знают, какой с каким должен соединяться, благодаря электрической схеме.

pcb_ds1307

Остается только удобно расположить элементы и соединить их проводниками.

pcbready_ds1307

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

print_nout

Я долгое время печатал на бумаге с плотностью 180 г/м2 и меня устраивало, но недавно бумага закончилась и в магазине оказалась только 220 г/м2, думаю ладно попробую. В результате я отодрать бумагу так и не смог, ни от платы ни от утюга :D. Много раз слышал, что можно брать бумагу от обычных глянцевых журналов. Думаю ладно попробую, взял первый попавшийся журнал с рекламой мебели и результат меня впечатлил. Так что рекомендую не тратить деньги, а печатать на халявных журналах.

print_foto

Основой служит фольгированный текстолит, который по сути и есть кусок текстолита, с одной стороны покрытый медью.

fr4-foto

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

shkurka

Прикладываем рисунок к медному слою и хорошенько прогреваем утюгом. Прилипшую бумагу оттираем зубной щеткой под струей теплой воды. В результате тонер должен прилипнуть слева результат от бумаги 220 г/м2, видно что дорожки кое где поотваливались, справа результат от журнала.

jurnalfoto

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

ferum_cl

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

cucl

В результате весь проводящий слой не защищенный тонером будет удален, останется только рисунок нашей печатной платы. Смываем остатки тонера ацетоном. Получилась такая печатка.

last_pp

В общем обленился в край, все сделал, осталось прикрутить винты ?

105 комментариев: Часы на DS1307 от идеи к реализации

Ура . Сделал вот так:
void Nastroika(void)
switch (set) // switch // подпрограмма опроса
case 0:
if (PINB.2==0)
PORTB.0=1; //контроль
hour++;
rtc_set_time(hour,min,sec);
>
if (hour>23)
hour=0;
>;
if (PINB.3==0)
PORTB.0=0; //контроль
hour—;
rtc_set_time(hour,min,sec);
if (hour==255)
hour=23;>
>;
break;
>

можно выставить флаг и при выходе из меню например, если флаг установлен, то настраивать часы однократно

unsigned data2=2000 ;// размер в 2 байта

eeprom_write_word(& save1,data1);//запись в память2 байт
data1=0 ;// размер в 2 байта
eeprom_write_word(& save2,data2);//запись в память2 байт
data2=0 ;// размер в 2 байта

//data_a=eeprom_read_word(& save1);// чтение 2 байт
//data_b=eeprom_read_word(& save2);// чтение 2 байт

DDRC=0x00;
PORTC=0xFF;
DDRB=0xFF;
PORTB=0x00;
lcd_init(LCD_DISP_ON);
lcd_clrscr();

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

За универсальным тестером будущее. Всего лишь при подсоединении щупов, универсальный пробник определяет сопротивление, ёмкость, ЭПС, диодную проводимость, распиновку и коэффициенты усиления транзисторов, прозванивает лампочки и светодиоды, сообщает на дисплее о повреждении электронного элемента. Работает подобный тестер автоматически, без переключения селектора или кнопок.

Для работы мультитестера нужен микроконтроллер минимум с 8 кБ флеш-памяти, такой как ATmega8, ATmega168, ATmega328.

Электрическая схема мультитестера на Arduino

Электрическая схема мультитестера на Arduino

Характеристики тестера электроэлементов на Arduino:

  1. Сопротивление: 0…50 МОм, точность до 0.01 Ом (на ATmega8 точность 0.1 Ом).
  2. Ёмкость: 25 пФ…100 мФ, точность 0,1 пФ.
  3. ЭПС (эквивалентное последовательное сопротивление) определяется для емкостей 90нФ…100 мФ.
  4. Биполярные транзисторы: нахождение базы, коллектора, эммитера (BCE) при проводимости NPN, PNP.
  5. Полевые транзисторы: N-канальные, P-канальные.
  6. Диоды, диодные сборки: кремниевые, германиевые, Шотки, определение анода катода.
  7. Стабилитроны: обратное напряжение пробоя менее 4,5 В.
  8. Тиристоры, семисторы: только маломощные.

Подобный пробник полупроводниковых деталей можно купить под заказ из Китая или собрать самому. Все необходимые для самоделки детали можно купить через интернет у производителей из Китая, Малайзии, Сингапура, Италии.

Список комплектующих

Подключение питания

Для точности измерений тестера рекомендуется, но не обязательно, запитать его от прецизионного стабилизатора напряжения 5.00 В, например от MCP1702-5002.

При невыполнении этого условия, в случае использования менее точного стабилизатора типа 7805, настоятельно советуем подключить источник опорного напряжения (ИОН).

Стабилизированный ИОН на 2.5 В надо подсоединять к выводу А4 микроконтроллера. На приведенной электрической схеме это подключение не показано. Благодаря подключенному ИОН, мультиметр будет более точно измерять напряжение на батарейках VBAT, наибольший положительный потенциал на полупроводниках VСС.

В программе самодиагностики микроконтроллера ATmega заложено определение отсутствия ИОН. Эта функция самодиагностики активна только при подключении ножки А4 к напряжению 5 В через резистор 47 кОм.

Можно таки случайно закоротить ножки микросхемы А4 и А5. После этого начнутся проблемы с точностью измерения VBAT и VСС. Поэтому удаляйте несанкционированные мостики между выводами, смывайте сгоревший флюс с платы.

Что касается портативности, то в качестве первичного источника для мультиметра рекомендуется использовать батарейку типа Крона или два последовательно соединенных литийионных аккумулятора. Правильно собранный прибор будет работать от любого источника питания, напряжением от 7 до 15 В.

При организации питания прибора от сетевого адаптера 220/9–12 В, следует позаботиться об экранировании микроконтроллера, устранить пульсации на входе с помощью конденсатора. Нельзя близко располагать, как в одной плоскости, так и сверху снизу, входные цепи питания к плате Arduino.

Сборка измерительной схемы

Правильнее будет собрать пробную схему мультитестера на беспаечной макетной плате для проверки совместимости найденного дисплея с микропроцессором Arduino, а также других комплектующих.

Сборка измерительной схемы

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

светодиод на выходе

Подключение к аналоговым выходам Arduino:

Подключение к цифровым выходам Arduino:

  • D0 — получение RX на Arduino nano или mini.
  • D1 — передача TX на Arduino nano или mini.

Прошивка микроконтроллера

Загрузить прошивку в Arduino можно как с помощью программатора USB, так и применив другой Arduino nano для перепрограммирования. Мы же воспользуемся программатором USBasp и приложением SinaProg, о чем расскажем подробно.

  • Скачиваем и устанавливаем на ПК приложение SinaProg 2.1.
  • В поле Programmer находим свой программатор USBasp и нажимаем кнопку Search для поиска подключенного контроллера.
  • После определения контроллера, скачиваем Aрхив с прошивкой для мультитестера на Arduino и распаковываем.
  • В архиве две прошивки: TransistorTester.eep для работы памяти EEPROM микроконтроллера, TransistorTester.hex непосредственно для микроконтроллера. Сначала загружаем TransistorTester.eep в память EEPROM микроконтроллера.

Иконка выбора пути к прошивке

Иконка выбора пути к прошивке

  • Загружаем TransistorTester.hex в микроконтроллер,аналогично как делали ранее.

Загружаем TransistorTester.hex

Загружаем TransistorTester.hex

Загружаем TransistorTester.hex

  • После удачно осуществленной прошивки, отключаем программатор.

Дабы не было проблем с полным отсутствием отображения на дисплее, заливать в память EEPROM следует файл с расширением HEX, а не BIN.

Начинать работу с тестером надо после сброса на кнопке SW2 Reset.

Есть куча приборов, куда можно поместить собираемый универсальный пробник: старые мультиметры, токовые клещи, большие калькуляторы, даже ночные часы.

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

Читайте также: