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

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

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

Сообщение Ashatshem »

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

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

Сообщение Urbas81 »

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

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

Сообщение Danko »

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

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

Сообщение Urbas81 »

Danko писал(а):без DS1307 работать не будет.


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

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

Сообщение Urbas81 »

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

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

Сообщение levaclaus »

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

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

Сообщение 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, закоментировав пока будильник, теперь команды распознаются четко, без ошибок, но в железе пока не работает.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

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

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

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

Сообщение Urbas81 »

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

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



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

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

Сообщение levaclaus »

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

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

Сообщение Urbas81 »

levaclaus писал(а):а что за исходник, можеш поделиться?


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

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

Сообщение 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
Откуда: Томск

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

Сообщение Kz »

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

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

Сообщение Danko »

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

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

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

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

Сообщение hawkman »

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

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

Сообщение Urbas81 »

hawkman писал(а):а как решить проблему с враньем показаний датчиков. оба врут в большую сторону на 1,5-2 градуса... обчитался форумов по этой проблеме так вразумительно и не понял ничего. одни кричат что датчики точные, а руки голова кривая, писавшая программу. другие, что сами датчики фигня и не являются точными.


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

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

Сообщение 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;




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

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

Сообщение Amator »

hawkman писал(а):а как решить проблему с враньем показаний датчиков. оба врут в большую сторону на 1,5-2 градуса... обчитался форумов по этой проблеме так вразумительно и не понял ничего...


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

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

Сообщение Danko »

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

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

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

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

Сообщение Urbas81 »

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

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