Электротранспорт
Пожалуйста, войдите или зарегистрируйтесь.


Расширенный поиск    

Реклама:

go-swissdrive , что внутри .

Страницы: 12>>ВсеВниз

Автор Тема: go-swissdrive , что внутри .  (Прочитано 4241 раз)

0 Пользователи и 1 Гость просматривают эту тему.

495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« : 14 Янв 2016 в 19:53 »
25.12.2018
зазор статор - ротор - 1,1мм;
 Геометрические размеры статора :
ширина шляпки зуба по прямой(не по дуге) - 7,5мм;
зазор между шляпками соседних зубьев - 4,5мм;
 Геометрические размеры ротора :
зазор между магнитами - 1,5мм;
В результате такой геометрии момент создают только половина из 9 катушек трёх фаз . Возможно следующим шагом проекта был переход на мостовое включение каждой фазы , но что-то пошло не по плану . Теоретически потери могут упасть на 20% ,реально получить 10% .

Попробовал померить сколько потерь на вихревые токи можно убрать двухканальным ШИМом . В статике мерял момент и ток от источника напряжения . Получил не очень корректный результат , так как пользовался методом тыка . На частоте ШИМ 100 кГц и моменте 15% номинального , потери на вихревые токи как минимум 10% (%  от % ) . На меньших частотах КПД ниже  . Силовая часть была от стабилизатора напряжения процессора Р4 , напряжение 12 вольт . На картинке не реальная схема , а иллюстрация идеи .


По моим прикидкам данный ДД мотор кушает на 20% больше нормы , из которых 15% реально вернуть .
« Последнее редактирование: 15 Янв 2019 в 05:44 от 495 »

Abos

  • Старожил
  • *****
  • Репутация: 36
  • Сообщений: 1234
  • Москва
  • Многознанье уму не научает (Гераклит)
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #1 : 14 Янв 2016 в 22:55 »
А чем Вам не нравится соотношение катушек/магнитов? В Вашем случае оно идеальное (45/40).

grale

  • Начинающий
  • *
  • Репутация: -1
  • Сообщений: 6
  • Россия, Москва
  • Ездю на батарейках!
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #2 : 05 Апр 2016 в 13:12 »
Подскажите, как запустить данный мотор.

495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #3 : 06 Апр 2016 в 00:56 »
 Простейший способ :
1 Разобрать
2 вынуть всю электронику
3 вывести 3 провода по 2 квадратных миллиметра
4 Купить безсенсорный контроллер на 25 ампер номинальных , могу ошибаться с цифрой 25 . По вольтам считайте сами у родного контроллера в 28" колесе при 36 вольтах скорость Х.Х. между 45 и 50 км/ч . Реальная скорость будет как минимум процентов на 10 меньше . Нужен sensorless контроллер для ДД мотора на 500 ватт .
 Не тривиальный способ :
Разобраться с протоколом обмена между мотором и батареей . Канал из мотора точно совместим с COM портом . Канал из батарейки может быть полуаналоговый . Инициатор обмена батарея .
У меня батареи не было поэтому я этого даже не пытался сделать . Прошивку я уже стёр .

Есть разные модификации мотора , я писал о самой лёгкой . На сайте  http://www.go-swissdrive.com/das-go-swissdrive-system/motor/ есть вес всех моделей . Тяжёлые модели больше 500 ватт .

В разделе было несколько тем про установку датчиков Холла . Это тоже возможно , причем в двух вариантах :
1 Как в обычном двигателе .
2 К магнитам энкодера . Стоящие в плате Холлы использовать не удастся , они аналоговые и стоят под 90 градусов . Придётся делать специальную плату .
« Последнее редактирование: 25 Июл 2016 в 13:04 от 495 »

495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #4 : 06 Май 2016 в 19:37 »
У этого двигателя есть одна особенность - крышка с датчиком угла+момента имеет 2 подшипника , поэтому двигатель без второй крышки может работать без радиальной нагрузки на холостом ходу . В этом виде хорошо видно положение ротора и статора . Статор по железу 9 фаз , по 3 зуба на фазу .
 Я вывел провод от центра звезды и запитал одну фазу стабильным током 2 ампера . Померял максимальный момент весами , получил 1 кг . Потом тем же током запитал две фазы в звезде , как делает контроллер . Померял максимальный момент весами , получил 1,6 кг . Значит из 6 зубов момент дают максимум 5 , а в среднем за оборот 4.5 если учитывать переключения фаз . Как использовать этот эффект я не знаю и обнаружился он при попытке померять статический момент от тока фазы . До 20 ампер момент линейно зависит от тока , дальше мерять боюсь .

EPO

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 12
  • Россия, Екатеринбург
  • Помогаю мотору крутить педали
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #5 : 11 Май 2016 в 07:40 »
Всем привет, что мне удалось найти по прошивке в сети
Список инструкций , сервисные программы и прошивки акк и мотора, так же видео инструкции
ссылка

Прошивка мотора видео  ссылка
Утилита прошивки мотора  ссылка
Драйвер кабеля ссылка
Сервисная программа  ссылка
Прошивка батареи 1.47 ссылка

ссылка

Непонятна распиновка кабеля для прошивки


Утилита прошивки Go swiss drive






Перевод из мануала по прошивке батареи и мотора

Симплон батареи и обновление двигателя
Файлы и соответствующие видео-уроки по www.simplon.com
1. Обновление батареи с помощью инструмента Service
Требуемые файлы : Service Tool 1.64 , FW1.47.hex
1.1 Подготовка обновления
Во-первых, сохранить все файлы в готовом виде на слегка
обнаружимого место ( например, Desktop ) на вашем компьютере .Теперь подключите кабель USB диагностический к компьютеру .
Не имеет значения , в каком положении тумблер находится
,
 Теперь вам потребуется последняя версия 1.64 инструмента обслуживания . Они будут устанавливаться пользователем
запустите файл Servicetool.exe . Уже установленные предыдущие версии автоматически
перезаписаны .
1.2 Выполните обновление
Пожалуйста, убедитесь , что пустой аккумулятор во время обновления может вызвать проблемы.
 батарея должна быть предварительно установлена ​​в Deep Sleep для обновления .
Для этого нажимайте кнопку на батарее в течение приблизительно 10 секунд до 2-х светодиодных огней .
Затем он должен быть разбужен на короткое время повторным нажатием кнопки .Этот процесс очищает память данных и гарантирует безошибочное обновление.
 Теперь вы можете подключить батарею к лобной связи с кабелем обновления
( Не работает на стороне ) и перезапустить инструмент службы .
инфицирован  Если нет ключа не является Fehlermedung , что они могут игнорировать . Теперь нажмите построить в разделе «Firmware Update " в правом нижнем углу подключения .
 Индикатор состояния должен быть зеленого цвета и отображения текущей версии FW ( z.B.1.36 ) .
• в 2-ой строке наклейке на батарее обратно вы можете найти тип батареи ( NCR или РКУ ) .Пожалуйста, выберите соответствующий "параметра набор" в выпадающем меню (рис.1).
 Теперь у них есть кнопка " ... " и выберите , чтобы ввести путь прошивки ( FW1.47.hex ) , чтобы
которые они это сохраненные ранее (см 1.1 , возможно, рабочий стол ) .
 Сидит кабеля стабильным? Затем они начинают обновление сейчас на "Начать программирование "
Важно,что это не прерывается во время обновления !
 Обновление может занять несколько минут .
 Нажатие раз программы он запрашивает кнопку сейчас .
 После успешного обновления соединение автоматически прекращается ( с сообщением ) после того, как
подтвердили с помощью "OK" . Успешное обновление версии вы также можете использовать беспроводное соединение , зачитав
" Версия прошивки " управления .
; • проверка версии при повторном подключении возможно только после перезапуска сервисного инструмента .
Рис. 1 обновление прошивки , аккумулятор подключенным
SIMPLON BIKE GMBH │ │ Верхняя Achdamm 22 A- 6971 Hard │ Тел.: +43 ( 0 ) 5574/72 564 0 │ E-mail : service@simplon.com 2
обновление 2.Motor
Необходимые файлы : MotorUpdate.exe , KabelTreiber.exe (для Win7 )
2.1 Ручная установка USB кабеля двигателя
Как правило, ваш компьютер должен автоматически определить кабель используется и соответствующие порты
назначить для дальнейшего использования .В то время как компьютеры с Windows XP или старше, как правило, автоматически
обнаружены, Windows 7 необходим специальный драйвер . Это они могут сделать,
К " KabelTreiber.exe " Легко установить на компьютерах Windows. После установки,
это потребуется перезагрузка компьютера .
 Для того, чтобы прочитать порт, используемый иличтобы определить другой они идут в
