Страница 13 из 17
Re: Двухканальный термометр на AtMega8
Добавлено: Чт дек 31, 2015 10:31:36
Nusik1975
хвост, исходник в архиве в полном порядке, ничего там не повреждено. Более 300 скачиваний и никто еще не пожаловался.

. Распаковываете архив, и открываете файл term.prj программой CodeVision AVR. В тексте программы есть комментарии.
Re: Двухканальный термометр на AtMega8
Добавлено: Пт янв 01, 2016 18:23:30
хвост
Nusik1975 спасибо за ответ. Всех С новым годом!
Re: Двухканальный термометр на AtMega8
Добавлено: Пт янв 01, 2016 18:38:10
Nusik1975
В исходнике есть строка, она откомментирована, и в ней можно прибавить или отнять столько, на сколько привирает датчик
Re: Двухканальный термометр на AtMega8
Добавлено: Вс янв 03, 2016 10:11:44
Smith2011
Все и вся собрал из темы в один файл, может кому пригодится.

Re: Двухканальный термометр на AtMega8
Добавлено: Вс янв 03, 2016 22:31:03
Smith2011
Полистал код и понял что ничего не понимаю
Сделал свой вариант регулировки яркости индикаторов от фоторезистора.
Пытался снять видео, но фотик не передает всю глубину регулировки, он от самой яркой, до еле заметной в темноте, т.к. добавляет чувствительности на матрице фотика

. Регулируется как верхний, так и нижний предел яркости.
Строго не судите, я не схемотехник, но она работает и очень хорошо.
Транзистор у меня стоит КТ502.
Фоторезистор самый простой с Али - 3 рубля штучка
http://ru.aliexpress.com/item/Free-Ship ... eb201560_8

Re: Двухканальный термометр на AtMega8
Добавлено: Пт янв 15, 2016 04:27:07
Iggis
Smith2011 писал(а):вариант регулировки яркости индикаторов от фоторезистора
У транзистора на вашей схеме надо поменять местами эмиттер и коллектор (минус ведь общий?). Еще стОит последовательно с переменными резисторами поставить небольшие постоянные, во избежание нулевых сопротивлений.
Вот такая схема тоже работает:

Re: Двухканальный термометр на AtMega8
Добавлено: Пт янв 22, 2016 18:02:54
Iggis
Nusik1975, я так понимаю, что меняя имена портов в этом куске кода
Спойлер
Код: Выделить всё
void show_digit(char what_digit) //проверяем, какую цифру выводить
{
switch (what_digit)
{case 1: {PORTD.3=0;PORTB.2=0;} break;
case 2: {PORTB.0=0;PORTD.3=0;PORTB.1=0;PORTB.4=0;PORTB.5=0;} break;
case 3: {PORTB.0=0;PORTD.3=0;PORTB.2=0;PORTB.5=0;PORTB.1=0;}break;
case 4: {PORTD.4=0;PORTB.1=0;PORTD.3=0;PORTB.2=0;}break;
case 5: {PORTB.0=0;PORTD.4=0;PORTB.1=0;PORTB.2=0;PORTB.5=0;}break;
case 6: {PORTB.0=0;PORTD.4=0;PORTB.4=0;PORTB.5=0;PORTB.2=0;PORTB.1=0;}break;
case 7: {PORTB.0=0;PORTD.3=0; PORTB.2=0;}break;
case 8: {PORTB.0=0;PORTD.3=0; PORTB.2=0;PORTB.5=0;PORTB.4=0;PORTD.4=0;PORTB.1=0;}break;
case 9: {PORTB.0=0;PORTD.3=0; PORTB.2=0;PORTB.5=0;PORTD.4=0;PORTB.1=0;}break;
case 0: {PORTB.0=0;PORTD.3=0; PORTB.2=0;PORTB.5=0;PORTB.4=0;PORTD.4=0;}break;
case 10: {PORTB.1=0;}break;
case 11: {PORTB.0=0;PORTD.4=0;PORTB.4=0;PORTB.5=0;PORTB.1=0;}break; // Буква Е
case 12: {PORTB.4=0;PORTB.1=0;}break; // Буква r
case 13: {PORTB.0=0;PORTD.4=0;PORTB.4=0;PORTB.5=0;PORTB.2=0;PORTD.3=0;}break; // Буква О
case 14: {PORTB.4=0;PORTB.5=0;PORTB.2=0;}break; // Буква u
case 15: {PORTD.4=0;PORTB.1=0;PORTB.4=0;PORTB.5=0;}break; // Буква t
}
}
можно переопределить подключение индикаторов к мк, как удобно для разводки пп? Или ещё где-то что-то менять надо?
Пользуясь случаем, СПАСИБО вам за полезный прибор и многолетнюю поддержку проекта

