Часы-термометр-будильник (Mega8+DS1307+DS18B20+LCD16*2)

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 139
Зарегистрирован: Вс янв 16, 2011 21:25:24

Сообщение Ashatshem »

Спасибо автору! Ну и мой вариант исполнения)))
Вложения
кнопки часы.lay
Печатка для кнопок
(22.53 КБ) 843 скачивания
часы.lay
Печатка основной платы платы
(79 КБ) 705 скачиваний
Копия DSC09492.JPG
Фото
(34.91 КБ) 1221 скачивание
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

Добрый день! Собираю данные часы, только я прошивку перекинул на Atmega16, и вчера залив программу, увидел, что на индикаторе ничего не отображается, правда я еще не подключил DS1307, но в протеусе при отключенных часах индикатор работает, как в живую, должен показывать индикатор? Индикатор висит на порту С, JTAG отключен.
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

без DS1307 работать не будет.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

Danko писал(а):без DS1307 работать не будет.
Т.е экран будет полностью пустой? Интересно почму протеус не так моделирует?
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

Запустил часы, как только прикрутил DS1307 сразу пошла заставка, переделал 2 скина под экран 20*2, я себе прикупил с белыми буквами и голубой заставкой, в темноте вид супер, единственное хочу попробовать управлять подсветкой экрана плавно с помощью ШИМ. И еще вопрос к знатокам, я перешел на Atmega16, для того чтобы вставить в программу кусок кода RC5, и убрать кнопки, но когда начал все это соединять запутался, в общем если кто-то сможет добавить туда код по обработке RC5, могу выложить проект на Atmega16 и генератор кода RC5для проверки, если не получится, тогда буду добавлять приемник команд на Attiny2313 и с него 6 выходов на кнопки(у меня сейчас 6 кнопок отдельно на входа заходят, почему-то АЦП я не смог запустить при переходе с Mega8 на 16)
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Сообщение levaclaus »

у меня тоже часы, с пультом ду, скоро термометр добацаю. Помогите толковый протокол rc5 добавить. Счас два устройства
2313v - пульт ду с 3 кнопка
и сами часы на atmega8
- по нажатии кнопок пульт мигает 100,200,300 мс, часы воспринимают это как нажатые 3 кнопки и всё управляется. Только конспирации никакой, на любой пульт откликаются(((
Реклама
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

levaclaus писал(а):у меня тоже часы, с пультом ду, скоро термометр добацаю. Помогите толковый протокол rc5 добавить. Счас два устройства
2313v - пульт ду с 3 кнопка
и сами часы на atmega8
- по нажатии кнопок пульт мигает 100,200,300 мс, часы воспринимают это как нажатые 3 кнопки и всё управляется. Только конспирации никакой, на любой пульт откликаются(((
Я делал немного по другому, на Attini 2313 спаял декодер RC5, получилось 16 выходов, просканировал все кнопки с пульта, на предмет адресов, выбрал адреса кнопок лево- право, вверх-вниз, меню, и esc-включение подсветки, и еще добавил на кнопку Power регулировку яркости дисплея. Выходы с микросхемы запаял на входы Atmega 16, т.е работали все кнопки и можно было работать с пультом. Но это была отдельная микросхема, яа мне надо было сасунуть этот код в сами часы, в общем написал я код по аналогии только обработка была на T1, но команды распознаются с ошибками, может из-за того что таймер 16 разрядный, и я его неправильно обрабатываю. Хотя в Протеусе моделируется нормально, на команды RC5 часы реагируют. А когда зашил в железо, то реакция на кнопку происходит только один раз, и больше не реагирует. Единственное что я хочу проверить, это подключить TSOP со всеми конденсаторами и резисторами, может какие помехи идут, хотя в Attiny2313 у меня выход напрямую подключался к INT0, и все работало. вчера еще переписал код обработки RC5 на таймере T0, закоментировав пока будильник, теперь команды распознаются четко, без ошибок, но в железе пока не работает.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Сообщение levaclaus »

шикарно, можно считать что программа-декодер есть... А на каком языке написал? (скрестив пальцы загадываю С)

В принципе на барахолках продаются китайские пульты на пяток кнопок, можно былобы его заюзать
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

levaclaus писал(а):шикарно, можно считать что программа-декодер есть... А на каком языке написал? (скрестив пальцы загадываю С)

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

Ну я толком ничего не писал, просто подправил исходник на С под свои нужды, кстати вчера поборол свою программу, нашел в чем косяк был, теперь часики управляются без навешивания внешней микросхемы, а просто с помощью припаяного к INT0 TSOPу. Осталось разобраться с подсветкой при помощи ШИМ, и еще хочу задействовать свободные выходы Atmega16 под управление на основании данных с часов и датчиков температуры.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Сообщение levaclaus »

а что за исходник, можеш поделиться?
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

levaclaus писал(а):а что за исходник, можеш поделиться?
Вот из этой статьи http://avru.cwx.ru/project/rc5_decoder_na_tiny2313.html
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Сообщение levaclaus »

хочу уточнить
у меня часы управляются 3 флагами, set=0, up=0, down=0.
В тех исходниках конечная последовательность принятого кода хранится в RC5_buffer?
Грубо говоря надо создать 3 сравнения с RC5_buffer и заданных бинарных кодов той или иной команды пульта, к примеру

if (RC5_buffer=11000001000000)
set=0;
if (RC5_buffer=11000001000001)
up=0;
if (RC5_buffer=11000001000010)
down=0;

RC5_buffer=0;

Так?
Kz
Родился
Сообщения: 2
Зарегистрирован: Ср апр 08, 2009 20:11:16
Откуда: Томск

Сообщение Kz »

скажите как увеличить скорость измерения температуры
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

вместо 76-го заливаете 95-й :)) а лучше ракетное топливо :)) :)) :))