Быстрый запуск - > Панель управления - > Диспетчер устройств ( Win7 : Система -> Диспетчер устройств)
 Здесь вы можете найти список всех устройств , которые используются в качестве USB Serial Port .



495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #6 : 11 Май 2016 в 22:41 »

Непонятна распиновка кабеля для прошивки



Я сделал BSL кабель под микроконтроллер и прошивал утилитой для микроконтроллеров ( у меня мотор используется для эксперементов над ним ).
 На скрине из видео разъём датчиков Холла в энкодере . Разъём под JTAG\BSL у меня не был впаян . На видео в первом посте время 0.35 этот разъём выглядит как два горизонтальных ряда по 4 отверстия . Возможно используется хитрый разъём , которому достаточно металлизированных отверстий .
Попробую посмотреть ваши ссылки , может чего получится , но у меня мотор без батареи .
 Могу написать распиновку разъёма на плате .
Левая нога в ряду ближайшем к центру имеет рядом с собой цифру 1 , чтоб не ошибиться прозвоните  ногу на землю и не торопитесь .
1 TDO                                                         2 GND(0 вольт)
3 TDI + BSL приёмник через 1 килоОм  4 TMS
5 TCK                                                           6 RST+ 1 килоОм к 3.6 вольт
7 BSL передатчик                                       8 Avcc (3.6 вольт)
 

P.S. Посмотрел видео . Прошивка модифицируется через COM порт . Можно использовать USB - COM взяв сигнал TTL и ограничив уровень сигналов до 3.6 вольт , похожее решение в прилагаемом файле .
 Трёхножечный разъём .
1 GND
2 RX + 1 килоОм к 3.6 вольт
3 TX
RX это вход у микропроцессора ,TX это выход у микропроцессора . Уровни сигналов 3.6 вольт CMOS .

Кабель похож на кабель для старых телефонов . Нужно только не перепутать вход / выход и разобраться с уровнями сигналов . Мне кажется в схеме не хватает одного резистора 100 Om и стабилитроны нужны на 3.2 вольта .
  Дополнение , для не электриков :
Подклчать кабель можно только после соединения земли двигателя с землёй компьютера , вообще некоторые простые на вид действия лучше выполнять квалифицированным людям , потому как электроника явно не делалась в расчёте на "чайника" .
« Последнее редактирование: 31 Июл 2016 в 17:03 от 495 »

Alexander

  • Неравнодушный
  • **
  • Репутация: 1
  • Сообщений: 149
  • moscow
  • Ездю на 18650
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #7 : 22 Июн 2016 в 01:35 »
Мотор за 4000?  Ого да вы видимо сторговали Пятихат ) Сегодня они уже по 4500..  А мне вот было оч интересно куда ушло столько моторов.
Я вот тоже купил себе такой мотор. И хочу из него собрать Безсенторный мотор с питанием от 60в с термодатчиком и с управлением от  Контроллера Ku 63.
У меня есть такоей контроллер на 14а 48в, и мне нужен ваш совет уважаемые знатоки. Если я вот в этой схеме ссылка   поменяю все кондеры на 63в по входу этого будет достаточно?  Схема от похожего контроллера на 36. Ключи установлены по даташиту на 70 в

495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #8 : 22 Июн 2016 в 13:19 »
Мотор за 4000
Мотор за 4000?  Ого да вы видимо сторговали Пятихат ) Сегодня они уже по 4500..  А мне вот было оч интересно куда ушло столько моторов.
Я вот тоже купил себе такой мотор. И хочу из него собрать Безсенторный мотор с питанием от 60в с термодатчиком и с управлением от  Контроллера Ku 63.
У меня есть такоей контроллер на 14а 48в, и мне нужен ваш совет уважаемые знатоки. Если я вот в этой схеме ссылка   поменяю все кондеры на 63в по входу этого будет достаточно?  Схема от похожего контроллера на 36. Ключи установлены по даташиту на 70 в
1 они велосипедисты с веломании .
2 у них было 30 штук моторов на 25 км/ч  .
3  25 км/ч это программное ограничение , сам двигатель на 45 км/ч от 36 вольт ( я пишу о своём моторе ) . Судя по написаному на веломании мотор начинал заряжать батарею через диоды транзисторов при скорости за 50 км/ч .  Похоже больше 48 вольт в 28 колесе уже " не в коня корм " .
4 Датчики тока в родном контроллере на 100 ампер , то есть выдают +/- 50 ампер фазных ( евростандарты 250 ватт реализованы программно ) . Провода вроде на 30 ампер номинальных , но в двигателях не всё однозначно .
5 Постарайтесь не сломать при разборке электронику и энкодер . В этом моторе есть все железо для реализации Чупиной мечты о настраиваемых таймингах для Холлов . Может кто и напишет приблуду которая из двух сигналов энкодера делает три сигнала Холлов , при это внося временные поправки в зависимости от оборотов . В этом энкодере похоже есть даже индексная метка (один импульс на оборот) , но она совмещена с датчиком момента .
 

Сообщение понравилось: Alexander

Alexander

  • Неравнодушный
  • **
  • Репутация: 1
  • Сообщений: 149
  • moscow
  • Ездю на 18650
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #9 : 24 Июн 2016 в 12:36 »
А где там энкодер?  Мне не нужна электронная начинка.  я хотел бы исспользовать только обмотку и магниты, так как у меня не хватает ни знаний ни времени разбираться с эл начинкой. А зачем настраивать тайминги датчиков хола? Функции опережения и замедления уже релизованы в контроллерах типа инфиниона или мини е. Подскажите по схеме контроллера, я ограничусь лишь заменой кондеров что бы повесить этот контроллер на 60в:?

Alexander

  • Неравнодушный
  • **
  • Репутация: 1
  • Сообщений: 149
  • moscow
  • Ездю на 18650
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #10 : 24 Июн 2016 в 12:42 »
Электроника цела и лежит на полочке могу отдать так как она мне не нужна.

Alexander

  • Неравнодушный
  • **
  • Репутация: 1
  • Сообщений: 149
  • moscow
  • Ездю на 18650
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #11 : 31 Авг 2016 в 00:10 »
ок спасибо за помощь.
Пожалуста .
Отпишитесь в теме о результатах , если не лениво .

Так вот. Контроллер в итоге взял не на 14 а на 19 а.. такой же . Поменял кондеры все что были на 63в на 100 в и поменял резюк на побольше который стоит по питанию питания микрух )



Два дня покатал немного все работает.. покачто.... Ток не мерил пока нечем... А мотор этот так я и не приладил и за дэбильного крепления.. побоялся что провернется на 60вольтах  при мощьности в 1квт хотя бы. В оригинале этот мотор держит с одной стороны толстый усилитель дропаута а с другой прижимает эксцентрик.. А так как в него много не вкачивается то этого крепления хватает.. Вообще моторы которые крепятся на зажимной эксцентрик полный отстой. 

EPO

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 12
  • Россия, Екатеринбург
  • Помогаю мотору крутить педали
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #12 : 09 Сен 2016 в 18:52 »
Короче извлекли из мотора контроллер и подключили фазы к Китайскому Инфиниону и ручке газа, завели мотор ура ! Закрепили мотор в тисках, приладили родной датчик скорости и покрутили на 500w режиме до упора, мотор выдал 70 км\ч , ясен перец без нагрузки + погрешность, но результат порадовал , мотор остался тихим , хотя инфинион не является синусным , уровень шума остался на прежнем уровне, то есть как не жужжал так и жужжит. 
PS У кого на Алиэкспресс купить инфинион ? Если кто знает , дайте пожалуйста ссылку , можно и не инфинион, но что-бы также сам определял фазы итд .. Человек с которым проводили эксперименты , не хочет выходить на связь .

vovchok

  • Начинающий
  • *
  • Репутация: 2
  • Сообщений: 28
  • Kiev
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #13 : 24 Ноя 2016 в 12:09 »
А если просто подать на питающие мотор провода напряжение с батареи - без управляющих сигналов с компа не заведется? У меня мотор BullsGreenMover250w - немцы пишут, что управляющий компьютер, что на руле подходит к нему от GoSwissdrive, значит внутри что-то похожее (сам не разбирал и не понятно как его разбирать - снаружи никаких болтов, стягивающих цельные половинки движка, нету). Между аккумом и движком у меня два силовых и два сигнальных провода, и на сигнальные в параллель посажен компьютер (которого нет в наличии). Также по этим силовым проводам из движка выходит сгенерированное напряжение для освещения (написано 6V5W, хотя я намерил больше в разы при кручении), фара подключена через какой-то керамический кондер с надписью "xx x110 xhfe" (или то не кондер вовсе, но выглядит так)...