Re: Двухканальный термометр на AtMega8
Добавлено: Пт янв 22, 2016 20:06:42
Nusik1975
Там придется по всему коду проходить. Мне кажется, что гораздо проще переразвести печатку под себя.
Re: Двухканальный термометр на AtMega8
Добавлено: Пт янв 22, 2016 21:05:20
Iggis
В том и вопрос. Начал делать печатку, и все дороги от мк к индикатору крест-накрест.
Своим выпуклым военно-морским глазом неспециалиста посмотрел код и увидел там еще порт для точки и порты для разрядов.
Чтобы подключить индикаторы по-своему, надо только их, а также сегменты, переопределить, или где-то что-то еще?
Re: Двухканальный термометр на AtMega8
Добавлено: Сб янв 23, 2016 22:23:25
Nusik1975
Нужно пройтись по всему коду и проверить, где используются порты, отвечающие за сегменты. И их переопределить. Разряды трогать не нужно.
Re: Двухканальный термометр на AtMega8
Добавлено: Сб янв 23, 2016 23:52:26
Iggis
Разобрался-поменял-скомпилировал-прошил-работает. На макетке.
Трогал и разряды и сегменты и датчики. Только точка случайно осталась на прежнем месте

Теперь на печатке все ровненько, а было так:

Период опроса датчиков поставил 5 секунд. Коррекцию датчика убрал. Если датчик врет, то он не врет, а стоит в неудачном месте. У меня сейчас оба датчика рядом на макетке - разница показаний обычно 0-0.1°, но бывает до 0.4°, как и обещано в даташите (флуктуации датчика не более ±0.2°).
Re: Двухканальный термометр на AtMega8
Добавлено: Вс янв 24, 2016 10:20:24
Nusik1975
Ну и отлично. Выкладывайте тогда здесь свои наработки, может, кому и пригодится

Re: Двухканальный термометр на AtMega8
Добавлено: Вс янв 24, 2016 17:09:15
Iggis
Моя печатка и прошивка без пользы, все-таки индикаторы и дизайны у всех разные.
Но вот - ГЕНЕРАТОР КОДА, в экселе

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

Заодно исправил косячок, который в теме уже упоминался - температура "-9.9" выводилась как "-09".
Спойлер
Для исправления "Проблемы -9.9" нужно в исходнике исправить:
- в 72 строке
Код: Выделить всё
if(minus&(tem<=9.9))tochka();
//исправить на
if(minus&(tem<10))tochka();
- в 99 строке
Код: Выделить всё
if(minus1&(tem1<=9.9))tochka();
//исправить на
if(minus1&(tem1<10))tochka();
- в 141 и 142 строках
Код: Выделить всё
if(minus&(tem>=9.9))temp=tem;
if(minus&(tem<=9.9))temp=tem*10;
//исправить на
if(minus&(tem>=10))temp=tem;
if(minus&(tem<10))temp=tem*10;
- в 189 и 190 строках
Код: Выделить всё
if(minus1&(tem1>=9.9))temp1=tem1;
if(minus1&(tem1<=9.9))temp1=tem1*10;
//исправить на
if(minus1&(tem1>=10))temp1=tem1;
if(minus1&(tem1<10))temp1=tem1*10;
Прошивка с исправленной "Проблемой -9.9". Порядок портов как в оригинале. Коррекция первого датчика убрана. Период опроса датчиков 2 сек.
Не забываем отписываться о результатах применения моих поделок

Re: Двухканальный термометр на AtMega8
Добавлено: Вт янв 26, 2016 08:56:43
Iggis
Iggis писал(а):было так:

Теперь, после переназначения портов, на печатке все ровненько

Re: Двухканальный термометр на AtMega8
Добавлено: Вт янв 26, 2016 22:35:02
Stalker_W
Генератор кода в Экселе - это, простите за каламбур, ат-мегАоригианлно! мяу!

Re: Двухканальный термометр на AtMega8
Добавлено: Ср янв 27, 2016 22:41:38
OLIGARX
Iggis
Спс за прошивку с убранным "косячком -9.9___-09 "
залил, тестирую вторые сутки- полёт нормальный
Re: Двухканальный термометр на AtMega8
Добавлено: Вс фев 21, 2016 22:10:29
хвост
Да погорячился я, про погрешность в +6 градусов. Показания были 28 дома, не поверил, а проверить нечем было, когда нашёл градусник оказалось правда. Собрал две штуки.

Re: Двухканальный термометр на AtMega8
Добавлено: Пн мар 21, 2016 09:41:01
Iggis
Re: Двухканальный термометр на AtMega8
Добавлено: Сб мар 26, 2016 15:52:28
Aleksandr0411
А как установить фьюзы в uniprof?
Re: Двухканальный термометр на AtMega8
Добавлено: Ср мар 30, 2016 18:53:19
хвост
Aleksandr0411 Автор очень хорошо описал установку фьюз в статье там и картинка есть. Повторяю его слова;Для выставления фьюзов в других программах я пользуюсь универсальным правилом. Считываем фьюзы нового МК и смотрим на фьюз RSTDISBL. Если на нем нет галочки (как в CodeVision и как на скриншоте), то все галочки ставим также. А вот если на этом фьюзе есть галочка, то все фьюзы нужно выставить инверсно, то есть наоборот. Фьюз RSTDISBL никогда не трогайте. Если его изменить, то прошивка МК станет невозможна.