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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Taranenko81
Родился
Сообщения: 14
Зарегистрирован: Ср апр 16, 2008 05:31:27

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

Сообщение Taranenko81 »

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

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

Сообщение 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, но это не важно).
Замечу, одно. Для вашего случая лучше использовать внешний источник опорного напряжения, так как внутренний ИОН недостаточно точный.
Вложения
845code_c.zip
(14.95 КБ) 209 скачиваний
Taranenko81
Родился
Сообщения: 14
Зарегистрирован: Ср апр 16, 2008 05:31:27

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

Сообщение Taranenko81 »

Спасибо буду пробовать. По поводу точности -мне и 16 бит более чем достаточно.
zlogic
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Сб дек 17, 2011 07:54:04

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

Сообщение zlogic »

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

Вернуться в «Микроконтроллеры и ПЛИС»