avatar_prostosergik

AVR, STM, MSP или другой МК в качестве универсальной замены чипа на контроллере.

Автор prostosergik, 09 Июль 2018 в 19:30

« назад - далее »

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

prostosergik

Привет братва.

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

Вопрос в следующем. Поскольку электроника там боле лимене (с)(тм) одинаковая, уровни сигналов тоже, может где-то уже существует прошивка для ATMega такая, чтобы просто подключить соответствующие ножки на нужные места, и оно выполняло бы базовую функциональность: контроль мотора, газ 1.1-4.8в, тормоза по низкому уровню, круиз, остальное не надо.

Нет, могу написать конечно и сам, но тааак лень да и чувствую, я далеко не первый кто этим хочет заняться, зачем изобретать велосипед и ходить по одним и тем же граблям по сто раз?

Ну или подскажите проект опенхардвер контроллера на базе AVR. Почему не STM? Да можно и STM в принципе =) Но c AVR опыта больше, там я могу подправить код под свои нужды.

Спасибо!
Электросамокат Trotinet, Trotinet Maxi, Inmotion V5+  бэлый, красывый, а теперь KS 16Sv2 тоже бэлый )

fondrosel

Подобные темы уже обсуждались на форуме. Все кто мог написать прошивку ушли в коммерцию и бесплатно ничего не раздают, а кто не может тот не может. Так что это хоть и не плохая но тупиковая идея, если только не начать писать самому
Фиговый литий лучше хорошего свинца)).5 этаж хрущевки вел 45кг
P.S гиря в колесе рулит фуры не сдувают с трассы
Электротранспорт.ру электротранспорт рулит и точка

acyd

#2
В теме про модельный движок товарищ Pawel поделился контроллером на авр. Там и схема и прошивка, контроллер реально рабочий, сам собирал с нуля, по технологии лут.
Думаю можно прикрутить управляющие ноги к драйверам китайца.
Но учтите надежность такой надстройки :neg:+ там с рождения нет более-менее вменяемых защит,  круиза и тормоза вроде не было, зато есть выход на экран.

В качестве ознакомления с принципом работы микроконтроллеров имеет смысл, но времени и сил заберет, проще купить нормальный контроллер.

495

#3
В фирменной документации можно много чего найти .
http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR444.htm
Меня интересовал бездатчиковый режим , в закладках осталась ссылка .
Если АЦП у всех контроллеров мало отличаются , то таймеры и компараторы сильно влияют на код , сужу по отличию PIC и MSP430 . АЦП часто работает вместо пары компаратор + ЦАП , но на порядок медленее .
Сделать можно , если не копать недостатки существующей схемотехники , а то можно закопаться  . /:-)

prostosergik

У меня на самом деле полу-академический интерес. Нашел пару проектов, нужно будет таки сесть, поправить прошивку и постараться завести =) Но на всякий случай заказал еще 4 шт MC33035. Если не МК, так хоть оно. Бездатчиковый режим не нужен, рекуперация не нужна, тормоз по низкому уровню реализуется очень просто без вмешательства МК, плавный старт не нужен, круиз тоже... ну такое, короче.

Окей, раз никто это еще не сделал, попробую сделать я себе. Если получится удачно - выложу свои наработки. 
Электросамокат Trotinet, Trotinet Maxi, Inmotion V5+  бэлый, красывый, а теперь KS 16Sv2 тоже бэлый )

TRO

В большинстве контроллеров которые сейчас есть применяются микроконтроллеры с встроенным трехфазным ШИМом аппаратно заточенным под управление моторами (имеющим деадтаймы и входы защиты по току). Дешевые AVR туда прямой заменой очень плохо лезут.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

JT

Если я память неизменяет то clawham делал контролер и на коте вылаживал.

495

Цитата: TRO от 12 Июль 2018 в 06:00В большинстве контроллеров которые сейчас есть применяются микроконтроллеры с встроенным трехфазным ШИМом аппаратно заточенным под управление моторами (имеющим деадтаймы и входы защиты по току). 
Всё это заточено под вектор/синус для гладкого момента в сервоприводах , в транспорте достаточно сгладить фронты трапеции как функцию от скорости .
Когда у вас нормально отлаженная петля обратной связи по току , то болшинство защит не нужны . Аналоговый тормоз становится тем же стабилзатором тока наоборот  , то есть код пишется за один день .
Цитата: TRO от 12 Июль 2018 в 06:00Дешевые AVR туда прямой заменой очень плохо лезут.
Дешёвые контроллеры не имеют достаточно таймеров для реализации всех функций одновременно . 
Ставить по дешёвому контроллеру на фазу никто не запрещает , только у 8 ног корпуса недостаточно ног для обработки датчиков . Безсенорный режим при этом в 8 ног упакуется .

