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

 
 
 
Reply to this topicStart new topic
> Атмега 88 АЦП и мутиплексор, как вывести тактовый сигнал
ikm
сообщение Oct 26 2016, 15:59
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Задача с двух выходов нужно снимать значения. Раньше с этим успешно справлялись 2 канала АЦП на Атмеге 88.
Сейчас на эти выходы нужно поставить более дорогие усилители. И чтобы сэкономить я хочу поставить один на два канала и перед ним простенький мультиплексор на 2 канала.

Код был вот такой:
Код
$this_var = while (adc_accum_cnt < ADC_ACCUM_TIME)
    {
    ADC_ch1_temp = Get_ADC(ADC_CH1);
    if (ADC_ch1_temp > ADC_ch1_max) ADC_ch1_max = ADC_ch1_temp;
    if (ADC_ch1_temp < ADC_ch1_min) ADC_ch1_min = ADC_ch1_temp;
            
    ADC_ch2_temp = Get_ADC(ADC_CH2);
    if (ADC_ch2_temp > ADC_ch2_max) ADC_ch2_max = ADC_ch2_temp;
    if (ADC_ch2_temp < ADC_ch2_min) ADC_ch2_min = ADC_ch2_temp;
    };


Теперь мне для того чтобы перещёлкивать мультиплексором, как я понимаю, нужно поставить в код между каналами АЦП команду, которая будет дергать ножкой "0" и"1". А входы АЦП обоих каналов просто соединить. Для этого не придется переписывать остальной код. Соответственно, когда я получу значения для ch1 я перешелкну и буду считывать значения для канала ch2.
Или второй вариант (более логичный с точки зрения кода): я использую один канал АЦП, и просто в коде определю переменную ADC_ch2_temp = Get_ADC(ADC_CH1).
Но главный вопрос как вывести наружу этот внешний такт, с учётом, что необходимо скорее всего после перехода на этой ноге с "0" на "1" делать задержки, чтобы АЦП не считывал данные пока мультиплексор окончательно не переключится?


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
Den64
сообщение Oct 26 2016, 16:10
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571



В чём проблема не понял. Не хватает выводов АЦП у меги88, поэтому добавляете мультиплексор?
Go to the top of the page
 
+Quote Post
ikm
сообщение Oct 27 2016, 06:35
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Цитата(Den64 @ Oct 26 2016, 19:10) *
В чём проблема не понял. Не хватает выводов АЦП у меги88, поэтому добавляете мультиплексор?

Как бы вам так ответить, чтобы понятно было?
Ну попробую:
В самом начале поста я написал, что хочу с экономить на одном из усилителей. Т.к. раньше на каждый канал АЦП стояли lm358 по 15р штука, а теперь логарифмический по 1т.р.

А проблема в том, что надо написать типа
Код
$this_var =

mult_state_on (); // перевод ножки управления мультиплексором в "1"
...

{
    ADC_ch1_temp = Get_ADC(ADC_CH1);                                                   //считывание АЦП первого канала
    if (ADC_ch1_temp > ADC_ch1_max) ADC_ch1_max = ADC_ch1_temp;
    if (ADC_ch1_temp < ADC_ch1_min) ADC_ch1_min = ADC_ch1_temp;

    mult_state_off ();                                                                                // перевод ножки управления мультиплексором в "0"
            
    ADC_ch2_temp = Get_ADC(ADC_CH2);                                                 //считывание АЦП второго канала
    if (ADC_ch2_temp > ADC_ch2_max) ADC_ch2_max = ADC_ch2_temp;
    if (ADC_ch2_temp < ADC_ch2_min) ADC_ch2_min = ADC_ch2_temp;
    }
;


Но мне кажется должна быть еще задержка чтобы АЦП не считывали пока ключ не переключился.
И не уверен, что можно включать эту команду внутри цикла.


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
Den64
сообщение Oct 27 2016, 07:11
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571



