Технический форум
Вернуться   Технический форум > Электроника, самоделки и техника > Форум по электронике


Ответ
 
Опции темы Опции просмотра
Старый 04.12.2016, 20:40   #1 (permalink)
КислыйДядя
Новичок
 
Регистрация: 04.12.2016
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Цифровой фильтр для дельта-сигма АЦП

Аналоговая часть собрана на рисунке ниже, она вроде рабочая. Напряжение изменяем с помощью подстроичного резистора. Но возникли проблемы при обработке сигнала на МК: фиксируются только часть значений и то с погрешностью. Код ниже. В чем может быть дело?
06.gif.5cd3a94b645f076da03c45afa6c34eec.gif

Код:
#include <avr/io.h>
#include "hd44780.h"
#include "hd44780.c"
#include "lcd_cfg.h"
#define PORT_COMP PORTC
#define DDR_COMP DDRC
#define PIN_COMP PINC
#define A_PIN 0
#define B_PIN 1
double i=0;
uint32_t count=0;
float Voltage=0;
void display()
{
    lcd_goto(1,0);
    lcd_puts("V=");
    lcd_goto(1,2);
    lcd_ftos(Voltage, 2);     
}
int main(void)
{
    lcd_init();
    lcd_clrscr();
    DDR_COMP = 0b00000010;
    while(1)
    {
        display();
        if (PIN_COMP & (1 << A_PIN) == 1)
        {
            i++;
            PORT_COMP |= (1<<B_PIN);
        }
        else
            PORT_COMP &= (0<<B_PIN);
        if (count >= 16)
        {
            Voltage = (i/16)*4;
            count = 0;
            i = 0;            
        }
        count++;
    }
}
КислыйДядя вне форума   Ответить с цитированием

Старый 04.12.2016, 20:40
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ознакомьтесь с этими топиками, наверняка тут есть ответ который вам нужен

Цифровой вольтметр
форточка в цифровой мир
Цифровой звукоиндикатор
Цифровой осциллограф
Цифровой тахометр

Старый 05.12.2016, 07:53   #2 (permalink)
grelly
падаван
 
Аватар для grelly
 
Регистрация: 23.01.2013
Сообщений: 739
Сказал(а) спасибо: 307
Поблагодарили 27 раз(а) в 3 сообщениях
Репутация: 10792
По умолчанию

а схема где?
lcd_ftos(Voltage, 2); второй параметр за что отвечает?
на вход аналоговой схемы что подается?
grelly вне форума   Ответить с цитированием
Старый 05.12.2016, 08:38   #3 (permalink)
КислыйДядя
Новичок
 
Регистрация: 04.12.2016
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот схема
18.gif
Второй параметр-это положение на дисплее.
На вход аналоговой части подается напряжение с потенциометра.
КислыйДядя вне форума   Ответить с цитированием
Старый 05.12.2016, 10:18   #4 (permalink)
grelly
падаван
 
Аватар для grelly
 
Регистрация: 23.01.2013
Сообщений: 739
Сказал(а) спасибо: 307
Поблагодарили 27 раз(а) в 3 сообщениях
Репутация: 10792
По умолчанию

Цитата:
Функция lcd_ftos выводит на дисплей числа с плавающей точкой. Параметр “n” указывает сколько символов после точки отображать.
но не суть)
а что за контроллер? при нынешней стоимости контроллеров, городить такой колхоз смысла особого нет. или нужна повышенная точность? опять же точность растет от увеличения выборки, а тут всего 16.
в общем прочитал статью не понял что за действия производятся с вычисленным значением) почему умножается на 4? относительно чего нормируется?
grelly вне форума   Ответить с цитированием
Старый 05.12.2016, 12:19   #5 (permalink)
КислыйДядя
Новичок
 
Регистрация: 04.12.2016
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Контроллер atmega16 и точность важна. А 4 -это величина опорного напряжения.
КислыйДядя вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 05.12.2016, 12:30   #6 (permalink)
grelly
падаван
 
Аватар для grelly
 
Регистрация: 23.01.2013
Сообщений: 739
Сказал(а) спасибо: 307
Поблагодарили 27 раз(а) в 3 сообщениях
Репутация: 10792
По умолчанию

Цитата:
Поскольку роль тактируемого компаратора у нас выполняет МК только в цикле преобразования, вне этого цикла внешняя схема (рис.5) «замирает». Это равносильно тому, что мы разрываем цепь отрицательной обратной связи (ООС), что приводит к уходу интегратора (ОР3 на рис.5) в насыщение до ±Umax. Следовательно, несколько первых тактов модулятор выходит из насыщения в рабочую область, и несколько первых бит могут внести ошибку в результат преобразования. Значит, до входа в цикл необходимо хотя бы попытаться вывести модулятор в рабочую область. Сделать это проще всего, проинвертировав сигнал, идущий от МК к ДСМ. Иными словами, необходимо считать значение выходного порта, проинвертировать его и снова отправить на выход, затем подождать, и только потом входить в цикл
возможно в этом ошибка, особенно учитывая длину выборки. хотя если измерения постоянно идут, то не должно такого быть.
Явных ошибок не вижу, надо смотреть осцилом, мож по питанию помехи идут.
grelly вне форума   Ответить с цитированием
Старый 05.12.2016, 12:31   #7 (permalink)
grelly
падаван
 
Аватар для grelly
 
Регистрация: 23.01.2013
Сообщений: 739
Сказал(а) спасибо: 307
Поблагодарили 27 раз(а) в 3 сообщениях
Репутация: 10792
По умолчанию

а точности родного АЦП не хватает?
grelly вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:36.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.