on4ip

всегда все очень просто и за один день+) Но в сказках.
В жизни все не так, как на самом деле.

495

Цитата: on4ip от 12 Июль 2018 в 10:07
всегда все очень просто и за один день+) Но в сказках.
Коммерсанты набежали . Конец теме . :sorry:

mr.Dream

За один день вполне можно оживить контроллер, включая написание прошивки. У меня на примитивизм, который просто вращал мотор, опираясь на показания датчиков, подмешивая ШИМ, ушло от силы 15 минут с перекуром. И больше времени я просто подбирал рабочую комбинацию, а верней не подбирал, а логически высчитывал последовательность :)
https://www.youtube.com/watch?v=W_8iTGgoucc
обработку холлов делал в прерываниях

в "сетапе" проинициализировал прерывания по изменению состояния пиов порта
  PCICR |= B00000001;
  PCMSK0 |= B00011100;


ну и сам обработчик прерывния
ISR(PCINT0_vect){
  if ((PINB & 1<<2) and (~PINB & 1<<3) and (~PINB & 1<<4)){  //100
    PORTD = PORTD & B00000011;
    PORTD = PORTD | B10001000; //ab
  }
  else if ((PINB & 1<<2) and (PINB & 1<<3) and (~PINB & 1<<4)){  //110
    PORTD = PORTD & B00000011;
    PORTD = PORTD | B00101000; //cb
  }
  else if ((~PINB & 1<<2) and (PINB & 1<<3) and (~PINB & 1<<4)){  //010
    PORTD = PORTD & B00000011;
    PORTD = PORTD | B00110000; //ca
  }
  else if ((~PINB & 1<<2) and (PINB & 1<<3) and (PINB & 1<<4)){  //011
    PORTD = PORTD & B00000011;
    PORTD = PORTD | B01010000; //ba
  }
  else if ((~PINB & 1<<2) and (~PINB & 1<<3) and (PINB & 1<<4)){  //001
    PORTD = PORTD & B00000011;
    PORTD = PORTD | B01000100; //bc
  }
  else if ((PINB & 1<<2) and (~PINB & 1<<3) and (PINB & 1<<4)){  //101
    PORTD = PORTD & B00000011;
    PORTD = PORTD | B10000100; //ac
  }
  else{
    PORTD = PORTD & B00000011; //111 or 000 err
  }
}


кто то был предложил более оптимальный вариант, но даю свой рабочий )) чисто для понимания без претензий на правильность)

TRO

[user]mr.Dream[/user], в топку условия, все решается логическими операциями над группой входных бит и выдачей результата в порт (опять же группой), оптимизация делается по старинке по картам карно.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

mishany

есть у меня простой с блочной коммутацией на STM32F103, спроектировал из примеров, немного доработал...
Два таких контроллера трудятся в детском велосипеде 3-х колесном с моторами от гироскутера

kor


Цитата: mishany от 08 Авг. 2018 в 12:31
есть у меня простой с блочной коммутацией на STM32F103, спроектировал из примеров, немного доработал...
Два таких контроллера трудятся в детском велосипеде 3-х колесном с моторами от гироскутера
Можете сказать, у вас в программе сделано задание и контроль фазного тока? Фазный ток контролируется в каждом такте шим?

mishany

я же написал простой :-D нет никакого контроля (пока)

kor

Цитата: mishany от 08 Авг. 2018 в 13:25
я же написал простой :-D нет никакого контроля (пока)
Даже в простых обычно имеется хотя-бы один токовый шунт и контролируется ток, у вас этого совсем нет? Тогда при нажатии газа при застопоренном колесе у вас высок шанс сжечь транзисторы.

pashist

Цитата: TRO от 12 Июль 2018 в 06:00рименяются микроконтроллеры с встроенным трехфазным ШИМом аппаратно заточенным под управление моторами (имеющим деадтаймы и входы защиты по току). Дешевые AVR туда прямой заменой очень плохо лез
328-я мега, стоит копейки, можно даже в распаяном виде на али взять. Имеет 6 pwm каналов, 20 МГц тактовая для дедтаймов.

kor

Цитата: mishany от 08 Авг. 2018 в 13:25я же написал простой :-D нет никакого контроля (пока)
Вот тут товарищ делал проект на STM32, вроде-бы исходники есть, есть как я понял отработка превышения тока (вход от компаратора тока, тоесть, как я понял, в каждом такте шим можно сбросить раньше времени, тем самым можно стабилизировать ток фазы, а для БЛДЦ мотора это , на мой взгляд, лучше чем синус генерить). Ток фазы можно задавать меняя опорное напряжение компаратора.
http://www.avislab.com/blog/stm32-bldc/
  Может кто-то уже делал такой контроллер с этого проекта?

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

mishany

Шунт есть, но программно не задействован (пока), только аппаратная глушилка ШИМ по превышению батарейного , а с опытами по фазному вышел косячек в разводке конденсаторов на плате.
И по той ссылке я основное и позаимствовал)))

kor


495

#20
Примеры для STM32
http://www.avislab.com/blog/stm32-pmsm/#more-4805
Я не проверял , на первый взгляд хорошая компиляция из фирменной документации .
Контроллеры из гироскутеров сделаны на них . Может кто встречал схему ?
В разделе гироскутеров может быть схема , но я его (раздел) не читал , а поиск в разделе со своей собственной терминологий задача не простая , проще прорисовать схему .
Контроллер на два двигателя , есть с чем поиграться .

mishany

#21
есть там схемы, и даже прошивки, но на платах от гироскутеров чаще не STM, а GD, клоны STM  :facepalm:
вот мой лайт контроллер


kor

Цитата: 495 от 11 Авг. 2018 в 20:01Контроллеры из гироскутеров сделаны на них . Может кто встречал схему ?
Вот тут , правда там ошибки есть, ЛМ358 похоже неправильно разрисована, (скорее всего она ток должна замерять)
https://electrotransport.ru/index.php?topic=37552.1116#topmsg
тут про ЛМ358
https://electrotransport.ru/index.php?topic=37552.msg1347163#msg1347163

prostosergik

Пришли MC33035 (https://www.onsemi.com/pub/Collateral/MC33035-D.PDF) 3 евро за 4 штуки. Особых фич там нет (кроме заднего хода, хехе), но оживить контроллер быстро и дешево - вполне получится. Даже умеет режим без Холла, вроде бы.

Как руки дойдут - попробую.
Электросамокат Trotinet, Trotinet Maxi, Inmotion V5+  бэлый, красывый, а теперь KS 16Sv2 тоже бэлый )

TRO

Недавно вызванивал и разрисовывал схему немецкого вентилятора, он BLDC как и все наши колеса. У него ограничение тока организовано вообще в обход процессора. Перед драйвером нижних ключей стоят три трехвходовых элемента логики, на первый вход идет сигнал с контроллера на включение нижнего ключа, на второй идет сигнал отключения если включен верхний драйвер верхнего ключа (защита от сквозного тока в полумосте), и на третий вход подается общий сигнал с компаратора сигнала шунта. Все аппаратно, дешево и сердито, и хорошо отрабатывает ограничение тока, я вам скажу.


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

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

mr.Dream

У меня ток в мотор считался программно, опираясь на батарейный шунт. Просто ток по входу умножаем на скважность, и получаем ток в двигателе. Проверено на 3-киловаттном 2-фетовом :) контроллере коллекторника на 60В.
Ручка газа не напрямую управляла ШИМом, а через промежуточную переменную. В которую в цикле подмешивались другие значения для получения желаемого результата на выходе.
Такой же принцип был и при управлении бесколлекторником, только ШИМ там через логическое И поступал на драйверы ключей. А то что в меге 328 6 каналов ШИМ, так это три разных таймера по два канала, причем все они разные.

Dmitry__