495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #14 : 24 Ноя 2016 в 20:02 »
А если просто подать на питающие мотор провода напряжение с батареи - без управляющих сигналов с компа не заведется?
Где то в ссылках была история про то как продавец на Авито убедил покупателя , что мотор работает с не подключённым входом управления . Похоже продавец переехал в Германию и продолжил свою деятельность . :laugh:
 
Тема про BullsGreenMover250w
ссылка
« Последнее редактирование: 10 Дек 2016 в 12:37 от 495 »

495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #15 : 07 Янв 2017 в 21:18 »
07.01.2017
Не большое дополнение по электронике ( о прошивке речь не идёт ).
Электроника сделана как можно проще . Все входы ( кроме интерфейса с внешним миром ) на АЦП . Выходы на феты с таймера
;--------  ADC12  --------------
;external
; ADC0    SIN
; ADC1    COS
; ADC2-61 current sensor rd_1
; ADC3-2 current sensor or_2
; ADC4-3 IN 68k/4.7k
; ADC5    MOMENT
; ADC6-5 empty 130k/9.1k
; ADC7   not used
;Uref used for ADC
; ADC8,9-10,11 Ubat 68k/4.7k
;internal
; ADC10-Rt
; ADC11...15-Avcc/2

 P4.1-37   Порт 4 бит 1 нога 37
;--------  Port P4 out 3 faz --------
;          Li              Hi
; rd_1 P4.1-37 P4.4-40
; or_2 P4.3-39 P4.6-42
; bk_3 P4.2-38 P4.5-41  not current sensor

ADC4 Входной сигнал , кроме АЦП идёт на компаратор ( 24 нога ), что даёт возможность использовать ШИМ управление .
ADC6 Возможно второй входной сигнал , в моём случае он не был впаян .
Электроника может работать от 15 вольт минимум .  В моём случае 5s лифера .
Первый тест  мигает  светодиодом на разъёме  для COM порта .
любителям исходников
; msp430F247 16 Mhz  32K Flash 4kB RAM
;0x0200-0x09FF RAM 2KB   (mirrored at 0x1100-0x18FF)
;0x0C00-0x0FFF BSL ROM mem
;0x1000-0x10FF info Flash mem
;0x1100-0x20FF RAM 4KB
;//0x1100-0x18FF RAM 2KB mirrored 0x0200-0x09FF
;//0x1900-0x20FF RAM 2KB
;0x8000-0xFFFF main Flash mem

;************************************************************
; STATUS REGISTER BITS
GIE        .equ         0008h
OSCOFF     .equ         0020h
SCG0       .equ         0040h   ; 1 DCO off
SCG1       .equ         0080h   ; 1 SMCLK off

;************************************************************
; SPECIAL FUNCTION REGISTER ADDRESSES + CONTROL BITS

IE1     .equ           0000h
OFIE      .equ          02h
IFG1     .equ          0002h
OFIFG     .equ          02h

;************************************************************
; Basic Clock Module

BCSCTL1     .equ       0057h    ;/* Basic Clock System Control 1 */
XTS         .equ        40h   ;/* LFXTCLK 0:Low Freq. / 1: High Freq. */
XT2OFF      .equ        80h   ;/* Enable XT2CLK */

BCSCTL2     .equ       0058h    ;/* Basic Clock System Control 2 */
SELS        .equ       08H   ;/* MCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */
SELM0      .equ        40h   ;/* MCLK Source Select 2: XT2CLK/LFXTCLK */
SELM1      .equ        80h   ;/* MCLK Source Select 2: XT2CLK/LFXTCLK */


;************************************************************
; WATCHDOG TIMER

WDTCTL   .equ      120h                 ;watchdog control register address
WDTPW    .equ      5A00h                ;password for watchdog access
WDTHOLD  .equ      80h                   ;bit position for watchdog reset

;************************************************************
; Ports

P3OUT     .equ         19h  ;/* Port 3 Output */
P3DIR     .equ         1Ah  ;/* Port 3 Direction */

P4IN      .equ         1Ch  ;/* Port 4 Output */
P4OUT     .equ         1Dh  ;/* Port 4 Output */
P4DIR     .equ         1Eh  ;/* Port 4 Direction */
P4SEL     .equ         1Fh  ;/* Port 4 timer_B Module Enable */

;************************************************************

RAMSTART .equ      200h                 ;RAM start address
RAMSIZE  .equ      0800h                ;size of RAM (excluding stack)

;-------------------------------------------------------------------------------
              .sect "Init", 08000h         ; Progam Start (32KB Flash device) 
START         mov.w   #09FFh,SP            ; Set stackpointer ( 2kB RAM device )
;-------- Init WDT subsustem --------------
StopWDT       mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
      BIC #GIE,SR          ; Mask Interrupt off

;-------- Init ADC12  --------------
;external
; ADC0   SIN
; ADC1   COS
; ADC2-61 current sensor rd_1
; ADC3-2 current sensor or_2
; ADC4-3 IN 68k/4.7k
; ADC5   MOMENT
; ADC6-5 empty 130k/9.1k
; ADC7   not used
;Uref used for ADC
; ADC8,9-10,11 Ubat 68k/4.7k
;internal
; ADC10-Rt
; ADC11...15-Avcc/2

;-------- Init Port P3.5-33 out led --------
      bis.b   #020h,&P3DIR            ; Set P3.5 to output direction
      bis.b   #020h,&P3OUT            ; Set P3.5-33 3pin_COM-2 (GND-1)
;      xor.b   #020h,&P3OUT            ; Toggle P3.5 LED on\off 
;      bic.b   #020h,&P3OUT            ; Clear P3.5-33 3pin_COM-2 (GND-1)

;-------- Init Port P4 out 3 faz --------
;       Li   Hi
; rd_1 P4.1-37 P4.4-40
; or_2 P4.3-39 P4.6-42
; bk_3 P4.2-38 P4.5-41  not current sensor
;      mov.b   #000h,&P4OUT              ; Set   P4
;      mov.b   #0FFh,&P4DIR            ; Set P4 to output direction
;      xor.b   #0ffh,&P4OUT            ;  on\off 

;-------- End Init ----------------------------------------------------------------
      bic.b   #020h,&P3OUT            ; Clear P3.5-33 3pin_COM-2 (GND-1)
;-------- End Init ----------------------------------------------------------------

;**** Main Loop      ******************************************************************

Loop      
      xor.b   #020h,&P3OUT            ; Toggle P3.5 LED on\off 
      mov.w   #03FFFh,R15             ; Delay to R15
L1      dec.w   R15                     ; Decrement R15
      jnz     L1                      ; Delay over?
            jmp          Loop            ;never ending loop
      nop                           
                nop                           

;-----Interrupt Vector Addresses------------------------------------------------
         .sect "Int_Vect", 0FFE0h    
         .word      0FFFFh       ;P0IFG.27
         .word      0FFFFh      ;BTIFG
         .word      0FFFFh            
         .word      0FFFFh            
         .word      0FFFFh            
         .word      0FFFFh      ;ADCIFG
         .word      0FFFFh            
         .word      0FFFFh         
         .word      0FFFFh         
         .word      0FFFFh            
         .word      0FFFFh      ;WDTIFG
         .word      0FFFFh         
         .word      0FFFFh      ;P0IFG.1
         .word      0FFFFh      ;P0IFG.0
         .word      START      ;RSTI/OFIFG/ACCVIFG
         .word      START      ;PUC/reset/WDTIFG

На этом  "изучение опыта предидущих поколений " можно считать законченным . :drink:

16.02.2017
ЭДС одной фазы имеет форму ближе к треугольнику  чем к синусоиде . Примерно половина периода прямая наклонная линия , только вершины полукруглые . Когда  ток между фазой и центром звезды , примерно 90 градусов из 360 момент отсутствует . Похоже двигателисты получили ТЗ с токовой трапецией  и минимизировали колебания момента . Микроконтроллер под блочный режим , если сожгу родной       
https://www.chipdip.ru/product/msp430g2553in20
Из прошлогодних тестов переключение на внешний резонатор и прерывание по сбою резонатора . Для ПИД регулятора "кварцованное время" необходимо , а для стабилизатора тока фазы хватает внутреннего генератора .
осторожно ассемблер
;*******************************************************************************
; msp430F149 8 Mhz