Поставьте delay после изменения состояния вывода мк управляющего мультиплексором.
я так и не понял зачем Вам мультиплексор. Не хватает выводов АЦП у микроконтроллера?
Go to the top of the page
 
+Quote Post
ikm
сообщение Oct 27 2016, 07:16
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Цитата(Den64 @ Oct 27 2016, 10:11) *
Поставьте delay после изменения состояния вывода мк управляющего мультиплексором.
я так и не понял зачем Вам мультиплексор. Не хватает выводов АЦП у микроконтроллера?


Не АЦП даже с излишком.
Просто я не вижу другой схемы если у меня два независимых датчика с которых надо считывать данные и всего один усилитель для них. Т.к. поставить второй усилитель дорого.
Так понятнее?


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
Александр1
сообщение Oct 28 2016, 06:40
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 465
Регистрация: 13-05-15
Из: Запорожье
Пользователь №: 86 663



Цитата(ikm @ Oct 27 2016, 10:16) *
Не АЦП даже с излишком.
...у меня два независимых датчика с которых надо считывать данные и всего один усилитель для них. Т.к. поставить второй усилитель дорого.

Если с датчика сигнал поступает на усилитель, то не будет ли слабый сигнал искажать/зашумлять мультиплексор, подключенный к датчику?
Может сделать по старой схеме: два дешевых усилителя, без коммутации, а всю обработку возложить на ПО? Раз уж стоимость важнее.
Go to the top of the page
 
+Quote Post
ikm
сообщение Oct 28 2016, 07:43
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 891
Регистрация: 25-12-06
Из: С-Пб
Пользователь №: 23 894



Цитата(Александр1 @ Oct 28 2016, 09:40) *
Если с датчика сигнал поступает на усилитель, то не будет ли слабый сигнал искажать/зашумлять мультиплексор, подключенный к датчику?
Может сделать по старой схеме: два дешевых усилителя, без коммутации, а всю обработку возложить на ПО? Раз уж стоимость важнее.


Да я думал об этом, но к сожалению в ДШ не указаны шумы (буду использовать DG419L http://www.vishay.com/docs/71763/dg417l.pdf). Поэтому я пока хочу устранить шумы от переключения программной задержкой. Но может и от них не надо будет ничего придумывать. Т.к. мне нужны среднее значение изменения напряжения, просто на очень большом диапазоне от десятых мВ до десятых В.
И раньше в коде приходилось писать таблицу для каждого под диапазона значений, как раз для обработки. Поэтому проще поставить логарифмический (при чем у меня два вида на макет куплено обычный и trueRMS) и уже смотреть что с ними будет получаться. Так что пички при переключениях могут исчезнуть при переходе в RMS.


--------------------
ОБХОДЯ РАЗЛОЖЕННЫЕ ГРАБЛИ - ТЫ ТЕРЯЕШЬ ДРАГОЦЕННЫЙ ОПЫТ!!!
Go to the top of the page
 
+Quote Post
moon333
сообщение Nov 10 2016, 13:49
Сообщение #8


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

Группа: Участник
Сообщений: 80
Регистрация: 27-01-16
Из: Москва
Пользователь №: 90 218



Цитата(ikm @ Oct 28 2016, 11:43) *
Да я думал об этом, но к сожалению в ДШ не указаны шумы (буду использовать DG419L http://www.vishay.com/docs/71763/dg417l.pdf).S.

В ключах обратите внимание на следующий параметр Charge Injection.
По сути это можно описать как "впрыскивание" заряда во время коммутации, в вашем случае значение этого заряда достаточно мало, и если вам не важна частота сбора данных, то вы можете после коммутации скажем сделать 10 опросов АЦП и 5 из них откинуть.

Ещё многое может зависеть от выходного сопротивления датчика и длины кабеля до датчика.

Сообщение отредактировал moon333 - Nov 10 2016, 13:52
Go to the top of the page
 
+Quote Post

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

 


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


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