PSOC КУРС: 5. L9110S Драйвер

В цій частині я опишу як використати компоненти PSoC Creator щоб створити схему управління L9110S модулем, який призначений для керування двигунами постійного струму. Як демонстрація роботи буде приклад зміни швидкості двигуна радіокерованої машинки.

В цій статті розглянутий модуль L9110S, основною перевагою якого є простота та невисока ціна. Цей модуль дозволяє дискретно включати/виключати двигун постійного струму, а також змінювати напрям його обертання. Основний його недолік відсутність піна для плавного регулювання швидкістю обертання двигуна. Саме таку функцію я реалізував за допомогою PSoC 4. Основу модуля складають дві мікросхеми HG7881 кожна з яких це H-міст.

Зовнішній вигляд та характеристики:

 Призначення виводів драйвера

VCC – живлення двигунів, 2.5 – 12V

GND – силова та сигнальна земля

B-1B – двигун B вхід B

B-1A – двивуг B вхід A

A-1B – двигун A вхід B

A-1A – двивуг A вхід A

Таблиця станів двигуна підключеного до цього драйвера (одного каналу драйвера):

A-1A A-1B Стан двигуна
0 0 відключений
0 1 обертання за годинниковою стрілкою
1 0 обертання проти годинникової стрілки
1 1 відключений

Із таблиці видно що в цьому модулі відсутні виводи керування швидкістю (як правило PWM виводи). Щоб можна було керувати швидікітю, замість “логічної 1” на вхід потрібно подати pwm сигнал. Для цього зроблений проект в PSoC Creator. Його основу складає схема яка наведена нище, вона зроблена тільки для одінієї мікросхеми драйвера, при потребі її можна легко змінити щоб мати можливість керувати двома двигунами.

Практична частина

Основу проекту сладає схема зібрана в PSoC Creator, яка складається з таких основних компонентів:

  1. PWM  – компонент призначений для генерування PWM сигналу. На його вхід подається тактовий сигнал потрібної частоти.
  2. Demultiplexer– демультиплесор, призначений для комутації кількох сигналів на один вихід.
  3. Control Register – дає можливість програмі мати впливати на схему, тобто запис в цей регістр з програми, змінює вихідний стан цього компоненту.

Схема працює наступним чином: компонент PWM генерує сигнал, коефіцієнт заповнення (duty cycle) якого задається з програми. Далі цей сигнал подається на входи демультиплесорів. На інші входи демультиплексорів подається “логічний 0”. Також на демультиплесор подається сигнал переключенння з Control Register, значення якого змінюється в програмі. Цей сигнал задає напрям обертання двигуна. При переключенні демультиплесорів, на виходах (A, B) отримуємо сигнал “логічного 0” та pwm cигнал. Додатково зроблений вивід ST (стан) для можливості підключення до цього виводу зовншіхніх елементів схеми. Сигнал на цьому виводі повторює сигнал з Control Register. Сигнали A, B, ST виведені на та такі піни PSoC, при потребі їх легко змінити на інші:

Із осцилограми сигналів з пінів A, B видно що на одному виводі “логічний 0”, в цей час на іншому pwm сигнал, і навпаки.

Підключення до модуля відбувається за наступною схемою:

вивід PSoC вивід L9110S
P0[4] A-1A
P0[5] A-1B

Двигун використаний від радіокерованої машинки:

Оскільки більшу частину алгоритму керування драйвером бере на себе схема зроблена в PSoC Creator, то код програми є дуже простим: після ініціалізації встановлюється швидкість двигуна яка задається PWM компонентом (із програми через згенеровану API функцію цього компонента) та циклічно, кожних 5 секунд відбувається зміна напрямку обертання двигуна.

 

Демонстрація роботи

Корисні лінки:

  1. Даташит на L9110S Модуль
  2. PMW компонент
  3. Control Register компонент
  4. Digital Demultiplexer компонент