; asm430 led.asm -l
; rem lnk430 led.obj -o led.out
; rem rom430 -txiw led.obj(led.out) led.txt led1.txt
; rom430 -x led.obj led.txt

; R0
; R1
; R2
; R3

; R10
; R11
; R12
; R13
; R14
; R15 wait--count cycle -- wait

;*******************************************************************************

;************************************************************
;* STATUS REGISTER BITS
;************************************************************

;#define C                   0x0001
;#define Z                   0x0002
;#define N                   0x0004
;#define V                   0x0100
;#define GIE                 0x0008
;#define CPUOFF              0x0010
;#define OSCOFF              0x0020
;#define SCG0                0x0040
;#define SCG1                0x0080

GIE        .equ         0008h
OSCOFF     .equ         0020h
SCG0       .equ         0040h   ; 1 DCO off
SCG1       .equ         0080h   ; 1 SMCLK off

;************************************************************
;* SPECIAL FUNCTION REGISTER ADDRESSES + CONTROL BITS
;************************************************************

;#define IE1_                0x0000  /* Interrupt Enable 1 */
;sfrb    IE1               = IE1_;
;#define WDTIE               0x01
;#define OFIE                0x02
;#define NMIIE               0x10
;#define ACCVIE              0x20
;#define URXIE0              0x40
;#define UTXIE0              0x80

;#define IFG1_               0x0002  /* Interrupt Flag 1 */
;sfrb    IFG1              = IFG1_;
;#define WDTIFG              0x01
;#define OFIFG               0x02
;#define NMIIFG              0x10
;#define URXIFG0             0x40
;#define UTXIFG0             0x80

;#define ME1_                0x0004  /* Module Enable 1 */
;sfrb    ME1               = ME1_;
;#define URXE0               0x40
;#define USPIE0              0x40
;#define UTXE0               0x80

;#define IE2_                0x0001  /* Interrupt Enable 2 */
;sfrb    IE2               = IE2_;
;#define URXIE1              0x10
;#define UTXIE1              0x20

;#define IFG2_               0x0003  /* Interrupt Flag 2 */
;sfrb    IFG2              = IFG2_;
;#define URXIFG1             0x10
;#define UTXIFG1             0x20

;#define ME2_                0x0005  /* Module Enable 2 */
;sfrb    ME2               = ME2_;
;#define URXE1               0x10
;#define USPIE1              0x10
;#define UTXE1               0x20

IE1     .equ           0000h
OFIE      .equ          02h
IFG1     .equ          0002h
OFIFG     .equ          02h

;************************************************************
;* Basic Clock Module
;************************************************************

;#define DCOCTL_             0x0056  /* DCO Clock Frequency Control */
;sfrb    DCOCTL            = DCOCTL_;
;#define BCSCTL1_            0x0057  /* Basic Clock System Control 1 */
;sfrb    BCSCTL1           = BCSCTL1_;
;#define BCSCTL2_            0x0058  /* Basic Clock System Control 2 */
;sfrb    BCSCTL2           = BCSCTL2_;

;#define MOD0                0x01   /* Modulation Bit 0 */
;#define MOD1                0x02   /* Modulation Bit 1 */
;#define MOD2                0x04   /* Modulation Bit 2 */
;#define MOD3                0x08   /* Modulation Bit 3 */
;#define MOD4                0x10   /* Modulation Bit 4 */
;#define DCO0                0x20   /* DCO Select Bit 0 */
;#define DCO1                0x40   /* DCO Select Bit 1 */
;#define DCO2                0x80   /* DCO Select Bit 2 */

;#define RSEL0               0x01   /* Resistor Select Bit 0 */
;#define RSEL1               0x02   /* Resistor Select Bit 1 */
;#define RSEL2               0x04   /* Resistor Select Bit 2 */
;#define XT5V                0x08   /* XT5V should always be reset */
;#define DIVA0               0x10   /* ACLK Divider 0 */
;#define DIVA1               0x20   /* ACLK Divider 1 */
;#define XTS                 0x40   /* LFXTCLK 0:Low Freq. / 1: High Freq. */
;#define XT2OFF              0x80   /* Enable XT2CLK */

;#define DIVA_0              0x00   /* ACLK Divider 0: /1 */
;#define DIVA_1              0x10   /* ACLK Divider 1: /2 */
;#define DIVA_2              0x20   /* ACLK Divider 2: /4 */
;#define DIVA_3              0x30   /* ACLK Divider 3: /8 */

;#define DCOR                0x01   /* Enable External Resistor : 1 */
;#define DIVS0               0x02   /* SMCLK Divider 0 */
;#define DIVS1               0x04   /* SMCLK Divider 1 */
;#define SELS                0x08   /* MCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */
;#define DIVM0               0x10   /* MCLK Divider 0 */
;#define DIVM1               0x20   /* MCLK Divider 1 */
;#define SELM0               0x40   /* SMCLK Source Select 0 */
;#define SELM1               0x80   /* SMCLK Source Select 1 */

;#define DIVS_0              0x00   /* SMCLK Divider 0: /1 */
;#define DIVS_1              0x02   /* SMCLK Divider 1: /2 */
;#define DIVS_2              0x04   /* SMCLK Divider 2: /4 */
;#define DIVS_3              0x06   /* SMCLK Divider 3: /8 */

;#define DIVM_0              0x00   /* MCLK Divider 0: /1 */
;#define DIVM_1              0x10   /* MCLK Divider 1: /2 */
;#define DIVM_2              0x20   /* MCLK Divider 2: /4 */
;#define DIVM_3              0x30   /* MCLK Divider 3: /8 */

;#define SELM_0              0x00   /* SMCLK Source Select 0: DCOCLK */
;#define SELM_1              0x40   /* SMCLK Source Select 1: DCOCLK */
;#define SELM_2              0x80   /* SMCLK Source Select 2: XT2CLK/LFXTCLK */
;#define SELM_3              0xC0   /* SMCLK Source Select 3: LFXTCLK */

BCSCTL1     .equ       0057h    ;/* Basic Clock System Control 1 */
XTS         .equ        40h   ;/* LFXTCLK 0:Low Freq. / 1: High Freq. */
XT2OFF      .equ        80h   ;/* Enable XT2CLK */

BCSCTL2     .equ       0058h    ;/* Basic Clock System Control 2 */
SELS        .equ       08H   /* MCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */
SELM0      .equ        40h   ;/* MCLK Source Select 2: XT2CLK/LFXTCLK */
SELM1      .equ        80h   ;/* MCLK Source Select 2: XT2CLK/LFXTCLK */


;************************************************************
;* WATCHDOG TIMER
;************************************************************/

;#define WDTCTL              0x0120  /* Watchdog Timer Control */
;#define WDTHOLD             0x0080
;#define WDTPW               0x5A00
WDTCTL   .equ      120h                 ;watchdog control register address
WDTPW    .equ      5A00h                ;password for watchdog access
WDTHOLD  .equ      80h                   ;bit position for watchdog reset

;#define P1OUT              0x0021  /* Port 1 Output */
;#define P1DIR              0x0022  /* Port 1 Direction */
P1OUT     .equ         21h  ;/* Port 1 Output */
P1DIR     .equ         22h  ;/* Port 1 Direction */



;_______________________________________________________________________________
;-------------------------------------------------------------------------------
RAMSTART .equ      200h                 ;RAM start address
RAMSIZE  .equ      0F0h                 ;size of RAM (excluding stack)
INITVAL  .equ      0h                   ;RAM initialization value

;-------------------------------------------------------------------------------
              .sect "RAMInit", 01000h     ; Progam Start (60K Flash device 149) 
START       mov.w   #0280h,SP               ; Set stackpointer (128B RAM device)
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
      BIC #GIE,SR ;  ; Mask Interrupt off

      bis.b   #001h,&P1DIR            ; Set P1.0 to output direction
      bis.b   #001h,&P1OUT                  ; Set   P1.0
;              bic.b   #001h,&P1OUT                  ; Clear P1.0
;-------- Init COM port  !!!

;-------- Init CLK subsustem --------------
;    Select XT2  for MCLK
      BIs #OSCOFF,SR ;  1 Switch on the LFXTCLK
;      BIS #SCG1,SR ;   Switch off the SMCLK
      BIC.B #XT2OFF,&BCSCTL1 ; Enable XT2CLK

L3       BIC.B #OFIFG,&IFG1 ; 2 Clear the OFIFG flag
      MOV #07FFFh,R15 ;  3 Wait at least 50 ?s
L2      DEC R15 ;
      JNZ L2 ;
