Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (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,  08:57)
Нужна помощь досталась ,от предшествиника, плата с котроллером Atmega8535. Плата проектировалась для управления пресса в режимах:
а)Наладка
б)Делительная головка (управление ШД)
в)Ручной
г)От педали(ножной)

Суть проблеммы.
ШД управляеться посредством L297 и двух L6203. Шаговый двигатель ШДР-56 на 6-ть выводов.Подключен на 4-е.Работает через раз.Раз работает нормально,а раз стоит и не вращаеться.
Программа управления написана на СИ . Прошита через AVR CodeVIsion

Двигатель работает в шаговом режиме,хотя на микросхеме L297 ,судя по DataSheet, установлен полушаговый режим Half.
Очень большая просьба помогитье.

Цитата

Товарищи Ученые - у меня в подвале происходит подземный стук! Разберитесь!

Давай схему платы и программу, а то штатные телепаты все в отпусках  smile 

Автор: Deliverance 22.1.2008, 10:06
Вот прога

Добавлено @ 10:11
А схема не грузиться.нарисована в пикаде( Отправил на маил.

Сорь ,на тот исходник
Вот тот что нужен 

Автор: xvr 22.1.2008, 11:48
Цитата(Deliverance @ 22.1.2008,  10:06)
Вот прога

Добавлено @ 10:11
А схема не грузиться.нарисована в пикаде( Отправил на маил.


Пока не пришло smile

Цитата

Сорь ,на тот исходник
Вот тот что нужен

При беглом взгляде на исходник (насколько я понял у тебя step ШД подключен к PORTB.4) я заметил вот это:
Код

#define M1              PORTB.4  //Двигатель основной М1

И дальнейшую работу с M1 для простого включения и выключения двигателя, что не согласуется с
Код

void step(void)
{
PORTB.0=1; PORTB.1=1;   //Установка тока шагового двигателя =1.5А
PORTB.4=1;
delay_us(600);
PORTB.4=0;
delay_us(600);
}

Ты уж определись что и куда у тебя подключено  smile 

Автор: Deliverance 22.1.2008, 11:59
Яж говорю,что не тот скинул(((

Автор: Deliverance 22.1.2008, 12:17
После подачи питания на плату

МК запускает подпрограмму SelectMode

Выбираем режим DG
Потом запускается подпрограмма SelectPaz
Потом InitReduktor
Вот тут и начинаются  траблы((

Пробовал запустить только TestReduktor работает нормально(писалось спецом для для проверки датчиков холла)
А вот инит рдуктор не работае,один раз проходит пишет ,что шаги не совпадают и все,больше ни шагу движок не делает.даже после перевключения только мычит и всё

Автор: xvr 22.1.2008, 13:14
Цитата(Deliverance @ 22.1.2008,  12:17)
После подачи питания на плату

МК запускает подпрограмму SelectMode

Выбираем режим DG
Потом запускается подпрограмма SelectPaz
Потом InitReduktor
Вот тут и начинаются  траблы((

В первый раз шагает нормально?
Цитата

А вот инит рдуктор не работае,один раз проходит пишет ,что шаги не совпадают и все,больше ни шагу движок не делает.
И не  будет - у тебя Init_Reductor зацикливется в строке 325 при несовпадении шагов (кстати - сколько шагов показывает?)
Цитата

даже после перевключения только мычит и всё
После перевключения контроллера? Это странно, должно все сбросится.

PS. Схема так и не пришла.

Автор: Deliverance 22.1.2008, 13:39
204 шага,а почему за цикливаеться?
Не после сброса питания ,всё также ,тока когда до инит редуктора доходит начинает сразу мычать(

Автор: xvr 22.1.2008, 14:34
Цитата(Deliverance @ 22.1.2008,  13:39)
204 шага,а почему за цикливаеться?

У тебя там есть такой код
Код

 if (Kol_step!=9802) {
  lcd_gotoxy(0,0);
  lcd_putsf("Bad reduktor!!!");
  lcd_gotoxy(0,1);
  sprintf(lcd_buffer, "Steps=\x%5u", Kol_step);
  lcd_puts(lcd_buffer);
 // PORTB.0=1; PORTB.1=1;   //Установка тока шагового двигателя =1.5А
  Exit=0;
  while (Exit==0) {
   //if (Sel_Mode==0) { Test_Reductor(); };  
  };
 };

Если программа попадает в 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
Цитата(Deliverance @ 22.1.2008,  15:06)
9802 - это шаги ШД,которые он делает за полный оборот заготовки, 204- это шаги ШД за один оборот вала ШД ,Редуктор 1:48,отсюда и все цифры,посмотри ,а нужен там вообще этот while? Датчики работают так,один отлеживает кол-во оборотов вала ШД,а второй оборотов Заготовки ,т.е. стоит ,грубо говоря, на валу редуктора. 
Процедура Init_Reduktor подразумевает следующее:
поверяються датчики холла (в каком положении находяться). Должны оба прийти в 0, Пока они не пришли выполняеться процедура Step.
Когда пришли,выполняеться инициализация. Я так понимаю For a=0; a<200; a++; Для того чтоб сдвинуть с нулевой точки.Следовательно редуктор должен сделать не больше однг8о полного круга,потом второй раз здвигаем датчик на 200 шагов,но при этом шаги уже считаем и считаем до того момента пока не придем в 0 датчиком редуктора,потом сравниваем кол-во шагов и если не совпали.то выводим "плохой редуктор". А совпали идём дальше

Добавлено @ 15:09
Вот так должно работать,а не хочет(( Муфт нет ,тормозить может тока электроникой.ну и если клина поймает редуктор.но на проверке ДХ работает же ! Не клинит! 

У тебя в 2х while'ах (стр 291 и 310) противоречивые условия - они должны быть одинаковыми.
При срабатывании датчики выдают 0, я правильно понял? Тогда условие нужно записать так
( !(DH1==0 && DH2==0) )

Отбой, условия у тебя одинаковые, хотя и записаны по разному smile

Остается предположение, что датчик с вала редуктора не успевает снять 0 за один оборот вала ШД (люфт или зона срабатывания датчика слишком большая).

NB. А while лучше написать как while(DH1 || DH2)

Цитата

Ещё раз кинул схему на маил. Кидал непосредственно с маил ру.
 А, ты ее на мой e-mail кидал?! Тогда я ее посмотрю только вечером (как домой дойду)

Автор: Deliverance 22.1.2008, 16:30
Условия и так и так пробовал,работает,суть в том ,что редуктор сфолочь клинит((( Движок не может сорвать.вот почему не включался второй раз. без кострукции (отдельно тока ШД) работает. Вопрос по поводу шагового и полушагового режима остался открытым. Уменя ШД с 6-ю выводами,два средних по схеме должны быть "-" А у меня тупо они откинуты,непойму почему.Спасибо за помошь,оч помог!
Просьба, завтра если что,помочь. А вообще былоб удобнее в аське,моя есть твою не знаю.

Добавлено через 2 минуты и 10 секунд
Да и ещё Когда пытаюсь сдержать ШД (рукой за вал) Чувствую что проскакивает.как избежать проскакивания?

Автор: xvr 22.1.2008, 16:59
Цитата(Deliverance @ 22.1.2008,  16:30)
Условия и так и так пробовал,работает,суть в том ,что редуктор сфолочь клинит((( Движок не может сорвать.вот почему не включался второй раз. 

Люфт в редукторе или ШД не тянет редуктор? Если первое - то увеличь количество шагов для ухода с 0 (сделай на несколько полных оборотов вала ШД), если второе - то труба :(

Цитата

Вопрос по поводу шагового и полушагового режима остался открытым. 

Посмотрю схему, как доберусь до дома

Цитата

Уменя ШД с 6-ю выводами,два средних по схеме должны быть "-" А у меня тупо они откинуты,непойму почему.

Судя по всему движок расчитан под униполярное включение, а драйвер - под биполярное. Должно работать, но момент на валу упадет

Цитата

Спасибо за помошь,оч помог!
Просьба, завтра если что,помочь. А вообще былоб удобнее в аське,моя есть твою не знаю.


Аськи нет, увы.

Цитата

Да и ещё Когда пытаюсь сдержать ШД (рукой за вал) Чувствую что проскакивает.как избежать проскакивания?

Мал момент. Варианты:
1) Увеличить напряжение питания
2) Перейти на полный шаг

Автор: xvr 22.1.2008, 22:04
Посмотрел схему, есть несколько замечаний:
1) Максимальное напряжение на выводе Ref L297 3.3V, по datasheet допутимый максимум - 3.0V
2) При номинале Rsens (U32 & U33) в 0.2Ом ток максимальный ток стабилизации для двигателя - 15А, что явно ни в какие ворота не лезет. Увелич резисторы до 2 Ом. Сейчас двигатель явно работает без стабилизации вообще, что при его сопротивлении обмотки сказывается не очень сильно smile
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
Цитата(Deliverance @ 23.1.2008,  10:29)
Вобщем проверил плату. Вместо 0,2 Ом стоят 10 Ом с классом точности F , 

Ага, т.е. ток в обмотках будет 330ма, что явно мало - поэтому движок и не тянет, уменьши до 2 ом, может быть при этом придется повесить радиаторы на L6203

Цитата

программа работает ,редуктор всё таки выделываеться(( 

Это не редуктор, а тот, кто впаял 10 ом резисторы  smile 

Цитата

Хочу спросить,поповоду шагового режима. В шаговом режиме кол-во шагов 200,а в полушаговом 400?

Скорее 100/200 - у тебя сейчас включен полушаговый и ШД делает оборот за 204 шага.

Цитата

Да и датчики если не напротив магнита ДХ=1.

Угу, я так и предполагал

Автор: 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
Цитата(Deliverance @ 24.1.2008,  10:06)
Включен фул(шаговый) 204 шага на оборот.Просмотри,пожалуйста, программу ещё раз может есть какие-то замечания.Еще внушают сомнение строчки типа "PORTB.0=1; PORTB.1=1; " и "PORTB.0=1; PORTB.1=0; " Собственно на менсте ли они?

Собственно если у тебя отсуствуют Rsens резисторы, то управление током двигателя работать не будет, поэтому место, где стоят PORTB.0 и пр по барабану  smile 

Автор: Deliverance 24.1.2008, 11:22
Я это тоже запметил. Вопрос такой какую задержку поставить Здесь: 

Код

void step(void)
{
PORTB.0=1; PORTB.1=1;   //Óñòàíîâêà òîêà øàãîâîãî äâèãàòåëÿ =1.5À
PORTB.4=1;
delay_us(600);
PORTB.4=0;
delay_us(600);
}


Я имею ввиду конкретно этот ШДР 56, ставил 300 не крутится.

Автор: xvr 24.1.2008, 12:51
Цитата(Deliverance @ 24.1.2008,  11:22)
Я это тоже запметил. Вопрос такой какую задержку поставить Здесь: 

Код

void step(void)
{
PORTB.0=1; PORTB.1=1;   //Óñòàíîâêà òîêà øàãîâîãî äâèãàòåëÿ =1.5À
PORTB.4=1;
delay_us(600);
PORTB.4=0;
delay_us(600);
}


У него максимальная скорость вращения - 400 шагов в сек, т.е. 2.5 ms на шаг, т.е. минимальная задержка - 1.25 ms (для полного шага). Для половинного соотвественно - 625 mks.

Цитата

Я имею ввиду конкретно этот ШДР 56, ставил 300 не крутится.

При переходе на полный шаг ее надо увеличивать в 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
Всё! Заработало!!! smile 
Таперь вопрос по поводу релюшек(К1иК2) которые включают пускатели движков. Сигналы с PORT D.0 и PORT D.1 не открывают трансы
КТ 829А ,не пойиу почему. В проге вроде всё верно. Однако есть мнение что с контроллера всётаки не "+" а "-" на базу трансов идёт.непойму почему! Должно бёть "+". Посмотри пожалуйста. smile 

Автор: xvr 29.1.2008, 21:00
Цитата(Deliverance @ 29.1.2008,  12:43)
Всё! Заработало!!! smile 
Таперь вопрос по поводу релюшек(К1иК2) которые включают пускатели движков. Сигналы с PORT D.0 и PORT D.1 не открывают трансы
КТ 829А ,не пойиу почему. В проге вроде всё верно. Однако есть мнение что с контроллера всётаки не "+" а "-" на базу трансов идёт.непойму почему! Должно бёть "+". Посмотри пожалуйста. smile

Посмотрел, вроде все правильно.
Проверь, не включен ли у тебя UART - он перепрограмирует PD0&1
Проверь резисторы в базе - не впаяли ли туда 0.68 Ом  smile 
Попробуй оторвать базы транзисторов от выходов контролера и посмотри, будет ли на ногах контролера +5В, если нет - ищи в программе, если да - меняй транзисторы. 

Автор: Deliverance 30.1.2008, 13:23
Конторллер поменял,сгорели ноги связаные с портами Д0 и Д1 ,на новом +5 на них присутствует транзисторы вылетели оба,буду менять 
Про сопроты на базе поподробнее можно.

Автор: xvr 30.1.2008, 20:56
Цитата(Deliverance @ 30.1.2008,  13:23)
Конторллер поменял,сгорели ноги связаные с портами Д0 и Д1 ,на новом +5 на них присутствует транзисторы вылетели оба,буду менять 
Про сопроты на базе поподробнее можно.

Очень просто - если резисторы очень маленькие (или их нет) - то и будет описанный эффект: сгоревшие транзисторы и выбитые выходы контролера

Автор: Deliverance 31.1.2008, 08:43
Стоят 780 Ом и там и там.я так понимаю.ты имеешь ввиду те которые между базой трензистора и ногой контроллера?

Автор: xvr 31.1.2008, 09:47
Цитата(Deliverance @ 31.1.2008,  08:43)
Стоят 780 Ом и там и там.я так понимаю.ты имеешь ввиду те которые между базой трензистора и ногой контроллера?

Именно они. 780 Ом вполне нормально.

Автор: Deliverance 31.1.2008, 09:56
тогда напрашиваеться вопрос.а почему сгорели транзисторы?И ещё смущает то что напруга на эмитере транса дето 36 вольт по отношения к катушке реле

Автор: xvr 31.1.2008, 14:42
Цитата(Deliverance @ 31.1.2008,  09:56)
тогда напрашиваеться вопрос.а почему сгорели транзисторы?

Сгореть могли по сотне разных причин:
1) Отвалились диоды, включенные паралельно катушкам реле
2) Слишком большой ток через реле - транзисторы банально перегрелись и пробились
3) Слишком большое напряжение на реле - транзисторы пробились по превышению Vкэ
4) КЗ в реле (достаточно коротнуть один раз при включенном реле)

Цитата

И ещё смущает то что напруга на эмитере транса дето 36 вольт по отношения к катушке реле

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
Цитата(Deliverance @ 4.2.2008,  09:31)
Привет,слу,а может ли полярность давать такие эфекты? Теристор n-p-n. На эмитере "-" на базе "+" на коллекторе "+" .Может нужен не n-p-n,а p-n-p теристор?

Транзистор правильный. n-p-n как раз и управляется + на базе по отношению к эмитеру.

Автор: Deliverance 4.2.2008, 16:02
Прорядок ,заработало,был плохой контект на сопроте от контроллера)Ща буду С датчиком мертвой точки разбираться и кнопочками))
Чёйто не включаються) Спасибо,ты мне так помогаешь))  Трансы поставил КТ 805БМ
 

Автор: xvr 4.2.2008, 18:50
Цитата(Deliverance @ 4.2.2008,  16:02)
Прорядок ,заработало,был плохой контект на сопроте от контроллера)Ща буду С датчиком мертвой точки разбираться и кнопочками))
Чёйто не включаються) Спасибо,ты мне так помогаешь))  Трансы поставил КТ 805БМ

КТ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:47)
Работают.нашёл другой бок Port C.7 не принимал сигнал,так как он соеденн с базой транзистора,пересадил на  PORT C.5 и порядок
Теперь осталось отстроить датчик БВК 201 и будет работать. У тя нет случайно инфы по БВК 201 или ссылочки де стянуть?

А что это вообще такое (и чеё)?  smile 

Автор: Deliverance 7.2.2008, 15:51
Это древние бесконтактные выключатели)) Отслеживают положение верхней мёртвой точки на сомо пресе)) конструктивно подходят вот их и оставили)
С воздушным зазором,я так думаю там геркончик или что-то типа этого внутри

Автор: Deliverance 11.2.2008, 12:18
Спасиюо тебе огромное за помощь! Сам бы не одолел smile  smile  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)