Разработка контроллера шагового двигателя (стр. 3 из 10). Контроллера шагового двигателя


Контроллер маломощного униполярного шагового двигателя

ПредысторияПонадобилось мне прошлой осенью восстановить измерительный стенд. Одна из главных частей стенда — система протяжки лески с закрепленной на ней трубочке сквозь СВЧ-резонатор (это такая медная банка весом 20-30 кг). Причем протяжка должна осуществляться периодически с фиксацией положения (на 1мм подвинул, остановился, подождал секунду, ещё на 1мм подвинул, и так далее). Естественно сразу возникла мысль о шаговом двигателе (ШД). Но как им управлять? Разобрался. Начал искать схемные решения — биполярными двигателями сложно управлять, поэтому выбор пал на униполярный. Был приобретён кЫтайский моторчик под названиемMOTS1 (ST28), который в России продаётся Velleman`ом

Купленный моторчик оказался без какой-либо документации. В интернете — тоже почти ничего. Позже экспериментально нашёл необходимую последовательность управляющих сигналов.Пришёл черёд разработки контроллера управления. Разработкой движили несколько целей:

  • Покупать «чужой» контроллер за 5 т.р. совесть не позволяла
  • Стоимость разработанного контроллера не должна превышать 500-700 р.
  • Простота конструкции для а) повторяемости устройства, б) проще отладка, в) неблагоприятная электромагнитная обстановка, г) чтобы те, кто найдут контроллер через 20 лет смогли разобраться как его «завести», т.к. я подобным образом разбирался с СВЧ-резонатором, пролежавшим в шкафу с конца 90х…
  • Управление с компьютера. Всяких FT232RL в Москве я не нашёл на тот момент, поэтому без всяких раздумий решил использовать интерфейс RS-232.
  • Питание от компьютерного разъёма (который питает харды, приводы и т.д.). Комп всё равно рядом, 2 напряжения: +5 для питания микросхем, +12 для ШД.

Хронология событийНабросал схему.

Набросал плату в Sprint Layout.

Скачать файл с разводкой

Прошивка для ATmega8L.Опыта было мало, время поджимало — решил не возиться с ассемблером и написал на каком-то из Basic`ов. Весила она около 25% флеша ATmega8L.

Перешёл на «железо»: нашёл лист шестилетней фотобумаги от уже убитого струйника Epson. Распечатал, заЛУТил (не с первого раза — бумага фигово липнет, старая наверно), спаял.

Для связи с COM-портом изпользуется разъём IDC-10 (изготовлен кабель IDC-10 — DB-9F), для соединения с пятью проводами ШД — штыри PLS-8 (3 штыря из 8 отломаны).

При макетировании из-за того, что ни осциллограф, ни комп не были заземлены, и особенностей БП компьютера, я спалил оба COM-порта. С тех пор использую переходник USB-COM на основе PL2303.

Во время тестирования и отладки понял, что зря я не предусмотрел кнопку сброса МК и разъём внутрисхемного программирования…Пришлось «подвесить» его на проводах =)

Управлялся контроллер с помощью терминальных программ. В качестве передаваемых параметров, была период управляющих сигналов, период следования пакетов сигналов (для реализации паузы), число сигналов в пакете и число пакетов.

Зимой я решил переписать прошивку для МК.Естественно уже на ассемблере. За неделю осилил, и вот что получилось

StepControl.asm

Краткое описание алгоритма программы:

  • 1. Инициализации и конфигурирование регистров, макросы, таблица векторов прерываний
  • 2. Оправляем пользователю приглашение «hello», что контроллер готов.
  • 3. Ждём, когда же пользователь проснётся и пришлёт МК команду.
  • Команда представляет собой 3 байта. Первый и второй байт — число периодов управляющих сигналов, третий байт — направление вращения.
  • Формирование пакетов управляющих сигналов возложено на программу на компьютере.
  • Передача осуществляется на скорости 38400бит/с.
  • 4. Принимаем команду, сохраняем в RAM. Читаем из RAM в РОН.
  • 5. Запускаем таймер.
  • 6. Переходим к пункту 3.

А тем временем таймер по прерыванию совпадения:

  • 1. Уменьшаем счётчик сигналов на единицу. Если не дошли до нуля, то
  • 1.1. Определяет направление вращения
  • 1.2. Выбирает следующую управляющую комбинацию сигналов из памяти программ
  • 1.3. Выводим соответствующую управляющую комбинацию в PORTB.
  • 2. Если счётчик сигналов равен нулю — тормозим таймер.

Такой алгоритм позволяет «пополнять» содержимое счётчика сигналов во время работы таймера (естественно не в момент прерывания) и добиться «непрерывной» работы ШД. Но этим уже занимается программа написанная на VisualBasic 6.0 (нравится он мне, как бы его не обижали любители С# и Delphi).

Скачать программку

Во время тестирования программы поднимал и опускал двигателем болт, привязанный на нитке…Вспомнилась детская игрушка башенный кран :)

Оценка стоимости всего этого безобразия:

№ п/п Наименование Цена, руб Кол-во Стоимость, руб 1 Вилка штыревая PLS-8 1.6 1 1.6 2 Конденсатор керамич. 0.1мкФ, 50В 3 1 3 3 Конденсатор электролит. 1мкФ, 50В 14 5 70 4 Корпус DP-9C для D-SUB 9pin 13 1 13 5 Микроконтроллер ATmega8L 78 1 78 6 Панель под микросхему 16 контактов 2.6 2 5.2 7 Панель под микросхему 28 контактов 4.6 1 4.6 8 Преобразователь уровней MAX232CPE 16 1 16 9 Разъём DB-9F 23 1 23 10 Разъём IDC-10F на шлейф 16 1 16 11 Разъём IDC-10MR вилка угловая 23 1 23 12 Разъём питания THP-4M 8.8 1 8.8 13 Сборка транзисторов ULN2003AN 15 1 15 14 Шаговый двигатель ST28 320 1 320 Итого: 597.2

Как видно, уложился в 600р. Может конечно что-то и подзабыл, но одна из поставленных задач выполнена.

ВыводыПолучился довольно «узконаправленный» контроллер. Но задачи создать универсальное устройство не было. Изготавливается довольно быстро, всё в DIPах и выводным монтажом. Размеры — наверно чуть больше 2х спичечных коробков. Возможность модернизации: Легко задать необходимую управляющую последовательность в коде прошивки, ассемблировать, зашить в МК и пользоваться, код занимает около 3% памяти — места хватит ещё светомузыку приделать :)

Возможные применения

  • детская игрушка башенный кран =)))
  • системы протяга всевозможных нитей, лески, например, занавески открывать по команде с компа
  • маломощные приводы (до 6Вт, т.к. ULN2003AN больше 500мА не терпит, если конечно ШД столько сам потянет)
  • системы, требующие точного позиционирования (число управляющих импульсов на 1 оборот ШД равно 2048!!!, жаль мощность очень невелика)

P.S. Автор выражает благодарность своему научному руководителю Сергею Марковичу за спонсорство, коллегам по лаборатории Тарасу и Лёшке, подруге Юле за помощь в тестировании и отладке, и конечно же DI HALT`у за предоставленную возможность быть опубликованным на easyelectronics.ru!

DI HALTМеня не теряте ;) Я сейчас очень много пишу, но пока не буду уточнять что. Хотя, некоторые уже спалили. Как доделаю хотя бы половину задуманного, естественно, сообщу :) А пока буду выкладывать присланные статьи. Их тут довольно много накопилось.

Да, завелась у меня тут вот такая шняжка. Я правда еще не понял зачем она мне (пять блогов на одного человека это слишком =) ), но что-то уж больно много народу по ней прецо. Буду туда всякую херь сбрасывать.

easyelectronics.ru

Контроллер шагового двигателя.

Эта статья является дополнением к статье: "Интерфейсная плата для станка ЧПУ". Схема и прошивка контроллера была взята с сайта https://robozone.su. На сайте небыло под неё печатной платы, я развёл свою. Плата получилась односторонняя, с минимальным количеством перемычек. Собрал, подключил двигатель, прошил микроконтроллер – всё работает. Из описания сказано, что переключение между шаг и полушаг производится при помощи перемычки и перезагрузки контроллера. Пришлось прошивку дизассемблировать и внести небольшие изменения. Теперь выбор режимов шаг или полушаг происходит без перезагрузки контроллера.

 

 

Униполярный двигатель имеет одну обмотку в каждой фазе, но от середины обмотки сделан отвод. Это позволяет изменять направление магнитного поля, создаваемого обмоткой, простым переключением половинок обмотки. При этом существенно упрощается схема драйвера. Драйвер должен иметь только 4 простых ключа. Таким образом, в униполярном двигателе используется другой способ изменения направления магнитного поля, в отличии от биполярного. Средние выводы обмоток могут быть объединены внутри двигателя, поэтому такой двигатель может иметь 5 или 6 выводов. Иногда униполярные двигатели имеют раздельные 4 обмотки, по этой причине их ошибочно называют 4-х фазными двигателями. Каждая обмотка имеет отдельные выводы, поэтому всего выводов 8. При соответствующем соединении обмоток такой двигатель можно использовать как униполярный или как биполярный. Униполярный двигатель с двумя обмоткими и отводами тоже можно использовать в биполярном режиме, если отводы оставить неподключенными. В любом случае ток обмоток следует выбирать так, чтобы не превысить максимальной рассеиваемой мощности.

Возможности контроллера:

  • Аппаратная ШИМ регулировка ограничения тока фаз.
  • Аппаратная ШИМ регулировка ограничения тока фаз в режиме удержания.
  • Реализован режим “fixed time off”.
  • Больший диапазон тока фаз (проверен до 5А).
  • Использование универсальных управляющих сигналов STEP, DIR, ENABLE.
  • Работа в режимах «полный шаг», «полушаг» (FULL STEP/ HALF STEP).
  • Автоматическое определение положения джампера (шаг, полушаг).

Схема контроллера.

Листинг кода.

 

;************************************************************************************************** processor 16F628A ErrorLevel -302 __config 0x3F70 ; _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BODEN_ON & _MCLRE_ON & _PWRTE_ON & _WDT_OFF ; & _INTOSC_OSC_NOCLKOUT ;================================================================================================== ; Описание регистров специального назначения. ;================================================================================================== TMR0 equ 01h ; Таймер отсчёта 1 секунды. Status equ 03h ; Регистр Status. PortA equ 05h ; PortA. PortB equ 06h ; PortB. IntCon equ 0Bh ; Регистр прерываний. PIR1 equ 0Ch ; Регист флагов периферийных прерываний. TMR1L equ 0Eh ; Младший байт TMR1. TMR1H equ 0Fh ; Старший байт TMR1. T1CON equ 10h ; Регистр управления TMR1. CMCON equ 1Fh ; Управление модулем компараторов. OptionR equ 81h ; Конфигурация контроллера. TrisA equ 85h ; Настройка выводов PortA. TrisB equ 86h ; Настройка выводов PortB. ;================================================================================================== ; Регистры общего назначения. ;================================================================================================== Reg_1 equ 70h step equ 71h ; Несёт признак шага (0-полушаг, 1-полный шаг). count equ 72h ; Счётчик числа прерываний TMR1. temp_Status equ 73h ; Временный регистр Status (INT). temp_PIR1 equ 74h ; Временный регистр PIR1 (INT). temp_W equ 75h ; Временный регистр W (INT). ;================================================================================================== ; Присваивание битам названий. ;================================================================================================== C equ 0 ; Флаг переноса-заема. DC equ 1 ; Флаг десятичного переноса. Z equ 2 ; Флаг нулевого результата. RP0 equ 5 ; Бит выбора банка. RP1 equ 6 ; Бит выбора банка. INTF equ 1 ;************************************************************************************************** ; Начало программы. ;************************************************************************************************** org 0 goto START org 4 goto INT ;************************************************************************************************** ; Инициализация контроллера ;************************************************************************************************** START bcf Status,RP0 ; Банк 0. movlw b'00100001' ; TMR1-вкл, Внутр. ист. fosc/4, Ген. выкл., Преддел 1:4, movwf T1CON ; movlw b'00110110' ; Схема два компаратора с общим опорным напряжением movwf CMCON ; Входы RA0-RA1, инверсные выхода, bsf Status,RP0 ; Банк 1. movlw b'11100111' ; movwf TrisA ; RA3 и RA4 на выход, остальные на вход. movlw b'00001111' ; RB0-RB3 на вход, RB4-RB7 на выход movwf TrisB ; movlw b'10000111' ; Предделитель вкл. перед TMR0 1:256,Прерывания по ЗФ, movwf OptionR ; подтягивающие резисторы отключены. movlw b'11010000' ; Разрешение прерывания от периферийных устройств и movwf IntCon ; внешнего прерывания INT. bcf Status,RP0 ; Банк 0 clrf PortB ; Очистка порта B. clrf PortA ; Очистка порта A. clrf Reg_1 ;-- Включен полный шаг или полушаг -- CYCLE btfsc PortA,7 ; Проверка порта RА7 Jmp3 (замкнут=0). goto FSTEP ; Перемычка снята (полный шаг). clrf step ; Перемычка установлена (полушаг). goto $+3 FSTEP movlw 1 ; Полный шаг (перемычка снята) movwf step ;-Проверка сигнала Enable Jmp1 стоит- btfsc PortB,2 ; Проверка, где перемычка. goto ENABLE btfsc PIR1,0 goto NO_ENABLE ENABLE bsf Status,RP0 ; Банк 1 bsf TrisB,3 ; bcf Status,RP0 ; Банк 0. goto CYCLE NO_ENABLE bsf Status,RP0 ; Банк 1 bcf TrisB,3 ; bcf Status,RP0 ; Банк 0. goto CYCLE ;************************************************************************************************** ; Программа прерываний. ;************************************************************************************************** INT movwf temp_W ; Сохранение аккумулятора во впеменный регистр. swapf Status,W ; Сохранение clrf Status ; регистра Status movwf temp_Status ; во временный регистр movf PIR1,W ; Сохранение состояния movwf temp_PIR1 ; регистра PIR1. btfsc step,0 ; Какой режим установлен (шаг.полушаг) goto FULLSTEP ; Переход на полный шаг. ;--------------- Полушаг ------------ btfsc PortB,1 ; Проверка сигнала DIR. goto DIR_1 ; На входе Dir 1. incf Reg_1,F ; Reg_1+1 goto DIR_0 DIR_1 decf Reg_1,F ; Reg_1-1 DIR_0 movf Reg_1,W xorlw 9 ; btfss Status,Z ; Reg_1=9 ? goto NO_9 ; Нет movlw 1 ; Да. movwf Reg_1 ; Сброс Reg_1 до 1. NO_9 movf Reg_1,W ; Reg_1 =0 xorlw 0 ; btfss Status,Z goto NO_0 ; Нет movlw 0x08 ; movwf Reg_1 ; Reg_1=8 NO_0 call OUT_STEP ; Вывести в порт сигналы двигателя. goto OUT_INT ; На выход из прерывания. ;------------ Полный шаг ------------ FULLSTEP btfsc PortB,1 ; Проверка сигнала DIR. goto DIR_11 ; На входе Dir 1. incf Reg_1,F ; Reg_1+1 goto DIR_00 DIR_11 decf Reg_1,F ; Reg_1-1 DIR_00 movf Reg_1,W xorlw 5 ; btfss Status,Z ; Reg_1=5 ? goto NO_5 ; Нет movlw 1 ; Да. movwf Reg_1 ; Сброс Reg_1 до 1. NO_5 movf Reg_1,W ; Reg_1 =0 xorlw 0 ; btfss Status,Z goto NO_00 ; Нет movlw 4 ; movwf Reg_1 ; Reg_1=4 NO_00 call OUT_FULL ; Вывести в порт сигналы двигателя. ;---- Восстановление регистров ------ OUT_INT bcf IntCon,INTF ; Сброс флага внешнего прерывания. clrf TMR1H ; Очистка байтов TMR1. clrf TMR1L ; Очистка байтов TMR1. bcf PIR1,0 ; Сбросить флаг прерывания по переполнению TMR1. movf temp_PIR1,W ; movwf PIR1 ; Восстановление PIR1. swapf temp_Status,W movwf Status ; Восстановление Status. swapf temp_W,F ; swapf temp_W,W ; Восстановление аккумулятора. retfie ; Выход из прерывания. ;************************************************************************************************** ; Работа в режиме полушаг. ;************************************************************************************************** OUT_STEP movf Reg_1,W xorlw 1 btfsc Status,Z goto STEP_1 movf Reg_1,W xorlw 2 btfsc Status,Z goto STEP_2 movf Reg_1,W xorlw 3 btfsc Status,Z goto STEP_3 movf Reg_1,W xorlw 4 btfsc Status,Z goto STEP_4 movf Reg_1,W xorlw 5 btfsc Status,Z goto STEP_5 movf Reg_1,W xorlw 6 btfsc Status,Z goto STEP_6 movf Reg_1,W xorlw 7 btfsc Status,Z goto STEP_7 movf Reg_1,W xorlw 8 btfsc Status,Z goto STEP_8 return STEP_1 movlw b'10000000' movwf PortB ; return STEP_2 movlw b'10100000' movwf PortB ; return STEP_3 movlw b'00100000' movwf PortB ; return STEP_4 movlw b'01100000' movwf PortB ; return STEP_5 movlw b'01000000' movwf PortB ; return STEP_6 movlw b'01010000' movwf PortB ; return STEP_7 movlw b'00010000' movwf PortB ; return STEP_8 movlw b'10010000' movwf PortB ; return ;************************************************************************************************** ; Работа в режиме полный шаг. ;************************************************************************************************** OUT_FULL movf Reg_1,W xorlw 1 ; btfsc Status,Z goto SHAG_1 movf Reg_1,W xorlw 2 ; btfsc Status,Z goto SHAG_2 movf Reg_1,W xorlw 3 ; btfsc Status,Z goto SHAG_3 movf Reg_1,W xorlw 4 ; btfsc Status,Z goto SHAG_4 return SHAG_1 movlw b'10100000' movwf PortB ; return SHAG_2 movlw b'01100000' movwf PortB ; return SHAG_3 movlw b'01010000' movwf PortB ; return SHAG_4 movlw b'10010000' movwf PortB ; return ;************************************************************************************************** end

 

Файлы для скачивания:

Скачать схему и разводку печатной платы (62 Кбайт)

Скачать прошивку контроллера (оригинальная и доработаная) (2 Кбайт)

Скачать исходник asm (2 Кбайт)

 

Список использованных источников:https://robozone.su ;https://electroprivod.ru

chipmk.ru

Разработка контроллера шагового двигателя - часть 3

Рисунок 2.4 – Функциональная схема контролера шагового двигателя робота

2.5 Разработка алгоритма управления

Рисунок 2.5 – Основной алгоритм контролера шагового двигателя робота

2.6 Разработка программного обеспечения микроконтроллера

Главной задачей программы является формирование импульсных последовательностей для 4-х обмоток двигателя. Поскольку для этих последовательностей временные соотношения являются критичными, формирование выполняется в обработчике прерывания таймера 0. Можно сказать, основную работу программа делает именно в этом обработчике. Алгоритм работы обработчика приведен на рисунке 2.5.

Несомненно, было бы удобнее использовать таймер 1, так как он 16-разрядный и способен вызывать периодические прерывания по совпадению с автоматическим обнулением. Однако он занят формированием с помощью ШИМ опорного напряжения для компараторов. Поэтому приходится перезагружать таймер 0 в прерывании, что требует некоторой корректировки загружаемой величины и вызывает некоторый джиттер, который, однако, на практике не мешает. В качестве основной временной базы выбран интервал 25 мкс, который и формируется таймером. С такой дискретностью могут формироваться временные последовательности фаз, такой же период имеет и ШИМ стабилизации тока в фазах двигателя.

Для формирования периода повторения шагов используется программный 16-разрядный таймер STCNT. В отличие от таймера 0, его загрузочная величина не является константой, так как именно она определяет скорость вращения двигателя. Таким образом, переключение фаз происходит только при переполнении программного таймера.

Последовательность чередования фаз задана таблично. В памяти программ микроконтроллера имеются три разных таблицы: для полношагового режима без перекрытия фаз, полношагового с перекрытием и для полушагового режима. Все таблицы имеют одинаковую длину 8 байт. Нужная таблица в начале работы загружается в ОЗУ, что позволяет наиболее просто переходить между разными режимами работы двигателя. Выборка значений из таблицы происходит с помощью указателя PHASE, поэтому переключение направления вращения двигателя тоже осуществляется очень просто: для вращения вперед требуется инкрементировать указатель, а для вращения назад – декрементировать.

Самая «главная» переменная в программе – это 24-битная знаковая переменная VC, которая содержит значение текущей скорости. Знак этой переменной определяет направление вращения, а значение – частоту следования шагов. Нулевое значение этой переменной говорит о том, что двигатель остановлен. Программа в этом случае выключает ток всех фаз, хотя во многих приложениях в этой ситуации требуется оставить включенными текущие фазы и лишь несколько уменьшить их ток, обеспечив этим удержание положения двигателя. При необходимости такое изменение логики работы программы сделать очень просто.

Таким образом, в случае переполнения программного таймера STCNT происходит анализ значения переменной VC, в случае положительного значения указатель PHASE инкрементируется, а в случае отрицательного – декрементируется. Затем из таблицы выбирается очередная комбинация фаз, которая выводится в порт. В случае нулевого значения VC указатель PHASE не изменяется, и в порт выводятся все нулевые значения.

Величина T, которой следует загружать таймер STCNT, однозначно связана со значением переменной VC. Однако перевод частоты в период занимает довольно много времени, поэтому эти вычисления производятся в основной программе, и не на каждом шаге, а гораздо реже. Вообще, эти вычисления нужно периодически производить только во время разгона или торможения. В остальных случаях скорость, и, соответственно, период повторения шагов, не меняются.

Для осуществления ШИМ-стабилизации тока фазы должны периодически включаться, а затем, при достижении током заданного уровня, выключаться. Периодическое включение производится в прерывании таймера 0, для чего даже в случае отсутствия переполнения программного таймера STCNT в порт выводится текущая комбинация фаз. Происходит это с периодом 25 мкс (что соответствует частоте ШИМ 40кГц). Выключением фаз управляют компараторы, выходы которых подключены к входам прерывания INT0 и INT1. Прерывания разрешаются после того, как ток фаз включается, и запрещаются сразу после переключения компараторов. Это исключает их повторную обработку. В обработчиках прерываний происходит только отключение соответствующих фаз (рисунок 2.6).

Рисунок 2.6 – Блок-схема обработчика прерываний INT0 и INT1

Процессы, происходящие при ШИМ-стабилизации тока, показаны на рисунке 2.7. Особо следует отметить, что ток в датчике тока имеет прерывистый характер даже в том случае, если ток обмотки не прерывается. Это связано тем, что во время спада тока его путь не проходит через датчик тока (а проходит через диод).

Рисунок 2.7 – Процесс ШИМ-стабилизации тока

Аналоговая часть системы ШИМ-стабилизации тока фаз двигателя является довольно «капризной». Дело в том, что сигнал, снимаемый с датчика тока, содержит большое количество помех. Помехи возникают в основном в моменты коммутации обмоток двигателя, причем как «своей», так и «чужой» фазы.

1

2

3

4

5

6

7

8

9

10

комментарии

скачать[зарегистрируйтесь]

ДОБАВИТЬ КОММЕНТАРИЙ  [можно без регистрации]перед публикацией все комментарии рассматриваются модератором сайта - спам опубликован не будет

Хотите опубликовать свою статью или создать цикл из статей и лекций?Это очень просто – нужна только регистрация на сайте.

mirznanii.com

Контроллер шагового двигателя.

Эта статья является дополнением к статье: "Интерфейсная плата для станка ЧПУ". Схема и прошивка контроллера была взята с сайта https://robozone.su. На сайте небыло под неё печатной платы, я развёл свою. Плата получилась односторонняя, с минимальным количеством перемычек. Собрал, подключил двигатель, прошил микроконтроллер – всё работает. Из описания сказано, что переключение между шаг и полушаг производится при помощи перемычки и перезагрузки контроллера. Пришлось прошивку дизассемблировать и внести небольшие изменения. Теперь выбор режимов шаг или полушаг происходит без перезагрузки контроллера.

 

 

Униполярный двигатель имеет одну обмотку в каждой фазе, но от середины обмотки сделан отвод. Это позволяет изменять направление магнитного поля, создаваемого обмоткой, простым переключением половинок обмотки. При этом существенно упрощается схема драйвера. Драйвер должен иметь только 4 простых ключа. Таким образом, в униполярном двигателе используется другой способ изменения направления магнитного поля, в отличии от биполярного. Средние выводы обмоток могут быть объединены внутри двигателя, поэтому такой двигатель может иметь 5 или 6 выводов. Иногда униполярные двигатели имеют раздельные 4 обмотки, по этой причине их ошибочно называют 4-х фазными двигателями. Каждая обмотка имеет отдельные выводы, поэтому всего выводов 8. При соответствующем соединении обмоток такой двигатель можно использовать как униполярный или как биполярный. Униполярный двигатель с двумя обмоткими и отводами тоже можно использовать в биполярном режиме, если отводы оставить неподключенными. В любом случае ток обмоток следует выбирать так, чтобы не превысить максимальной рассеиваемой мощности.

Возможности контроллера:

  • Аппаратная ШИМ регулировка ограничения тока фаз.
  • Аппаратная ШИМ регулировка ограничения тока фаз в режиме удержания.
  • Реализован режим “fixed time off”.
  • Больший диапазон тока фаз (проверен до 5А).
  • Использование универсальных управляющих сигналов STEP, DIR, ENABLE.
  • Работа в режимах «полный шаг», «полушаг» (FULL STEP/ HALF STEP).
  • Автоматическое определение положения джампера (шаг, полушаг).

Схема контроллера.

Листинг кода.

 

;************************************************************************************************** processor 16F628A ErrorLevel -302 __config 0x3F70 ; _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BODEN_ON & _MCLRE_ON & _PWRTE_ON & _WDT_OFF ; & _INTOSC_OSC_NOCLKOUT ;================================================================================================== ; Описание регистров специального назначения. ;================================================================================================== TMR0 equ 01h ; Таймер отсчёта 1 секунды. Status equ 03h ; Регистр Status. PortA equ 05h ; PortA. PortB equ 06h ; PortB. IntCon equ 0Bh ; Регистр прерываний. PIR1 equ 0Ch ; Регист флагов периферийных прерываний. TMR1L equ 0Eh ; Младший байт TMR1. TMR1H equ 0Fh ; Старший байт TMR1. T1CON equ 10h ; Регистр управления TMR1. CMCON equ 1Fh ; Управление модулем компараторов. OptionR equ 81h ; Конфигурация контроллера. TrisA equ 85h ; Настройка выводов PortA. TrisB equ 86h ; Настройка выводов PortB. ;================================================================================================== ; Регистры общего назначения. ;================================================================================================== Reg_1 equ 70h step equ 71h ; Несёт признак шага (0-полушаг, 1-полный шаг). count equ 72h ; Счётчик числа прерываний TMR1. temp_Status equ 73h ; Временный регистр Status (INT). temp_PIR1 equ 74h ; Временный регистр PIR1 (INT). temp_W equ 75h ; Временный регистр W (INT). ;================================================================================================== ; Присваивание битам названий. ;================================================================================================== C equ 0 ; Флаг переноса-заема. DC equ 1 ; Флаг десятичного переноса. Z equ 2 ; Флаг нулевого результата. RP0 equ 5 ; Бит выбора банка. RP1 equ 6 ; Бит выбора банка. INTF equ 1 ;************************************************************************************************** ; Начало программы. ;************************************************************************************************** org 0 goto START org 4 goto INT ;************************************************************************************************** ; Инициализация контроллера ;************************************************************************************************** START bcf Status,RP0 ; Банк 0. movlw b'00100001' ; TMR1-вкл, Внутр. ист. fosc/4, Ген. выкл., Преддел 1:4, movwf T1CON ; movlw b'00110110' ; Схема два компаратора с общим опорным напряжением movwf CMCON ; Входы RA0-RA1, инверсные выхода, bsf Status,RP0 ; Банк 1. movlw b'11100111' ; movwf TrisA ; RA3 и RA4 на выход, остальные на вход. movlw b'00001111' ; RB0-RB3 на вход, RB4-RB7 на выход movwf TrisB ; movlw b'10000111' ; Предделитель вкл. перед TMR0 1:256,Прерывания по ЗФ, movwf OptionR ; подтягивающие резисторы отключены. movlw b'11010000' ; Разрешение прерывания от периферийных устройств и movwf IntCon ; внешнего прерывания INT. bcf Status,RP0 ; Банк 0 clrf PortB ; Очистка порта B. clrf PortA ; Очистка порта A. clrf Reg_1 ;-- Включен полный шаг или полушаг -- CYCLE btfsc PortA,7 ; Проверка порта RА7 Jmp3 (замкнут=0). goto FSTEP ; Перемычка снята (полный шаг). clrf step ; Перемычка установлена (полушаг). goto $+3 FSTEP movlw 1 ; Полный шаг (перемычка снята) movwf step ;-Проверка сигнала Enable Jmp1 стоит- btfsc PortB,2 ; Проверка, где перемычка. goto ENABLE btfsc PIR1,0 goto NO_ENABLE ENABLE bsf Status,RP0 ; Банк 1 bsf TrisB,3 ; bcf Status,RP0 ; Банк 0. goto CYCLE NO_ENABLE bsf Status,RP0 ; Банк 1 bcf TrisB,3 ; bcf Status,RP0 ; Банк 0. goto CYCLE ;************************************************************************************************** ; Программа прерываний. ;************************************************************************************************** INT movwf temp_W ; Сохранение аккумулятора во впеменный регистр. swapf Status,W ; Сохранение clrf Status ; регистра Status movwf temp_Status ; во временный регистр movf PIR1,W ; Сохранение состояния movwf temp_PIR1 ; регистра PIR1. btfsc step,0 ; Какой режим установлен (шаг.полушаг) goto FULLSTEP ; Переход на полный шаг. ;--------------- Полушаг ------------ btfsc PortB,1 ; Проверка сигнала DIR. goto DIR_1 ; На входе Dir 1. incf Reg_1,F ; Reg_1+1 goto DIR_0 DIR_1 decf Reg_1,F ; Reg_1-1 DIR_0 movf Reg_1,W xorlw 9 ; btfss Status,Z ; Reg_1=9 ? goto NO_9 ; Нет movlw 1 ; Да. movwf Reg_1 ; Сброс Reg_1 до 1. NO_9 movf Reg_1,W ; Reg_1 =0 xorlw 0 ; btfss Status,Z goto NO_0 ; Нет movlw 0x08 ; movwf Reg_1 ; Reg_1=8 NO_0 call OUT_STEP ; Вывести в порт сигналы двигателя. goto OUT_INT ; На выход из прерывания. ;------------ Полный шаг ------------ FULLSTEP btfsc PortB,1 ; Проверка сигнала DIR. goto DIR_11 ; На входе Dir 1. incf Reg_1,F ; Reg_1+1 goto DIR_00 DIR_11 decf Reg_1,F ; Reg_1-1 DIR_00 movf Reg_1,W xorlw 5 ; btfss Status,Z ; Reg_1=5 ? goto NO_5 ; Нет movlw 1 ; Да. movwf Reg_1 ; Сброс Reg_1 до 1. NO_5 movf Reg_1,W ; Reg_1 =0 xorlw 0 ; btfss Status,Z goto NO_00 ; Нет movlw 4 ; movwf Reg_1 ; Reg_1=4 NO_00 call OUT_FULL ; Вывести в порт сигналы двигателя. ;---- Восстановление регистров ------ OUT_INT bcf IntCon,INTF ; Сброс флага внешнего прерывания. clrf TMR1H ; Очистка байтов TMR1. clrf TMR1L ; Очистка байтов TMR1. bcf PIR1,0 ; Сбросить флаг прерывания по переполнению TMR1. movf temp_PIR1,W ; movwf PIR1 ; Восстановление PIR1. swapf temp_Status,W movwf Status ; Восстановление Status. swapf temp_W,F ; swapf temp_W,W ; Восстановление аккумулятора. retfie ; Выход из прерывания. ;************************************************************************************************** ; Работа в режиме полушаг. ;************************************************************************************************** OUT_STEP movf Reg_1,W xorlw 1 btfsc Status,Z goto STEP_1 movf Reg_1,W xorlw 2 btfsc Status,Z goto STEP_2 movf Reg_1,W xorlw 3 btfsc Status,Z goto STEP_3 movf Reg_1,W xorlw 4 btfsc Status,Z goto STEP_4 movf Reg_1,W xorlw 5 btfsc Status,Z goto STEP_5 movf Reg_1,W xorlw 6 btfsc Status,Z goto STEP_6 movf Reg_1,W xorlw 7 btfsc Status,Z goto STEP_7 movf Reg_1,W xorlw 8 btfsc Status,Z goto STEP_8 return STEP_1 movlw b'10000000' movwf PortB ; return STEP_2 movlw b'10100000' movwf PortB ; return STEP_3 movlw b'00100000' movwf PortB ; return STEP_4 movlw b'01100000' movwf PortB ; return STEP_5 movlw b'01000000' movwf PortB ; return STEP_6 movlw b'01010000' movwf PortB ; return STEP_7 movlw b'00010000' movwf PortB ; return STEP_8 movlw b'10010000' movwf PortB ; return ;************************************************************************************************** ; Работа в режиме полный шаг. ;************************************************************************************************** OUT_FULL movf Reg_1,W xorlw 1 ; btfsc Status,Z goto SHAG_1 movf Reg_1,W xorlw 2 ; btfsc Status,Z goto SHAG_2 movf Reg_1,W xorlw 3 ; btfsc Status,Z goto SHAG_3 movf Reg_1,W xorlw 4 ; btfsc Status,Z goto SHAG_4 return SHAG_1 movlw b'10100000' movwf PortB ; return SHAG_2 movlw b'01100000' movwf PortB ; return SHAG_3 movlw b'01010000' movwf PortB ; return SHAG_4 movlw b'10010000' movwf PortB ; return ;************************************************************************************************** end

 

Файлы для скачивания:

Скачать схему и разводку печатной платы (62 Кбайт)

Скачать прошивку контроллера (оригинальная и доработаная) (2 Кбайт)

Скачать исходник asm (2 Кбайт)

 

Список использованных источников:https://robozone.su ;https://electroprivod.ru

chipmk.ru

Контроллер шагового двигателя на микроконтроллере PIC18F2320

Данная схема представляет собой контроллер позволяющий управлять униполярным шаговым двигателем построенный на микроконтроллере PIC18F2320. Эта схема управления шаговым двигателем обеспечивает контроль при помощи сигналов DIR, STEP и ENABLE. Контроллер поддерживает режим удержания снижением тока фаз и режим микрошага.

Технические показатели устройства

  • Регулировка ограничения тока фаз осуществляется аппаратным ШИМ.
  • Состояние удержания если нет управляющего сигнала «STEP» свыше двух сек.
  • Применение многофункциональных управляющих сигналов DIR, STEP, ENABLE.
  • Функционирование в трех режимах «микрошаг», «полный шаг» и «полушаг».
  • Максимальное номинально напряжение силовой части схемы не более 90 вольт. 

Непосредственная регулировка тока фаз выполняется посредством подстроечных сопротивлений R7 и R8. Для переключения между режимами работы предназначены три перемычки (Jp1-Jp3). После преставления перемычек нужно выключить контроллер и повторно включить.

Работа контроллера проверялась на униполярном шаговом двигателе (1 Ом, 3 А), перегрева двигателя не было, его температура была в допустимых пределах. Однако для силовой части схемы очень желателен теплоотвод, размер которого зависит от потребляемой мощности шагового двигателя.

Проверялся контроллер от генератора сигналов и с помощью программы K-cam. В режиме шаг и полушаг предельная выходная частота сигнала «STEP» составляет 100 кГц, а в режиме микрошаг частота сигнала составляет 50 кГц. В ходе тестирования была получена максимальная частота вращения шагового двигателя около 1250 об/мин в режиме 1/4 шага.

Двухсторонняя печатная плата данного контроллера для управления шаговым двигателем спроектирована под ЛУТ. Мощные транзисторы VT1 - VT4  устанавливаются на печатную плату с нижней стороны (пластмассовой частью корпуса к плате) для того чтобы легко закрепить их к радиатору через теплопроводящие прокладки (слюдяные пластинки).

Операционный усилитель LM358 возможно заменить отечественным аналогом КР1040УД1. Питание схемы осуществляется от стабилизированного источника питания построенного на стабилизаторе 78l05, который можно заменить на КР1157ЕН5А. Транзисторы VT1…VT4: IRLZ44N – до 24 вольт, IRL540L – до 48 вольт, IRL640 – до 90 вольт. Микросхему 74HC08 можно заменить отечественной КР1564ЛН1.

При настройки необходимо выставить подстроечные сопротивления R7 и R8 в одинаковое положение, определив необходимое сопротивление отталкиваясь от нужного тока фазы: Rп = 56000 / ( 3,57 / ( 0,27 * I ) – 1)).

Скачать прошивку и печатную плату (1,6 Mb, скачано: 1 744)

www.robozone.su

www.joyta.ru

Контроллер шагового двигателя

Ступинский авиа-металлургический

техникум им. А.Т.Туманова

КУРСОВОЙ ПРОЕКТ

Контроллер шагового двигателя

АВТОР: Смирнов Б.Т,.

ГРУППА: Э - 11

ПРЕДМЕТ: “Аналоговая и цифровая схемотехника”

г. Ступино,

2007.

Содержание

Введение

2

1

Описание шаговых двигателей

3

2

Блок схема контроллера.

4

3

Описание принципа работы контроллера.

7

4

Печатная плата контроллера.

8

5

Программа для управления контроллером

9

Список используемой литературы

10

Введение

Целью курсовой работы стоит разработка схемы управления тремя шаговыми двигателями с помощью компьютера по порту LPT. При этом должны преследоваться следующие цели:

- простота схемы.

- применение логических элементов

- высокая скорость обработки сигнала.

1. Описание шагового двигателя

Шаговый электродвигатель - это синхронный импульсный электродвигатель, в котором импульсы тока, подаваемые в обмотки возбуждения статора, преобразуются в дискретные угловые перемещения (шаги) ротора. Конструктивно шаговые электродвигатели исполняются с явно- и неявнополюсным статором, на котором расположены обмотки возбуждения, и с ротором без обмотки, выполненным из магнитно-мягкого (реактивный ротор), или из магнитно-жесткого (активный ротор) материала. Шаговые двигатели с активным ротором позволяют получать больший вращающий момент и обеспечивают фиксацию положения ротора при обесточенных обмотках.

В шаговом электродвигателе импульсы тока через коммутатор поступают поочередно в обмотки статора, в результате чего ориентация магнитного потока в пространстве между полюсами статора дискретно меняется и вызывает поворот ротора на некоторый угол, называемый шагом ротора.

Шаговые электродвигатели применяются в приводах машин и механизмов, работающих в старт-стопном режиме, или в приводах непрерывного движения, где управляющее воздействие задается последовательностью электрических импульсов, например, в станках с ЧПУ.

В машиностроении наибольшее распространение получили высокомоментные двухфазные гибридные шаговые электродвигатели с шагом 1,8° (200 шаг/об) или 0,9° (400 шаг/об). В микрошаговом режиме можно получить разрешающую способность в 51200 шаг/об.

Главное преимущество шаговых двигателей - экономичная цена, в среднем в 1,5-2 раза дешевле асинхронных аналогов. Шаговый привод как недорогая альтернатива сервоприводу наилучшим образом подходит для автоматизации отдельных узлов и систем, где не требуется высокая динамика, точность позиционирования, большая мощность и скорость вращения, а также для замены (модернизации) шаговых приводов, выработавших установленный ресурс.

Их использование также оправдано в транспортных средствах (на кораблях, самолетах, поездах), где используется бортовое напряжение от 24 до 75 В постоянного тока.

2. Блок схема контроллера.

Схему можно разделить на три части (см. рис 1):

- Блок питания.

- Контроллер

- Драйвер.

Рис.1. Блок схема контроллера

Блок питания:

Рассчитывается исходя из используемых шаговых двигателей. Максимальный ток в режиме микро шага будет равен:

Iбп=Iоб∙2∙3, где

Iбп – мах ток блока питания

Iоб – ток одной обмотки

Расчет прост: 3 двигателя х по две запитанные обмотки в каждом х ток одной обмотки (допустим 1А) то = 3х2х1=6А.

Контролер: Разработанный контроллер может обслуживать до 32 (в моей схеме 3) шаговых двигателей последовательно, т.е. одновременно может работать только один двигатель. Параллельная работа двигателей обеспечивается программно. Контроллер управления шаговыми двигателями собран на микросхемах 555TM7 серии (3шт). Не требует прошивки.

Рис.2 схема контроллера

Драйвер: Драйвер шагового двигателя (не путать с компьютерными драйверами) представляет собой 4х канальный усилитель или 4 ключа. Собран на 4х транзисторах КТ 917 .

Рис 3.Схема драйвера.

3. Описание принципа работы контроллера.

Описание и назначение выводов разъема порта LPT.

выв.

Название

Направление

Описание

1

STROBE

ввод и вывод

устанавливается PC после завершения каждой передачи данных

2/9

DO-D7

вывод

8 линий данных

10

АСК

ввод

устанавливается в "0" внешним устройством после приема байта

11

BUSY

ввод

устройство показывает, что оно занято, путем установки этой линии в «1»

12

Paper out

ввод

для принтеров

13

Select

ввод

устройство показывает, что оно готово, путем установки на этой линии «1 »

14

Autofeed

Ввод и вывод

15

Error

ввод

индицирует об ошибке

16

Initialize

Ввод и вывод

17

Select In

Ввод и вывод

18-25

Ground

GND

общий провод

8 бит идущих от LPT разделяем на две группы по 4бит: данные и управляющие. При получении сигнала одним из трех триггеров, данные записываются в триггер ТМ7 и соответственно поступают на драйвер шагового двигателя. При снятии с ТМ7 разрешающего сигнала данные в триггере сохраняются (триггер с защелкой) и т.д.

Биты LPT

0

1

2

3

4

5

6

7

данные

Управляющий сигнал –определяет на какой двигатель придет сигнал

Т.е. для подачи на второй двигатель сигнала 0101 необходимо подать разрешающий сигнал на второй ТМ7 т.е. выдать в порт LPTсигнал:

Биты LPT

0

1

2

3

4

5

6

7

0

1

0

1

0

1

0

0

Предаваемые данные на шаговый двигатель

Данные идут на 2 двигатель

4. Печатная плата контроллера.

Печатная плата контроллера разработана в программе SprintLayout

Рис.4 печатная плата контроллера

5. Программа для управления контроллером

Была использована простая программа vri-cnc. (сайт автора программы #"#">http://vri-cnc.ru

А.К.Касаткин, М.В.Немцов. Электротехника, 4-е изд. - М.: Энергоатомиздат, 1983

А.Г.Морозов. Электротехника, электроника, импульсная техника. - М.: Высшая школа, 1987

Под ред. Б.В.Тарабрина. Справочник по интегральным микросхемам. - М.: Энергия, 1980

Ж.Марше. Операционные усилители и их применение. - М.: Энергия, 1985

yamiki.ru

Блок контроллера униполярного шагового двигателя на PIC18F2320 V4.1 - Блок управления

Особенности контроллера униполярного двигателя PIC BINAR CNC 4.1:
  1. Аппаратная ШИМ регулировка ограничения тока фаз
  2. Режим удержания при отсутствии сигнала STEP более 2-х секунд (при указанных номиналах ~ 30% от номинала)
  3. Реализован режим "fixed time off”.
  4. Большой диапазон напряжения и тока фаз (зависит от силовой части контроллера)
  5. Использование универсальных управляющих сигналов STEP, DIR, ENABLE.
  6. Работа в режимах «полный шаг», «полушаг» и «микрошаг» (FULL STEP/ HALF STEP/MICRO STEP)
  Регулировка тока фаз осуществляется с помощью подстроечных резисторов R2 и R4.

 

Перемычками Jmp1-Jmp3 на плате переключаются режимы работы «шаг», «полушаг» и «микрошаг»:  

Режимы работы     Jmp1      Jmp2        Jmp3

Доступны в стандартной прошивке drv2320.hex

1                                off            off            off

1 m                            on             off            off

1/2                             off            on            off

1/2  m                        on             on            off

1/4                             off            off            on

Эти режимы доступны в прошивке driver41_18F2320.hex

1/8                             on            off            on

1/16                           off             on           on

1/32                           on             on            on

 

В режиме 1 m двигатель развивает большую мощность, чем в режиме 1.

Режим 1/2 имеет стандартную реализацию полушага.

Режим 1/2 m – с компенсацией момента на валу двигателя.

 

   Прошивка driver41_18F2320.hex с поддержкой режима дробления шага 1, 1m, 1/2, 1/2m, 1/4, 1/8, 1/16, 1/32 была предоставлена пользователем FlashBack нашего сайта.

 

   Режим удержания с понижением тока фаз будет работать при установленной перемычке «Удержание». Ток удержания зависит от номиналов R11 и R14, с уменьшением их номиналов уменьшится и ток удержания. Любое изменение в конфигурации перемычек, требует перезапуск контроллера.

 

    Создатели контроллера униполярного шагового двигателя с сайта RoboZone, тестировали его с униполярным шаговым двигателем PL57H76-3.0-6 (1 Ом, 3 А),  нагрев двигателя был в пределах рабочего режима, нагрев контроллера минимальный (подаваемое напряжение 42 В, ток 2,7 А), но радиатор для силовой части крайне рекомендуется (габариты зависят от мощности двигателя). Максимальная частота следования сигнала STEP - 65 кГц. При тестах с выше указанными параметрами и двигателем получили максимальную скорость 1600 оборотов в минуту. В течении 10 минут (дальше просто двигатель рисковали перегреть) на данном двигателе тестировали при токе 5 А.                  Печатная плата контроллера разведена в двухстороннем варианте, изготовлена по технологии "ЛУТ", был использован лазерный принтер HP 1010, утюг и прозрачная пленка для лазерных принтеров (пленку желательно брать ту у которой есть белая подложка например XEROX). Силовые транзисторы T3 – T6 и стабилизатор VR1 монтируются на плату с нижней стороны печатной платы (пластиком к плате) для удобства крепления радиатора (как на фото ниже). Изоляция транзисторов через теплопроводящие прокладки от радиатора ОБЯЗАТЕЛЬНА!!! Транзисторы не менее чем с двойным запасом по подаваемому напряжению на силовую часть.      При использовании мощных ШД нужно уделить особое внимание блоку питания, он должен хорошо выдерживать импульсную нагрузку и иметь небольшую выходную индуктивность и сопротивление. Питание силовой части подают после того как подали напряжение 12 В. Если питание на силовую часть и на логику подаются одновременно, то необходимо установить резисторы с выводов 15 – 18 IC1 на массу, номиналом 10 – 47 кОм.

    Так же стоит обратить внимание на то, что данная схема предполагает использование IC2 именно 74HC08, т.к. временные характеристики работы схемы имеют прямую зависимость от данного типа микросхемы. Эксперименты с другими типами полевых транзисторов тоже ни к чему хорошему не приведут.

 

НАСТРОЙКА

1. До включения установить подстроечные резисторы R2 и R4 в одинаковое положение, рассчитав нужное сопротивление исходя из требуемого тока фазы: Rп = 27000 / ( 3,17 / ( R * I ) – 1 ))

      где R = R27 и R28, I = требуемый ток фазы. Формула под конкретные номиналы указанные в схеме!!!

2.    При наличии осциллографа проконтролировать напряжение и частоту на резисторах R27 и R28 в режиме 1 m, без сигнала STEP на входе и без перемычки «Удержание». При этом нас интересует только верхняя часть осциллограммы (выше ноля). Если напряжение отличается от расчетного значения (U = I*R), произвести подстройку резисторами R2 и R4. Частота ШИМ должна быть как минимум в два раза выше от максимальной частоты, которая будет подаваться по входу STEP. С выбором максимальной частоты ШИМ главное не переусердствовать, т.к. при частотах выше 200 кГц полевые транзисторы начинают ощутимо греться. Частота ШИМ зависит от индуктивности обмоток двигателя и номиналов R19, C5 и R20, C6 которые определяют время Toff.

Toff = - Ln(1 - Vm/Vp) * R * C    [Ln - это натуральный логарифм]

где:

Vm - пороговое напряжение срабатывания логической 1 по входу IC2

Vp - напряжение питания логики (в данном случае 5 вольт)

R - номинал R19, R20

C - номинал C5, C6

Т.е. к примеру Vm = 3,6 вольта и номиналы указанные в схеме: Toff = -Ln(1 - 3,6/5)*39000*0,00000000033 = 0,00001638 сек.

Время включенного состояния Ton в данном варианте можно регулировать только напряжением питания силовой части.

Хотя в большинстве случаев данное напряжение соответствует именно указанному в т.х. на ШД - source voltage.

 

Процес изготовления блока контроллера шагового двигателя

 

 

РЕКОМЕНДАЦИИ ПО СБОРКЕ

Порядок монтажа, для удобства пайки со стороны деталей:

1. Все резисторы кроме R2, R4, R27 и R28

2. Все конденсаторы кроме C9, C10 и C12

3. Диоды VD1 и VD2, все транзисторы

4. Все микросхемы

5. Стабилизатор VR1 и все разъемы

6. Резисторы R2, R4, R27 и R28

7. Конденсаторы C9, C10 и C12 

cncjuniormaster.ucoz.com