Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Закрытая тема
Опции темы
Непрочитано 19.06.2011, 14:15   #21
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Сообщение от Dimitrij Посмотреть сообщение
Думал, что все закончилось, ан нет.В Proteus все нормально, а в реалях очень прыгает младший разряд +-1.
Выбростье ПРОТЕУС отлаживайте в реале.

ПО поводу что можно сделать - я уже писал про БУФЕР АЦП на 4/8/16/32/64 значения... не обратили внимания. думаете зря о нём писал?
Я ВСЕГДА!!!! фильтрую измерения от АЦП или внешних ножек в буфере, что бы избежать случайных срабатываний. Что то аналогичное подавлению дребезга от клавиш.

И ещё есть алгоритмы вывода на АЛС или ЖКИ которые устраняют плясание младшей цифры.

Сообщение от Dimitrij Посмотреть сообщение
Пока переписывал программу, немного изучил программирование, во всяком случае понял азы.
Это самое быстрое обучение.. когда чтото делаешь что тебе действительно нужно или интересно. А не на примерах от фонаря.
Реклама:
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 19.06.2011 в 14:20.
picavr вне форума  
Непрочитано 19.06.2011, 16:40   #22
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Сообщение от picavr Посмотреть сообщение
есть алгоритмы вывода на АЛС или ЖКИ которые устраняют плясание младшей цифры
А не подскажете алгоритм?
Dimitrij вне форума  
Непрочитано 19.06.2011, 16:54   #23
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,439
Сказал спасибо: 97
Сказали Спасибо 314 раз(а) в 230 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Изменить исходный код программы для ATMEGA8

Ну младший бит, как правило, всегда пляшет на АЦП.

Как вариант - усреднение. Делаете 10 измерений. Результаты измерений складываете. А потом делите на 10. "Плясать" будет заметно меньше.

Ну а чтобы на экране не мельтешило - просто надо выводить на экран не чаще 2-3 раз в секунду.

Можно по-хитрому. Допустим, вывели на экран число 23,6. Если новое показание отличается не более, чем на 0,1 [23,5..23,7], то выводить "старое" число (23,6).

У вас, кстати, в конце цикла while(1) есть задержка.
Уберите там комментарий. Получится 100 задержек по 10 мс. Как раз 1 сек.

Последний раз редактировалось Godzilla82; 19.06.2011 в 16:58.
Godzilla82 вне форума  
Непрочитано 19.06.2011, 18:13   #24
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Сообщение от Godzilla82 Посмотреть сообщение
Получится 100 задержек по 10 мс. Как раз 1 сек.
Спасибо, уже лучше.
Уж попутно вопрос: Сколько не собирал я измерителей на МК, везде одно и то же, если выставить показания по максимуму измерений, то в начале диапазона появляется погрешность -1,2 младших разряда. Т.е, если меряю 50в максимум, то при 5в показывает 4.8-4.9в. Это нормально, или можно как-то устранить?
Dimitrij вне форума  
Непрочитано 19.06.2011, 19:39   #25
Effel
Прохожий
 
Регистрация: 03.08.2009
Сообщений: 4
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
Effel на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Чудес не бывает.
{
tmp=read_adc(ADCMUX_I_SET);
tmp *=255;
tmp /=ADCSETDIV;
return (unsigned char)tmp;
}
При максимальном входном напряжении 5В АЦП выдаст код 1023. Вы его умножаете на 255, и делите на те же 1023, естественно, получаете 255, на индикаторах будут цифры 2,5 и 5. Если будете умножать на 511, либо делить на 511, получите нужные цифры.
Effel вне форума  
Непрочитано 19.06.2011, 21:49   #26
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Сообщение от Dimitrij Посмотреть сообщение
Это нормально, или можно как-то устранить?
Я же писал в своём посте формулу для вычисления напряжения по результату АЦП. Подобрать коефициент.

Зачем спрашивать, если не читать ответы или не использовать их?
Сообщение от Dimitrij Посмотреть сообщение
А не подскажете алгоритм?
Я писал для своих измерителей так:

Выводим измереное значение на индикатор. Сохраняем его в доп ячейке и записываем в счётчик времени 0.
Каждый раз увеличиваем счётчик на счётчик времени 1;
Сравниваем новое значение и сохранёное.

Если значение изменяется на 1 единицу, ждём пока счётчик достигнет времени 0,5(1) сек, и выводим измереное значение на индикатор. Сохраняем его в доп ячейке и записываем в счётчик счётчик времени 0.

Если значение изменяется на 2 единицы, ждём пока счётчик достигнет времени 0,2(0,5) сек, и выводим измереное значение на индикатор. Сохраняем его в доп ячейке и записываем в счётчик счётчик времени 0.

Если значение изменяется на 3-5 единиц, ждём пока счётчик достигнет времени 0,1(0,2) сек, и выводим измереное значение на индикатор. Сохраняем его в доп ячейке и записываем в счётчик счётчик времени 0.

Если значение изменяется на более 5 единиц, ждём пока счётчик достигнет времени 0,05(0,1) сек, и выводим измереное значение на индикатор. Сохраняем его в доп ячейке и записываем в счётчик счётчик времени 0.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 19.06.2011 в 21:53.
picavr вне форума  
Непрочитано 20.06.2011, 00:20   #27
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Сообщение от picavr Посмотреть сообщение
Зачем спрашивать, если не читать ответы или не использовать их?
Зачем сразу пинать, если я все начинаю с нуля.
Не углядел, вникал в суть, а на это
Цитата:
что бы коруглялся меньший разряд правильно
не обратил внимания.

