реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
dac
сообщение Sep 26 2011, 12:12
Сообщение #16


Знающий
****

Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482



а еще попробуйте померить осциллографом, что реально на входах ацп, а то может он совсем не причем.
и не путайте время выборки (sample time, hold time) со временем преобразования (convertion time), с авр не работал, у мсп430, пик, стм32 и стм8 эти вещи задаются раздельно. ну и увеличить паузу, как советовали выше, тоже может помочь.
если другие шоттки не помогли, BAS70 не помогут тоже, можете не искать
Go to the top of the page
 
+Quote Post
hd44780
сообщение Sep 27 2011, 10:19
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Осциллографом глядел миллион раз. Когда нагрузки нет - на ADC2 идеально ровная полоса 2.5в.

Переделал алгоритм, теперь использует прерывания АЦП и ждёт 50 нс после переключения мультиплексора - ещё хуже стало.
Теперь при полном отсутствии сигнала и по напряжению и по току показывает 0.1в и 0.4-0.5в соответственно.

Я иссяк sad.gif . Пошёл менять АЦП на MCP3202....


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Sep 27 2011, 18:05
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Как-то натыкался на взаимовлияние каналов. Лечилось или полным отказом от sleep-режима или холостым преобразованием при переключении канала. Последнее как по мне проще всего делать выключением АЦП в начале прерывания, а затем включением при запуске. Тогда АЦП делает полный цикл в 25 тактов, что эквивалентно первому выброшенному.
Что-то типа такого:

Код
#define ADCSRA_ON     (1 << ADEN)|(1 << ADIF)|(1 << ADIE)|(1<<ADSC)|(1<<ADPS1)    
#define ADCSRA_OFF     (1 << ADIF)    // выключение АЦП    

__interrupt void ADC_INT (void)
{
  unsigned int adc = ADC;            // Считываем значение
//.....
  ADCSRA = ADCSRA_OFF;                //полное отключение АЦП
//.....
  {
//.....
    ADMUX = MUX_12V_IN;
//.....
  }

//.....
    ADCSRA=ADCSRA_ON;
    return;
};



Цитата
// Read the AD conversion result
word read_adc(byte adc_input)
{
ADMUX=adc_input;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);

// Start the AD conversion (ADSC)
ADCSRA|=0x40;

// Wait for the AD conversion to complete (ADIF)
while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

// Обнуляем мл. бит
return ADCW&0xFFFE;
} // read_adc

Функция read_adc сгенерирована генератором кода CvAVR. Я её не менял.

Зря не меняли. Она оставляет работать АЦП после преобразования и при этом не стирает бит флага прерывания при запуске нового преобразования.
Откуда уверенность, что это:
Код
// Wait for the AD conversion to complete (ADIF)
while ((ADCSRA & 0x10)==0);

ловит результат этого преобразования, а не предыдущего - уже готового на момент входа в процедуру???
Go to the top of the page
 
+Quote Post
Клим
сообщение Sep 28 2011, 03:50
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(hd44780 @ Sep 27 2011, 13:19) *
Осциллографом глядел миллион раз. Когда нагрузки нет - на ADC2 идеально ровная полоса 2.5в.

Ровная... не ровная...
Что на ADC2 относительно ADC0 ?
Что именно выдает АЦП? (не в вольтах)
Какая опора, все таки, AVCC или AREF?
Если AREF, то какое там напряжение?
И вообще, схема подключения? А то "все стандартно", в моем понимании - это использование внутренней опоры с кондесатором на AREF.
Цитата
Переделал алгоритм, теперь использует прерывания АЦП и ждёт 50 нс после переключения мультиплексора - ещё хуже стало.
Теперь при полном отсутствии сигнала и по напряжению и по току показывает 0.1в и 0.4-0.5в соответственно.

Т.е. после программных изменений "влияние каналов друг на друга" стало еще больше" ???
Go to the top of the page
 
+Quote Post
-SANYCH-
сообщение Sep 28 2011, 06:55
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 6-12-05
Пользователь №: 11 864



Сначала не обратил внимание но когда присмотрелся то увидел что Вы измеряете сигнал через 100к резистор. Если это так то АЦП и будет плясать.
Go to the top of the page
 
