Зависает STM32F103C8
Зависает STM32F103C8
Всем доброго вчера. В общем хочу сделать что то на подобие такой штуковины https://www.youtube.com/watch?v=f8gHmxvx-yo. Использую плату на STM32F103C8 (фото во вложении), управляю шимом двигателем из китайских игрушек через полевик, кнопками меняю заполнение от 0 до 99%. Питание двигателей и STM32 общее 5 вольт. Во время старта или на максимальных оборотах (заполнение 70% и выше) STM32 зависает, не реагирует на кнопки, иногда даже шим отрубается и двигатель вырубается, помогает либо ресет либо передергивание питания. (при работе в холостую без двигателя все работает нормально) Соответственно вопрос почему зависает STM32 и как с этим бороться?
- Вложения
-
- arduino11-3.png
- Управление двигателем
- (18.97 КБ) 788 скачиваний
-
- 5147902849.jpg
- Отладочная плата
- (116.6 КБ) 680 скачиваний
Всех убить! Всё отобрать!
Re: Зависает STM32F103C8
Может помехи по питанию?
-
Мурато Мяуконни
- Прорезались зубы
- Сообщения: 203
- Зарегистрирован: Сб ноя 19, 2016 21:05:48
Re: Зависает STM32F103C8
Обычное явление - индуктивные выбросы. Лечится конденсаторами и раздельными ветвями питания. Приведите подробнее схему подключения
Подпись убрал вместе с автором. aen
- AlanDrakes
- Прорезались зубы
- Сообщения: 236
- Зарегистрирован: Пн июл 04, 2016 16:51:22
- Откуда: Россия, Омск
Re: Зависает STM32F103C8
Я бы так же рекомендовал снизить питание STM32 до уровня 3.3~3.6V. Эти контроллеры не очень любят питаться слишком высоким напряжением - тоже могут зависать или сгорать при этом.
Иногда с очень интересным поведением.
Ну и разделение линий питания - хороший совет.
Иногда с очень интересным поведением.
Ну и разделение линий питания - хороший совет.
- KT315B
- Сверлит текстолит когтями
- Сообщения: 1269
- Зарегистрирован: Пт июл 21, 2006 15:05:19
- Откуда: плод воображения
- Контактная информация:
Re: Зависает STM32F103C8
И развязку поставить в виде дросселей и конденсаторов 100нФ. И по 100нФ на каждой ноге питания должен быть, максимально к выводу МК.
R2AIV 73!
- afz
- Опытный кот
- Сообщения: 744
- Зарегистрирован: Сб дек 22, 2012 08:17:42
- Откуда: Караганда, Казахстан
Re: Зависает STM32F103C8
Там на плате встроенный стабилизатор 3.3В - какой-то 1117.AlanDrakes писал(а):Я бы так же рекомендовал снизить питание STM32 до уровня 3.3~3.6V. Эти контроллеры не очень любят питаться слишком высоким напряжением - тоже могут зависать или сгорать при этом.
Явные помехи по питанию. И скорее всего - из-за падения напряжения на проводах. Попробуй прицепить электролит несколько тыс. мкф, по кратчайшему пути, без проводов, одним концом на исток полевика, вторым (плюсом) на то место, где подключены двигатель (или провод к двигателю), провод от +5В и катод диода. То есть параллельно источнику +5В, но после проводов от источника до твоей схемы. С этого же электролита, отдельными проводами, подай питание на плату с МК - землю напрямую, +5 - через какой-нибудь дросселёк в сотню-другую мкГн, или через резистор 10 Ом. И убедись, что твои 5В не проседают, а то мелкие источники типа зарядников от сотки под нагрузкой просядут на счет "раз"!..Klepko писал(а):Соответственно вопрос почему зависает STM32 и как с этим бороться?
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)
- Andry_67
- Первый раз сказал Мяу!
- Сообщения: 23
- Зарегистрирован: Пн дек 15, 2014 19:04:08
- Откуда: г. Пермь
Re: Зависает STM32F103C8
Совсем недавно словил висяк очень банальный способом. Сделал в программе цикл
for(x=0;x<=319;x++)
{
History[x]=0;
}
Никак не мог понять почему в этом месте виснет. Потом оказалось что переменная x объявлена как uint8.
Советую также в программу добавить банальный Blink, который работает от таймера внутри прерывания этого таймера. Так будет сразу видно повис процессор или остановка в программе.
for(x=0;x<=319;x++)
{
History[x]=0;
}
Никак не мог понять почему в этом месте виснет. Потом оказалось что переменная x объявлена как uint8.
Советую также в программу добавить банальный Blink, который работает от таймера внутри прерывания этого таймера. Так будет сразу видно повис процессор или остановка в программе.