меню
Простые часы на Atmega8 | Часы, Будильники |
 

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

Состоят данные часы из микроконтроллера Atmega8, светодиодного индикатора (PL-F5610) с общим катодом (минусом), часового кварца 32768 Hz и резистора. Да, можно удивиться, но больше нам ничего не понадобится.

Резистором можно подобрать яркость свечения индикатора – при 180 Om часы будут очень ярки и днем и ночью, а при 220 Om – будут видны только ночью. Я остановился на 200 Om.

Простые электронные часы на микроконтроллере Atmega8 в навесном монтаже. Фото.

Микроконтроллер Atmega8 можно прошить программатором PonyProg. Прошивку в формате *.hex можно скачать ЗДЕСЬ. Фьюзы при прошивке микроконтроллера Atmega8 необходимо выставить: СКОРТ, ВООТSZ1, ВООТSZ0, SUT1, SUT0, СКSEL3, СКSEL1, СКSEL0. При выставлении бита СКОРТ к часовому кварцу подключаются два внутренних конденсатора микроконтроллера.

Питание данных часов от 5v источника, можно сеть, можно батареи.

Принципиальную схему простых часов на микроконтроллере Atmega8 привожу ниже.

Принципиальная схема простых электронных часов на микроконтроллере Atmega8.

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

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

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

Автор данной схемы и программного кода некий «Paha». За что ему спасибо! :-)

Автор «P-a-h-a» вышел на связь и предложил новую схему и свежие прошивки данных часов. Их можно увидеть ЗДЕСЬ.

Страницы: 1 2 3 4 5 6 ... 9
Wildchild | 30.03.2012 21:04

А фьюзы установленные с завода в МК не трогать?


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
admin | 30.03.2012 21:45

Про фьюзы написано в статье:

необходимо выставить: СКОРТ, ВООТSZ1, ВООТSZ0, SUT1, SUT0, СКSEL3, СКSEL1, СКSEL0


Коментариев: 1483  | Администратор сайта
Wildchild | 31.03.2012 09:57

Спасибо,на выходных спаяю программатор,и испробую!Еще раз спасибо за помощь!


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
Wildchild | 01.04.2012 17:27

Собрал!Теперь буду пытаться прошить!Вопрос-чтобы выставить указанные в описании к часикам фьюзы,в Pony ставим галочку напротив необходимых,или нет???
Первая попытка не удалась!:(

Добавленно позже (в 17:53 01.04.2012):

Сначала вроде все считалось,а потом хотел зашить МК,а программа начала выдавать что устройство отсутствует,или неизвестное устройство!Не пойму что случилось!Уже голова пухнет!:)

Добавленно позже (в 20:36 01.04.2012):

Может транзистор крякнул!?:)Хотя был новый!


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
admin | 01.04.2012 21:41

Программатор 100% рабочий. Из возможных поломок может быть только скайки, перетравы дорожек и бракованный транзистор. Можно поставить любой маломощный.


Коментариев: 1483  | Администратор сайта
Wildchild | 01.04.2012 21:45

Да я и не сомневаюсь,что схема рабочая,ну ничего,не успокоюсь пока не будет работать все как надо!Так а как всё же фьюзы правильно выставлять,с галочкой,или без?


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
admin | 01.04.2012 22:08

Ставить галочки возле СКОРТ, ВООТSZ1, ВООТSZ0, SUT1, SUT0, СКSEL3, СКSEL1, СКSEL0.


Коментариев: 1483  | Администратор сайта
Wildchild | 01.04.2012 22:16

Вот,спасибо,а то я запутался с этим!
А в Пони Прог в Enterface setup я выбрал Serial, SI Prog I/0, COM1 !Это правильно?


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
admin | 02.04.2012 02:41

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


Коментариев: 1483  | Администратор сайта
Wildchild | 02.04.2012 23:00

Урраааааааааааа!Всё заработало!Спасибо вам за помощь!Сегодня добил программатор,и прошил МК!Часики пошли!:)))


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
Wildchild | 04.04.2012 20:34

А возможно ли сделать так,что бы на дисплее с общим катодом и с точкой после каждой цифры,горела только точка после второй цифры,как бы разделяя часы и минуты?А то если подключать третий вывод дисплея на 4ю ногу МК загораются все точки!:)


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
admin | 04.04.2012 23:02

Это нужно корректировать исходник, а у меня только *.hex остался.