+Quote Post
Клим
сообщение Sep 28 2011, 08:00
Сообщение #21


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(-SANYCH- @ Sep 28 2011, 09:55) *
Сначала не обратил внимание но когда присмотрелся то увидел что Вы измеряете сигнал через 100к резистор. Если это так то АЦП и будет плясать.

Ну он уже написал, что эти резисторы убрал.
Мне больше неясно, почему напряжение средней точки меряется на входе ОУ, а не на выходе.
назначение резистора в 1М мне тоже непонятно.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Sep 28 2011, 08:08
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(Клим @ Sep 28 2011, 11:00) *
назначение резистора в 1М мне тоже непонятно.


Это я притягивал вход АЦП к земле. Думал, там какие-то наводки в отсутствии сигнала. Видел такое решение с промышленно выпускаемых приборах. Не помогло оно ...
Резисторов в 100кил на входах уже нет. Одни диоды остались.

Опора - AREF=VCC=5в со стабилизатора. Кондёр, там как в ДШ есть. Только дросселя нету.

Остальное, думаю до вечера проверю, отпишусь.

Сообщение отредактировал hd44780 - Sep 28 2011, 08:11


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Lexdaw
сообщение Sep 29 2011, 07:06
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 87
Регистрация: 5-02-08
Пользователь №: 34 772



Вы будете смеятся ,но в одном из приборов взаимовлияние устранил увеличением частоты преобразования.Т.е. был делитель 1/128 после смены на 1/32 всё заработало.
Go to the top of the page
 
+Quote Post
SAWushka
сообщение Sep 29 2011, 09:41
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 1-12-07
Пользователь №: 32 868



Не по делу, так как все что мог придумть уже посоветовали.
Какой трансформатор используете в качестве датчика напряжения (T3)? Решаю похожую задачу.
Описываемые вами эфекты встречал, но все они лечились двойным опросом, причем запускаем первое преобразование сразу после переключения канала.
Как предположение - возможно компилятор "оптимизировал" это дейтсвие в вашем случае?

Сообщение отредактировал SAWushka - Sep 29 2011, 09:43
Go to the top of the page
 
+Quote Post
hd44780
сообщение Sep 29 2011, 13:27
Сообщение #25


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(SAWushka @ Sep 29 2011, 12:41) *
Какой трансформатор используете в качестве датчика напряжения (T3)?


Обычный, как в БП. Использовал сперва 2 транса (один на питание, 2-й для измерения), потом купил какую-то китайчатину с 2-мя независимыми вторичками. На нём написано T08339A. 2 вторички по 15в.
Никакой разницы не заметил. Только R2 подкрутил, чтобы синусоида была в границах где-то 0.5-4.5в и всё.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
hd44780
сообщение Sep 29 2011, 15:12
Сообщение #26


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Вот изобразил текущую схему.

Может уже оффтоп в данной теме.

Выдернул из колодки контроллер и снял осциллограмму на ADC2 oтносительно ADC0 - рис 1. Рис 2 - просто увеличенный кусок.
Вольтметр AC показывает 0.03-0.04в. При подключении T3 становится 0.06-0.07в.
Откуда лезут эти 50 Гц, не могу понять...
Питание смотрел, оно чистое.

Осциллограф - цифровой UNI-T UT-81B. Всё ничего, но в программе, на скриншотах размерности по осям хрен знает какие ...

Сообщение отредактировал hd44780 - Sep 29 2011, 15:47
Эскизы прикрепленных изображений
 Р Р€Р С˜Р ВµР Р…ьшено Р Т‘Р С• 54%
Прикрепленное изображение
371 x 287 (9.2 килобайт)
 Р Р€Р С˜Р ВµР Р…ьшено Р Т‘Р С• 54%
Прикрепленное изображение
371 x 287 (7.99 килобайт)
 Р Р€Р С˜Р ВµР Р…ьшено Р Т‘Р С• 87%
Прикрепленное изображение
1298 x 927 (19.97 килобайт)
 


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
defunct
сообщение Oct 1 2011, 21:57
Сообщение #27


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Пропускайте первое измерение после смены канала.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Oct 9 2011, 16:24
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Всё работает.
Сделал 50 нс ожидания после переключения канала и 3 холостых выборки. АЦП без прерываний, по опросу. Пока нормально.

Спасибо.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 12:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01491 секунд с 7
ELECTRONIX ©2004-2016