Страница 1 из 1

Двухканальный вольтметр на ADuC847+MAX7219

Добавлено: Пт дек 16, 2011 19:22:55
Taranenko81
Давно хотел собрать хороший вольтметр для блока питания. Нашел для этого PIC16F822 и MAX7219. Собрал проект в протеусе и вроде всё устроило. Но тут попался халявный ADuC847 и сразу потекли слюнки глядя на его 24-х битный ADC, а пик ушел в другой девайс. Но вот с написанием проги под него возникли трудности. Если кто писал нечто подобное, и может поделится наработками буду премного благодарен. Для меня пока основными трудностями являются конфигурирование периферии связанной с ADC и вывод данных в SPI. Для пиков писал на CCS C. Там и ADC в визарде сконфигурировать можно. И для SPI примеров куча.
Вкратце о тех задании: 2 канала вольтметра с диапазоном от 0 до 25 вольт (естественно делителем понизится до максимально возможного для ADC). Далее вывод данных через SPI в MAX7219 к которой подключены 2 четырехразрядных семи сегментных светодиодных индикатора. Первый индикатор – напряжение, второй – ток(хотя тут без разницы).
Задача для себя любимого поэтому сроки не жмут, но и растягивать особо тоже не охота.
Всем откликнувшимся заранее огромное спасибо.

Re: Двухканальный вольтметр на ADuC847+MAX7219

Добавлено: Сб дек 17, 2011 08:05:29
zlogic
// Вывод байта в индикатор
void WrDSP(unsigned char byte)
{
// Помещаем байт в регистр данных SPI
SPIDAT = byte;
// Ждём окончания выдачи байта
while(!(SPICON & 0x80));
// Сбрасываем флаг окончания выдачи байта
SPICON &= 0x7f;
}

// Главный цикл программы
void main(void)
{
// Частота ядра = 12.582912MHz
PLLCON = 0x00;
// Запрет выдачи сигнала ALE
PCON |= 0x10;
// Разрешение использования внутренней XRAM
CFG847 = 0x01;

// Включение SPI
SPICON = 0x30;

// Выдача байта в дисплей через SPI
WrDSP(0x00);
// Вечный цикл
while(1);
}

С АЦП можно разобраться на примере от ADI (код приведён для ADUC845, но это не важно).
Замечу, одно. Для вашего случая лучше использовать внешний источник опорного напряжения, так как внутренний ИОН недостаточно точный.

Re: Двухканальный вольтметр на ADuC847+MAX7219

Добавлено: Сб дек 17, 2011 09:16:21
Taranenko81
Спасибо буду пробовать. По поводу точности -мне и 16 бит более чем достаточно.

Re: Двухканальный вольтметр на ADuC847+MAX7219

Добавлено: Сб дек 17, 2011 11:44:40
zlogic
Дело не в битах. Дело в том, что неточный ИОН даёт неверный наклон характеристики преобразования. Вы подадите на вход 5В (проконтролировав это напряжение сторонним высокоточным вольтметром), а ваше устройство выдаст на индикатор, например, 4.98В... В абсолютных измерениях, как у вас, я думаю, это важно. Хотя, вам виднее.
Удачи.