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 стоят три токовых шунта и далее через усилители подаются на три входа ацп (может меряться ток обоих полярностей). У них уже есть регенерация.