Коментариев: 1483  | Администратор сайта
Wildchild | 05.04.2012 19:08

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

Добавленно позже (в 19:09 05.04.2012):

Хочу попробовать собрать еще вот такие часики
http://dmitrstas.ucoz.ru/publ/chasy/chasy/chasy_na_atmega8/3-1-0-102


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
admin | 05.04.2012 21:23

Если соберете такие часы, запечатлите этапы сборки, набросайте статью, опубликуем от Вашего имени материалы на этом сайте.


Коментариев: 1483  | Администратор сайта
Wildchild | 05.04.2012 21:31

Хорошо!Обязательно это сделаю!Постараюсь завтра уже элементы для сборки приобрести!И начать на выходных!


Коментариев: 11  | tema311285(bсh)mail.ru  | Зарегестрирован: 2012-03-28
amedvedev | 10.04.2012 22:08

Меня заинтересовал сей проект-есть желание собрать часы,но у меня правило- сначала проверить в Протеусе.Когда собрал,то обнаружил -да действительно проект работает ,за исключением нюанса-после нуля идет 7 а не 1(лишний А сегмент)и вместе с 4 рисует тоже (лишний А сегмент)сверху.Может что-то не так делаю?

все гениальное просто
Коментариев: 1  | amedvedev63(bсh)i.ua  | Зарегестрирован: 2012-04-10
admin | 10.04.2012 22:13

Может!)) Если интересно, паяйте. На практике такой проблемы нет.


Коментариев: 1483  | Администратор сайта
Dimon4ik | 11.04.2012 22:58

