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

 
 
 
Reply to this topicStart new topic
> Mega8535 + TMP37
Metallist64
сообщение Jul 29 2008, 14:33
Сообщение #1


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

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



Здравствуйте!
Подскажите пожалуйста, кто подключал датчики TMP37 на Мегу???
Всего датчиков - 4.
У меня проблема с подключением датчиков (схеме внизу).
1. Без датчиков в результате преобразования имею мусор.
2. Полученное значение всегда разное от 50-350 ??? даже при усреднении.

Может я неправильно входы переклачаю?
ставлю задержку 1мс.

Вот сама функция:

void adc_result (p_menu p_item_name)
{
unsigned char i;
unsigned char channel = 0;
unsigned int result = 0;
while (channel < 4)
{
if(channel == 0) ADMUX = 0b11000000;
if(channel == 1) ADMUX = 0b11000001;
if(channel == 2) ADMUX = 0b11000010;
if(channel == 3) ADMUX = 0b11000011;

delay_ms(1); //задержка 1мс для гарантированного переключения входа мультиплекстора


for (i=0;i<20;i++) // цикл для 20 ти преобразований.
{
ADCSRA.6 = 1; // начало проеобразования

while(ADCSRA.6); // ждем конца преобразования

result += ADCW; // записываем значение
}
p_item_name[channel]->adc = (result / 20) ; // записать среднего от 20ти преобраз-й в p_item_name[index]->adc
channel ++; // перейти к следующему каналу
}};



Помогите пожалуйста. Как получить нормальные показания???
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jul 29 2008, 14:53
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Переменную result на входе в цикл for надо бы обнулять.

А что это за запись p_item_name[channel]->adc=(result/20)?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
sKWO
сообщение Jul 29 2008, 15:06
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(Metallist64 @ Jul 29 2008, 17:33) *
Помогите пожалуйста. Как получить нормальные показания???

попробуйте задерку поставить здесь
Код
for (i=0;i<20;i++) // цикл для 20 ти преобразований.
{
ADCSRA.6 = 1; // начало проеобразования
while(ADCSRA.6); // ждем конца преобразования
result += ADCW; // записываем значение
delay_ms(1);
}

таким образом Вы дадите время на перезаряд ёмкости АЦП, если конечно в этом проблема.
и ещё, как показывает практика достаточно восьми измеряных значений, что даст возможность заменить
деление сдвигом.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Jul 29 2008, 15:46
Сообщение #4


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Запускайте АЦП по таймеру или в режиме свободного преобразования, температура довольно медленно меняется, поэтому так часто мерять ее нет никаго практического значения.


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
domowoj
сообщение Jul 29 2008, 15:55
Сообщение #5


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

Группа: Участник
Сообщений: 1 548
Регистрация: 20-12-07
Из: г.Новосибирск
Пользователь №: 33 486



А АЦП то в Меге работает?
Если вместо датчика какое-нибудь напряж. померить.


--------------------
И на камнях растут деревья!
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 29 2008, 16:12
Сообщение #6


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

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



Переменную result на входе в цикл for надо бы обнулять.
Вот спасибо! Сто раз смотрел и не замечал, поэтому показания увеличивались от канала к каналу.
А что это за запись p_item_name[channel]->adc=(result/20)?

p_item_name[channel]-> значит разыменование указателя на массив структур(name - индекс массива) и обращенение к элементу структуры - adc.

можно конечно конечно по другому, но там 2 раза надо будет разыменовывать.

Спасибо большое!

Сообщение отредактировал Metallist64 - Jul 29 2008, 16:20
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 30 2008, 16:00
Сообщение #7


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

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



Здравствуйте!
Всем большое спасибо!
Теперь можно температуру смотреть нормально :-)
Вот только небольшое вопрос:
- Как можно сделать развязку между датчиками и АЦП?
Насколько я знаю в промышленных вещах стоит гальваническая развязка до 500в.
Большое спасибо!
Go to the top of the page
 
+Quote Post
sKWO
сообщение Jul 30 2008, 19:46
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Цитата(Metallist64 @ Jul 30 2008, 19:00) *
- Как можно сделать развязку между датчиками и АЦП?
Насколько я знаю в промышленных вещах стоит гальваническая развязка до 500в.

Вы о чём это? Лично я первый раз о таком слышу.
Знаю что для сетевух применяют трансформаторы с коеф трансф 1:1, может он подойдёт?
Хотя как по мне зря. Лучше так не делать. опять же ИМХО.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Jul 30 2008, 20:07
Сообщение #9


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(Metallist64 @ Jul 30 2008, 21:00) *
Здравствуйте!
Всем большое спасибо!
Теперь можно температуру смотреть нормально :-)
Вот только небольшое вопрос:
- Как можно сделать развязку между датчиками и АЦП?
Насколько я знаю в промышленных вещах стоит гальваническая развязка до 500в.
Большое спасибо!

Способов много, все зависит от того зачем это вам нужно. Если просто так, то лучше не заморачиваться.


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jul 30 2008, 21:07
Сообщение #10


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

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



А какой смысл в гальванической развязке температурного датчика? Он ведь электрически не связан ни с чем, кроме процессора. Или его надо питать каким-то сторонним напияжением?


--------------------
ASB
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 30 2008, 21:39
Сообщение #11


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Если уж очень надо развязывать, то лучше наверное взять что-нибудь типа TMP03/TMP04.
Они передают температуру одной логической ногой, температура вычисляется из отношения длительностей нуля и единицы. Соответственно, чтобы развязать хватит одного оптрона.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sKWO
сообщение Jul 31 2008, 05:55
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Работал с изолирующим усилителем HCPL-7840 (Agilent Technologies), доволен. Поищите подобные, если этот неустраивает. Или датчики температуры с ШИМ выходом + оптрон + изолированый источник питания (например DU1P0-05S05)


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
Metallist64
сообщение Jul 31 2008, 17:54
Сообщение #13


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

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



Всем большое спасибо!
Обязательно посмотрю варианты предложенные защиты.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:38
Рейтинг@Mail.ru


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