Посмотрите исходники опрос датчиков крутится в цикле.
Кол-во оборотов цикла и их период завязаны в кучей параметров.

Измените один повалится вся пирамида.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 319
Зарегистрирован: Ср окт 31, 2007 17:57:21
Откуда: Украина Запорожье

Сообщение hawkman »

а как решить проблему с враньем показаний датчиков. оба врут в большую сторону на 1,5-2 градуса... обчитался форумов по этой проблеме так вразумительно и не понял ничего. одни кричат что датчики точные, а руки голова кривая, писавшая программу. другие, что сами датчики фигня и не являются точными.
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

hawkman писал(а):а как решить проблему с враньем показаний датчиков. оба врут в большую сторону на 1,5-2 градуса... обчитался форумов по этой проблеме так вразумительно и не понял ничего. одни кричат что датчики точные, а руки голова кривая, писавшая программу. другие, что сами датчики фигня и не являются точными.
У меня пока что, оба датчика находятся в комнате, показывают максимальный расброс 0.5 градуса, иногда 0.1, иногда показывают одинаковую температуру.
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

levaclaus писал(а):хочу уточнить
у меня часы управляются 3 флагами, set=0, up=0, down=0.
В тех исходниках конечная последовательность принятого кода хранится в RC5_buffer?
Грубо говоря надо создать 3 сравнения с RC5_buffer и заданных бинарных кодов той или иной команды пульта, к примеру

if (RC5_buffer=11000001000000)
set=0;
if (RC5_buffer=11000001000001)
up=0;
if (RC5_buffer=11000001000010)
down=0;

RC5_buffer=0;

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

Код: Выделить всё

  device = (RC5_buffer [3] << 4)|(RC5_buffer [4] << 3)|(RC5_buffer [5] << 2)|(RC5_buffer [6] << 1)|RC5_buffer[7];  //формируем адрес ПДУ                
            command = (RC5_buffer [8] << 5)|(RC5_buffer [9] << 4)|(RC5_buffer [10] << 3 )|(RC5_buffer [11] << 2)|(RC5_buffer [12] << 1)|RC5_buffer [13];        //формируем команду
                    
            t=command;        //вспомагательная переменная




// ---------------------------- чтение состояния кнопок ------------------------------------
unsigned char read_key(void) {
        unsigned char i, k1; //key_adc;

        k1=0;

     //   key_adc=read_adc(0);


        for (i=0;i<5;i++){      // програмный антидребезг контактов
                delay_ms(5);
                if (~PINB.0|t==34) k1++;      // 0 - кнопка не нажата, 1 - кнопка нажата
        }

        if   (t==17|PINA.0==0)                                        return KEY_L; 
        if   (t==16|PINA.1==0)                                        return KEY_R;
        if   (t==32|PINA.2==0)                                        return KEY_U;
        if   (t==33|PINA.3==0)                                        return KEY_D;
        if   (t==59|PINA.4==0)                                        return KEY_MENU;                       
        if   (t==13|PINA.5==0)                                        return KEY_ESC;    
        if   ((t==12|PINA.6==0)&(PIN_BL == 1))          { OCR2=OCR2+5, t=200;}  // если работает подсветка и нажата ESС, изменять яркость подсветки с помощью ШИМ
        
                                                                                                

        if (k1 > 3) return KEY_BL;

        return 0;


Так сделано у меня.
Открыл глаза
Сообщения: 65
Зарегистрирован: Вс дек 06, 2009 19:18:11
Откуда: Ukrain, Sumy

Сообщение Amator »

hawkman писал(а):а как решить проблему с враньем показаний датчиков. оба врут в большую сторону на 1,5-2 градуса... обчитался форумов по этой проблеме так вразумительно и не понял ничего...
Возможно опрос датчиков осуществляется очень часто, при этом происходит "саморазогрев" датчика (как раз на 1,5-2 градуса). Было проверено мной экспериментально.
Если на клетке со слоном увидишь надпись "Буйвол" - не верь глазам своим.
Контактная информация:
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай

Сообщение Danko »

интервал 5 секунд. Это часто ?

Вопрос ко всем кто не боится экспериментов: влияет ли длина выводов у датчика на его "вранье"?

Когда я делал термодатчик из кремневого диода, то важным были длина выводов и сечение провода идущего к датчику.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Контактная информация:
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пн янв 17, 2011 13:53:53

Сообщение Urbas81 »

Кто-то цеплял больше двух датчиков температуры, хочу прицепить три, определяются все три, но после начала индикации на экране мусор, в железе пока не пробовал. Вопрос к автору, сложно ли добавить показания 3-го датчика, если я оставлю допустим только 1 меню и уберу режим будильников, хочу собрать это в машину, нужны три температуры?
Ответить

Вернуться в «AVR»