Хочу представить новую схему говорящих часов. Основой данных часов является микроконтроллер ATmega8, микросхема часов используется DS1307, а микросхема термометра - LM75. И микросхема часов DS1307 и микросхема термометра LM75 общаются с микроконтроллером по протоколу I2C или по другому TWI - двухпроводный интерфейс. Хранилищем звуковых файлов является micro SD карта памяти, соединяемая с микроконтроллером по SPI интерфейсу. Аудио файлы на карте памяти хранятся в корне и имеют строго определенные имена для того, чтобы контроллер мог точно по имени найти аудио файл для воспроизведения по условиям именно в данный момент в зависимости от события - воспроизвести конкретное время или проиграть трек будильника. На индикацию в данном устройстве выводится много информации - текущее время, дата, день недели, температура окружающей среды, индикация включенности будильника, а также выбранный профиль периодического оповещения. В связи с этим обилием информации в качестве дисплея выбран LCD-дисплей 2 строки по 16 символов. Применение семисегментных индикаторов, считаю, не нужно, потому что время в любой момент времени можно озвучить и прослушать эту информацию, также семисегментников понадобится много, если все же их использовать. А меню настроек на семисегментных индикаторах выглядело бы как-то не очень хорошо. Звуковой сигнал на выходе микроконтроллера сравнительно слабый, поэтому схема часов получила усилитель для полноценности. При воспроизведении звукового файла, загорается светодиод LED1. Также было принято решение не плодить прошивки устройства по частоте звукового сигнала, поэтому ниже будет представлена прошивка на частоту только 44 кГц.
Сама схема часов предоставлена ниже:
Пройдемся немного по схеме. Для питания схемы используется линейный стабилизатор напряжения L7805 для 5 вольтового питания и для питания карты памяти параметрический стабилизатор на стабилитроне 3,3 вольта. Микросхему линейного стабилизатора L7805 можно заменить на отечественный аналог КР142ЕН5А, стабилитрон можно заменить на любой другой на данное напряжение. Если вам покажется не совсем удачным такая комбинация, в качестве стабилизатора напряжения можно использовать любые другие микросхемы (LM317, MC34063, LM2576, LM2596 и др.), настроенные на необходимое напряжение на выходе. Стабилитрон так же можно заменить на стабилизатор напряжения. Мною был подобран, наверно, самый экономичный вариант питания схемы. Как было указано выше, микросхема часов DS1307 и микросхема термометра LM75 работают по протоколу I2C. Данный протокол требует подтягивающих pull-up резисторов (то есть подтягивают линию данных к плюсу питания) для корректной работы. Выводы SCL и SDA данных микросхем подтянуты к плюсу питания резисторами R10, R11. Резисторы R9 и R12 также функционально выполняют функцию pull-up резисторов для возможности формирования сигнала на дополнительных выводах микросхем. Функционально данные выводы в схеме не используются - только для информации. В будущем при помощи дополнительного вывода микросхемы LM75 OS возможно организовать дополнительно термостат. Этот вывод подает положительный сигнал при превышении заданного порога температуры и отрицательный сигнал при понижении температуры до заданного порога - этакий гистерезис. Обязательным является конденсатор C8, располагать его нужно как можно ближе к выводам микросхемы термометр. Это необходимо для того, чтобы она работала стабильно. Питание микросхемы часов происходит через резистор R7 и диод VD2, необходимы для того, чтобы при отсутствии питания 5 вольт, когда микросхема работает от батарейки, не расходовать ее энергию на всю схему, запитанную от 5 вольт.
Далее в схеме используется LCD-дисплей SC1602. Дисплей использует внутри себя микроконтроллер HD44780, поэтому можно использовать любой другой дисплей на базе такого же контроллера. Резистор R1 подстроечный, он регулирует контрастность символов на дисплее. Можно использовать любой подстроечный или переменный резистор для этих целей вместо указанного в списке элементов, а варьировать номинал резистора можно в разумных пределах. Подсветку такого дисплея можно организовать как на самой плате LCD-дисплея подпаиванием перемычки и резистора (R9 и J3 - маркировка на плате дисплея SC1602) в предусмотренных местах или же через токоограничительный резистор подать напряжение питания на выводы "А" и "К". Номинал токоограничительного резистора составляет порядка 22 - 27 Ом. В зависимости от требуемой яркости номинал можно варьировать, но не рекомендую ниже 22 Ом, больше можно пока не погаснет подсветка полностью. В схеме применен первый вариант включения подсветки, поэтому на схеме устройства это не обозначено. Резистор R2 подтягивает положительное напряжение на вывод микроконтроллера Atmega8 PC6 или reset. это необходимо для предотвращения самопроизвольного перезапуска схемы часов. Номинал в пределах кОм можно варьировать при отсутствии заданного на схеме номинала.
Статусный светодиод LED1 подключен к микроконтроллеру через токоограничительный резистор для предотвращения порчи при превышении тока через светодиод. Номинал этого резистора можно изменять в соответствии с используемым светодиодом, а именно его параметров - падении напряжения. Чем меньше падение напряжения на диоде, тем больший номинал резистора нужно использовать для фиксированного тока (в большинстве случаев нельзя превышать ток в 20 мА). Звуковой сигнал снимается с вывода микроконтроллера PB1. Для усиления сигнала используется усилительный каскад на двух транзисторах. Транзисторы работают в ключевом режиме, поэтому компенсировать смещение базы не нужно. Конденсатор C6 ограничивает ток через динамик, когда ШИМ не работает. Номинал этого конденсатора можно изменять в широких пределах. Катушка L1 и конденсатор C7 образуют LC-фильтр, необходимый, чтобы убрать шумы. В зависимости от необходимого уровня громкости, коллектор Т1 можно подключать или к 5 вольтам (воpможно потребуется более мощный стабилизатор VR1 в этом случае) или к источнику напряжения 12 вольт.
Аудио файлы хранятся и считываются с карты памяти micro SD. Объем карты можно использовать от стареньких на несколько десятков мегабайт до 32 Гб. Заостряю ваше внимание на то что качество звука может зависеть от качества самой карты памяти. При применении карты памяти на 8 Гб фирмы mirex почему-то было больше шумов по сравнению с картой памяти фирмы kingston. Для воспроизведения звука можно использовать любые динамики. Управление настройками происходит при помощи тактовых кнопок. Их можно заменить на любые другие кнопки. Мощность всех резисторов 0,25 Вт. Номиналы всех конденсаторов можно варьировать в разумных пределах. В качестве резервного питания микросхемы часов используется батарейка типа CR2032. Ее можно заменить на любой другой источник резервного питания. Если не применять резервное питание для микросхемы часов, то при выключении питания время и дата будет сбиваться. Для большей точности ходя часов кварц рекомендуется применять наиболее точный, например, можно использовать кварцы из материнских плат. Нужно также отметить контакт RF - к нему подключается выход модуля переключения на радиобрелках http://cxem.net/review/review8.php. Необходимо использовать модуль на 12 вольт. При нажатии кнопки брелка произойдет замыкание вывода RF схемы говорящих часов на землю, при этом будет воспроизведено текущее время. Модуль переключения оптимальнее всего настроить в режим "Toggle" - кнопка брелка нажата, контакт RF замкнут на землю, кнопка брелка отжата, исходное положение.
Традиционно схема собиралась на макетной плате для контроллера Atmega8 собственного производства:
Устройство тестировалось в таком виде - проблем обнаружено не было. В качестве источника информации о времени был использован модуль "tiny RTC I2C module". Этот модуль содержит микросхему часов реального времени DS1307z, кварц для этой микросхемы частотой 32,768 кГц и необходимую обвязку для питания от батарейки и линий I2C. Важной информацией может быть то, что микросхемы DS1307 стоят дешевле чем DS1307z. В первом случае за дешевизну можем расплачиваться качеством хода часов, во втором случае более менее все хорошо.
Помимо качества микросхемы часов DS1307 на ход часов влияет кварц, а точнее его частота - погрешность никто не отменял. Если же у Вас не имеется очень хорошего кварца, то немного скорректировать частоту имеющегося можно при помощи подстроечного конденсатора, подсоединенного одним выводом к кварцу, а другим к земле схемы. Вращая движок переменного конденсатора можно будет подстраивать точность хода времени. Вторым вариантом может быть все тоже самое, только поставить конденсатор постоянной емкости. В этом случае частота кварца будет скорректирована только на фиксированное значение. Эти схемотехнические решения в схему не вносились, но имеют право на жизнь.
Характеристики устройства:
- отображение времени в формате hh:mm:ss
- воспроизведение времени при нажатии на кнопку или радиобрелок при условии его использования
- включение светодиода на время воспроизведения аудио файла
- отображение дня недели
- отображение даты в формате dd/mm/yy
- отображение температуры окружающей среды
- воспроизведение будильника
- отображение включенности будильника
- ежечасное воспроизведение сигнала по трем профилям
- отображение выбранного профиля
- сохранение настроек будильника при выключении питания (сохранение в eeprom)
- хранение текущего времени при выключении питания в микросхеме часов DS1307 за счет резервного питания
Назначение кнопок устройства и настройка:
- для вход в меню настроек необходимо нажать кнопку S5, перелистывание меню настроек осуществляется этой же кнопкой
- для изменения настроек необходимо нажать кнопку S4, например указатель стоит на меню изменения минут, нажатием этой кнопки минуты увеличатся на единицу, при длительном нажатии изменение пойдет быстрее, при достижении 59 минут, следующая цифра будет ноль, для всех настроек предусмотрена защита от переполнения
- находясь в любом уровне меню настроек при нажатии кнопки S1 сражу выйдем в главное меню
- в главном меню при нажатии кнопки S2 будет озвучено текущее время
- при сработке будильника, чтобы остановить сигнал нужно удерживать кнопку S1
- в случае, если трек для будильника очень длинный, можно сбросить сигнал кнопкой S3 - ресет (все потому что устройство при нажатии и удержании кнопки S1 ждет конца трека)
- кнопка S3 - reset всего устройства
В меню настроек будильника необходимо установить непосредственно само время будильника, разрешение на сигнал или просто включить будильник и установить профиль циклического сигнала (0 - не использовать, 1 - в начале каждого часа воспроизвести файл, 2 - воспроизводить в начале каждого часа с 7 утра до 9 вечера). В настройках времени и даты все стандартно - установка непосредственно этих параметров.
Для того чтобы устройство могло воспроизводить ваши собственные записи аудио, при создании нужно знать следующее:
- формат wav файла: 8 bit, mono, 44 khz (пережимать можно из МР3 в любом аудио редакторе, поддерживающим функции перекодирования в wav формат)
- названия файлов должны соответствовать следующим условиям: озвучка часов 1h.wav (1 соответствует номеру часа, h - индекс часов, .wav - формат файла), озвучка минут 1m.wav (1 соответствует номеру минуты, m - индекс минут, .wav - формат файла), циклический сигнал 1a.wav (1 соответствует номеру часа, a - индекс циклического сигнала, .wav - формат файла), сигнал будильника alarm.wav. В архиве с аудио файлами в приложениях к статье можно посмотреть полный перечень названий файлов.
Без соблюдения этих параметров при создании аудио файлов микроконтроллер просто не обнаружит их на флешке.
Для программирования микроконтроллера необходимо использовать программатор, а также задать конфигурацию фьюз битов:
К статье прилагается прошивка для микроконтроллера для схемы говорящих часов, проект proteus (для корректного моделирования необходимо иметь мощный компьютер, иначе симуляция будет тормозить), архив с аудио файлами для проекта, а также небольшое демонстрационное видео (в начале озвучено текущее время, далее сработало ежечасное оповещение - сколько сейчас часов для простоты, далее настраиваем будильник и через минуту активируется сигнал, он повторяется до тех пор пока не будет удержана кнопка S1 или пока не нажать ресет).
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
IC1 | МК AVR 8-бит | ATmega8 | 1 | Поиск в магазине Отрон | ||
IC2 | Часы реального времени (RTC) | DS1307 | 1 | Поиск в магазине Отрон | ||
IC3 | Датчик температуры | LM75B | 1 | Поиск в магазине Отрон | ||
VR1 | Линейный регулятор | L7805AB | 1 | Поиск в магазине Отрон | ||
T1 | Биполярный транзистор | BD139 | 1 | или др. npn | Поиск в магазине Отрон | |
T2 | Биполярный транзистор | BD140 | 1 | или др. pnp | Поиск в магазине Отрон | |
VD1 | Стабилитрон | BZX55C3V3 | 1 | Поиск в магазине Отрон | ||
VD2 | Выпрямительный диод | 1N4148 | 1 | Поиск в магазине Отрон | ||
L1 | Катушка индуктивности | 20 мкГн | 1 | Поиск в магазине Отрон | ||
C1, C3, C5, C8 | Конденсатор | 100 нФ | 4 | Поиск в магазине Отрон | ||
C6, C7 | Конденсатор | 47 мкФ | 2 | Поиск в магазине Отрон | ||
R1 | Подстроечный резистор | 10 кОм | 1 | 3296W-1-103LF | Поиск в магазине Отрон | |
R2, R9-R12 | Резистор | 10 кОм | 5 | Поиск в магазине Отрон | ||
R3, R4, R8 | Резистор | 390 Ом | 3 | Поиск в магазине Отрон | ||
R6 | Резистор | 1.5 МОм | 1 | Поиск в магазине Отрон | ||
R7 | Резистор | 200 Ом | 1 | Поиск в магазине Отрон | ||
R5 | Резистор | 470 кОм | 1 | Поиск в магазине Отрон | ||
C2, C4 | Электролитический конденсатор | 220 мкФ | 2 | Поиск в магазине Отрон | ||
S1-S5 | Тактовая кнопка | TC-A109 | 5 | Поиск в магазине Отрон | ||
Z1 | Кварц | 32768 Гц | 1 | Поиск в магазине Отрон | ||
LED1 | Светодиод | 1 | Поиск в магазине Отрон | |||
HG1 | LCD-дисплей | SC1602 | 1 | На базе HD44780 | Поиск в магазине Отрон | |
Speaker | Динамик | 1 | Поиск в магазине Отрон | |||
Элемент питания | 3 В | 1 | CR2032 | Поиск в магазине Отрон | ||
Карта памяти | micro SD | 1 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Прикрепленные файлы:
- 21.hex (23 Кб)
- proteus 4b.rar (28 Кб)
- алена 44 кГц.rar (1641 Кб)
Комментарии (88)
|
Я собрал (0) |
Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
К тому же не столь важно на чем реализовывать, думаю, важнее что должно получиться в итоге
Надеюсь, в комментариях выскажут что бы еще хотелось видеть в подобном устройстве, интересные идеи, направление модификации и тому подобное, в будущем все может быть реализовано и не только на AVR
[Автор]
[Автор]
[Автор]
3,3 вольта обязательно для флешки, но это не из-за напряжения. Скачайте из этой статьи архив озвучки, попробуйте. Для конвертации своих звуков рекомендую Weeny Free Audio Converter
Еще - субъективно насколько частота отличается?
Еще вместо трех диодов я все таки поставил стабилизатор на транзисторе и стабилитроне на 3.9 В, получилось на выходе 3.4 В.
Еще не плохо бы ввести программную коррекцию хода, потому как кварцы попадаются крайне нестабильные.
[Автор]
Питание не должно сказываться ни коим образом, хоть 3 вольта, хоть 5 вольт, главное не угробить флешку, если 5 вольт
[Автор]
[Автор]
[Автор]
Ваши 4.5 В напрямую подаются на положительный вывод батарейки и неминуемо "зарядят" ее до этого напряжения. В подобных схемах, обычно, батарейка также подключается через диод анодом к батарейке. Вот тогда "резервный источник ни коим образом к +5В не будет подключен".
[Автор]
[Автор]
[Автор]
(в ответ на примечание оценки "Не согласен с выбором индикатора - время не увидишь и с двух метров!", и тем не менее спасибо за оценку и отзыв)
[Автор]
[Автор]
[Автор]
Конструкция, безусловно, любопытная.
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
I have ATMEGA8-16PU and USBASP v2.0 (from eBay). What program should I use to load the 21.hex to ATMEGA? What the software shown above?
[Автор]
You can use the programs: avrdude or sinaprog (to set the fuse bits use the fuse bit calculator) or use AVRStudio4 as in my example (for avrdoper programmer)
[Автор]
1) Батарейка подключена через резистор 200Ом прямиком на 5В, ни у кого еще не бабахнула от перезаряда?
2) По даташиту на ds1307, ей кроме батарейки на vbat ничего цеплять не нужно, она автоматом подключает батарейку при отсутствии vcc и отключает ее при подаче vcс. Соответственно R5, R6, R7, VD2 можно просто убрать?
Опыта в сборке с нуля практически нет, поэтому прошу уважаемых гуру подтвердить или аргументированно опровергнуть.
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
Clkout выход секундных импульсов.