kd_Rash 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 (изменено) · Жалоба ADC.rar Автор, без схемы входа, значений резисторов в плечах делителя ADC и частоты ADC(какой делитель на какой частоте проца), типа канала (обычный/диф.), Ваш вопрос чисто абстрактный... вкратце, конечно Изменено 7 ноября, 2007 пользователем kd_Rash Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
a_electronic 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Интересный креатиффчик... Непонятно тока зачем делать четыре измерения, заполняя буфер, а потом на пятый раз сдвигать все значения. При этом идет усреднение каждый раз. Может, стоит просто зациклить заполнение фильтра и каждый раз усреднять - получится обычный нерекурсивный фильтр. А засада, может кроется в объявлениях переменных - есть у меня подозрение, что компилятор при входе в прерывание затрет переменные в 0. Надо сгенерировать ассемблерный код и посмотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Судя по схеме у Вас есть много резервов для улучшения качества оцифровки. 1. Входной делитель с конденсатором приблизить к входу (смысл не масштабировать помеху). 2. Неиспользуемые входы АЦП шные посадить лучше на землю. 3. Резистор в делителе 7,5 кОм уменьшить, а опорное поднять. 4. На AVCC поставить конденсатор. 5. +5 В на коллекторы транзисторов отвести отдельно с 7805. Это, что сразу бросилось в глаза. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба А засада, может кроется в объявлениях переменных - есть у меня подозрение, что компилятор при входе в прерывание затрет переменные в 0. Надо сгенерировать ассемблерный код и посмотреть.Там вобще-то static стоит, компилятор который в такой ситуации будет обнулять переменные нужно просто выкинуть... Автору: - кондер на AVcc обязательно - непонятно зачем между +5 и Avcc резистор 100 Ом, атмел рекомендует: 2. The AVCC pin on the device should be connected to the digital VCC supply voltage via an LC network as shown in Figure 109. L=10uH C=100nF - неясно какая частота MCU, но например для 8MHz и выбраном Вами делителе 16 получаем fADC=8000000/16=500000 - многовато будет для 10bit точности. - в тексте прерывания строка if (t==0) {x1=ADCrez;} не будет работать никогда, тк перед ней стоит t++; и вобще не очень понятно что Вы хотели сделать... если скользящее среднее, то там его нету... - непонятно как объявлены ADCrez и k. P.S. текст проги пишите в текстовом виде Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба L=10uH C=100nF[/i] Поддерживаю, желательно так сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 (изменено) · Жалоба вкратце, конечно 1. Да поставьте же ж Вы на АВЦЦ кондюка 2,2мкф! И, BTW, можно и без L=10uH. Сам ставлю 100 Ом ( из жадности ) и ниче... 2. Почему на AREF так мало (100н)? Никогда так не делал - все больше 10мкФ. 3. Так у Вас, оказывается, можно дрыгать ногами в одном месте программы! Изменено 7 ноября, 2007 пользователем _Pasha Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
artemkad 81 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба вкратце, конечно 1. Да поставьте же ж Вы на АВЦЦ кондюка 2,2мкф! Именно. Ну хоть какой-то на 18 ноге поставь!!! 3. Резистор в делителе 7,5 кОм уменьшить, а опорное поднять. Лучше ТАК не делай ;) . Особенно в части понижения резистора... 5. +5 В на коллекторы транзисторов отвести отдельно с 7805. То-же лучше не так. Переподключи коллекторы на +12 (туда где делитель) и замени 7805 на 78L05 (пусть лучше греется 4-е транзистора чем 1 стабилизатор). Можешь поставить по резистору в цепь коллектора. Повесь резисторы на землю на базах транзисторов. Ну и самый неприятный вопрос заключается в том, что полный ток индикатора течет через землю твоего МК.... Не думаю, что это улучшит точность измерения напряжения измеряемого относительно той-же земли... Перенеси электролит с выхода стабилизатора на вход. Поставь на входе стабилизатора керамику. Резистор и электролит по цепи Reset выбрось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 7 ноября, 2007 Опубликовано 7 ноября, 2007 · Жалоба Лучше ТАК не делай ;) . Особенно в части понижения резистора... Объясните поподробнее почему. Туда не ходи, сюда ходи. Снег башка попадет - совсем мертвый будешь. (Джентальмены удачи.):) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kd_Rash 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 (изменено) · Жалоба спасибо всем! на ADC0 и на AREF поставил по кондеру по 2 мкф - не помогло ADCrez и k - глобальные t++ перенес, ошибся короче разводка не очень удачная - надо как-то программным путем. а мое усреднение не очень устраивает, т.к. изменения напряжения показываются с задежкой да, забыл сказать, до этого у меня стояла мега8 - было все ок и на схеме только показал работу АЦП, остальную переферию убрал для простоты. т. ч. все ноги у меги заняты повторюсь - стояла мега8 и без всякого усреднения напряжение не перескакивало. выпаял ее и поставил 168-ю, изменив делитель под опорное 1,1В- 7,5 и 0.5 кОм (у 8меги - 2,56 было и в делители стояли 7,5 и 1 кОм)+ 2мкф. Изменено 8 ноября, 2007 пользователем kd_Rash Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба короче разводка не очень удачная - надо как-то программным путем. а мое усреднение не очень устраивает, т.к. изменения напряжения показываются с задежкой А какая задержка и на что она влияет ? Если только на вывод на дисплей, то не надо так расстраиваться. Когда от изменений на дисплее рябит в глазах - это очень плохо. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kd_Rash 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба А какая задержка и на что она влияет ? Если только на вывод на дисплей, то не надо так расстраиваться. Когда от изменений на дисплее рябит в глазах - это очень плохо. :) да, но почему с мегой8-ой такого не было :crying: хотелось бы понять(найти) причину Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GDI 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба А вы посчитайте какая постоянная времени получилась(да и было) у вашей входной цепи на ADC0 и прикиньте сколько усреднений вы успеете сделать пока установится новое напряжение на входе АЦП. Я думаю, что именно из-за этого у вас получаются задержки покизаний, а не из-за того что вы делаете программное усреднение. Кстати у атмела есть апноут про оверсемплинг - там рассказано как при усреднении можно получить дополнительные разряды преобразования АЦП, если мне не изменяет память если на 16 измерений получать 1 результат, то можно вытянуть один лишний разряд, т.е. получить 11бит преобразование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба если мне не изменяет память если на 16 измерений получать 1 результат, то можно вытянуть один лишний разряд, т.е. получить 11бит преобразование Здесь зависимость корень квадратный из количества показаний. Т.е. Сделав 100 усреднений, повысим точность в 10 раз. PS. Вот ссылка на обсуждение цифровой фильтрации http://electronix.ru/forum/index.php?showt...4068&st=15# Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GDI 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Сделав 100 усреднений, повысим точность в 10 раз Нет, не так, опять же по памяти, при 256 измерениях получается 12 бит, а это всего в 4 раза против исходных 10бит, это цыфры из апнота атмеловского, там же есть и пример. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexander55 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Нет, не так, опять же по памяти, при 256 измерениях получается 12 бит, а это всего в 4 раза против исходных 10бит, это цыфры из апнота атмеловского, там же есть и пример. А если считать исходно 8 бит (а 2 бита от лукавого), то и получается в 16 раз (а 2 бита от лукавого). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться