| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Управление посредством L297 и двух L6203 |
| Автор: Deliverance 22.1.2008, 08:57 |
| Нужна помощь досталась ,от предшествиника, плата с котроллером Atmega8535. Плата проектировалась для управления пресса в режимах: а)Наладка б)Делительная головка (управление ШД) в)Ручной г)От педали(ножной) Суть проблеммы. ШД управляеться посредством L297 и двух L6203. Шаговый двигатель ШДР-56 на 6-ть выводов.Подключен на 4-е.Работает через раз.Раз работает нормально,а раз стоит и не вращаеться. Программа управления написана на СИ . Прошита через AVR CodeVIsion Двигатель работает в шаговом режиме,хотя на микросхеме L297 ,судя по DataSheet, установлен полушаговый режим Half. Очень большая просьба помогитье. |
| Автор: xvr 22.1.2008, 09:08 | ||||
Давай схему платы и программу, а то штатные телепаты все в отпусках |
| Автор: Deliverance 22.1.2008, 10:06 |
| Вот прога Добавлено @ 10:11 А схема не грузиться.нарисована в пикаде( Отправил на маил. Сорь ,на тот исходник Вот тот что нужен |
| Автор: xvr 22.1.2008, 11:48 | ||||||||
Пока не пришло
При беглом взгляде на исходник (насколько я понял у тебя step ШД подключен к PORTB.4) я заметил вот это:
И дальнейшую работу с M1 для простого включения и выключения двигателя, что не согласуется с
Ты уж определись что и куда у тебя подключено |
| Автор: Deliverance 22.1.2008, 11:59 |
| Яж говорю,что не тот скинул((( |
| Автор: Deliverance 22.1.2008, 12:17 |
| После подачи питания на плату МК запускает подпрограмму SelectMode Выбираем режим DG Потом запускается подпрограмма SelectPaz Потом InitReduktor Вот тут и начинаются траблы(( Пробовал запустить только TestReduktor работает нормально(писалось спецом для для проверки датчиков холла) А вот инит рдуктор не работае,один раз проходит пишет ,что шаги не совпадают и все,больше ни шагу движок не делает.даже после перевключения только мычит и всё |
| Автор: xvr 22.1.2008, 13:14 | ||||||
В первый раз шагает нормально?
PS. Схема так и не пришла. |
| Автор: Deliverance 22.1.2008, 13:39 |
| 204 шага,а почему за цикливаеться? Не после сброса питания ,всё также ,тока когда до инит редуктора доходит начинает сразу мычать( |
| Автор: xvr 22.1.2008, 14:34 | ||||||
У тебя там есть такой код
Если программа попадает в if, что у тебя и происходит, то она циклится в while (Exit==0), т.к. тело цикла у тебя пустое, а переменная Exit так и останется в нуле. Судя по тому, что число шагов сильно отличается от требуемого, то неправильна либо логика работы с датчиками хола либо где то механическая неисправность. Как должны работать эти датчики?
Это странно, как минимум 400 шагов он должен был сделать. А импульсы на ШД вообще выдаются? Может остался включенным какой нибудь тормоз или муфта? |
| Автор: Deliverance 22.1.2008, 15:06 |
| 9802 - это шаги ШД,которые он делает за полный оборот заготовки, 204- это шаги ШД за один оборот вала ШД ,Редуктор 1:48,отсюда и все цифры,посмотри ,а нужен там вообще этот while? Датчики работают так,один отлеживает кол-во оборотов вала ШД,а второй оборотов Заготовки ,т.е. стоит ,грубо говоря, на валу редуктора. Процедура Init_Reduktor подразумевает следующее: поверяються датчики холла (в каком положении находяться). Должны оба прийти в 0, Пока они не пришли выполняеться процедура Step. Когда пришли,выполняеться инициализация. Я так понимаю For a=0; a<200; a++; Для того чтоб сдвинуть с нулевой точки.Следовательно редуктор должен сделать не больше однг8о полного круга,потом второй раз здвигаем датчик на 200 шагов,но при этом шаги уже считаем и считаем до того момента пока не придем в 0 датчиком редуктора,потом сравниваем кол-во шагов и если не совпали.то выводим "плохой редуктор". А совпали идём дальше Добавлено через 2 минуты и 55 секунд Вот так должно работать,а не хочет(( Муфт нет ,тормозить может тока электроникой.ну и если клина поймает редуктор.но на проверке ДХ работает же ! Не клинит! Ещё раз кинул схему на маил. Кидал непосредственно с маил ру. |
| Автор: xvr 22.1.2008, 16:23 | ||||
У тебя в 2х while'ах (стр 291 и 310) противоречивые условия - они должны быть одинаковыми. При срабатывании датчики выдают 0, я правильно понял? Тогда условие нужно записать так ( !(DH1==0 && DH2==0) ) Отбой, условия у тебя одинаковые, хотя и записаны по разному Остается предположение, что датчик с вала редуктора не успевает снять 0 за один оборот вала ШД (люфт или зона срабатывания датчика слишком большая). NB. А while лучше написать как while(DH1 || DH2)
|
| Автор: Deliverance 22.1.2008, 16:30 |
| Условия и так и так пробовал,работает,суть в том ,что редуктор сфолочь клинит((( Движок не может сорвать.вот почему не включался второй раз. без кострукции (отдельно тока ШД) работает. Вопрос по поводу шагового и полушагового режима остался открытым. Уменя ШД с 6-ю выводами,два средних по схеме должны быть "-" А у меня тупо они откинуты,непойму почему.Спасибо за помошь,оч помог! Просьба, завтра если что,помочь. А вообще былоб удобнее в аське,моя есть твою не знаю. Добавлено через 2 минуты и 10 секунд Да и ещё Когда пытаюсь сдержать ШД (рукой за вал) Чувствую что проскакивает.как избежать проскакивания? |
| Автор: xvr 22.1.2008, 16:59 | ||||||||||
Люфт в редукторе или ШД не тянет редуктор? Если первое - то увеличь количество шагов для ухода с 0 (сделай на несколько полных оборотов вала ШД), если второе - то труба :(
Посмотрю схему, как доберусь до дома
Судя по всему движок расчитан под униполярное включение, а драйвер - под биполярное. Должно работать, но момент на валу упадет
Аськи нет, увы.
Мал момент. Варианты: 1) Увеличить напряжение питания 2) Перейти на полный шаг |
| Автор: xvr 22.1.2008, 22:04 |
| Посмотрел схему, есть несколько замечаний: 1) Максимальное напряжение на выводе Ref L297 3.3V, по datasheet допутимый максимум - 3.0V 2) При номинале Rsens (U32 & U33) в 0.2Ом ток максимальный ток стабилизации для двигателя - 15А, что явно ни в какие ворота не лезет. Увелич резисторы до 2 Ом. Сейчас двигатель явно работает без стабилизации вообще, что при его сопротивлении обмотки сказывается не очень сильно 3) После увеличения резисторов до 2х Ом можно поднять напряжение питания двигателя (раза в 2) 4) Переведи L297 в Full Step режим - момент на валу увеличится 5) Двигатель сам по себе довольно хлипкий, может редуктор не потянуть несмотря ни на что :( |
| Автор: Deliverance 22.1.2008, 22:58 |
| Спасибо,завтра буду смотреть поместу,всё дело в том ,что я как раз не электронщик(( Эта тема для меня в нове.Ни платами ни ШД ни электроникой раньше вообще не занимался.Поэтому прошу мне простить мою некопетентность в даном вопросе.Ещё раз спасибо,а то посоветоваться не с кем было.) |
| Автор: Deliverance 23.1.2008, 10:29 |
| Вобщем проверил плату. Вместо 0,2 Ом стоят 10 Ом с классом точности F , программа работает ,редуктор всё таки выделываеться(( Хочу спросить,поповоду шагового режима. В шаговом режиме кол-во шагов 200,а в полушаговом 400? Да и датчики если не напротив магнита ДХ=1. |
| Автор: cardinal 23.1.2008, 13:16 |
| Модератор: Пожалуйста, один топик - один вопрос. Deliverance, создай себе отдельную тему! |
| Автор: xvr 23.1.2008, 13:59 | ||||||||
Ага, т.е. ток в обмотках будет 330ма, что явно мало - поэтому движок и не тянет, уменьши до 2 ом, может быть при этом придется повесить радиаторы на L6203
Это не редуктор, а тот, кто впаял 10 ом резисторы
Скорее 100/200 - у тебя сейчас включен полушаговый и ШД делает оборот за 204 шага.
Угу, я так и предполагал |
| Автор: Deliverance 24.1.2008, 10:06 |
| Включен фул(шаговый) 204 шага на оборот.Просмотри,пожалуйста, программу ещё раз может есть какие-то замечания.Еще внушают сомнение строчки типа "PORTB.0=1; PORTB.1=1; " и "PORTB.0=1; PORTB.1=0; " Собственно на менсте ли они? |
| Автор: xvr 24.1.2008, 10:59 | ||
Собственно если у тебя отсуствуют Rsens резисторы, то управление током двигателя работать не будет, поэтому место, где стоят PORTB.0 и пр по барабану |
| Автор: Deliverance 24.1.2008, 11:22 | ||
Я это тоже запметил. Вопрос такой какую задержку поставить Здесь:
Я имею ввиду конкретно этот ШДР 56, ставил 300 не крутится. |
| Автор: xvr 24.1.2008, 12:51 | ||||||
У него максимальная скорость вращения - 400 шагов в сек, т.е. 2.5 ms на шаг, т.е. минимальная задержка - 1.25 ms (для полного шага). Для половинного соотвественно - 625 mks.
При переходе на полный шаг ее надо увеличивать в 2 раза, а не уменьшать. |
| Автор: Deliverance 24.1.2008, 13:10 |
| Вот и я так то же думал,но сомневался. Значит сответственно 1250 будет как раз для шагового режима. Обнаружил ещё одну ошибку +5 подавал не на 19 ногу L297 а на 20 Reset. А режим то оставался шаговым,так как 19 Half/Full соеденена на плате дорожкой с 17 CW/CCW. Как оно вообще работало!)) Собственно на GND. |
| Автор: Deliverance 29.1.2008, 12:43 |
| Всё! Заработало!!! Таперь вопрос по поводу релюшек(К1иК2) которые включают пускатели движков. Сигналы с PORT D.0 и PORT D.1 не открывают трансы КТ 829А ,не пойиу почему. В проге вроде всё верно. Однако есть мнение что с контроллера всётаки не "+" а "-" на базу трансов идёт.непойму почему! Должно бёть "+". Посмотри пожалуйста. |
| Автор: xvr 29.1.2008, 21:00 | ||
Посмотрел, вроде все правильно. Проверь, не включен ли у тебя UART - он перепрограмирует PD0&1 Проверь резисторы в базе - не впаяли ли туда 0.68 Ом Попробуй оторвать базы транзисторов от выходов контролера и посмотри, будет ли на ногах контролера +5В, если нет - ищи в программе, если да - меняй транзисторы. |
| Автор: Deliverance 30.1.2008, 13:23 |
| Конторллер поменял,сгорели ноги связаные с портами Д0 и Д1 ,на новом +5 на них присутствует транзисторы вылетели оба,буду менять Про сопроты на базе поподробнее можно. |
| Автор: xvr 30.1.2008, 20:56 | ||
Очень просто - если резисторы очень маленькие (или их нет) - то и будет описанный эффект: сгоревшие транзисторы и выбитые выходы контролера |
| Автор: Deliverance 31.1.2008, 08:43 |
| Стоят 780 Ом и там и там.я так понимаю.ты имеешь ввиду те которые между базой трензистора и ногой контроллера? |
| Автор: xvr 31.1.2008, 09:47 | ||
Именно они. 780 Ом вполне нормально. |
| Автор: Deliverance 31.1.2008, 09:56 |
| тогда напрашиваеться вопрос.а почему сгорели транзисторы?И ещё смущает то что напруга на эмитере транса дето 36 вольт по отношения к катушке реле |
| Автор: xvr 31.1.2008, 14:42 | ||||
Сгореть могли по сотне разных причин: 1) Отвалились диоды, включенные паралельно катушкам реле 2) Слишком большой ток через реле - транзисторы банально перегрелись и пробились 3) Слишком большое напряжение на реле - транзисторы пробились по превышению Vкэ 4) КЗ в реле (достаточно коротнуть один раз при включенном реле)
36В на эмитере означает, что само реле подключено к 36В (а не 24В, как на схеме). Я не помню, сколько у КТ829? предельное Vкэ, но если вольт 40 - то могли и пробится. Если больше, то ничего страшного. |
| Автор: Deliverance 4.2.2008, 09:31 |
| Привет,слу,а может ли полярность давать такие эфекты? Теристор n-p-n. На эмитере "-" на базе "+" на коллекторе "+" .Может нужен не n-p-n,а p-n-p теристор? |
| Автор: xvr 4.2.2008, 10:52 | ||
Транзистор правильный. n-p-n как раз и управляется + на базе по отношению к эмитеру. |
| Автор: Deliverance 4.2.2008, 16:02 |
| Прорядок ,заработало,был плохой контект на сопроте от контроллера)Ща буду С датчиком мертвой точки разбираться и кнопочками)) Чёйто не включаються) Спасибо,ты мне так помогаешь)) Трансы поставил КТ 805БМ |
| Автор: xvr 4.2.2008, 18:50 | ||
КТ805 могут не работать - не хватит h21Э (коэффициент усиления по току). КТ829 - это составные транзисторы, у них h21Э может быть более 1000, у КТ805 - порядка 150-200 в лучшем случае. |
| Автор: Deliverance 7.2.2008, 15:47 |
| Работают.нашёл другой бок Port C.7 не принимал сигнал,так как он соеденн с базой транзистора,пересадил на PORT C.5 и порядок Теперь осталось отстроить датчик БВК 201 и будет работать. У тя нет случайно инфы по БВК 201 или ссылочки де стянуть? |
| Автор: xvr 7.2.2008, 15:49 | ||
А что это вообще такое (и чеё)? |
| Автор: Deliverance 7.2.2008, 15:51 |
| Это древние бесконтактные выключатели)) Отслеживают положение верхней мёртвой точки на сомо пресе)) конструктивно подходят вот их и оставили) С воздушным зазором,я так думаю там геркончик или что-то типа этого внутри |
| Автор: Deliverance 11.2.2008, 12:18 |
| Спасиюо тебе огромное за помощь! Сам бы не одолел |