- Необхідні компоненти:
- Опис:
- Принципова схема та робоче пояснення:
- Дизайн ланцюгів та друкованих плат із використанням EasyEDA:
- Розрахунок та замовлення зразків друкованої плати в режимі онлайн:
- Пояснення програмування:
У цьому проекті ми збираємося створити систему моніторингу автомобільних акумуляторів на основі PIC на друкованій платі. Тут ми розробили друковану плату за допомогою онлайн-симулятора та дизайнера EASYEDA. Ця схема контролю автомобільного акумулятора використовується для контролю за потужністю автомобільної батареї, просто підключивши її до розетки на приладовій панелі автомобіля. PCB також має можливість використовувати його в якості напруги інструмент вимірювання або вольтметра без використання USB автомобільного зарядного пристрою. Ми прикріпили тут клемну колоду для вимірювання напруги інших джерел живлення, просто підключивши до неї два дроти від джерела живлення.
Необхідні компоненти:
- Мікроконтролер PIC18F2520 -1
- Виготовлена плата друкованої плати -1
- USB-роз'єм -1
- 2-контактний роз'єм терміналу (додатково) -1
- Загальний анодний семисегментний дисплей (4 в 1) -1
- BC557 Транзистор -4
- 1k резистор -6
- 2k резистор -1
- Резистор 100R -8
- Конденсатор 1000 мкФ -1
- Конденсатор 10 мкФ -1
- 28-контактний цоколь ІС -1
- жіночі огірки -1
- 7805 Регулятор напруги -1
- Автомобільний зарядний пристрій USB -1
- Світлодіод -1
- Стабілітрон 5.1v -2
- Кабель USB (B-типу або сумісний з Arduino UNO) -1
- Кристал 20 МГц -1
- Конденсатор 33pF -2
Опис:
Як правило, не важливо кожен раз вимірювати заряд акумулятора автомобіля, але нам часто потрібно знати про напругу акумулятора під час зарядки, щоб перевірити, заряджається вона чи ні. Цим ми можемо захистити відмову акумулятора через несправну систему зарядки. Напруга автомобільного акумулятора на 12 В під час зарядки становить близько 13,7 В. Тож ми можемо визначити, чи заряджається наша батарея добре чи ні, і можемо з’ясувати причини несправності акумулятора. У цьому проекті ми збираємось впровадити вимірювач напруги для автомобільного акумулятора за допомогою мікроконтролера PIC. Автомобільна запальничка або автомобільний зарядний пристрій USB використовується для підведення напруги акумулятора до штифта АЦП мікроконтролера за допомогою схеми дільника напруги. Потім 4-значний 7-сегментний дисплейвикористовується для відображення значення напруги акумулятора. Ця схема може вимірювати напругу до 15 В.
Коли автомобільний акумулятор заряджається, тоді напруга на клемах акумулятора фактично надходить від генератора / випрямляча, тому система зчитує 13,7 вольт. Але коли акумулятор не заряджається або двигун автомобіля не ввімкнений, тоді напруга на клемі акумулятора є фактичною напругою акумулятора близько 12 В.
Ми також можемо використовувати ту саму схему для вимірювання напруги інших джерел живлення до 15 В. Для цього ми припаяли клемний блок (пластиковий блок зеленого кольору) до друкованої плати, де ви можете підключити два дроти від джерела живлення та контролювати напругу. Перевірте відео в кінці, де ми його продемонстрували, вимірявши напругу змінного джерела живлення, USB-накопичувача та адаптера змінного струму постійного струму 12 В. Також перевірте просту схему монітора акумулятора та схему зарядного пристрою на 12 В.
Принципова схема та робоче пояснення:
У цьому ланцюзі контролю напруги акумулятора ми прочитали напругу акумулятора автомобіля, використовуючи вбудований аналоговий штифт мікроконтролера PIC, і тут ми обрали штифт AN0 (28) штифт мікроконтролера через ланцюг дільника напруги. Для захисту використовується також стабілітрон 5.1v.
4-в-1-сегментний дисплей використовується для відображення миттєвого значення напруги акумулятора автомобіля, яке підключено до PORTB та PORTC мікроконтролера. Регулятор напруги 5 В, а саме LM7805, використовується для живлення всієї схеми, включаючи сім сегментних дисплеїв. Кристалічний генератор 20 МГц використовується для синхронізації мікроконтролера. Ланцюг живиться від самого автомобільного зарядного пристрою USB за допомогою LM7805. Ми додали USB-порт в друковану плату, щоб ми могли безпосередньо підключити автомобільний зарядний пристрій USB до схеми.
Автомобільний зарядний пристрій USB або прикурювач забезпечує регульоване живлення на 5 В від розетки автомобіля на 12 В, але нам потрібно виміряти фактичну напругу автомобільного акумулятора, тому ми налаштували автомобільний зарядний пристрій. Вам потрібно відкрити автомобільний зарядний пристрій USB, а потім знайти термінали 5v (вихід) і 12v (вхід), а потім видалити з'єднання 5v, потерши його наждачним папером або якоюсь твердою штукою, і коротко з'єднати вихідний термінал USB до 12v безпосередньо. Спочатку відкрийте підключення 5v через USB-порт на автомобільному USB-зарядному пристрої, а потім підключіть 12v до USB-порту, де було підключено 5v. Як показано на малюнку нижче, ми вирізали червоне кружене з'єднання, воно може відрізнятися у вашому автомобільному зарядному пристрої.
Для конфігурації АЦП тут ми обрали аналоговий штифт AN0 з внутрішньою опорною напругою 5v та тактовою частотою f / 32 для перетворення АЦП.
Для розрахунку напруги акумулятора автомобіля за значенням АЦП ми використовували наведену формулу:
Напруга = (значення АЦП / коефіцієнт резистора) * опорна напруга Де: Значення АЦП = вихідний сигнал дільника напруги (перетворений у цифровий мікроконтролером) Коефіцієнт резистора = 1023,0 / (R2 / R1 + R2) // 1023 - максимальне значення АЦП (10- біт) Опорне напруга = 5 вольт // вибрано внутрішнє опорне напруга 5v
Розрахунок коефіцієнта резистора:
У цьому проекті ми читаємо напругу акумулятора в автомобілі, яка (як правило) становить близько 12v-14v. Отже, ми виконали цей проект, припускаючи, що максимум 15v означає, що цю систему можна читати макс. До 15v.
Отже, в ланцюзі ми використовували резистор R1 і R2 в частині дільника напруги, і значення:
R1 = 2K
R2 = 1K
Коефіцієнт резистора = 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, ви можете переглянути будь-який шар (верхній, нижній, верхній, молочний тощо) друкованої плати, вибравши шар у вікні "Шари".
Розрахунок та замовлення зразків друкованої плати в режимі онлайн:
Після завершення проектування друкованої плати ви можете натиснути на піктограму виводу для виготовлення , яка перенесе вас на сторінку замовлення друкованої плати. Тут ви можете переглянути свою друковану плату в переглядачі Gerber або завантажити файли Gerber з вашої друкованої плати та надіслати їх будь-якому виробнику, а також набагато простіше (і дешевше) замовити її безпосередньо в EasyEDA. Тут ви можете вибрати кількість друкованих плат, яку ви хочете замовити, скільки шарів міді вам потрібно, товщину друкованої плати, масу міді і навіть колір друкованої плати. Після того, як ви вибрали всі параметри, натисніть «Зберегти в кошику» та завершите замовлення, після чого ви отримаєте свої друковані плати через кілька днів.
Ви можете безпосередньо замовити цю друковану плату або завантажити файл Gerber за цим посиланням.
Через кілька днів замовлення друкованих плат я отримав зразки друкованих плат
Отримавши друковані плати, я змонтував усі необхідні компоненти на друковану плату і, нарешті, у нас готова наша система контролю автомобільного акумулятора, перевірте цю схему в роботі з відео, поданим наприкінці.
Пояснення програмування:
Програма цього проекту мало важка для початківців. Для написання цього коду нам потрібні деякі заголовкові файли. Тут ми використовуємо MPLAB X IDE для кодування та компілятор XC для побудови та компіляції коду. Код написаний мовою C.
У цьому коді ми зчитували напругу акумулятора за допомогою аналогового штифта, а для управління або надсилання даних на 4-значний семисегментний дисплей ми використовували процедуру таймерного переривання сервера в мікроконтролері PIC. Весь розрахунок для вимірювання напруги проводиться в основній програмі програми.
Спочатку в код ми включили заголовок, а потім налаштували мікроконтролер PIC за допомогою бітів конфігурації.
#включати
А потім відображаються змінні та визначені шпильки для семи сегментів
unsigned int counter2; позиція без підпису = 0; беззнаковий знак k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int розряд1 = 0, розряд2 = 0, розряд3 = 0, розряд4 = 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 () ми ініціалізували таймер та переривання.
GIE = 1; // GLOBLE INTRRUPT ENABLE PEIE = 1; // периферійний прапор переривання T0CON = 0b000000000; // значення прескалера вкладено TMR0IE = 1; // увімкнення переривання TMR0IP = 0; // пріоритет переривання TMR0 = 55536; // починаємо лічильник після цього значення TMR0ON = 1;
А потім в той час як петлі, ми читаємо аналоговий вхід на аналоговому вході і викликати деяку функцію для розрахунків.
while (1) {adc_init (); for (i = 0; i <40; i ++) {Значення = adc_value (); adcValue + = значення; } adcValue = (плаваючий) adcValue / 40.0; перетворити (adcValue); затримка (100); }
Дана функція adc_init () використовується для ініціалізації ADC
порожнеча adc_init () {ADCON0 = 0b00000011; // вибір каналу ADCON1 = 0b00001110; // вибір аналогового та цифрового вводу / виводу ADCON2 = 0b10001010; // час вирівнювання час утримання ADON = 1; }
Дана функція adc_value використовується для зчитування вхідного сигналу з аналогового виводу та обчислення напруги.
float adc_value (void) {float adc_data = 0; в той час як (GO / DONE == 1); // старший розряд даних починає перетворення значення adc_data = (ADRESL) + (ADRESH << 8); // Зберігаємо 10-бітний вихід adc_data = ((adc_data / 342.0) * 5.0); повернути adc_data; }
А дана функція перетворення використовується для перетворення значення напруги в сегментовані підтримувані значення.
конверсія порожнеч (float f) {int d = (f * 100); цифра1 = d% 10; d = d / 10; цифра2 = d% 10; d = d / 10; цифра3 = d% 10; цифра4 = d / 10; }
Перевірте повний код цього проекту нижче з демонстраційним відео.