Гость CTPAHNK Опубликовано 29 декабря, 2016 Поделиться Опубликовано 29 декабря, 2016 Приветствую дорогое сообщество, прошу помощи в реализации проекта- дрифт трайка для детворы, а именно в создании контроллера для мотор-колеса управляемого с ардуино. Сам трайк я построил еще летом, и тогда использовал дешевый китайский контроллер для запуска двигателя, вот пробный заезд как видно из видео, мне необходимо отталкиваться чтобы стартануть, это происходит из за отсутствия датчиков холла, и мой вес ему трудно сдернуть с места чтобы потом понимать куда крутиться колесо и уже его дальше крутить. С того времени было решено построить свой контроллер для управления, а также был сделан апгрейд колеса и встроены датчики холла. Так как времени было всегда в обрез, занимался мало этим делом, но вот, праздники и можно малость поработать. Для начала подключил датчики холла к ардуине, убедился что прилетают все данные и написал простую программу по вращению колеса. Данная программа работает без проблем с моторчиком от сдрома - проверенно, прилагаю... //throttle const int analogInPin1 = 22; //hall input int hall_sensor_a = 7; int hall_sensor_b = 2; int hall_sensor_c = 4; //Motor setup const int a_motor_lout = 3; const int a_motor_pwm_hout = 9; const int b_motor_lout = 6; const int b_motor_pwm_hout = 11; const int c_motor_lout = 10; const int c_motor_pwm_hout = 5; void setup(){ // Serial.begin(9600); pinMode(a_motor_lout, OUTPUT); pinMode(a_motor_pwm_hout, OUTPUT); pinMode(b_motor_lout, OUTPUT); pinMode(b_motor_pwm_hout, OUTPUT); pinMode(c_motor_lout, OUTPUT); pinMode(c_motor_pwm_hout, OUTPUT); pinMode(hall_sensor_a, INPUT); pinMode(hall_sensor_b, INPUT); pinMode(hall_sensor_c, INPUT); } void loop(){ /* int A; A = 11111; Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); */ while(1){ int val = analogRead(analogInPin1); val = constrain(val, 211, 830); int thLevel = map(val, 211, 830, 50, 0); if ( thLevel <= 45){ // int thLevel = 0; delay(thLevel); if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_pwm_hout,1);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,1);digitalWrite(c_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_pwm_hout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==1){ digitalWrite(c_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0); digitalWrite(b_motor_pwm_hout,1);digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(a_motor_lout,1); digitalWrite(b_motor_lout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_pwm_hout,1);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,1);digitalWrite(b_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,1);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,1); delay(thLevel);} }}}}} } else{ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0); }}} далее имеются в руках только N-channel мосфеты STP75NF75 которые решил завести с помощью драйвера HIP4086 нарисовал схему, вытравил плату, так как не очень удобно было к его ногам прицепиться(хотя пытался), пытаюсь запустить, а он не подает жизни :(. На двух выходах драйвера к мосфетам всегда высокий уровень(+12), и что бы я не подавал на входы, все молчит. Ранее когда пытался завести похожее но на базе транзисторов, то хоть мотор ногами дергал, но не крутился, а сейчас вообще тишина. Ни мосфеты, ни другие элементы на плате не греются. Не могу ума приложить что не так тут и как проверить еще... Буду признателен за любые комментарии. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей_Харьков Опубликовано 30 декабря, 2016 Поделиться Опубликовано 30 декабря, 2016 (изменено) Номиналы резисторов R1-R6 как определяли? Номиналы конденсаторов С1-С3 как определяли? Рекомендуемый пример применения микросхемы http://www.intersil.com/content/dam/Intersil/documents/an18/an1829.pdf и http://www.intersil.com/content/dam/Intersil/documents/an96/an9642.pdf В примере на ток 20А и напряжение 48 В резисторы R1-R6 имеют значение 33 Ом и схема немного сложнее. Ну и просто банальный совет посмотреть осциллографом сигналы на микросхеме и крутнув вал руками. В примере AN9642 номинал резисторов R1-R6 еще меньше чем в примере AN1829 и схема включения проще. !!!! вход UVLO отвечающий за отключение контролера при низком напряжения. Не силен в английском, но по описанию вроде не стоит его подключать к земле через резистор. Сделайте как в базовом примере an9642 на рис.13. Или может кто поможет советом? !!!! ВХОД Rdel отвечающий за тайминги (задержки включения) подключен к Vdd через резистор 2.2 кОм, в одном примере значение 20 кОм, в другом рекомендовано значение от 10 кОм до 100 кОм. Либо поменяйте, либо поясните выбор. Изменено 30 декабря, 2016 пользователем Сергей_Харьков 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
CTPAHNK Опубликовано 30 декабря, 2016 Поделиться Опубликовано 30 декабря, 2016 Приветствую Сергей, спасибо что заглянули в тему, и еще конструктивно покопались Оба примера применения рассматривал, и на их принципах строил свою, как выбирал R1-R6, уже не помню, но точно помню что считал, хм, где это я их насчитал....!? Понял, исправлю. С1-С3, считал, а именно от сюда ноги растут, это KB интерсиловский, вопрос конечно в голове остался, почему их совет не совпал с расчетами, и если следовать было ему, то в их схеме должно было быть 616nf вместо 1nf. Нашел интересное чтиво тут сейчас все пересчитаю и попробую еще раз, отпишусь сегодня, а пока побежал за селедкой, мадамы шубу хотят, будем им селедка под шубой 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Сергей_Харьков Опубликовано 30 декабря, 2016 Поделиться Опубликовано 30 декабря, 2016 Привет , с праздниками. В примерах конденсаторы 0.22 мкф C1-C3. Возможно и 0.37 мкф пройдет. Но резисторы на входы управляющих разными доп. функциями лучше сделать по примеру-даташиту . Например R10 по нему должен быть 50 кОм , а не 1 кОм. И в этом варианте будет активна функция контроля уставки по напряжению...., если подключить по рис.13 c Vdd то функция будет отключена. Может из-за мелочи вроде резистора R10 - схема не запустится. Лучше по даташиту, тем более в первый раз 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 31 декабря, 2016 Поделиться Опубликовано 31 декабря, 2016 Сергей, спасибо за помощь, я все таки пересчитал конденсаторы и резисторы следуя указаниям с упомянутого документа, получилось следующее С1-С3 = 0.199 мкф, а резисторы R1-R6 = 16,3 Ом - это уже больше походит на "даташитовские". Утром попробую перепаять все и также управляющую часть, отпишусь по результатам. Спасибо! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 1 января, 2017 Поделиться Опубликовано 1 января, 2017 С новым годом! Всем здоровья, удачи, семейного благополучия, новых и интересных идей в новом году! Вчера не получилось покрутить электронику, так как придавался плотским утехам за столом :), думаю многие так вчера лудили желудок и печень Сегодня внес изменения в схему, и о чудо, мотор дергает ногой... но гад не крутится... Есть большое подозрение на то что датчики холла отрабатывают с задержкой, а точнее оборот создаваемый тягой двигателя не дотягивает до переключения датчика , как результат он резко дергается и потом замирает в одном положении, рукой можно с силой прокрутить в следующею "фазу", но там практически тот-же результат. А может что-то еще? Когда первый раз включил, была жуть какая то, мотор дергался как дурной и не обращал внимание на сигналы с мк, на всех выходах творилась страшная картина мусорного характера, далее заметил на лабораторнике просадку по напряжению с 36 в 5 вольт, соответственно собранный источник питания для драйвера на LM317, тоже не мог держать 12 вольт и драйвер уходил в защиту. Подключением еще одного источника питания, проблема решилась и дальше продолжил тестить. На лабораторнике пока поставил 0.1А для теста, а то не хочется выжечь мосфеты полной силой. Осциллограммы по входу до драйвера и на выходе хорошие, не думаю что на данный момент он еще в чем-то виноват, буду думать как посадить датчики холла, чтобы на каждый градус поворота менялось значение, тогда думаю заведется. Если есть идеи еще, с радостью попробую! Спасибо! 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей_Харьков Опубликовано 1 января, 2017 Поделиться Опубликовано 1 января, 2017 (изменено) С новым годом! Желаю здоровья, успехов в хобби и работе. Может не стоит сразу дергать датчик холла? 0.1 А - ограничение которое имеет смысл только для не перемотанного мотора от CD-ROM. Для нормального мотора, как на фото, ток холостого хода (без нагрузки) , наверное будет за 1-5 А, а пусковой может больше . Может поменять ограничение? Может не трогать датчики Холла, а поэкспериментировать с входом Rdel. Вместо резистора 20 кОм включить последовательно постоянный 10 кОм и переменный ( подстроечный ) 100 кОм. И попробовать при разных положениях резистора. Только менять положение резистора при отключенном питании Изменено 1 января, 2017 пользователем Сергей_Харьков 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 6 января, 2017 Поделиться Опубликовано 6 января, 2017 Приветствую! С рождеством Христовым! Что-то первая неделя после праздников захватился меня в рабочие будни, тока добрался по тестить... в общем сделал как посоветовали, 10К резистор плюс 100К переменный резистор и начал тестить отступая по 10К, результат тот-же... Что характерно, двигатель прыгает из положения холла 1-0-0, в 1-0-1 и потом обратно, и так в цикле туда сюда... Если я прокручу мотор, ставлю его в положение к примеру 0-0-1 и 1-1-0, то мотор делает оборот пробегая дл крайнего значения(1-0-0 или 1-0-1) и вновь начинает свой цикл в никуда... и после чего лабораторник уходит в защиту пытаясь на одном из стопов восстановится, дать старт с полной силой, а на второй просто отскакивает назад - 10A порог. А вот с положения 0-1-1, мотор прыгает в 0-1-0 и там замирает, лабораторник тоже в защиту уходит. Логику еще раз пересмотрел по этой таблице истинности: также добавил шим-а, и задержки между углами для отладки. Исходя из его поведения, могу только предположить что проблема теперь в ПО, либо в намотке данного мотора, хотя мотор этот безсенсорный контроллер крутил Скрытый текст //throttle const int analogInPin1 = 22; //hall input int hall_sensor_a = 7; int hall_sensor_b = 2; int hall_sensor_c = 4; //Motor setup const int a_motor_lout = 3; const int a_motor_pwm_hout = 9; const int b_motor_lout = 6; const int b_motor_pwm_hout = 11; const int c_motor_lout = 10; const int c_motor_pwm_hout = 5; void setup(){ Serial.begin(9600); pinMode(a_motor_lout, OUTPUT); pinMode(a_motor_pwm_hout, OUTPUT); pinMode(b_motor_lout, OUTPUT); pinMode(b_motor_pwm_hout, OUTPUT); pinMode(c_motor_lout, OUTPUT); pinMode(c_motor_pwm_hout, OUTPUT); pinMode(hall_sensor_a, INPUT); pinMode(hall_sensor_b, INPUT); pinMode(hall_sensor_c, INPUT); } void loop(){ int A; A = 11111; /* Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); */ while(1){ int val = analogRead(analogInPin1); val = constrain(val, 211, 830); int gas = map(val, 211, 830, 0, 255); if ( gas >= 5){ int thLevel = 400; Serial.println(gas); Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ analogWrite(a_motor_pwm_hout,gas);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,1);digitalWrite(c_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); digitalWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);analogWrite(a_motor_pwm_hout,gas); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(c_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0); analogWrite(b_motor_pwm_hout,gas);digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_pwm_hout,0);digitalWrite(a_motor_lout,1); digitalWrite(b_motor_lout,0);digitalWrite(c_motor_lout,0);analogWrite(b_motor_pwm_hout,gas); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_pwm_hout,0);analogWrite(c_motor_pwm_hout,gas);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,1);digitalWrite(b_motor_pwm_hout,0); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,1);digitalWrite(a_motor_lout,0);analogWrite(c_motor_pwm_hout,gas); delay(thLevel); }}}}}}} else{ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0); Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); delay(100); }}} Если есть еще идеи, буду рад испытать, пока буду пилить код, может попробую зацепить моторчик от сидирома и его покрутить кодом который с ним работал, но уже через контроллер, надеюсь не сожгу 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 6 января, 2017 Поделиться Опубликовано 6 января, 2017 Продолжаем тестирование, отключил двигатель от контроллера, оставил только датчики холла чтобы видеть изменения при подаче питания на входы двигателя, лабораторник прикрутил на 12В/0.1А, нарисовал на листочке таблицу истинности, мотора рукой довел до ВМТ( 1-0-1 :)), подаю питание - получаю оборот до следующего значения, 1-0-0 и мотор замирает, хорошо, продолжаю дальше... Так мотор прошел все значения и крутился в правильную сторону, значения занес в табличку... посмотрев на схему, потом на плату, обнаружил что 1 и 3 контакт выходящий к мотору перепутаны местами, зацепил к двигателю, и уже прогресс!!! Двигатель начал крутиться, в правильную сторону, но каждый раз делает стоп от которого лабораторник уходит в защиту, но потом продолжает и так на каждый цикл прохода всех 6 фаз, такое ощущение как будто существует 7 фаза в которой он просто еще раз повторяет 6-ю. Хммм... Ищу дальше... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей_Харьков Опубликовано 7 января, 2017 Поделиться Опубликовано 7 января, 2017 Привет. "лабораторник уходит в защиту" - от него питается мозги и драйвер мотора? Или и мотор тоже? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 7 января, 2017 Поделиться Опубликовано 7 января, 2017 Приветствую Сергей, нет, только мотор, так как это было поймано раньше, мозги и драйвер живут отдельно а силовая часть отдельно, связывает их только земля. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей_Харьков Опубликовано 8 января, 2017 Поделиться Опубликовано 8 января, 2017 9 часов назад, CTPAHNK сказал: Приветствую Сергей, нет, только мотор, так как это было поймано раньше, мозги и драйвер живут отдельно а силовая часть отдельно, связывает их только земля. На какой ток стоит ограничение? Может просто не хватает мощности импульса (бп не дает нужный ток-напряжение) , чтобы раскрутить мотор. Определить ток холостого хода мотора и проверить может ли бп его выдать с 2-3 кратным запасом (пусковой ток всегда больше тока холостого хода) 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 8 января, 2017 Поделиться Опубликовано 8 января, 2017 Данный мотор 36В 250Ватт, получается что нужно ему порядка 7 ампер для работы, на старт конечно больше необходимо но все-же не так много, на данный момент при тестировании 10А стоит. Просто как-то странно, я на моторе поставил маркером линию, провел последовательно по всем фазам и поставил вторую линию чтобы видеть, сколько мотор проходит за один цикл. Так вот как и писал выше, мотор с легкостью пролетает полный цикл и при переходе в следующий происходит "удар" в результате которого лабораторних уходит в защиту, то-есть вначале, для старта и прохождения первого цикла ему все хватает, а вот когда происходит этот затык, он уходит в защиту, потом вновь, восстанавливается, делает этот оборот, удар и так по кругу. Посижу сегодня дальше по колдую, если не вылечу, выложу видео его дерганья для полной картины может будут идеи. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей_Харьков Опубликовано 9 января, 2017 Поделиться Опубликовано 9 января, 2017 Отрицательный результат- тоже результат. Тока 10 А с головой должно хватать для пуска. Значит причина в другом. Конденсатор С5 емкостью 740 pF, в обоих примерах стоит емкость 470 pF. Может стоит поменять. Тем более, что отвечает Refresh Pulse Setting. Внешний конденсатор может быть соединен с этого пальца к VSSto увеличить длину импульса запуска обновления - см Рисунок 17. Если этот вывод не подключен, импульс обновления, как правило, 1.5μs. По графику 17 максимальная емкость 470 pF. Минимальная 0 pF. 740 pF далеко за пределами рекомендованных. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Armenn Опубликовано 9 января, 2017 Поделиться Опубликовано 9 января, 2017 13 часа назад, CTPAHNK сказал: при переходе в следующий происходит "удар" в результате которого лабораторних уходит в защиту Если отключить двигатель и крутить его руками для датчика, какие токи потребляет схема? 0 Избегайте тех, кто старается подорвать вашу веру в себя. Эта черта свойственна мелким людям. Великий человек, наоборот, внушает чувство, что вы можете стать великим. (Марк Твен) Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 9 января, 2017 Поделиться Опубликовано 9 января, 2017 (изменено) Приветствую всех, помучил сегодня мой мотор вновь, нашел следствие причины, но не саму причину, пока, а именно в положениях датчика холла 1-0-0 и следующим за ним 1-1-0 контроллер не дает полный сигнал на мосфеты, из за чего они только малость приоткрываются и как результат мотор не успевает прокрутить все значение вовремя для положения 0-1-0, в итоге, если я ставлю в начало положения 0-1-0 и подаю питание, мотор дает рывок !!!ОБРАТНО!!!, а если в середину или конец, то он проворачивает его в правильную сторону. Что значит начало и середина? - при вращении мотора есть отчетливые магнитные зацепления, которые можно сравнить с трещоткой, так вот чтобы датчик холла сработал, двигатель должен пройти этих три щелчка, они очень маленькие-короткие, но чувствуются хорошо. Сначала предположил что отпал один из сигнальных проводов с контроллера, проверил, все хорошо, сигнал есть, на каждое положение датчиков холла прилетают верные значения по всем каналам. Далее начал мерить что у меня на выходах, CLO прилетает 12В в обоих случаях, а вот значения для AHO BHO разные, при одинаковом результате, и еще, если просто мерить значения напряжения на резисторах R1,R5,R4 когда мотор находится в покое то R4 имею нуль, когда на R1= 36В и R5 = 48В. значение датчиков холла 1-0-0, мотор еле проявляет тягу CLO = 12В, AHO ниже, лабораторник сразу улетает в защиту значение датчиков холла 1-1-0, мотор еле проявляет тягу CLO = 12В, BHO ниже, лабораторник сразу улетает в защиту не может ли быть что один мосфет сдох полностью, а второй не до конца, а также не могу понять почему BHO "спит"... По поводу конденсатора, это у меня очепятка вышла, в плате впаян верный, на 470pf. Изменено 9 января, 2017 пользователем CTPAHNK 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Mishany Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 а повесить 3 лампочки вместо обмоток и пошагать вручную по всем фазам и проверить все ключи? (только про ШИМ не забыть т.к. верхние ключи не заработают) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Armenn Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 2 часа назад, Mishany сказал: верхние ключи не заработают А почему не заработают? Если лампочки вместо обмоток подключить как на схеме? 0 Избегайте тех, кто старается подорвать вашу веру в себя. Эта черта свойственна мелким людям. Великий человек, наоборот, внушает чувство, что вы можете стать великим. (Марк Твен) Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей_Харьков Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 (изменено) Может вылетел MOSFET в одном канале. А мотор не проверяли ? Дерганье мотора бывает когда не работает один канал регулятора или повреждена одна (оборвана, к.з.) обмотка. Изменено 10 января, 2017 пользователем Сергей_Харьков 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 мотор этот рабочий... он же на видео, просто с него снят редуктор и само колесо. Также его крутил "вручную" подключая последовательно по фазам питание и он прекрасно "реагировал" на все. Доберусь домой с работы, дам знать что там получилось с лампочками. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Mishany Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 Потому что верхние ключи такие же как и нижние Nканал, а что бы коммутировать нканал по плюсу на затвор надо подать напряжение минимум больше на 10вольт по отношению к стоку, это напряжение обеспечивает бустстеперная цепочка из диода и конденсатора D2, D5, D6 и С1, С2, С3 на второй сверху схеме, а цепочка эта будет работать только если есть переключение ключей (присутствует ШИМ). Если без шим модуляции то на выводы AHB, BHB, CHB необходимо подать Vcc мотора + 10..15Вольт при 36в питания там должно быть около 50Вольт и тогда можно без шима дергать фазы как угодно 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 Предварительный результат, лампочки не горят :(, ни одна... как бы ни крутил мотор... ШИМ присустствует, лабораторник просто работает и не шаволится... буду сейчас выпаивать мосфеты и мереть их отдельно. Обновление, лампочки таки загорелись когда подал питание на драйвер , на все тех же положениях лабораторник улетает в защиту... выпаиваю эти два мосфета на проверку... 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Mishany Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 Главное что б драйвер остался цел. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
CTPAHNK Опубликовано 10 января, 2017 Поделиться Опубликовано 10 января, 2017 Нашел, два пробитых мосфета, заменил, помигал лампочками, зацепил мотор, даю "газу", мотор дерганно идет вперед, смотрю на положения датчиков холла, они показывают 1-0-1, 1-0-0, 0-1-0, все стальное пролетает мотор рывками, то есть получает он импульсы только в данных положениях датчиков холла. Убрал задержку, мотор срывается в максимум оборотов и начинает греться обмотка. последний скетч для ардуины выглядит так: Скрытый текст //throttle const int analogInPin1 = 22; //hall input int hall_sensor_a = 7; int hall_sensor_b = 2; int hall_sensor_c = 4; //Motor setup const int a_motor_lout = 3; const int a_motor_pwm_hout = 9; const int b_motor_lout = 6; const int b_motor_pwm_hout = 11; const int c_motor_lout = 10; const int c_motor_pwm_hout = 5; void setup(){ Serial.begin(9600); pinMode(a_motor_lout, OUTPUT); pinMode(a_motor_pwm_hout, OUTPUT); pinMode(b_motor_lout, OUTPUT); pinMode(b_motor_pwm_hout, OUTPUT); pinMode(c_motor_lout, OUTPUT); pinMode(c_motor_pwm_hout, OUTPUT); pinMode(hall_sensor_a, INPUT); pinMode(hall_sensor_b, INPUT); pinMode(hall_sensor_c, INPUT); } void loop(){ int A; A = 11111; /* Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); */ while(1){ int val = analogRead(analogInPin1); val = constrain(val, 211, 830); int gas = map(val, 211, 830, 0, 255); if ( gas >= 5){ int thLevel = 0; /*Serial.println(gas); Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); */ if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ digitalWrite(a_motor_lout,0);digitalWrite(c_motor_lout,0);analogWrite(c_motor_pwm_hout,0); analogWrite(b_motor_pwm_hout,0);digitalWrite(b_motor_lout,1);analogWrite(a_motor_pwm_hout,gas); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==0){ digitalWrite(a_motor_lout,0);analogWrite(c_motor_pwm_hout,0);digitalWrite(b_motor_lout,0); analogWrite(b_motor_pwm_hout,0);analogWrite(a_motor_pwm_hout,gas);digitalWrite(c_motor_lout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==1 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ analogWrite(c_motor_pwm_hout,0);digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0); analogWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,1);analogWrite(b_motor_pwm_hout,gas); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==0){ analogWrite(a_motor_pwm_hout,0);analogWrite(c_motor_pwm_hout,0);digitalWrite(c_motor_lout,0); digitalWrite(b_motor_lout,0);analogWrite(b_motor_pwm_hout,gas);digitalWrite(a_motor_lout,1); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==1 && digitalRead(hall_sensor_c)==1){ analogWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);analogWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,1);analogWrite(c_motor_pwm_hout,gas); delay(thLevel);} else { if (digitalRead(hall_sensor_a)==0 && digitalRead(hall_sensor_b)==0 && digitalRead(hall_sensor_c)==1){ analogWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);analogWrite(b_motor_pwm_hout,0); digitalWrite(a_motor_lout,0);analogWrite(c_motor_pwm_hout,gas);digitalWrite(b_motor_lout,1); delay(thLevel); }}}}}}} else{ digitalWrite(a_motor_pwm_hout,0);digitalWrite(c_motor_lout,0);digitalWrite(b_motor_pwm_hout,0); digitalWrite(b_motor_lout,0);digitalWrite(a_motor_lout,0);digitalWrite(c_motor_pwm_hout,0); Serial.println(digitalRead(7)); Serial.println(digitalRead(2)); Serial.println(digitalRead(4)); Serial.println(A); delay(50); }}} 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Mishany Опубликовано 11 января, 2017 Поделиться Опубликовано 11 января, 2017 я с а рдуино не дружил, но с управлением блдс немного знаком, задержек в коде быть не должно, управление скоростью вращения с помощью шима, датчики положения необходимо вешать на аналоговый компоратор с активацией прерывания от него. Это все необходимо для автономной работы, для устранения срыва синхронизации как это происходит в обычном while.... У авр есть апноты по управлению BLDC. Arduino думаю сдесь мало уместна со своими медленными и монструозными библиотеками 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.