Цитата: TRO от 14 Авг. 2018 в 21:21я сначала обрадовался, думаю щас свою прошивку засяду писать, а он гад однократно программируемый
Все пики имеют аналог с флеш памятью пин в пин совместимые с однократной. Мягко говоря, однократные пики давно уже не выпускаются, сейчас все с буквой "F"

TRO

[user]Dmitry__[/user] спасибо я в курсе, просто если уж лезть туда с паяльником, то уж лучше пихать проц с архитектурой которого больше знаком, поэтому потихоньку развожу переходную платку под ATTINY44.

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

mishany


i

[user]mishany[/user], идея хорошая. Какую роль в ней Вы отводите лично себе?

mishany


i

Ок.
Вот Вам схема:


Вот фото собранного контроллера:


До кучи в аттаче схема  (.pdf), список деталей (.xls) и печатка для ЛУТ (.ps).

Осталось только собрать и написать и отладить прошивку. Сам я уже 8 лет никак не доберусь до нее, так и лежит ни разу не включенная.
Удачи!

kor


Цитата: mr.Dream от 14 Авг. 2018 в 22:17У меня ток в мотор считался программно, опираясь на батарейный шунт. Просто ток по входу умножаем на скважность, и получаем ток в двигателе. Проверено на 3-киловаттном 2-фетовом :) контроллере коллекторника на 60В.
Так наверно можно измерять и стабилизировать ток фазный но, это наверно не получится делать быстро (измеряется не мгновенный фазный а заинтегрированный батарейный ток) и в фазном токе будут присутствовать вспслески повышенного тока, (не успеет программа подстраивать скважность внутри периода коммутации). А для макс кпд желательно чтобы фазный ток был неизменным на всем периоде коммутации обмотки. 
Например если скважность шим не меняется на всем периоде коммутации обмотки то ток фазы будет иметь примерно такой вид(красным), а желательно чтобы он был (Желтым).  Вы смотрели осциллографом какая форма фазного тока получается у вас под нагрузкой?

495

Я использовал в качестве датчика тока открытый полевик и сделал стабилизатор тока на компараторе .  Стабилизатор сделан через жопу , потому как менял прошивку готового контроллера , но работает хорошо  . Если подбирать микроконтроллер , то всё получается красивее .
https://electrotransport.ru/index.php?topic=32749.msg993164#msg993164
Код контроллера задача для одного человека , вопрос в стандартизации стиля программирования , чтоб было понятно всем остальным . Для квалифицированного программиста достаточно сказать идею алгоритма и те грабли на которые наступил .


on4ip

В жизни все не так, как на самом деле.

TRO

Цитата: on4ip от 15 Авг. 2018 в 19:55
VESC купить не проще?
[user]on4ip[/user], купить конечно проще....китайца за 15 баксов...и не лезть туды с паяльником,... на них и катаюсь :)

Wahoo 2012 29er, +собран складной двухосис на раме"Land Rover" 69er с эл. мотором, и и МОНОКОЛЕСО

acyd

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

А предыдущая ссылка- как из недорого китайца сделать что-то более интересное. Но 8битный проц губит всю идею на корню.

Идеальный вариант - взломанный недорогой китаец на stm32 или подобном

mishany

STM32 сила с аппаратным 3-х фазным шимом и dead time
на прошлой странице выкладывал фото простого контроллера с блочной коммутацией, минимальной обвязкой и максимально компактного. Был рассчитан на питание от 4S3P 16850 максимум. В процессе отладки нашлись косяки и куча доп. хотелок которые уже не впихнуть без переделки платы....
В процессе использования показали себя надежными. Ни чего не сгорело.
Доп хотелки пока разместил на отдельном меге8, датчик температуры АКБ, мониторинг уровня заряда, приемник 433МHz для удаленной блокировки (стоп машина)
на фото подопытный

on4ip

Цитата: acyd от 15 Авг. 2018 в 21:15
vesc слишком узкоспециализированный, ориентирован на компактность и аскетичность.
разводка больше модельная, чем электротранспортная
и готовые платы будет сложно достать, как и сделать начинающим.
Но зато 32-разрядный проц

А предыдущая ссылка- как из недорого китайца сделать что-то более интересное. Но 8битный проц губит всю идею на корню.

Идеальный вариант - взломанный недорогой китаец на stm32 или подобном
Вы с веском то работали.  Так то это просто платформа с кодом
В жизни все не так, как на самом деле.