; Tx warning code to UART !!!
      xor.b   #001h,&P1OUT             ; Toggle P1.0
      BIT.B #OFIFG,&IFG1 ; 4 Test OFIFG, and repeat steps 2-4 until OFIFG remains cleared.
      JNZ L3 ; Repeat test if needed

      BIS.B #OFIE,&IE1 ;   enable NMI for OSC

      BIS.B #SELM1,&BCSCTL2 ; MCLK Source Select 2: XT2CLK/LFXTCLK
      BIC.B #SELM0,&BCSCTL2 ; MCLK Source Select 2: XT2CLK/LFXTCLK
       BIS.B #SELS,&BCSCTL2 ; SMCLK Source Select 2: XT2CLK/LFXTCLK

;-------- Init ADC12  --------------



;-------- Init Timer_B --------------




;**** Main Loop:

Loop      nop
      xor.b   #001h,&P1OUT             ; Toggle P1.0
      mov.w   #03FFFh,R15             ; Delay to R15
L1      dec.w   R15                     ; Decrement R15
      jnz     L1                      ; Delay over?
            jmp          Loop         ;never ending loop
                                           
;---- Interrupt Service Routine for NMI ----------------------------------------
         .sect "NMIInt", 0FA00h
NMIInt      nop
;            reti                         ;NOT return from interrupt
; test source of NMI
; STOP all out ( LPM3 ? )
; Tx error code to UART
; LED on\off
        bis.b   #001h,&P1DIR            ; Set P1.0 to output direction
Errloop     xor.b   #001h,&P1OUT             ; Toggle P1.0
Wait        mov.w   #0FFFFh,R15             ; Delay to R15
L0          dec.w   R15                     ; Decrement R15
            jnz     L0                      ; Delay over?
            jmp     Errloop                 ; Again
; write to flash err code
; jmp START ?
END         nop                             ;

;-----Interrupt Vector Addresses------------------------------------------------
         .sect "Int_Vect", 0FFE0h;PUC/reset address
         .word      START      ;P0IFG.27
         .word      START      ;BTIFG
         .word      START            
         .word      START            
         .word      START            
         .word      START      ;ADCIFG
         .word      START            
         .word      START            
         .word      START            
         .word      START            
         .word      START      ;WDTIFG
         .word      START         
         .word      START      ;P0IFG.1
         .word      START      ;P0IFG.0
         .word      NMIInt      ;RSTI/OFIFG/ACCVIFG
         .word      START      ;PUC/WDTIFG


20.03.2017
Печатная плата многослойная , +36вольт и GND разведены во внутренних слоях . Про форсаж по напряжению можно забыть , вдруг 50 вольт предел для платы .

26.04.2017
Когда тема уходит на вторую страницу , тему можно использовать как лог-файл .
В посте я предложил использовать компаратор для борьбы с токами обратного направления , которые возникают от противоЭДС .
http://electrotransport.ru/ussr/index.php?topic=36849.msg902321#msg902321
 Если отойти от ортодоксальной догмы по имени ШИМ и впасть в ересь по имени ЧИМ ( частотно импульсная модуляция ) , то можно сделать стабилизатор тока на компараторе .
 Идея состоит в том , что вместо закрытия нижнего транзистора нужно выйти из цикла ожидания конца цикла и перейти к открытию верхнего транзистора . Изменяя опорное напряжение можно менять ток . Мёртвую зону между открытыми транзисторами лучше не забывать .
 Частота от 4 до 60 кГц , импульс тока накачки 6 микросекунд . Мёртвая зона меньше 1 микросекунды . Средний ток фазы получился 37 ампер ( по напряжению на постоянно открытом нижнем полевике ) , больше не даёт блок питания , уходит в защиту . Напряжение 15 вольт .
 Резисторы к затворам верхних полевиков 5 Ом , к нижним 2 Ом , конденсаторов нет . Паралельно нижнему полевику поставил диод Шотки на 20 ампер , микросекундные импульсы в 100 ампер он нормально переносит . По привычке на питание полумоста припаял керамический конденсатор на 2.2 микроФарада . Многослойная плата - это хорошо , но для силовых цепей на 50 ампер нужны уже навесные шины питания . На фазные провода повесил ферритовые трубки от кабелей к мониторам .
ЧИМ стабилизатор тока
; msp430F247 16 Mhz  32K Flash 4kB RAM
;0x0200-0x09FF RAM 2KB   (mirrored at 0x1100-0x18FF)
;0x0C00-0x0FFF BSL ROM mem
;0x1000-0x10FF info Flash mem
;0x1100-0x20FF RAM 4KB
;0x8000-0xFFFF main Flash mem
;asm430 lc.asm -l
;rom430 -x lc.obj lc.txt
;ti lc.txt
;bsldemo2.exe -cCOM1 -m1 +epvrw z.txt
;************************************************************
; STATUS REGISTER BITS
GIE        .equ         0008h
OSCOFF     .equ         0020h
SCG0       .equ         0040h   ; 1 DCO off
SCG1       .equ         0080h   ; 1 SMCLK off

; SPECIAL FUNCTION REGISTER ADDRESSES + CONTROL BITS
IE1     .equ           0000h
OFIE      .equ          02h
IFG1     .equ          0002h
OFIFG     .equ          02h

; Basic Clock Module
BCSCTL1     .equ       0057h    ;/* Basic Clock System Control 1 */
XTS         .equ        40h   ;/* LFXTCLK 0:Low Freq. / 1: High Freq. */
XT2OFF      .equ        80h   ;/* Enable XT2CLK */

BCSCTL2     .equ       0058h    ;/* Basic Clock System Control 2 */
SELS        .equ       08H   ;/* MCLK Source Select 0:DCOCLK / 1:XT2CLK/LFXTCLK */
SELM0      .equ        40h   ;/* MCLK Source Select 2: XT2CLK/LFXTCLK */
SELM1      .equ        80h   ;/* MCLK Source Select 2: XT2CLK/LFXTCLK */

; WATCHDOG TIMER
WDTCTL   .equ      120h                 ;watchdog control register address
WDTPW    .equ      5A00h                ;password for watchdog access
WDTHOLD  .equ      80h                   ;bit position for watchdog reset

; Ports
P2SEL     .equ         02Eh  ; Port  Comparator+ input

P3OUT     .equ         19h  ;/* Port 3 Output */
P3DIR     .equ         1Ah  ;/* Port 3 Direction */

P4IN      .equ         1Ch  ;/* Port 4 Output */
P4OUT     .equ         1Dh  ;/* Port 4 Output */
P4DIR     .equ         1Eh  ;/* Port 4 Direction */
P4SEL     .equ         1Fh  ;/* Port 4 timer_B Module Enable */

P6SEL     .equ         37h  ; Port 6 ADC12 Module Enable

;Comparator_A+ Registers
CACTL1    .equ    059h      ;078h
CACTL2    .equ    05Ah      ;00Ch  bit0 output
CAPD    .equ    05Bh      ;01Fh

RAMSTART .equ      200h                 ;RAM start address
RAMSIZE  .equ      0800h                ;size of RAM (excluding stack)

;************************************************************
;-------------------------------------------------------------------------------
; R4   work
; R5
; R6
; R7
; R8
; R9
; R10
; R11
; R12
; R13   L_fet + pause
; R14   H_fet + pause
; R15   Delay

DeedTime .macro
      mov.w   #000Ah,R15             ; Delay to R15     
DeedTime .ENDM

              .sect "Init", 08000h         ; Progam Start (32KB Flash device) 
START         mov.w   #09FFh,SP            ; Set stackpointer (2kB RAM device)
;-------- Init WDT  --------------
StopWDT       mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
; WDT 64 mkc
;-------- Init Interrupt  --------------
      BIC #GIE,SR          ; Interrupt off
;-------- Init CLK -------------- Switch to XT2 16 Mhz
;    Select XT2  for MCLK
      BIs #OSCOFF,SR       ; 1 Switch on the LFXTCLK
;      BIS #SCG1,SR       ;  Switch off the SMCLK
      BIC.B #XT2OFF,&BCSCTL1    ;  Enable XT2CLK

L9       BIC.B #OFIFG,&IFG1    ; 2 Clear the OFIFG flag
      MOV #07FFFh,R15    ; 3 Wait at least 50 ?s
L8      DEC R15       ;
      JNZ L8          ;
; Tx warning code to UART !!!
      xor.b   #020h,&P3OUT             ; Toggle P3.5
      BIT.B #OFIFG,&IFG1    ; 4 Test OFIFG ,
      JNZ L9       ;and repeat steps 2-4 until OFIFG remains cleared.

      BIS.B #OFIE,&IE1    ;   enable NMI for OSC

      BIS.B #SELM1,&BCSCTL2    ; MCLK Source Select 2: XT2CLK/LFXTCLK
      BIC.B #SELM0,&BCSCTL2    ; MCLK Source Select 2: XT2CLK/LFXTCLK
       BIS.B #SELS,&BCSCTL2    ; SMCLK Source Select 2: XT2CLK/LFXTCLK

;-------- Init ADC12  --------------
 ;external
; ADC0     SIN
; ADC1     COS
; ADC2-61 current sensor rd_1
; ADC3-2  current sensor or_2
; ADC4-3  IN 68k/4.7k
; ADC5     Tork
; ADC6-5  empty 130k/9.1k
; ADC7    not used
 ;internal
;Uref used for ADC
; ADC8,9-10,11 Ubat 68k/4.7k
; ADC8,9-10,11 Ubat 68k/4.7k
; ADC10        Rt
; ADC11...15   Avcc/2
      BIS.B #0FFh,&P6SEL    ;  Port 6 ADC12 input
;-------- Init Comparator_A+ --------------
;P2.0/ACLK/CA2-20 U_ref
;P2.4/CA1/TA2 -24  current in FET  , 1N4007 kd522b*2 1kOm
      BIS.B #01Fh,&P6SEL    ;  Port 2 Comparator_A+ input CA0..CA4
      mov.b   #01Fh,&CAPD              ; 
      mov.b   #008h,&CACTL1             ;
      mov.b   #04Ch,&CACTL2             ;bit0 output

;-------- Init SVS  --------------
;-------- Init Port P4 out 3 faz Init Timer_B --------
;       Li   Hi
; rd_1 P4.1-37 P4.4-40
; bk_3 P4.2-38 P4.5-41  not current sensor
; or_2 P4.3-39 P4.6-42
      mov.b   #000h,&P4OUT              ; Set 0   P4
      mov.b   #0FFh,&P4DIR            ; Set P4 to output direction
;014h 004h 006h 004h rd_1  1404h 0604h
;018h 008h 00Ah 008h       1808h 0A08h
;022h 002h 006h 002h bk_3  2202h 0602h
;028h 008h 00Ch 008h       2808h 0C08h
;042h 002h 00Ah 002h or_2  4202h 0A02h
;044h 004h 00Ch 004h       4404h 0C04h
;-------- End Init ----------------------------------------------------------------

;**** Main  **************************************************************
; to C Hi power
      mov.b   #002h,&P4OUT              ; Set 1 for P4.1-37
      mov.w   #00FFh,R15             ; Delay to R15
L5      dec.w   R15                     ; Decrement R15   1 tic
      jnz     L5                      ; Delay over?   2 tic
; or_2 Li = 1 P4.3-39
      mov.b   #008h,&P4OUT              ; Set 0 P4.2-38 , 1 P4.3-39
      mov.w   #000Fh,R15             ; Delay to R15
L6      dec.w   R15                     ; Decrement R15
      jnz     L6                      ; Delay over?

      mov.w   #01808h,R14             ; H_fet + pause
           swpb   R14
      mov.w   #00A08h,R13             ; L_fet + pause
           swpb   R13

Loop      
      mov.b   R14,&P4OUT              ; Set 1 P4.4-40 , 1 P4.3-39
      mov.w   #0001Ch,R15             ; Delay to R15 020h = 6 mkc + 4 tic
L1      dec.w   R15                     ; Decrement R15
      jnz     L1                      ; Delay over?

      mov.b   #008h,&P4OUT              ; Set 0 P4.4-40 , 1 P4.3-39
      mov.w   #0002h,R15                ; Delay to R15     09h = 2 mkc , 04h = 1 mkc
L2      dec.w   R15                     ; Decrement R15
      jnz     L2                      ; Delay over?

      mov.b   R13,&P4OUT              ; Set 1 P4.1-37 , 1 P4.3-39
      mov.w   #01FFh,R15                ; Delay to R15   0F0h = 48 mkc + 4 tic
L3      mov.b   &CACTL2,R4             ; bit0 output Comparator_A+
        and   #00001h,R4       ; if bit0==1 then continue
      jnz   L11         ; else exit
      mov.w   #00001h,R15             ; Delay to R15  1 tic to exit
      nop
L11      dec.w   R15                     ; Decrement R15
      jnz     L3                      ; Delay over?

      mov.b   #008h,&P4OUT              ; Set 0 P4.1-37 , 1 P4.3-39
      mov.w   #002h,R15               ; Delay to R15    09h = 2 mkc
L4      dec.w   R15                     ; Decrement R15
      jnz     L4                      ; Delay over?

            jmp          Loop            ; never ending loop                     

;---- Interrupt Service Routine for NMI ------------------------------
         .sect "NMIInt", 0FA00h
NMIInt      nop
      mov.b   #000h,&P4OUT              ; Set 0 for P4
;            reti                         ;NOT return from interrupt
; test source of NMI
; STOP all out ( LPM3 ? )
; Tx error code to UART
; write to flash err code

Errloop     
      mov.w   #0FFFFh,R15             ; Delay to R15
L0             dec.w   R15                     ; Decrement R15
               jnz     L0                      ; Delay over?
               jmp     Errloop                 ; Again
; jmp START ?
END            nop                             ;

;-----Interrupt Vector Addresses--------------------------------------------
      .sect "Int_Vect", 0FFE0h    
      .word      0FFFFh       ;P0IFG.27
      .word      0FFFFh      ;BTIFG
      .word      0FFFFh            
      .word      0FFFFh            
      .word      0FFFFh            
      .word      0FFFFh      ;ADCIFG
      .word      0FFFFh            
      .word      0FFFFh         
      .word      0FFFFh         
      .word      0FFFFh            
      .word      0FFFFh      ;WDTIFG
      .word      0FFFFh         
      .word      0FFFFh      ;P0IFG.1
      .word      0FFFFh      ;P0IFG.0
      .word      NMIInt      ;RSTI/OFIFG/ACCVIFG
      .word      START      ;PUC/reset/WDTIFG
Пока я не сжёг ни одного транзистора , ОС по току готова , переключение фаз не должно быть сложным , а определение положения ротора по напряжению трёх фаз и средней точки  звезды - это единственная часть задачи в которой я ничего не понимаю . Пока не понимаю .

22.06.2017
 Стабилизатор  +12 вольт работает при +13 вольт на входе . До драйверов полевиков доходит +11.5 вольт на максимальной частоте переключения .
 На средней точке звезды напряжение ( во время накачки тока  в обмотку ) не равно половине напряжения питания , колеблется в диапазоне 5 вольт при питании 25 вольт . Максимум/минимум колебаний находится рядом с точками переключения фаз . Алгоритм переключения получается инкрементный по одному сигналу с проверкой ЭДС и падения напряжения от фазного тока во время паузы . Для старта с места сойдёт . Описание определения положения ротора при старте http://www.avislab.com/blog/brushless06/ ,отличие в том что все ограничиваются тремя проводами , но для встроенного контроллера ограничивать количество проводов к двигателю не имеет смысла .

31.07.2014
Тестовая программка вращает двигатель по одному сигналу со средней точки . Работает неустойчиво . По изменению индуктивности можно вращать двигатель , но мне лениво писать прямое управление по скорости .
lc07.txt
; ОС по уровню средней точки фиксированные уровни
; старт из 0-го положения , иначе срыв синхронизации

; STATUS REGISTER BITS
GIE        .equ         0008h
OSCOFF     .equ         0020h
SCG0       .equ         0040h   ; 1 DCO off
SCG1       .equ         0080h   ; 1 SMCLK off !!! to ADC

; SPECIAL FUNCTION REGISTER ADDRESSES + CONTROL BITS
IE1     .equ           0000h
OFIE    .equ          02h
IFG1    .equ          0002h
OFIFG   .equ          02h

; Basic Clock Module
BCSCTL1     .equ       0057h    ; Basic Clock System Control 1
XTS         .equ        40h      ; LFXTCLK 0:Low Freq. / 1: High Freq.
XT2OFF      .equ        80h      ; Enable XT2CLK

BCSCTL2     .equ       0058h    ; Basic Clock System Control 2
SELS        .equ       08H      ; MCLK Source 0:DCOCLK / 1:XT2CLK/LFXTCLK
SELM0      .equ        40h      ; MCLK Source 2: XT2CLK/LFXTCLK
SELM1      .equ        80h      ; MCLK Source 2: XT2CLK/LFXTCLK