Сообщение от picavr Посмотреть сообщение
Я писал для своих измерителей так:
Я так понял, что это связано с таймерами и сравнением. Это слишком много для начинающего.
Может подскажете, как это делается в СИ?
Dimitrij вне форума  
Непрочитано 20.06.2011, 00:51   #28
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Сообщение от Dimitrij Посмотреть сообщение
Я так понял, что это связано с таймерами и сравнением. Это слишком много для начинающего.
Ну это ваше дело, воспринимать или нет )))
Я например начинал, когда даже дитературы не было на русском по микроконтролерам.. так что до всего доходил по даташитам и своей головой.. форумов ещё небыло практически рускоязычных. О Си, даже речи не было.
Сообщение от Dimitrij Посмотреть сообщение
Может подскажете, как это делается в СИ?
Методов великоое множество как будет душ угодно. Мной всё писалось давно и потому на ассемблере для PIC было написано. На Cи примерно МОЖЕТ выглядеть примерно так:
Код:
#define period_chng_indication //здесь задать период вызова функции индикации в микросекундах в вашей программе
#define time_indication_0=500000 / period_chng_indication //0,5сек
#define time_indication_1=250000 / period_chng_indication //0,25сек
#define time_indication_2=100000 / period_chng_indication //0,1сек
#define time_indication_3=50000 / period_chng_indication //0,05сек

unsigned char previos_data,new_data;
unsigned int cunter_time_indication;

if(previos_data==new_data){cunter_time_indication=  0;return;}
temp=previos_data-new_data;
if(previos_data‹new_data){temp=new_data-previos_data;}

if(temp==1)
{
 if(cunter_time_indication++›time_indication_0)
 {
   previos_data=new_data;
   out_indication(new_data);
   cunter_time_indication=0;
   return;
 }
}

if(temp==2)
{
 if(cunter_time_indication›time_indication_1)
 {
   previos_data=new_data;
   out_indication(new_data);
   cunter_time_indication=0;
   return;
 }
}

if(temp‹5)
{
 if(cunter_time_indication›time_indication_2)
 {
   previos_data=new_data;
   out_indication(new_data);
   cunter_time_indication=0;
   return;
 }
}

if(temp›4)
{
 if(cunter_time_indication›time_indication_3)
 {
   previos_data=new_data;
   out_indication(new_data);
   cunter_time_indication=0;
   return;
 }
}
вам нужно вместо out_indication(new_data) воткнуть вызов функции преобразования из двоичного в двоично-десятичный вид и пересылки в перемменные для функцию вывода на АЛС. И определить период вызова этой функции в начале. Желательно несколько милисек.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов

Последний раз редактировалось picavr; 20.06.2011 в 13:42.
picavr вне форума  
Непрочитано 20.06.2011, 01:07   #29
Dimitrij
Временная регистрация
 
Регистрация: 26.02.2005
Сообщений: 78
Сказал спасибо: 15
Сказали Спасибо 16 раз(а) в 16 сообщении(ях)
Dimitrij на пути к лучшему
По умолчанию Re: Изменить исходный код программы для ATMEGA8

Сообщение от picavr Посмотреть сообщение
На Cи примерно МОЖЕТ выглядеть примерно так:
Спасибо, буду пробовать!
Dimitrij вне форума  
Непрочитано 20.06.2011, 20:13   #30
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,439
Сказал спасибо: 97
Сказали Спасибо 314 раз(а) в 230 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Изменить исходный код программы для ATMEGA8

PHP код:
unsigned int display_tmp 0;
unsigned char time 0;

unsigned int display(unsigned int value)
{
unsigned char update 0;
delta abs(value-display_data);
time++;
switch(
time)
{
case 
1:     if(delta10update 1;    // 100 ms
        
break;

case 
2:    if(delta5update 1;        // 200 ms
        
break;

case 
3:    if(delta3update 1;        // 300 ms
        
break;

case 
4:    if(delta1update 1;        // 400 ms
        
break;
else    
update 1;
}
if(
update)    {
            
display_tmp value;
            
time 0;
            }
return 
display_tmp;

Аналог вышеуказанного. Эту функцию вызывать через 100 мс.
Допустим, функция out(value) выводит значение переменной value на экран. Участок кода примерно такой:

PHP код:
tmp get_adc();
out(tmp); 
Чтобы отображалось согласно алгоритму, надо поменять:

PHP код:
tmp get_adc();
tmp display(tmp);
out(tmp); 

Последний раз редактировалось Godzilla82; 20.06.2011 в 20:18.
Godzilla82 вне форума  
Сказали "Спасибо" Godzilla82
Dimitrij (20.06.2011)
Закрытая тема

Закладки


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Апгрейд и комплектующие для ноутбуков mikesmith Барахолка электронных компонентов 28 17.05.2023 23:25
из DVD в DVD-player реально? Altalimir Микроконтроллеры, АЦП, память и т.д 14 17.09.2007 21:21
[Решено] Сборник перлов любителей кабельщины mikesmith Отвлекитесь, эмбеддеры! 135 14.08.2007 15:49


Часовой пояс GMT +4, время: 14:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot