Страница 3 из 5

Добавлено: Ср июн 25, 2008 21:15:24
ARV
АЦП измеряет мгновенное значение напряжения, которое тестером не измеришь никак. только осциллограф поможет. и тестер, кстати, измеряет не действующее, а средневыпрямленное значение (если тестер, конечно, не true-RMS, а обычный). да и зависимость между амплитудным и действующим напряжениями далеко не всегда просто коэффициент 0,7...

Добавлено: Ср июн 25, 2008 21:22:06
Ежик в тумане
ARV писал(а):АЦП измеряет мгновенное значение напряжения, которое тестером не измеришь никак. только осциллограф поможет. и тестер, кстати, измеряет не действующее, а средневыпрямленное значение (если тестер, конечно, не true-RMS, а обычный). да и зависимость между амплитудным и действующим напряжениями далеко не всегда просто коэффициент 0,7...
а можно здесь немного по подробнее, а то я думаю что ацп одно измеряет, а на самом деле совсем другое напряжение... Буду очень признательна :)

Добавлено: Ср июн 25, 2008 21:25:48
ARV
а чего ж тут поподробнее сказать? тестер меряет долго, грубо говоря несколько периодов... и это нечто усредненное и показывает... а АЦП делает "вырезку" из кривой напряжения, т.е. снимает мгновенную амплитуду в момент измерения... чтобы "показания" АЦП как-то совпали с тестеровыми - надо эти "нарезки" делать долго (и часто-часто) и точно так же "усрединить" (или как-то иначе обработать по алгоритму тестера)...

Добавлено: Ср июн 25, 2008 21:31:07
MetEl
хочется посоветовать метод - "на оборот".
Тоесть, подайте на вход ацп МК то напряжение которое надо и нажмите кнопку запомнить(напишите так).
И не парьтесь вообще с вычислениями (не хорошё конечно...).

Ещё интересно , а откуда вы 4,09В берёте???
Что схема специально такая...???

Добавлено: Ср июн 25, 2008 21:38:56
MetEl
На самом деле, без осцила, тут и делать не чего. При такой ситуации. Вы просто не знаете что у вас на входе мк. Фиг его знает что там после этой микрухи. А пичков или помех тестер не покажет! Усреднит, отфильтрует, не успеет, али ещё как.

Если у вас там частота а вы мериете(тестором) в режиме постоянного замера, то результат на экране, не сказать что бредовый. Но и близко не лежит к правильному. Что то правда похожее от 0,7*U действ.

Ели есть осцил, обязательно посмотрите!!
Ещё раз прошу схему. Т.к. всё новые и новые интересные горизонты в этом тумане...

ЗЫ: Как ребятам не надоело, просто, диву даюсь...

Добавлено: Ср июн 25, 2008 21:45:59
Ежик в тумане
ЭЭЭЭ, ну на счет схемы пока не могу выложить... Тестером я измеряю в режиме переменного напряжения... Конечно же и осциллографом я смотрела сигналы и на входе у-ва и на фильтрах и на их выходе/входе ацп и двумя лучами сразу и значения напряжений измеряла с помощью осциллографа и в ручную и автоматом... осциллограф цифровой тектроникс называется... а без вычислений не получится... к сожалению - это к методу "на оборот"..........

Добавлено: Ср июн 25, 2008 21:52:53
MetEl
Ежик в тумане писал(а):***
ацп, то в программе используются данные только одного регистра ADCH, при этом стоит выравнивание результата по левой границе...
Я не смотрел описалово на мегу8.
Но там точно АЦП 8-м бит?
Или точно, прописаны регистры, чтоб он так работал?
И переменная unsigned char, тогда должна быть.
Вроде 10-ть.
Тогда unsigned int.


Подключите восемь светодиодов и выводите на них значения полученное АЦП. Увидите реально, что "видит" ацп. И сразу поймёте ошибку в программе, или вообще что то новое узнаете(что не редкость). Если есть такая возможность.

Добавлено: Ср июн 25, 2008 21:55:43
Ежик в тумане
Во первых у меня мега 16..
во вторых ацп там 10-ти разрядное. но я использую только 8 разрядов... и переменная у меня unsigned char...

Добавлено: Ср июн 25, 2008 22:10:55
MetEl
изини, попутал.
если ADLAR = 1
то
регистр ADCH ; ADCL
порядок бит 76543210 ; 76543210
разряд 98765432 ;10хххххх

т.е. 0 и 1 биты будут в ADCL. А ты их теряешь!!!
Может я не понятно написал, смотри сдесь -http://www.gaw.ru/html.cgi/txt/doc/micros/avr/arh128/12.htm
Это для атмеги 128, но уверен атмега 16 тоже самое. Проверь если хочешь.
ВНИМАТЕЛЬНО!

Добавлено: Ср июн 25, 2008 22:40:59
Ежик в тумане
Да, правильно я эти 2 бита теряю...
в Вашей ссылке, к стати спасибо за нее огромное, написано в самом конце:
"Левосторонний формат представления результата удобно использовать, если достаточно 8 разрядов. В этом случае 8-разрядный результат хранится в регистре ADCH и, следовательно, чтение регистра ADCL можно не выполнять. При правостороннем формате необходимо сначала считать ADCL, а затем ADCH."
Что я собственно и делаю...

Добавлено: Ср июн 25, 2008 22:47:02
MetEl
тоесть, роботаешь с битами с 7-2 ?
98765432 10
хх765432 10
ххdddddd xx
хх76543210
Я так это понинаю, то что там написано, и в этих долбанных датаШИТах!

Добавлено: Ср июн 25, 2008 22:54:56
Ежик в тумане
Все таки хочу разобраться с напряженем, мой фильтр работает как однополупериодный выпрямитель, т.е. на его выходе только одна положительная полуволна синуса ... Рисовать не охота. попробую на словах объяснить... Если смотреть сигнал осцил. то на входе видим синус ,который относительно оси измерения на осцил. делится на положительную полуволну и отрицательную ровно по полам. Далее на выходе этого фильтра= входе ацп наблюдаем отнсительно земли одну полуволну. но она равна не 1/2 от синуса, а равна 1/2 от синуса+0,7В, эти 0,7В это вроде как кусочек отрицательной полуволны, которая создается за счет падения напряжения на диодах в фильтре ну как то так примерно, т.е. эти 0,7В опущены вниз относительно оси измерения. Не знаю как бы это все по понятней объяснить... Вопрос в том, что измеряет АЦП? Только положительную полуволну или её же но еще +0,7В? я совсем запуталась....

Добавлено: Ср июн 25, 2008 22:58:40
Ежик в тумане
MetEl писал(а):тоесть, роботаешь с битами с 7-2 ?
98765432 10
dddddddd xx

И что ты получаешь?
Вместо числа 4-е , число 1-н?
00000001 00
00000001


ЗЫ: Я так это понинаю, то что там написано, и в этих долбанных датаШИТах!
Если посмотреть в ссылке на таблицу в самом конце текста где написано ADLAR=1, то нетрудно увидеть что я работаю с битам ADC9-ADC2...или я чего то не так понимаю?

Добавлено: Ср июн 25, 2008 23:02:32
MetEl
да , но начинается слово с ADС0 а это 7-й(по порядку) бит ADCL.
Ну смотри.

ADCH ; ADCL
11111111; 11xxxxxx = 1023
11111111 =255.
Но АЦП оцифровал как 1023 а ты думаешь что это 255.
Пнимаешь?

Он работает на 10ть бит! Ты гденить видела какойнить регистр чтоб переводить его работу на 8-м бит.
Нет , я тоже.

Считаю что он всегда выдает 10бит!
А то что там внизу чегото то... это для сверх умов, которые и не такое писали, и процев запрогили больше чем я морковок съел.

Добавлено: Ср июн 25, 2008 23:24:32
Ежик в тумане
Я тоже согласна , что ацп всегда выдает 10бит... но эти 10 бит можно по разному записать и считать... по умолчанию результат сохраняется как при ADLAR=0, т.е. старшие 9 и 8 биты сохраняются в регистре ADCL а биты 7-0 в регистре ADCH. В этом случае первым необходимо считать регистр ADCL , т.к. если начать чтение с ADCH тогда старшие разряды будут потеряны.
Если настроить ацп так ADLAR=1, результат будет выравниваться по левому краю, т.е. старшие разряды 9-2 (наиболее значимые) будут сохраняться в регистре ADCH, а два младших в регистре ADCL... Если для точности преобразования достаточно 8 разрядов. то регистр ADCL можно совсем не считывать... Вот примерно так я понимаю...

Добавлено: Ср июн 25, 2008 23:30:10
MetEl
Может так?

если ADLAR = 0
то
регистр ADCH ; ADCL
порядок бит 76543210 ; 76543210
разряд хххххх98 ; 76543210 //результат АЦП

если ADLAR = 1
то
регистр ADCH ; ADCL
порядок бит 76543210 ; 76543210
разряд 98765432 ; 10хххххх //результат АЦП

Добавлено: Чт июн 26, 2008 00:06:44
MetEl
т.е если нормально(а не левосторонний, как там это называется)
Ститывай только ADCL
76543210
11111111 = 255
Если зачем то не нормально(такой режим назван - левосторонним, зачем то)
То считывай ADCH. и сдвигай(необходимо) его на два бита вправо.
98765432
00111111 то что осталось от 255, но иеет значение = 63
<<2 // сдвигай на два разряда вправо
11111100 = 252 //как ты и хотела, с округлением(потерей) младших двух бит.

Терь можно(нужно) проверить ошибку.
Какие показания и на сколько у тебя отличались.
К примеру 3и В должны были = 187
А программа (не ты, а МК делает то и как ты написала(!)) понимает как 46.
46*0,016=0,8В.
Хотя это не правильный поиск ошибки по результату...

Главное сейчас не забудь, что у тебя 10ть бит и надо 4В/1024 = 0,004
Значит обратно 3В/0,004 = 750 // 0х02 ЕЕ
Т.е всё таки прийдётся использовать два регистра.
unsigned int a;
a=0;
а=ADCL+ADCH; // или а=ADCL|ADCH;

Ну или как там это у тебя выглядывается...)))

Добавлено: Чт июн 26, 2008 00:51:51
MetEl
Вот как это нормально, должно было, написано, быть.

Добавлено: Чт июн 26, 2008 07:55:38
Ежик в тумане
Вы хотите сказать, что даташит на правильно написан?... Вы меня в конец запутали...

Добавлено: Чт июн 26, 2008 09:18:08
ARV
MetEl писал(а):
Ежик в тумане писал(а):*** Если для точности преобразования достаточно 8 разрядов. то регистр ADCL можно совсем не считывать... Вот примерно так я понимаю...
Это ты, ошиблась и навыдумывала, вследствии не правильного изложения и потери смысловой цепочки в этих долбаных датаШИТах!!!
И в том числе не грамотных(не для нашего менталитета(не штампованного сознания)) переводов!!!
И притом, не ты одна!!
1. Ежик в тумане: заблуждаетесь в одном: ADCL и ADCH всегда надо считывать оба, это использовать ненужное необязательно, а вот считывать - только оба.
2. MetE: ошибаетесь. уменьшение разрядности АЦП по желанию разработчика вегда было, есть и будет. И Ежик в тумане абсолютно правильно поступает (если это, конечно, действительно необходимо). Не надо резких высказываний, ибо они в первую очередь применимы к вам.