; WATCHDOG TIMER
WDTCTL   .equ      120h           ;watchdog control register address
WDTPW    .equ      5A00h          ;password for watchdog access
WDTHOLD  .equ      80h            ;bit position for watchdog reset

; Ports
P2SEL     .equ         02Eh  ; Port  Comparator_A+ input

P3OUT     .equ         19h  ; Port 3 Output
P3DIR     .equ         1Ah  ; Port 3 Direction

P4IN      .equ         1Ch  ; Port 4 Output
P4OUT     .equ         1Dh  ; Port 4 Output
P4DIR     .equ         1Eh  ; Port 4 Direction
P4SEL     .equ         1Fh  ; Port 4 timer_B Module Enable

P6SEL     .equ         37h  ; Port 6 ADC12 Module Enable

;Comparator_A+ Registers
CACTL1    .equ    059h   ;008h
CAON    .equ    008h   ;Bit 3

CACTL2    .equ    05Ah      ;04Ch  bit0 output
CASHORT .equ   000h   ;Bit7 This bit shorts the + and - input terminals
;bit6+bit2       01-CA0 , 10-CA1 , 11-CA2
;bit5+bit4+bit3 001-CA1 ,010-CA2 ,011-CA3 ,100-CA4 ,101-CA5 ,110-CA6 ,111-CA7   
CAF   .equ   000h   ;Bit1 Comparator_A+ output filter

CAPD    .equ    05Bh      ;00Fh CA0 ... CA3

;ADC12 Registers
ADC12CTL0    .equ      01A0h  ; ADC12 Control0 
ADC12SC      .equ   00001h
ENC      .equ   00002h
;ADC12TOVIE          0x004
;ADC12OVIE           0x008
ADC12ON      .equ   00010h
;REFON               0x020
;REF2_5V             0x040
;MSH                 0x080
;MSC                 0x080
SHT1_3    .equ          03000h   ;32 tic adc_clk
;SHT0_2    .equ          00200h   ;16
SHT0_3    .equ          00300h   ;32
;SHT0_4    .equ          00400h   ;64

ADC12CTL1    .equ        01A2h    ; ADC12 Control1 
ADC12BUSY    .equ         00001h   ; out bit
CONSEQ_0         .equ   00000h   ; 0006h  1-used bit
ADC12SSEL_0     .equ    00000h   ; 0018h  1-used bit internal OSC
ADC12SSEL_3     .equ    00010h   ;  MCLK
ADC12DIV_2   .equ   00020h   ; 00E0h  1-used bit /2
ADC12DIV_3   .equ   00040h   ;  /3
ISSH           .equ     00100h   ; 0100h  1-used bit
SHP           .equ      00200h   ; 0200h  1-used bit
SHS_0         .equ      00000h   ; 0C00h  1-used bit
CSTARTADD_0    .equ     00000h   ; F000h  1-used bit 00h - ADC12MEM0

ADC12MEM0    .equ       0140h ; ADC12 Conversion Memory

ADC12MCTL0   .equ       0080h ; ADC12 Memory Control 0 
INCH_4     .equ   004h    ; 0000 1111 b 1-used bit A4
INCH_6     .equ   006h    ;  A6
SREF_0            .equ     000h   ; 0111 0000 b 1-used bit Vcc  Vss
;SREF_1            .equ     010h   ;  internal Uref+ Vss
SREF_2            .equ     020h   ;  ext Ueref+ Vss
;SREF_6            .equ     060h   ;  ext Ueref+ Uref-/Ueref-
EOS               .equ      080h   ; 1000 0000 b 1-used bit

RAMSTART .equ      1100h                ;RAM start , address 20h BSL
             
; R4   work?
; R5
; R6
; R7
; R8
; R9
; R10   ADC12MEM0
; R11   ??? &adresIdTab
; R12   &stepTab
; R13   L_fet +
; R14   H_fet + pause
; R15   Delay

;--- RAM allocation
          .bss     runoff,1,1120h  ;
          .bss     ADC00,16    ;
          .bss     numStep,2    ; 0000h const
        .bss     DelayStep,2    ;
          .bss     Step024,2    ; flag 024 or 135 step
 
;-------------------------------------------------------------------------------
              .sect "Init", 08000h      ; Progam Start (32KB Flash device) 
stepTab            ;08000h
        .word   01404h                  ;H_fet   rd_1 + pause bk_3
        .word   00006h                  ;L_fet   rd_1 +
        .word   01808h                    ;H_fet   rd_1 + pause or_2
        .word   0000Ah                  ;L_fet   rd_1 +
        .word   02808h                  ;H_fet   bk_3 + pause or_2
        .word   0000Ch                  ;L_fet   bk_3 +
        .word   02202h                  ;H_fet   bk_3 + pause rd_1
        .word   00006h                  ;L_fet   bk_3 +
        .word   04202h                    ;H_fet   or_2 + pause rd_1
        .word   0000Ah                  ;L_fet   or_2 +
   .word   04404h                    ;H_fet   or_2 + pause bk_3
        .word   0000Ch                  ;L_fet   or_2 +
stepTab_End         ;#08018h

START         mov.w   #20FFh,SP       ;Set stackpointer 4kB RAM , 09FFh 2kB RAM
; test WDT set ? if set FATAL error.
;-------- Init Port P4 out 3 faz Init Timer_B --------
;       Li   Hi
; rd_1 P4.1-37 P4.4-40
; bk_3 P4.2-38 P4.5-41  not current sensor
; or_2 P4.3-39 P4.6-42
      mov.b   #000h,&P4OUT              ; Set 0   P4
      mov.b   #0FFh,&P4DIR            ; Set P4 to output direction
;-------- Init WDT  --------------
StopWDT  mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
;-------- Init Interrupt  --------------
   BIC #GIE,SR          ; Interrupt off
;-------- Init CLK -------------- Switch to XT2 16 Mhz
;    Select XT2  for MCLK
   BIs #OSCOFF,SR       ; 1 Switch on the LFXTCLK
   BIS #SCG1,SR       ;  Switch off the SMCLK   
   BIC.B #XT2OFF,&BCSCTL1    ;  Enable XT2CLK
L9    BIC.B #OFIFG,&IFG1    ; 2 Clear the OFIFG flag
   MOV #07FFFh,R15    ; 3 Wait at least 50 ?s
L8   DEC R15       ;
   JNZ L8          ;
; Tx warning code to UART !!!!!! End Less Loop
   BIT.B #OFIFG,&IFG1    ; 4 Test OFIFG ,
   JNZ L9       ;and repeat steps 2-4 until OFIFG remains cleared

   BIS.B #OFIE,&IE1    ;   enable NMI for OSC
   BIS.B #SELM1,&BCSCTL2    ; MCLK Source Select 2: XT2CLK/LFXTCLK
   BIC.B #SELM0,&BCSCTL2    ; MCLK Source Select 2: XT2CLK/LFXTCLK
   BIS.B #SELS,&BCSCTL2    ; SMCLK Source Select 2: XT2CLK/LFXTCLK

;-------- Init Port P3.5-33 out led --------
      bis.b   #070h,&P3DIR            ; Set P3.5 P3.4 P3.6 to output direction
      bis.b   #030h,&P3OUT            ; Set P3.5-33 P3.4-32 3pin_COM-2 (GND-1)
;      mov.b   #040h,&P3OUT       ; P3.6 synchro
;-------- Init SVS  --------------
;-------- Init Comparator_A+ --------------
;P2.0/ACLK/CA2-20 U_ref
;P2.4/CA1/TA2 -24  current in FET  , 1N4007 kd522b*2 1kOm
      BIS.B #00Fh,&P6SEL    ; Port 2 Comparator_A+ input CA0..CA3
      mov.b   #00Fh,&CAPD              ; 
      mov.b   #008h,&CACTL1             ;
      mov.b   #04Ch,&CACTL2             ;bit0 output
;-------- Init ADC12  --------------
; ADC0     SIN holl
; ADC1     COS holl
; ADC2-61 current sensor rd_1
; ADC3-2  current sensor or_2
; ADC4-3  IN 68k/4.7k
; ADC5     Tork holl
; ADC6-5  4.7k/330 middel point 3 faz
; ADC7    not used SVSin
; ADC8-10 Uref+ Ubat 68k/4.7k
; ADC9-11 Uref- Ubat 68k/4.7k
; ADC10        Rt
; ADC11...15   Avcc/2
      BIS.B #0FFh,&P6SEL    ;  Port 6 ADC12 input

   BIS.W #SHT1_3+SHT0_3+ADC12ON,ADC12CTL0      ;ADC12ON
   BIS.W #SHP+ADC12DIV_3+ADC12SSEL_3,ADC12CTL1    ;
   mov.b #EOS+SREF_0+INCH_4,ADC12MCTL0      ;