Очень хотелось бы собрать сей девайс, но вот только индикаторы с общим анодом..ни у кого нет случаем прошивки или ссылки? беглый поиск с гуглом не помог(


Коментариев: 3  | sozkov(bсh)ya.ru  | Зарегестрирован: 2012-04-11
admin | 12.04.2012 08:53

Вот листинг программы под индикаторы с общим плюсом:

$regfile = «m8def.dat» ‘ Работаем с ATmega8
$crystal = 8000000 ‘Работаем на частоте 8 мГц
Config Portb = Output ‘
Config Portd = Output ‘Назначаем порты на вход и выход
Config Portc = Input ‘
Set Portc.5 ‘Поддтягиваем вход Portc.5 и Portc.4 резисторами к Vcc
Set Portc.4
Dim X As Byte , Y As Byte , Cifri(4) As Byte , Cifra As Byte , Tochka As Byte ‘рабочие переменные

Config Clock = Soft ‘Включаем софтовые часы
_sec = 0 : _min = 0 : _hour = 0 ‘Вводим время с которого будет производиться отчёт времени
Config Timer0 = Timer , Prescale = 8 ‘Включаем таймер0, применяем делитель на 8
Config Timer1 = Counter , Edge = Falling , Prescale = 1 ‘Включаем таймер1, назначаем его работу по спаду от кварца 32768 Гц, делитель на 1
On Timer0 Pulse ‘При срабатывании таймера0, переходим на вклатку Pulse
Enable Interrupts ‘Разрешаем все прерывания
Enable Timer0 ‘Разрешаем прерывания таймера0
Config Debounce = 20 ‘Ставим задержку при нажатии на кнопки в 20 м.Сек.

Do ‘Основной цикл
Debounce Pinc.4 , 0 , Minuti , Sub ‘
Debounce Pinc.5 , 0 , Chasi , Sub ‘Проверяем на нажатие кнопок, если кнопка нажата переходим на соответствуюшую вкладку

If _hour = 24 Then _hour = 00 ‘
If _min = 60 Then _min = 00 ‘Проверяем переменные с временем, при переполнении обнуляем их

Tochka = _sec Mod 2 ‘
Loop ‘Конец основного цикла

Pulse:
Incr X ‘Увеличиваем переменную Х на еденицу (была 0, стала 1)

Cifri(1) = _hour / 10 ‘Разбиваем двузначное число часов на два однозначных (21 / 10 = 2)
Cifri(2) = Cifri(1) * 10 ‘2 * 10 = 20 сохраняем результат в переменную Cifri(2)
Cifri(2) = _hour — Cifri(2) ’21 – 20 = 1 сохраняем вновь полученный результат, в итоге переменная Cifri(2) равняется 1

Cifri(3) = _min / 10 ‘Проделываем тоже самое с минутами (56 / 10 = 5)
Cifri(4) = Cifri(3) * 10 ‘5 * 10 = 50
Cifri(4) = _min — Cifri(4) ’56 – 50 = 6

‘Portd = &H00
Portd = &HFF ‘Гасим индикатор
If X = 1 Then ‘Проверяем значение Х, если оно рано 1, выполняем дествие ниже
‘Portb = &H77
Portb = &H8
Cifra = Cifri(1)
End If ‘Конец проверки
If X = 2 Then ‘Опять проверяем Х
‘Portb = &H7B
Portb = &H4 ‘
Cifra = Cifri(2) ‘
End If ‘
If X = 3 Then
‘Portb = &H7D
Portb = &H2
Cifra = Cifri(3)
End If
If X = 4 Then
‘Portb = &H7E
Portb = &H1
Cifra = Cifri(4)
End If
If X > 4 Then X = 0 ‘Последняя проверка, если Х больше 4, обнуляем его

‘Select Case Cifra
‘Case 0 : Y = &HEF
‘Case 1 : Y = &H8C
‘Case 2 : Y = &HB7
‘Case 3 : Y = &HBE
‘Case 4 : Y = &HDC
‘Case 5 : Y = &H7E
‘Case 6 : Y = &H7F
‘Case 7 : Y = &HAC
‘Case 8 : Y = &HFF
‘Case 9 : Y = &HFE
‘End Select

Select Case Cifra ‘Начинаем выбор переменной Cifra
Case 0 : Y = &H10 ‘Если Cifra = 0, Y равен &H10 (Dec 16 ; Bin 00010000)
Case 1 : Y = &H73 ‘
Case 2 : Y = &H48 ‘
Case 3 : Y = &H41 ‘
Case 4 : Y = &H23 ‘
Case 5 : Y = &H81 ‘
Case 6 : Y = &H80 ‘
Case 7 : Y = &H53 ‘
Case 8 : Y = &H00 ‘
Case 9 : Y = &H1 ‘
End Select ‘Конец выбора
Portd = Y ‘Приравниваем значение переменной Y к Portb
‘If Portb.2 = 0 And Tochka = 0 Then Set Portd.2 Else Reset Portd.2
If Portb.2 = 1 And Tochka = 0 Then Reset Portd.2 Else Set Portd.2 ‘Прверяем условие, если совпало — зажигаем точку, если нет — гасим
Return ‘ Возврашаемся

Minuti: ‘При нажатии кнопки «минуты» обнуляем секунды и увеличиваем переменную _min на 1
Incr _min
_sec = 00
If _min = 60 Then _min = 00
Return ‘Возврашаемся

Chasi: ‘Тоже, что с минутами
Incr _hour
_sec = 00
If _hour > 23 Then _hour = 00
Return

Компилировать необходимо в Bascom AVR. Удачи!


Коментариев: 1483  | Администратор сайта
Dimon4ik | 12.04.2012 15:41

admin, большое спасибо) TUP


Коментариев: 3  | sozkov(bсh)ya.ru  | Зарегестрирован: 2012-04-11
Dimon4ik | 30.04.2012 00:25

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


Коментариев: 3  | sozkov(bсh)ya.ru  | Зарегестрирован: 2012-04-11
admin | 01.05.2012 11:50

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


Коментариев: 1483  | Администратор сайта
2perca | 11.06.2012 13:16

есть пара вопросов
1) испльзуется две кнопки без фиксации?
2)вот купил дисплей, но не могу разобраться с его подключением (зеленый я еще))) первая работа с мк и дисплеем)
(фото дисплея прилагаю)

Пот, свист, вонь обожженных пальцев и канифоли...я паяю >.<
Коментариев: 4  | dvaperca93(bсh)gmail.com  | Зарегестрирован: 2012-06-11
admin | 11.06.2012 14:07

1) Без фиксации;

2) Datasheet на E40561-L-O-8-W:


Коментариев: 1483  | Администратор сайта
2perca | 11.06.2012 18:40

я смотрел даташит) но так и не понял, как вести подсщет ножек?)

Пот, свист, вонь обожженных пальцев и канифоли...я паяю >.<
Коментариев: 4  | dvaperca93(bсh)gmail.com  | Зарегестрирован: 2012-06-11
Страницы: 1 2 3 4 5 6 ... 9
Необходимо авторизоваться, чтобы комментировать.