supercelt

Members
  • Публикации

    137
  • Зарегистрирован

  • Посещение

Репутация

-2 Плохой

О supercelt

  • Звание
    Осваивающийся

Информация

  • Пол
    Мужчина
  • Город
    Санкт-Петербург

Электроника

  • Стаж в электронике
    10-20 лет
  • Сфера радиоэлектроники
    морские информационные системы

Посетители профиля

2 361 просмотр профиля
  1. Админ, я извиняюсь. Перенесите пожалуйста тему в Электродвигатели
  2. А никак. Раз нет соответствующего раздела на форуме, я кинул сюда, ибо в описании ветки проскальзывает - катушки теслы. Ну что-то похожее
  3. Здрасти! Я нарисовал, схемотично правда, как есть, просто показать идею. Итак, вот обычный асинхронник Показана только одна фаза из трёх. Статор и белечье колесо. Как известно, вектор силы Лоренца, которая двигает проводник в магнитном поле, направлен перпендикулярно направлению вектора магнитной индукции. На этой картинке, я так думаю, магнитные линии пересекают стержень клетки под 90 град в районе середины полюса. Если взять чуть подальше, то поле попадёт на остальные стержни уже под некоторым углом. И поэтому вектор силы, он как бы всё-равно будет направлен в нужную сторону, но под углом. А это потери. Вот скажите, если учесть, что диаметр движка большой, и белечья клетка примерно 30 см в диаметре, то следующая картинка улучшит характеристики? Увеличится ли крутящий момент? То что будет больше весить, дороже, сложнее, в расчёт не берём, только характеристики мощности. Или я мыслю неправильно? то есть идея такая, у движка 2 половины, которые вставляются в друг друга. На одной - стороне двойной статор, на другой - ротор - колесо белечье. По идее плотнойсть потока доджна быть сильной между обмотками и силовые линии пойдут ну почти идеально ровно . И вектор силы будет всегда направлен под нужный угол, на всех рабочих участках стержней.
  4. Контроль сброса gsm модуля

    Сделал по схеме, то что на картинке во вложении, слева. резистор на затворе 1 ком, резистор на затвор-сток - 10ком. Транзюк 2N7000. Ножку RST просто подключаю к истоку. Есть проблема. Значит когда на затвор попадает нужное напряжение, и транзистор открывается, то напряжение на истоке падает до 0,13в. Но в даташите на модуль написано, что для сброса надо меньше 0,05в. Проверил просто соединив землю с RST - ресет работает. Через транзюк - соответственно нет. Чё можно сделать?)
  5. Всем привет подскажите пожалуйста. Есть модуль А6. У него есть пин RST. В даташите написано, что для сброса надо применять низкий уровень, но при этом ток через все это дело пойдёт до 70ма и у модема возникнут трудности с поиском сети. Там же сказано, что рекомендовано использовать nMOSFET. Так вот я правильно понял, что надо просто тянуть эту ногу к земле через мосфет н типа, никаких там обвесов не надо? Есть схемка как правильно притянуть ногу к земле через мосфет? И как правильно подобрать транзистор? Питание модуля 5в , управление 3,3в
  6. подобрать кримпер

    пины брал в чип и дипе. Видел кримпер с маркировкой AWG 28-10. Так вот не понятно подходит он или нет. Губки то у него маленькие есть, но пины че-то уж слишком мелкие. А через упаковку не пропробовать)). И кстати AWG это параметр провода, а не пина
  7. Здравствуйте!. Помогите пожалуйста подобрать кримпер. Где только не был, продавцы разводят руками, говорят, что контакты слишком маленькие. Но как-то их же обжимают. Вот фотка, всё поймёте. Какие параметры у этих кримперов и какой нужен что бы обжать это маленькое чудо? https://lib.chipdip.ru/118/DOC001118780.pdf
  8. Привет! У меня есть станция lukey 852D+ компрессорная. Проблема состоит в том, что если я ставлю скорость фена на минимум, поток всё равно сильный. с 4 см сдувает смд, усаженные в пасту. Причём крутилка скорости работает. Если увеличить, то там вообще ещё сильнее будет дуть. Вопрос. Если заменить переменный резистор, регулировки потока на больший номинал, уменьшится ли скорость?
  9. Привет всем! Вот когда телефон звонит, в тел. сети в это время напряжение примерно 60 - 80 В переменного напряжения. Какая сила тока при этом я не знаю. Ищу схему, которая может делать из постоянных 12В вот эти самые переменные 60-80 (аналог как в телефонной сети при звонке)
  10. Привет. Вопрос такой.., общий. Дан блок приёмной контрольный заря во ip gprs. Симка одна. Так вот вопрос. Можно ли назвать данный канал связи дуплексным?
  11. Приём строки по USART [STM32] Keil5

    В продолжении вопроса. Выделить из кавычек это я поторопился. Надо сначала ещё кучу всего сделать. Там условия такие, что строка может придти когда угодно, какая угодно. Я не знаю ее размер. Таким образом я решил что по мере поступления символов, а прерывании по usart1 я буду просто набивать буфер. А потом, когда он набьётся - разбирать строку. И вот проблема. Раз я не знаю размер строки, то когда она полностью придёт неизвестно. Проверять по символу \r\n не вариант, так как эти символы приходят вначале сообщения и в середине. Короче я думал думал и вот что придумал. Алгоритм такой: После того, как сработало первое прерывание по приёму usart1, я запускаю таймер. Настраиваю его на прерывание по переполнению. Далее приходит второй символ, таймер сбрасываю, он не успевает переполнится. И так далее. И вот пришёл последний символ. прерывание сработало последний раз и сбросило таймер. Он продолжает тикать. А раз символов то больше нет, он благополучно вваливается в прерывание по переполнению. В обработчике вектора вырубаю таймер и выставляю флаг что я принял всё-таки строку. Алгоритм простой, но как всегда всё работает почему-то не так как надо. Если из кода, который ниже убрать включение прерывание на таймер, то работает, но таймер соответственно не останавливается. А если включить прерывание, что так и должно быть - ничего не работает. Похоже даже на зависание. И самое интересное. Что бы я не делал, в режиме отладки, на кусок кода обработчика прерывания таймера нельзя поставить точку останова. Везде можно а именно на этот кусок нельзя. #include "gsm.h" #include "lcd.h" /////////////////////////////////////////////Buffer сделать c префиксом сетап. Может набить туда ещё команд? сделать вывод со 2 юсарта на комп, дублиовать экран на комп char Buffer_CSCA[] = "AT+CSCA?\r\n"; char Buffer_Setup[] = "ATE0\r\n";//ATV0, ATE0, ATS4=000 char Buffer_Receive[100]; uint8_t flag_receive, buf, flag_setup, i, f, ex; uint16_t co; unsigned short buff[100]; void TIM12_IRQHandler(void){ if(TIM12->SR & TIM_SR_UIF){ TIM12->SR &= ~TIM_SR_UIF; } flag_receive = 1; TIM12->CNT = 0; TIM12->CR1 &= ~TIM_CR1_CEN; } void DMA1_Channel4_IRQHandler(void){ //Прерывание DMA if(DMA1->ISR & DMA_ISR_TCIF4){ //Если прерывание вызвано завершением передачи... DMA1->IFCR = DMA_IFCR_CTCIF4; //Сброс флага завершения передачи DMA1_Channel4->CCR &= ~DMA_CCR4_EN; //Вырубаем DMA } } void USART1_IRQHandler(void){ //Прерывание USART1 if(USART1->SR & USART_SR_RXNE){ //Если прерывание вызвано по приёму USART1 USART1->SR &= ~USART_SR_RXNE; //Сбрасываем флаг приёма USART1 buff[i] = TIM12->CNT; Buffer_Receive[i++] = USART1->DR; LCD_Send_Data(USART1->DR); if(!f){ TIM12->CR1 |= TIM_CR1_CEN; f = 1; } else { TIM12->CNT = 0; } } } void GSM_INI(void){ RCC->APB2ENR |= RCC_APB2ENR_USART1EN; //USART1 clock RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; //PortA & Alt clock GPIOA->CRH &= ~GPIO_CRH_CNF9_0; GPIOA->CRH |= GPIO_CRH_CNF9_1; //Alternate function output Push-pull GPIOA->CRH |= GPIO_CRH_MODE9_1; //Speed 2 MHz /*RCC->APB1ENR |= RCC_APB1ENR_USART2EN; //Test usart2 GPIOA->CRL &= ~GPIO_CRL_CNF2_0; //Test usart2 GPIOA->CRL |= GPIO_CRL_CNF2_1; //Test usart2 GPIOA->CRL |= GPIO_CRL_MODE2_1; //Test usart2*/ //==USART1======================================================================================= USART1->BRR = 0x9C4; //9600 бод скорость обмена USART1->CR1 |= USART_CR1_RXNEIE; //Разрешаем локальные прерывания по приёму USART USART1->CR1 |= USART_CR1_RE | USART_CR1_TE; //Включаем передатчик и приёмник USART1->CR1 |= USART_CR1_UE; //Включаем USART NVIC_EnableIRQ(USART1_IRQn); //Разрешаем глобальные прерывания для USART1 //============================================================================================== //==USART2=[TEST]=============================================================================== /*USART2->BRR = 0x9C4; USART2->CR1 |= USART_CR1_TE; USART2->CR1 |= USART_CR1_UE;*/ //============================================================================================== //==DMA========================================================================================= RCC->AHBENR |= RCC_AHBENR_DMA1EN; DMA1_Channel4->CPAR = (uint32_t)&(USART1->DR); //С какой периферией работаем DMA1_Channel4->CMAR = (uint32_t)Buffer_Setup; //Указатель на нулевой элемент буфера откуда отправляем данные DMA1_Channel4->CCR |= DMA_CCR4_DIR | DMA_CCR4_MINC; //Читаем ИЗ памяти в периферию | при считывании увеличиваем на 1 адрес буфера Buffer, что бы при следующем считывани перейти на след ячейку памяти. DMA1_Channel4->CCR &= ~DMA_CCR4_PINC; //Увеличение на 1 адрема периферии выкл. Если вкл, то счётчик увеличится при след. чтении и тогда работа будет уже не с юсарт а с другой периферией DMA1_Channel4->CCR |= DMA_CCR4_TCIE; DMA1_Channel4->CNDTR = sizeof(Buffer_Setup); //Размер буфера данных DMA1_Channel4->CCR &= ~(DMA_CCR4_MSIZE | DMA_CCR4_PSIZE | DMA_CCR4_CIRC); //Память - 8 бит | Периферия - 8 бит | Не циклическая передача. DMA1_Channel4->CCR |= DMA_CCR4_PL_0; //Приоритет - средний (Medium) USART1->CR3 |= USART_CR3_DMAT; // Разрешаем USART использовать DMA NVIC_EnableIRQ(DMA1_Channel4_IRQn); //Разрешаем глобально прерывания по DMA1 канал 4 DMA1_Channel4->CCR |= DMA_IT_TC; //Разрешаем локальнве прерывания по завершению передачи DMA1 канал 4 DMA1_Channel4->CCR |= DMA_CCR4_EN; //Включаем DMA что бы передать настройки модулю GSM командой из Buffer //============================================================================================== //==TIMER12=for=receive bytes from USART======================================================== RCC->APB1ENR |= RCC_APB1ENR_TIM12EN; TIM12->CR1 |= TIM_CR1_ARPE; TIM12->ARR = 0xFFFF; TIM12->PSC = 0xEF; TIM12->CNT = 0; NVIC_EnableIRQ(TIM12_IRQn); TIM12->DIER |= TIM_DIER_UIE; TIM12->EGR = TIM_EGR_UG; //******Вызываем Update Event что бы таймер не уходил в прерывание сразу после старта __NOP(); // __NOP(); // TIM12->SR &= ~(TIM_SR_UIF); //**************************** //TIM16->CR1 |= TIM_CR1_CEN; //============================================================================================== // //В инициализации сделать поочерёдную отправку команд настроек и получение ответов с выводом сообщений на экран. Т.е. Постали - получили -вывели. След ком. послали получили вывели. //поменять 16 таймер на другой, не совмещенный по векторам ни с каким другим } void GSM_COMM_SEND_SMS_SERVICE(){ DMA1_Channel4->CMAR = (uint32_t)Buffer_CSCA; DMA1_Channel4->CNDTR = sizeof(Buffer_CSCA); DMA1_Channel4->CCR |= DMA_CCR4_EN; } void GSM_COMM_GET_SMS_SERVICE(){ buf = USART1->DR; LCD_Send_Data(buf); //while(!(USART2->SR & USART_SR_TC)); //Ждем пока бит TC в регистре SR станет 1 //USART2->DR = buf; } //---------------------------------------------------------------
  12. Приём строки по USART [STM32] Keil5

    Привет!. Помогите пожалуйста. Для вас это наверное расплюнуть, а у меня непонятки. Пишу код в Keil под stm32. Есть модуль, от которого по usart приходит строка вот такого вида: r\n\ +CMGR: "993848",145 r\n\ r\n\ OK Цель: выделить всё что между кавычек. Я так поразмыслил это можно делать 2 способами. Первый: Это кусок кода в файле mod.c где и крутится всё что касается модуля. char buffer[]; uint8_t i; void USART1_IRQHandler(void){ //Прерывание USART1 if(USART1->SR & USART_SR_RXNE){ //Если прерывание вызвано по приёму USART1 USART1->SR &= ~USART_SR_RXNE; //Сбрасываем флаг приёма USART1 flag_receive = 1; } } void Get(){ buffer[i++] = USART1->DR; } Здесь стандартно по прерыванию приёма я сбрасываю флаг, устанавливаю флаг, что я готов записать принятый байт и быстро ухожу. В самом прерывании я не стал записывать в переменную содержание регистра DR ибо сами знаете делать что-то в прерывании не комильфо. значит флаг flag_receive установился и далее в цикле while файла main.c: if(flag_receive){ Get(); flag_receive = 0; } Далее вызываем Get и всё складируется в buffer. Далее с помощью регулярки выдернуть всё что между кавычек. Вариант 2 char buffer; char str[]; void Get(){ uint8_t f; buffer = USART1->DR; if(f){ str[i++] = buffer; } if(buffer == """){ if(f){ f = 0; } else { f = 1; } } } То есть вытягиваем нужную строку непосредственно в процессе приёма байтов посимвольно. В коде могут быть ошибки, так как хотел показать идею. А теперь главные вопросы Если сначала набивать массив строкой, а потом разбирать регуляркой, как написать эту самую регулярку, что бы между кавычек вытащить? И второй вопрос, что будет работать быстрее и эффективнее 1 или 2 вариант?
  13. Какой микрофон выбрать?

    Вот я и планирую звук вставлять в видос. А не выводить его через звуковуху. Многие советуют брать usb и не париться. Ибо, такой микрофон, хороший, можно взять за 12 тонн. А если брать аналог, то он будет чуть дешевле, ну скажем тонн 10 и к нему пульт по такой же цене. получается в 2 раза
  14. Какой микрофон выбрать?

    Так что бы вы выбрали исходя из условий использования?)
  15. Какой микрофон выбрать?

    да вы просто скажите где звук лучше и всё)))