AD2   BIS.W #ENC+ADC12SC,ADC12CTL0   ;Sampling and conversion start
AD1     BIT.W   #00001h,&ADC12CTL1   ; ADC12BUSY ?
   jnz   AD1         ;  then continue else exit   
   cmp.w   #00180h,&ADC12MEM0   ; wait BSLprog ?
   jn     AD2                       ;                yes .
;-------- End Init --------------------------------------------------------------
;**** Main  **************************************************************
Main      BIC.W #ENC,ADC12CTL0   ;
      mov.b #EOS+SREF_2+INCH_6,ADC12MCTL0   ; change control
      BIS.W #ENC,ADC12CTL0   ;
; to C Hi power
      mov.b   #00Fh,&P4OUT              ; Set 1 for Li
      mov.w   #0008h,R15               ; Delay to R15
L5      dec.w   R15                     ; Decrement R15   1 tic
      jnz     L5                      ; Delay over?   2 tic
      mov.b   #000h,&P4OUT              ; Set 0
      mov.w   #00020h,R15               ; Delay to R15
L6      dec.w   R15                     ; Decrement R15
      jnz     L6                      ; Delay over?

 ; WDT init to 1 kHz  !!!
      mov.w   #0000h,Step024       ;flag 024 or 135 step 
      MOV.w    #stepTab,R12      ; adresStepTab = 0
L0      mov.b   #000h,&P4OUT              ; Set 0
      MOV.w     @R12+,R14      ; H_fet + pause
      MOV.w    @R12+,R13      ; L_fet +

      mov.w   #00020h,R15               ; Delay to R15
L06      dec.w   R15                     ; Decrement R15
      jnz     L06                      ; Delay over?
      mov.b   R14,&P4OUT              ; pause
      mov.w   #04000h,DelayStep       ; 

           swpb   R14
      mov.b   R14,&P4OUT              ; H_fet
           swpb   R14
      BIS.W   #ADC12SC,ADC12CTL0   ;Sampling and conversion start
L01        BIT.W   #00001h,&ADC12CTL1   ;if bit0=1 ADC12BUSY ?
      jnz   L01         ;  then continue else exit   
      BIS.W   #ADC12SC,ADC12CTL0   ;Sampling and conversion start
L07        BIT.W   #00001h,&ADC12CTL1   ;if bit0=1 ADC12BUSY ?
      jnz   L07         ;  then continue else exit   
      mov.b   R14,&P4OUT              ; pause
      mov.w   &ADC12MEM0,R4             
      mov.b   R13,&P4OUT              ; L_fet
      mov.w   #00400h,R15               ; step   
L08       dec.w   R15                     ; Decrement R15
      jnz     L08                      ; Delay over?
      mov.b   R14,&P4OUT              ; pause

L05      cmp.w   #08018h,R12      ; stepTab_End ?
      jnz    Loop                      ; not stepTab_End .
      MOV.w    #stepTab,R12      ; adresStepTab = 0

Loop           swpb   R14
      mov.b   R14,&P4OUT              ; H_fet
           swpb   R14
      BIS.W   #ADC12SC,ADC12CTL0   ;Sampling and conversion start
      dec.w   DelayStep               ; Decrement
L1        BIT.W   #00001h,&ADC12CTL1   ;if bit0=1 ADC12BUSY ?
      jnz   L1         ;  then continue else exit   
   ; test of next step 5v-3v-5v
      cmp.w   #00000h,Step024      ;
      jz        L11                     ;
      cmp.w   #00A50h,&ADC12MEM0   ; A68 AA8 green ?
      jn   L21                ; no
      mov.w   #00000h,DelayStep   ; yes Forward 0,8,10 Bak 4,C,14
       mov.w   #0000h,Step024       ; 
      mov.b   #020h,&P3OUT            ; Set P3.5 green
           jmp   L21      
L11      cmp.w   #005a0h,&ADC12MEM0   ; 5C0 5B0 5D0 red ?
      jc   L21                ; no
      mov.w   #00000h,DelayStep       ; yes Bak 4,C,14 Forward 0,8,10
      mov.w   #0001h,Step024       ; 
      mov.b   #010h,&P3OUT            ; Set  P3.4 red

    ; WDT reset !!!
L21      mov.b   R14,&P4OUT              ; pause
      mov.w   #00002h,R15               ; Delay to R15 05h = 1 mkc
L2      dec.w   R15                     ; Decrement R15
      jnz     L2                      ; Decrement R15

      mov.b   R13,&P4OUT              ; L_fet
      mov.w   #00200h,R15               ; Delay to R15 
L3        BIT.b   #001h,&CACTL2   ; if out Comparator_A+==1 then continue
; current OS off!!!      jz   L4         ;    else exit
      dec.w   R15                     ; Decrement R15
      jnz     L3                      ; Delay over?

L4      mov.b   R14,&P4OUT              ; pause
      cmp.w   #00000h,DelayStep   ;
      jz        L0                      ; next step
      jmp     Loop             ; never ending loop                     
;---- Interrupt Service Routine for NMI ------------------------------
         .sect "NMIInt", 0FA00h
NMIInt      nop
      mov.b   #000h,&P4OUT              ; Set 0 for P4
;            reti                         ;NOT return from interrupt
Errloop     
      mov.w   #0FFFFh,R15             ; Delay to R15
nmINT1             dec.w   R15                     ; Decrement R15
               jnz     nmINT1                      ; Delay over?
               jmp     Errloop                 ; Again
; jmp START ?
END            nop                             ;
Всё , больше букв в один пост не лезет . Переберусь в черновики до нового года .
« Последнее редактирование: 03 Дек 2017 в 13:52 от 495 »

Сообщение понравилось: FPatrol

495

  • Начинающий
  • *
  • Репутация: 0
  • Сообщений: 51
  • улус Джучи ТёплыйСтан
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #16 : 02 Янв 2018 в 14:13 »
Пост на 2018 год .
Кейде внутри , мелочь развивается быстрее динозавров .
ссылка
12 фет и по шунту на фазу  . У кейде шунты 1 милиОм , если я правильно понял R001 . Железо 3 фазы , геометрия полюсных наконечников ни в какие учебники не лезет . Вот где оригинальная схемотехника , а не "нагуглил и допилил" .

Разводка вызвала несколько вопросов , на которые можно ответить только зная процесс эволюции проекта .
 1 От полумоста до конденсаторов 25 мм . Возможно понадеялись на многослойность платы .
 2 Между полумостами 60 миллиметров . Вероятно планировали не полумост , а fullbridge на фазу .
 3 Самая большая загадка 9 фаз железо и 3 фазы медь . Вопрос можно сформулировать в двух видах : "зачем ?" или "как появилось ?" . Я подозреваю что без знаний об истории двигателестроения вопрос "зачем ?" не имеет смысла .

 Я пытаюсь написать прошивку для себя , но мне нужен бабушковоз с ручкой газа которая в одну сторону газ , а в другую тормоз , в центре шарик с пружиной ( для езды среди пешеходов) .
 Мне нужен момент на низких оборотах с хорошим КПД , поэтому я вношу изменения в электронику .
 Больше 25 км/ч мне не надо .
 При снятой батарее нужен тормоз . Вместо батареи "стабилитрон" на 36 вольт , 100 ампер .

 По двигателю интересно попробовать поставить fullbridge на фазу , теоретически +20% КПД (процент от процента) практически не больше +10% КПД на частичных нагрузках .
« Последнее редактирование: 04 Янв 2018 в 12:56 от 495 »

DIVAS

  • Старожил
  • *****
  • Репутация: 76
  • Сообщений: 4012
  • РФ, СПб, ЮЗ, м. Московская
  • Оффлайн Оффлайн
    • Награды
go-swissdrive , что внутри .
« Ответ #17 : 05 Фев 2018 в 17:45 »
геометрия полюсных наконечников ни в какие учебники не лезет
А можно картинку? Интересно же...

Страницы: 12>>ВсеВверх
 

Помощь форуму | Отказ от ответственности | Новая версия форума
©, Форум электротранспорта, electrotransport.ru, 2007—2018.
Копирование материалов возможно только с согласия правообладателя.

Размер занимаемой памяти: 6 мегабайт.
Страница сгенерирована за 0.372 секунд. Запросов: 116.

Powered by SMFPacks Alerts Pro Mod
Powered by SMFPacks Mentions Pro Mod