![]() Мой ПА №2 |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() Мой ПА №2 |
![]()
Сообщение
#10261
|
|
![]() Заглянувший ![]() Группа: Пользователи Сообщений: 74 Регистрация: 1.2.2014 Из: г.Мелитополь UA Пользователь №: 37945 ![]() |
Я начал осваивать стмки так, на Github есть куча готовых проектов на стм (на данный момент уже есть целые наборы либок, почти на все случаи жизни , инклюдишь либку , открываешь смотришь какие есть функции и какие параметры нужны для ее вызова), скачивал себе все что находил и смотрел как написано, я не вникал особо в регистры так как сморишь либки хала или stdperif , как и в проектах скачанных там можно подглядеть по инициализации периферии а в референсе можно досмотреть что необходимо , у меня нет цели выучить стм в идеал , так как работаю программистом в другой отрасли и времени очень мало на хобби, поэтому пользуюсь тем что имеет самый маленький порог вхождения...Но вариант OlegarX-RUS лучше .
Сообщение отредактировал lis22 - 4.6.2019, 16:35 |
![]() |
|
|
![]()
Сообщение
#10262
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1514 Регистрация: 30.11.2008 Из: Россия, Крым, Симферополь Пользователь №: 12714 ![]() |
Но вариант OlegarX-RUS лучше . ну вот смотри вот тебе часть кода из моего проекта который инициализирует переферию STM32F051K8T6. Этот код по сути уже конфигурируют контроллер в аппаратный аналог UC2846 (Даже круче) - RCC->AHBENR|=RCC_AHBENR_GPIOAEN; //Подаем тактирование на порт A //=========================================<INIT DAC>======================================== RCC->APB1ENR|=RCC_APB1ENR_DACEN; //Включаем DAC GPIOA->MODER |= GPIO_MODER_MODER4; //GPIOB4 analog GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR4); //Без поддтяжки DAC->CR = DAC_CR_EN1; //только DAC все остальные значения по умолчанию //DAC->DHR12R1 = 4095; DAC->DHR8R1 = Icurrent_value; //=========================================<INIT comp>======================================== // здесь настраиваем компаратор и пины связанные с ним!!! RCC->APB2ENR|=RCC_APB2ENR_SYSCFGEN; //Подаём тактирование на SYSCFG и COMP-аратор //GPIOA->MODER |= GPIO_MODER_MODER1 | GPIO_MODER_MODER3; COMP->CSR = COMP_CSR_COMP1EN | COMP_CSR_COMP2EN | COMP_CSR_COMP1OUTSEL_0 | COMP_CSR_COMP1OUTSEL_1 | COMP_CSR_COMP2OUTSEL_0 | COMP_CSR_COMP2OUTSEL_1 | COMP_CSR_COMP1INSEL_1 | COMP_CSR_COMP1INSEL_2 | COMP_CSR_COMP2INSEL_0 | COMP_CSR_COMP2INSEL_2; //Включаем оба компарратора и оба настраиваем на Timer 1 OCrefclear input (чтоб резало таймет 1) //COMP1 (напряжение) инверсный вход PA0, COMP2 (ток) инверсный вход PA5 (в дальнейшем можно попробовать переключить на PA4 (DAC) изменив регистры) COMP->CSR |= COMP_CSR_COMP1LOCK | COMP_CSR_COMP2LOCK; // здесь блокируем компараторы от дальней записи ошибочных бит в том числе и при сбое!!! не верняк я сделал эту запись отдельной коммандой. //=========================================<INIT TIM1>======================================== RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; GPIOA->MODER |= GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1; //GPIOB4 AF (TIM3_CH1) GPIOA->MODER &= ~(GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0); //GPIOB4 AF (TIM3_CH1) GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9); //PP GPIOA->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEEDR8_1 | GPIO_OSPEEDR_OSPEEDR9_1);//SPEEd 2MHz GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR9); //Без поддтяжки GPIOA->AFR[1] |= 0x22; TIM1->PSC = 0; TIM1->ARR = 480; //частота 50 (100)кГц TIM1->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC2M | TIM_CCMR1_OC2CE | TIM_CCMR1_OC1CE;; TIM1->CCER = TIM_CCER_CC1E | TIM_CCER_CC2E ;//| TIM_CCER_CC1P; TIM1->BDTR = TIM_BDTR_MOE ;//| TIM_BDTR_AOE | TIM_BDTR_BKP | TIM_BDTR_BKE; TIM1->CCR1 = 227; //заполнение примерно 47% на канал TIM1->CCR2 = 253; //заполнение примерно 47% на канал TIM1->EGR = TIM_EGR_UG; TIM1->DIER |= TIM_DIER_UIE; // разрешение прерывания по обновлению TIM1->CR1 = TIM_CR1_CMS | TIM_CR1_CEN | TIM_CR1_URS; По сути этого избыточного кода достаточно чтоб варить он полностью настраивает переферию в шим контроллер!!!! (нахрен при этом простыни калов и стд перифов) так как эти полузатычки по сути типо облегчают инициализацию периферии) Для меня такой код проще и читабельние, а самое главное минимален, референс мануал в помощь!. В данном коде меняя значение DAC->DHR12R1 или DAC->DHR8R1 мы меняем порог опорного напряжения токового компаратора для отсечки тока поциклово... , для опорного по напряжению (так как DAC в F051 один, опорное формирую таймером на RC цепочку) Схему готового устройства выкладывал полтора года назад.... Пробуйте!!!! Код инициализации таймера для опорного по напруги: RCC->APB1ENR|=RCC_APB1ENR_TIM14EN; //включаем тактирование таймера (опорное для компоратора напряжения) GPIOA->MODER |= GPIO_MODER_MODER7_1; //GPIOB7 AF (TIM14_CH1) GPIOA->MODER &= ~GPIO_MODER_MODER7_0; //GPIOB7 AF (TIM14_CH1) GPIOA->OTYPER &= ~GPIO_OTYPER_OT_7 ; //PP GPIOA->OSPEEDR &= ~GPIO_OSPEEDR_OSPEEDR7 ;//SPEEd 2MHz GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR7; //Без поддтяжки GPIOA->AFR[0] |= 0x40000000; // GPIO7 AF-4 TIM14CH1 TIM14->PSC = 0; TIM14->ARR = 1000; TIM14->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 ;//| TIM_CCMR1_OC1CE; TIM14->CCER = TIM_CCER_CC1E ; TIM14->BDTR = TIM_BDTR_MOE ; TIM14->CCR1 = 909; //Icurrent_value; (на выходе интегрирующий цепочки таймера 3-и вольта ) // TIM14->EGR = TIM_EGR_UG; TIM14->CR1 = TIM_CR1_CEN; Значением TIM14->CCR1 меняем опорное для компаратора напряжения. (если взять F072 то это нахрен не нужно так как в нём два DAC-а) Аналогично в 10-15 строчек настраивается какой нибудь свободный таймер для кувыркатора. А если этот свободный таймер настроить хитро и вызывать по нему в определённые моменты прирывание которое на момент переключения полярности кувыркатора уменьшает DAC->DHR12R1 или DAC->DHR8R1 до определённого значения то мы тем самым получаем сброс тока в момент переключения кувыркатора ![]() А ещё лучше настраиваем DMA и по определённым событиям осуществляем транcфер который обновляет вышеописанные регистры, тем самым вообще не дёргая ядро камушка! ![]() ![]() P.S. Всё гениальное просто ![]() Сообщение отредактировал OlegarX-RUS - 4.6.2019, 22:05 -------------------- В электронике есть два вида неисправности:
1) наличие контакта там где его не должно быть 2) отсутствие контакта там где он должен быть всё остальное домыслы :) |
![]() |
|
![]()
Сообщение
#10263
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2184 Регистрация: 1.11.2011 Пользователь №: 24851 ![]() |
Да ничего там сложного и сильно отличного от "hello word" нет... Спасибо, Олег, за книжку и пример кода выше. Дошли руки, наконец, и у меня до Си. Проникаюсь понемногу...)) -------------------- Самый лучший учитель – опыт. Берёт, правда, дорого, но объясняет доходчиво…
|
![]() |
|
![]()
Сообщение
#10264
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1514 Регистрация: 30.11.2008 Из: Россия, Крым, Симферополь Пользователь №: 12714 ![]() |
Спасибо, Олег, за книжку и пример кода выше. Дошли руки, наконец, и у меня до Си. Проникаюсь понемногу...)) Всегда пожалуйста! Это не просто код, а полная инициализация переферии (причем рабочая) которая настраивает стм-ку в аппаратный ШИМ контроллер, причем он далее работает сам по себе автономно без участия ядра, схему скачаете в ветке Каво-чаво выкладывал в конце февраля 2018 года. Все регулировки тока и напряжения осуществляются двумя опорными напряжениями компараторов которые изменяются выше описанно как. Если программно не собираетесь во время работы менять ширину импульсов таймера то желательно прописать Lock биты от дальнейшего изменения оного. И не забудьте сконфигурировать камушек на частоту 48 мГц (по умолчанию запускается на восемь) Там в инициализации таймера есть биты вызывающие прерывание, в данном примере их можно упустить так как я по этому таймеру в моем проекте делаю обработку квантование что в данном примере не отражено. А ещё в моем проекте индикация сделана тоже аппаратно связкой DMA и таймеров ![]() ![]() ![]() ![]() Сообщение отредактировал OlegarX-RUS - 5.6.2019, 15:37 -------------------- В электронике есть два вида неисправности:
1) наличие контакта там где его не должно быть 2) отсутствие контакта там где он должен быть всё остальное домыслы :) |
![]() |
|
|
![]()
Сообщение
#10265
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 2184 Регистрация: 1.11.2011 Пользователь №: 24851 ![]() |
Всегда пожалуйста! Ок, спасибо! Для меня пока в стмках хитро вообще всё!)) Привыкла к асму, и AVR. Попробовала, было, и стм с ассемблера начать, но как-то грустно там всё с информацией, особенно для начинающих. Поняла, что проще Си выучить. Вроде, пока всё более-менее понятно. К синтаксису только привыкнуть, и опыта немного набраться. После асма, всё-таки проще, представляешь уже как и что работает, и что не следует делать). С индикацией и DMA тоже нужно будет разбираться. А может поначалу просто светодиодный индикатор поставлю.
... А ещё в моем проекте индикация сделана тоже аппаратно связкой DMA и таймеров ![]() ![]() ![]() ![]() -------------------- Самый лучший учитель – опыт. Берёт, правда, дорого, но объясняет доходчиво…
|
![]() |
|
![]()
Сообщение
#10266
|
|
Посетитель ![]() ![]() Группа: Пользователи Сообщений: 122 Регистрация: 9.2.2019 Из: Москва Зеленоград Пользователь №: 55276 ![]() |
Здравствуйте. Приобрёл мозг на LCD для управления сварочным п\а у oleg1ma. всем создателям огромное спасибо за проделанную работу . на данный момент собираюсь доделать в нём тиг сварку.
и за одно прошил последнюю прошивку. - 32_lcd_v24.5.zip . новая прошивка , по удобству использования очень понравилась. Но проблема как и у Олега : при выходе из меню настроек на LCL отображается только верхняя строка и приблизительно в два раза ярче , чем при отображении обеих строк. Выйти в нормальный режим помогает перезагрузка по питанию. Настройки все сохраняются. Полуавтомат прекрасно варит. Использую прошивку 32_lcd_v24.5.zip надели две . С нетерпением жду исправления прошивки. |
![]() |
|
![]()
Сообщение
#10267
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1514 Регистрация: 30.11.2008 Из: Россия, Крым, Симферополь Пользователь №: 12714 ![]() |
Для меня пока в стмках хитро вообще всё!)) Привыкла к асму, и AVR. Попробовала, было, и стм с ассемблера начать, но как-то грустно там всё с информацией, особенно для начинающих. Поняла, что проще Си выучить. Вроде, пока всё более-менее понятно. К синтаксису только привыкнуть, и опыта немного набраться. После асма, всё-таки проще, представляешь уже как и что работает, и что не следует делать). С индикацией и DMA тоже нужно будет разбираться. А может поначалу просто светодиодный индикатор поставлю. Там не хитро, а гибко всё!!! ![]() ![]() После асма всё на СИ действительно проще и не надо думать какие комманды использовать, компилятор сам подберёт необходимые.Делайте вообще без индикации как я писал выше. для начала все параметры будете с компа слать, а потом и показометр какой нибудь на другой стм-ки прикрутите (К тому времени будет полное понимание как выводить информацию на LCD аля через DMA ![]() P.S. без логического анализатора (для начала с головой хватит восьмиканального шестидолларавого) за разработку браться даже не стоит!!! Купив его у китайцев один раз он упростит наладку до нельзя, потому что только с помощью него я отлавливаю ошибки в коде или настройки переферии.... потому что их видно ![]() Сообщение отредактировал OlegarX-RUS - 5.6.2019, 23:21 -------------------- В электронике есть два вида неисправности:
1) наличие контакта там где его не должно быть 2) отсутствие контакта там где он должен быть всё остальное домыслы :) |
![]() |
|
|
![]()
Сообщение
#10268
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 403 Регистрация: 23.7.2016 Пользователь №: 49672 ![]() |
OlegarX-RUS Если уж очень хочется STM32 то нужно заморачиваться на специализированный кристалл типа STM32F301C6T6. Просто мое мнение. Потому как 216 пикосекунд ШИМ и компараторы уже внутри. Ну а идеально это TMS320F28027 или dsPIC33EPxxxGSxxx (1.27 мм между ножками). Разница в цене не такая значительная, а вот специализация, по моему, решает все!!!!
![]() |
![]() |
|
![]()
Сообщение
#10269
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1514 Регистрация: 30.11.2008 Из: Россия, Крым, Симферополь Пользователь №: 12714 ![]() |
Я же не запрешаю тебе делать на чём угодно
![]() Всё о чём я пишу отработано в железе, а не только основывается на голой теории! F3 конечно интереснее кто же спорит, можно писать и на них тем более код будет такой же так как все стм-ы идентичны. и если уж совсем заморачиваться то брать не F301 а F334 так как в них есть HRTIM на нём и еденицами пикосекундами оперировать можно и он как бы специально разработан именно для ИИП ![]() Сообщение отредактировал OlegarX-RUS - 6.6.2019, 8:15 -------------------- В электронике есть два вида неисправности:
1) наличие контакта там где его не должно быть 2) отсутствие контакта там где он должен быть всё остальное домыслы :) |
![]() |
|
![]()
Сообщение
#10270
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 403 Регистрация: 23.7.2016 Пользователь №: 49672 ![]() |
Причем тут голая теория!
![]() P.S. Просто искусственно ограничивая себя в камне, Вы отрезаете Себе-же путь для совершенствования алгоритмической базы в будущем. Это даже не критика, а практическая неизбежность заложить камень с запасом, ибо кто его знает какие хотелки придут в голову прямо завтра, по крайней мере у меня так, впрочем разница в цене 1,5 доллара цена пачки сигарет!. Сообщение отредактировал astrahard - 6.6.2019, 9:22 |
![]() |
|
|
![]()
Сообщение
#10271
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1514 Регистрация: 30.11.2008 Из: Россия, Крым, Симферополь Пользователь №: 12714 ![]() |
Вся неразрывность регулирования аппаратная. никаких програмных расчётов не производится! Не вижу смысла дальше это обсусоливать!
Сообщение отредактировал OlegarX-RUS - 6.6.2019, 9:21 -------------------- В электронике есть два вида неисправности:
1) наличие контакта там где его не должно быть 2) отсутствие контакта там где он должен быть всё остальное домыслы :) |
![]() |
|
![]()
Сообщение
#10272
|
|
![]() Активный участник ![]() ![]() ![]() Группа: Пользователи Сообщений: 403 Регистрация: 23.7.2016 Пользователь №: 49672 ![]() |
Хорошо...
|
![]() |
|
![]()
Сообщение
#10273
|
|
![]() Заглянувший ![]() Группа: Пользователи Сообщений: 74 Регистрация: 1.2.2014 Из: г.Мелитополь UA Пользователь №: 37945 ![]() |
|
![]() |
|
![]()
Сообщение
#10274
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1514 Регистрация: 30.11.2008 Из: Россия, Крым, Симферополь Пользователь №: 12714 ![]() |
Icurrent_value <-- откуда ты его берешь? Это переменная объявленная в моем проекте Её значение меняет опорное на токовом компараторе (выход DAC Берите f072 там два DAC-a и настраивайте выход каждого канала на свой компаратор тока и напряжения и всего двумя переменными которые меняют опорное и будет рулежка любыми параметрами ШИМ контроллера Причем как показала практика выходы даков не обязательно выводить на ножки проца во внешний мир, а можно напрямую сконфигурировать на входа компараторов то есть схема даже упрощается, а высвободившиеся пины можно использовать для чего либо другого! Сообщение отредактировал OlegarX-RUS - 7.6.2019, 12:50 -------------------- В электронике есть два вида неисправности:
1) наличие контакта там где его не должно быть 2) отсутствие контакта там где он должен быть всё остальное домыслы :) |
![]() |
|
![]()
Сообщение
#10275
|
|
![]() Заглянувший ![]() Группа: Пользователи Сообщений: 74 Регистрация: 1.2.2014 Из: г.Мелитополь UA Пользователь №: 37945 ![]() |
понял спс ,меня больше интересует конечно косой а не полный мост , приедет камешек поиграюсь у меня дома только F030f4, f103c8 в них нет dac
|
![]() |
|
![]()
Сообщение
#10276
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1514 Регистрация: 30.11.2008 Из: Россия, Крым, Симферополь Пользователь №: 12714 ![]() |
Так а ничего не мешает использовать любой из выходов под косой, второй просто оставьте висеть в воздухе (у меня так и сделано). И заказывайте 072-ю серию, тогда не придется шимом генерить опорное по напруги как это сделано у меня в 051-й серии и сэкономите минимум две ножки камушка
У меня дома только F030f4, f103c8 в них нет dac Оставьте их для показометров ![]() -------------------- В электронике есть два вида неисправности:
1) наличие контакта там где его не должно быть 2) отсутствие контакта там где он должен быть всё остальное домыслы :) |
![]() |
|
![]()
Сообщение
#10277
|
|
Заглянувший ![]() Группа: Новые пользователи Сообщений: 3 Регистрация: 5.7.2015 Пользователь №: 45983 ![]() |
Здравствуйте форумчане!Вот хочу начать проект"Инверторный сварочный источник однофазный".По какой схеме лучше собирать?
|
![]() |
|
![]()
Сообщение
#10278
|
|
Посетитель ![]() ![]() Группа: Пользователи Сообщений: 145 Регистрация: 20.2.2009 Из: Оренбург Пользователь №: 13517 ![]() |
Здравствуйте. Решил реанимировать свой ПА.
ММА режим заново настроил по 200 А шунту и нагрузке 0,3 Ом. Затем проверял на 0,15 Ом. Регулировка тока нормально работает. Другие не могу настроить. Резистор 47 ом в цепи "-ОС" выгорает. СТоит (стоял) 2 Вт МЛТ. Велика амплитуда напряжения холостого хода? |
![]() |
|
![]()
Сообщение
#10279
|
|
Посетитель ![]() ![]() Группа: Пользователи Сообщений: 145 Регистрация: 20.2.2009 Из: Оренбург Пользователь №: 13517 ![]() |
|
![]() |
|
![]()
Сообщение
#10280
|
|
![]() =VIP= ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 8328 Регистрация: 25.6.2010 Из: Глобино UA Пользователь №: 18764 ![]() |
протяжку проверьте. питание движка должно полностью быть изолировано от корпуса и управа тоже
|
![]() |
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 15.7.2025, 16:43 |
|
![]() |