Форум РадиоКот https://radiokot.ru/forum/ |
|
Вольтметр-Амперметр на pic16f819 + seg_7x4digits https://radiokot.ru/forum/viewtopic.php?f=58&t=140871 |
Страница 1 из 1 |
Автор: | EclipsV [ Пт янв 20, 2017 04:10:32 ] | ||
Заголовок сообщения: | Вольтметр-Амперметр на pic16f819 + seg_7x4digits | ||
Доброго времени суток собрал вольтметр-амперметр на PIC16F819 + четырехразрядный 7-ми сегментный индикатор для своего зарядного устройства. Приборчик измеряет ток и напряжение с датчиков,выводит на индикатор попеременно каждые 4 сек.Если какая-то величина изменяется быстрее, чем установлено то показывает только её.Если ток изменяется больше чем +-25%, то показывает только ток.Для напряжения установка +-12,5%. В приоритете ток, т.к. делал для зарядного. В устройстве использовано два аналоговых канала, соответственно на ток и напряжение.Датчик тока шунт 5А/75mV + ОУ LM2904 в неинвертир. режиме усиления, преимущество данного ОУ в том,что при однополярном питании усиление от 0 вольт. Датчик напряжения - резистивный делитель + ОУ , оу использовал что бы не пропадал зря. Опорное напряжение рез.делитель + кондер, т.к. не требуется точных измерений.Выбирал из условия максимальное напряжение на выходе ОУ + 2-5% запас.(В районе 4 вольт.) По программе заметки: -отображение на дисплее происходит в прерываниях,так же и считывание с ацп. -каналы попеременно переключаются в прерывании,частота опроса одного канала около 250 Гц. -для более удобного отображения используется оверсем...(забыл как называется). Увеличиваем разряд ацп с 8 bit до 10 bit. Почему с 8 бит, у меня компилятор XC8 не хочет считывать ADRESL, поэтому установил левое выравнивание и читаю только ADRESH.В планах было с 10 бит до 12 бит увеличить.Кусок программы остался в проекте в комментах. Использовал простенький цифровой фильтр НЧ (RC), иначе неадекватная реакция девайса. Передаточная фильтра: Din = Din + adc - Dout Dout = Din/K K=T*SPS T=RC Fсреза=(1/(2*пи*R*C) Что бы успевал МК считать деление, сделал на сдвиге регистра для тока и напряжения (>>4=16,коэффициент К). Fсреза получилось около 2-3Гц.Поэтому показания медленно растут(относительно все). -выставление точки автоматическое с первого разряда (0.00В>>00.0В>>000В аналогично для тока). Вот тут есть камешек подводный, если в выражении присутствует неопределенный тип переменной,ниже пример из программы: temp[0]=data_real/(100*Mj_temp); В данном случае "100" неопределённый, то выражение (100*Mj_temp) не должно превышать 32768.Если это происходит, то приборчик адекватно показывает до 3.27 при дальнейшем увеличении 3.33>>4.44 и т.д. Этого можно избежать определив тип "100" большим.Для моих условий эксплуатации этого не требовалось и я оставил так. Питание обычный LM7805+стандартный набор кондеров на выходе. Вывод порта RA2 использовал по своему назначению, в программе его нет. У меня главный вопрос: как в XC8 прописать FOSC=INTIO2, в таком случае компилятор выдает ошибку.Я прописал FOSC=0x30 и все в принципе ок. Спасибо подсказали, в проекте поправил, перезалил. Подскажите почему ADRESL не могу считать, в программе все нормально. Дизассемблирование проверял, два раза считывается ADRESH? ![]() В файлах сам проект приборчика + схема.
|
Автор: | Vano79 [ Пт янв 20, 2017 08:53:56 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
Дичь! EclipsV писал(а): У меня главный вопрос: как в XC8 прописать FOSC.. Как и всегда, ищем в этом ХС описание чипа.Цитата: FOSC = Oscillator Selection bits
EXTRCCLK EXTRC oscillator; CLKO function on RA6/OSC2/CLKO pin (aliases: _EXTRC_CLKOUT) EXTRCIO EXTRC oscillator; port I/O function on RA6/OSC2/CLKO pin (aliases: _EXTRC_IO) INTOSCCLK INTRC oscillator; CLKO function on RA6/OSC2/CLKO pin and port I/O function on RA7/OSC1/CLKI pin (aliases: _INTRC_CLKOUT) INTOSCIO INTRC oscillator; port I/O function on both RA6/OSC2/CLKO pin and RA7/OSC1/CLKI pin (aliases: _INTRC_IO) EC EXTCLK; port I/O function on RA6/OSC2/CLKO pin (aliases: _EXTCLK) HS HS oscillator (aliases: _HS_OSC) XT XT oscillator (aliases: _XT_OSC) LP LP oscillator (aliases: _LP_OSC) |
Автор: | EclipsV [ Пт янв 20, 2017 09:16:04 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
FOSC=INTOSCIO Помогло.Спасибо! Подскажите документ и страницу, где описано. |
Автор: | Vano79 [ Пт янв 20, 2017 09:24:34 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
EclipsV писал(а): Подскажите документ и страницу, где описано. MPLAB_XC8_C_Compiler_User_Guide.pdf стр. 0 - 141 - 5хх ![]() |
Автор: | Аlex [ Пт янв 20, 2017 09:30:32 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
По конфигам - ".../docs/pic_chipinfo.html" |
Автор: | -=Vovka=- [ Пт янв 20, 2017 13:48:49 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
"Понравился" вывод на индикатор: Код: case 0: A=1,B=1,C=1,D=1,E=1,F=1,G=0; Раз уж для индикатора используется весь порт, то не проще было выводить в порт байт? Да и архив от мусора почистить не мешало бы... |
Автор: | EclipsV [ Пт янв 20, 2017 15:06:06 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
Конечно проще, и быстрее, и меньше памяти жрет...В оригинале для себя, в порт писал значение.Сделал так для наглядности.Думаю надо вернуть прежний нормальный вид, а в комментариях дописать уже А=1,В=1 и т.д. Спасибо, за поправку так и сделаю) А какие соображения по поводу отказа компилятора читать ADRESL?Эмулятор(SIM) в МPLAB IDE 8.92 нормально все показывает. |
Автор: | Vano79 [ Пт янв 20, 2017 15:44:52 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
EclipsV писал(а): так для наглядности. ![]() EclipsV писал(а): А какие соображения по поводу отказа компилятора читать ADRESL? Нет такого отказа.
|
Автор: | pcb432 [ Пт янв 20, 2017 18:44:20 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
Удобнее наверное видеть сразу и напряжение и ток, и не гадать что там вдруг появилось и мигает на дисплее. |
Автор: | Zhuk72 [ Вс янв 22, 2017 14:46:11 ] |
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits |
EclipsV писал(а): Подскажите почему ADRESL не могу считать, в программе все нормально. Дизассемблирование проверял, два раза считывается ADRESH? Скорее всего вы не заметили переключение банков. Старший и младший регистры АЦП прописаны в параллельных адресах, но в разных банках. |
Автор: | EclipsV [ Пт мар 31, 2017 03:35:35 ] | ||
Заголовок сообщения: | Re: Вольтметр-Амперметр на pic16f819 + seg_7x4digits | ||
Поправил проект, была ошибка в выводе на дисплей информации.Изменил считывание из АЦП, только старшие 8 бит. Простым усреднением увеличил до 11 бит. Частоту среза изменил fвд около 1,5 Гц.
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |