- Необходимые компоненты:
- Описание:
- Принципиальная схема и рабочее объяснение:
- Проектирование схем и печатных плат с использованием EasyEDA:
- Расчет и заказ образцов печатных плат онлайн:
- Объяснение программирования:
В этом проекте мы собираемся создать систему мониторинга автомобильных аккумуляторов на базе PIC на печатной плате. Здесь мы разработали печатную плату с помощью онлайн-симулятора печатных плат EASYEDA и конструктора. Эта схема контроля автомобильного аккумулятора используется для контроля мощности автомобильного аккумулятора, просто подключив его к розетке на приборной панели автомобиля. На печатной плате также есть возможность использовать ее в качестве инструмента для измерения напряжения или вольтметра без использования автомобильного зарядного устройства USB. Мы прикрепили здесь клеммную колодку для измерения напряжения других источников питания, просто подключив к ней два провода от источника питания.
Необходимые компоненты:
- Микроконтроллер PIC PIC18F2520 -1
- Сборная печатная плата -1
- Разъем USB -1
- 2-контактный клеммный разъем (опционально) -1
- Семисегментный дисплей с общим анодом (4 в 1) -1
- BC557 Транзистор -4
- Резистор 1к -6
- 2к резистор -1
- Резистор 100R -8
- Конденсатор 1000 мкФ -1
- Конденсатор 10 мкФ -1
- 28-контактная база IC -1
- женские палочки -1
- 7805 Регулятор напряжения -1
- Автомобильное зарядное устройство USB -1
- Светодиод -1
- Стабилитрон 5.1v -2
- USB-кабель (тип B или совместим с Arduino UNO) -1
- Кристалл 20 МГц -1
- Конденсатор 33пФ -2
Описание:
Как правило, не важно каждый раз измерять заряд аккумулятора автомобиля, но нам часто необходимо знать напряжение аккумулятора во время зарядки, чтобы проверить, заряжается он или нет. Этим мы можем защитить аккумулятор от отказа из-за неисправной системы зарядки. Напряжение автомобильного аккумулятора 12В во время зарядки составляет около 13,7В. Таким образом, мы можем определить, хорошо ли заряжается наш аккумулятор, и выяснить причины отказа аккумулятора. В этом проекте мы собираемся реализовать измеритель напряжения для автомобильного аккумулятора с помощью микроконтроллера PIC. Автомобильный прикуриватель или автомобильное USB-зарядное устройство используется для подачи напряжения аккумулятора на вывод АЦП микроконтроллера с помощью схемы делителя напряжения. Затем четырехзначный семисегментный дисплейиспользуется для отображения значения напряжения батареи. Эта схема может измерять напряжение до 15 В.
Когда автомобильный аккумулятор заряжается, напряжение на клеммах аккумулятора фактически исходит от генератора / выпрямителя, поэтому система показывает 13,7 вольт. Но когда аккумулятор не заряжается или двигатель автомобиля не работает, напряжение на клемме аккумулятора соответствует фактическому напряжению аккумулятора около 12 В.
Мы также можем использовать ту же схему для измерения напряжения других источников питания до 15 В. Для этого мы впаяли клеммную колодку (пластиковый блок зеленого цвета) в печатную плату, где вы можете подключить два провода от источника питания и контролировать напряжение. Посмотрите видео в конце, где мы продемонстрировали это, измерив напряжение переменного источника питания, USB-блока питания и адаптера переменного / постоянного тока на 12 В. Также проверьте простую цепь монитора батареи и цепь зарядного устройства 12 В.
Принципиальная схема и рабочее объяснение:
В этой схеме контроля напряжения аккумулятора мы считали напряжение автомобильного аккумулятора с помощью встроенного аналогового вывода микроконтроллера PIC, а здесь мы выбрали вывод AN0 (28) микроконтроллера через схему делителя напряжения. Для защиты также используется стабилитрон на 5,1 В.
Семисегментный дисплей 4 в 1 используется для отображения мгновенного значения напряжения автомобильного аккумулятора, подключенного к портам PORTB и PORTC микроконтроллера. Регулятор напряжения 5 В, а именно LM7805, используется для питания всей цепи, включая семисегментные дисплеи. Кварцевый генератор 20 МГц используется для синхронизации микроконтроллера. Схема питается от самого автомобильного зарядного устройства USB с помощью LM7805. Мы добавили порт USB на печатную плату, чтобы мы могли напрямую подключить автомобильное зарядное устройство USB к цепи.
Автомобильное зарядное устройство USB или прикуриватель обеспечивает регулируемое питание 5 В от автомобильной розетки на 12 В, но нам нужно измерить фактическое напряжение автомобильного аккумулятора, поэтому мы настроили автомобильное зарядное устройство. Вам нужно открыть автомобильное зарядное устройство USB, затем найти клеммы 5 В (выход) и 12 В (вход), а затем удалить соединение 5 В, протерев его наждачной бумагой или каким-либо твердым предметом, и замкнуть выходной разъем USB на 12 В. Сначала откройте соединение 5 В от порта USB в автомобильном зарядном устройстве USB, а затем подключите 12 В к порту USB, к которому было подключено 5 В. Как показано на рисунке ниже, мы вырезали соединение, обведенное красным кружком, оно может отличаться от вашего автомобильного зарядного устройства.
Чтобы настроить здесь АЦП, мы выбрали аналоговый вывод AN0 с внутренним опорным напряжением 5 В и частотой f / 32 для преобразования АЦП.
Для расчета напряжения автомобильного аккумулятора по значению АЦП мы использовали следующую формулу:
Напряжение = (значение АЦП / фактор резистор) * Источник опорного напряжения Где: Значение АЦП = выход делителя напряжения (преобразуется в цифровой с помощью микроконтроллера) Резистор коэффициент = 1023,0 / (R2 / R1 + R2) // 1023 максимальное значение АЦП (10- бит) опорное напряжение 5 вольт = // ссылки внутреннего 5v выбран
Расчет коэффициента резистора:
В этом проекте мы измеряем напряжение автомобильного аккумулятора, которое (обычно) составляет около 12-14 В. Итак, мы выполнили этот проект, предполагая, что максимальное напряжение 15 В означает, что эта система может считывать максимальное напряжение до 15 В.
Итак, в схеме мы использовали резисторы R1 и R2 в части делителя напряжения, и значения следующие:
R1 = 2К
R2 = 1 К
Фактор резистора = 1023.0 * (1000/2000 + 1000)
Фактор резистора = 1023,0 * (1/3)
Фактор резистора = 341,0 до 15 вольт
Итак, окончательная формула для расчета напряжения будет следующей, которую мы использовали в Кодексе, приведенном в конце этой статьи:
Напряжение = (значение АЦП / 341,0) * 5,0
Проектирование схем и печатных плат с использованием EasyEDA:
Чтобы разработать схему для монитора напряжения автомобильного аккумулятора, мы использовали EasyEDA, бесплатный онлайн-инструмент EDA для создания схем и печатных плат без проблем. Ранее мы заказывали несколько печатных плат у EasyEDA и по-прежнему пользуемся их услугами, поскольку мы обнаружили, что весь процесс, от чертежа схем до заказа печатных плат, более удобен и эффективен по сравнению с другими производителями печатных плат. EasyEDA предлагает бесплатные чертежи схем, моделирование, проектирование печатных плат, а также предлагает высококачественные, но недорогие услуги по индивидуальному заказу печатных плат. Ознакомьтесь с полным руководством по использованию Easy EDA для создания схем, макетов печатных плат, моделирования цепей и т. Д.
EasyEDA улучшается день ото дня; они добавили много новых функций и улучшили общий пользовательский интерфейс, что делает EasyEDA проще и удобнее для разработки схем. Вскоре они собираются запустить его настольную версию, которую можно будет загрузить и установить на свой компьютер для автономного использования.
В EasyEDA вы можете сделать свою схему и проекты печатных плат общедоступными, чтобы другие пользователи могли их копировать или редактировать и извлекать выгоду из этого. Мы также сделали общедоступными макеты всех схем и печатных плат для этого монитора напряжения автомобильного аккумулятора, проверьте ссылку ниже:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
Ниже приведен снимок верхнего слоя компоновки печатной платы из EasyEDA. Вы можете просмотреть любой слой (верхний, нижний, Topsilk, снизу и т.д.) печатной платы, выбрав слой в окне «Слои».
Расчет и заказ образцов печатных плат онлайн:
После завершения проектирования печатной платы вы можете щелкнуть значок вывода Fabrication , который перенесет вас на страницу заказа печатной платы. Здесь вы можете просмотреть свою печатную плату в Gerber Viewer или загрузить файлы Gerber вашей печатной платы и отправить их любому производителю. Кроме того, гораздо проще (и дешевле) заказать ее непосредственно в EasyEDA. Здесь вы можете выбрать количество плат, которые вы хотите заказать, сколько слоев меди вам нужно, толщину печатной платы, вес меди и даже цвет печатной платы. После того, как вы выбрали все параметры, нажмите «Сохранить в корзину» и завершите оформление заказа. Через несколько дней вы получите свои печатные платы.
Вы можете напрямую заказать эту печатную плату или загрузить файл Gerber по этой ссылке.
После нескольких дней заказа печатных плат я получил образцы печатных плат.
После получения печатных плат я установил все необходимые компоненты на печатную плату, и, наконец, у нас есть готовая система мониторинга автомобильного аккумулятора, проверьте работу этой схемы в видео, приведенном в конце.
Объяснение программирования:
Программа этого проекта немного сложна для новичков. Для написания этого кода нам понадобятся файлы заголовков. Здесь мы используем MPLAB X IDE для кодирования и компилятор XC для построения и компиляции кода. Код написан на языке C.
В этом коде мы считали напряжение батареи с помощью аналогового вывода, а для управления или отправки данных на 4-значный семисегментный дисплей мы использовали процедуру сервера прерывания по таймеру в микроконтроллере PIC. Все вычисления для измерения напряжения выполняются в основной программе.
Сначала в код мы включили заголовок, а затем настроили микроконтроллер PIC, используя биты конфигурации.
#включают
А затем объявленные переменные и определенные контакты для отображения семи сегментов.
беззнаковое int counter2; позиция символа без знака = 0; символ без знака k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISAbits.TRISA2 #define TRIS_led2 TRISAbits.TRISA5 #define TRIS_led3 TRISAbits.TRISA0 #define TRIS_led4 TRISAbits.TRISA1 #define TRIS_led5 TRISAbits.TRISA………………
Теперь мы создали процедуру прерывания таймера для управления семисегментным дисплеем:
недействительное прерывание low_priority LowIsr (void) {if (TMR0IF == 1) {counter2 ++; if (counter2> = 1) {if (position == 0) {seg1 = 0; сег2 = 1; сег3 = 1; сег4 = 1;………………
Теперь в функции void main () мы инициализировали таймер и прерывание.
ЭДД = 1; // РАЗРЕШЕНИЕ ПЕРЕРЫВОВ GLOBLE PEIE = 1; // флаг прерывания периферийного устройства T0CON = 0b000000000; // значение предделителя put TMR0IE = 1; // разрешение прерывания TMR0IP = 0; // приоритет прерывания TMR0 = 55536; // запускаем счетчик после этого значения TMR0ON = 1;
А затем в то время как петли, мы читаем аналоговый вход на аналоговом входе и вызвать некоторую функцию для расчетов.
а (1) {adc_init (); for (я = 0; я <40; я ++) {Значение = adc_value (); adcValue + = Значение; } adcValue = (float) adcValue / 40.0; преобразовать (adcValue); задержка (100); }
Данная функция adc_init () используется для инициализации АЦП
void adc_init () {ADCON0 = 0b00000011; // выбираем канал АЦП ADCON1 = 0b00001110; // выбираем аналоговый и цифровой i / p ADCON2 = 0b10001010; // время выдержки времени удержания ограничения ADON = 1; }
Данная функция adc_value используется для чтения ввода с аналогового вывода и вычисления напряжения.
float adc_value (void) {float adc_data = 0; while (GO / DONE == 1); // старшее преобразование битовых данных adc value adc_data = (ADRESL) + (ADRESH << 8); // Сохранить 10-битный вывод adc_data = ((adc_data / 342.0) * 5.0); вернуть adc_data; }
Данная функция преобразования используется для преобразования значения напряжения в поддерживаемые значения сегмента.
void convert (float F) {int d = (f * 100); цифра1 = d% 10; d = d / 10; цифра2 = d% 10; d = d / 10; цифра3 = d% 10; цифра4 = d / 10; }
Проверьте Полный код для этого проекта ниже с демонстрационным видео.