Jump to content

    

FLPPotapov

Участник
  • Content Count

    8
  • Joined

  • Last visited

Community Reputation

0 Обычный

Контакты

  • Сайт
    http://flppotapov.com.ua/
  • ICQ
    0

Старые поля

  • skype
    potapovalekseya@gmail.com
  • G+
    https://plus.google.com/103907984856642927130?rel=author

Recent Profile Visitors

252 profile views
  1. Приветствую всех! Много времени прошло, многое поменялось, кроме одного мы также продолжаем разрабатывать электронику. Немного обновили сайт, добавили примеры, можно ознакомиться по ссылкам ниже: http://flppotapov.com.ua/razrabotka-elektroniki/pechatnye-platy.html http://flppotapov.com.ua/primer-razrabotka-elektroniki/preobrazovatel-ph-4-20ma.html http://flppotapov.com.ua/primer-razrabotka-elektroniki/fazovyj-regulyator-moshchnosti.html http://flppotapov.com.ua/reshenie-kompleksnykh-zadach/termostat-dlya-khimicheskogo-reaktora-v2.html
  2. Опрос более 10 каналов АЦП STM32F103

    Всегда существует несколько вариантов решения задач, истины нет, есть точки зрения! Здесь приведен фрагмент кода, отвечающий только за измерения, есть еще калибровка. Ноль действительно можно компенсировать в u32, но при калибровке float очень удобно, один стандартный алгоритм для любых измерений, вне зависимости от разрядности АЦП или количества усреднений. По быстродействию для STM32 разница небольшая, с учетом интервала 200mS это вообще не заметно!
  3. Опрос более 10 каналов АЦП STM32F103

    Цитата(dimon_rub @ Nov 12 2016, 08:28) НО как потом узначт в каком канале авария????? Зависит от того в каком режиме работает АЦП, в случае сканирования с DMA просмотреть буфер. Цитата(примеры будут вообще СУПЕР) как реализовать опрос более 10 каналов АЦП Ниже фрагмент кода десятиканального вольтметра. Устройство сделал, когда только начинал осваивать STM32, еще на халявной дискавери. Код полностью рабочий, вырезал инициализацию портов и не имеющие к делу куски. Написано для STM32F100, работать должно и на F103. Основной цикл! CODE float adc_data [10]; // Результат измерения u16 adc_buf [10]; // Буфер куда пишет DMA u32 adc_buf_t [10]; // Накопление результата float adc_coff [10] ={ // Калибровочные константы 0.00008467,// 0.0000893721, // U 1 0.00008455, // U 2 0.00008653, // U 3 0.00008543, // U 4 0.00008529, // U 5 0.00008556, // U 6 0.00008333, // U 7 0.00008442, // U 8 0.00008475, // U 9 0.00008392// U 10 }; float adc_zero[11] ={ // Нули 28994.0, // U 1 28859.0, // U 2 27527.0, // U 3 26274.0, // U 4 28885.0, // U 5 27621.0, // U 6 34047.0, // U 7 28648.0, // U 8 26955.0, // U 9 26136.0 // U 10 }; u8 adc_data_rd = 0; // Флаг есть результат int main(void) { while( 1) { if (adc_data_rd == 1){ adc_data_rd = 0; // Обнуляем флаг конца измерения for (u8 i = 0; i<=9;i++) { adc_data[i] = (((float)adc_buf_t[i] - adc_zero[i]) * adc_coff[i]); // Результат с учетом калибровочных констант и нулей adc_buf_t[i] = 0; // Обнуляем буфер усреднения } // Здесь отображаем результата или все что угодно! // Старт следующего измерения DMA1_Channel1->CCR |= DMA_CCR1_EN; // разрешаем работу DMA и ADC ADC1->CR2 |= ADC_CR2_ADON; } }} Инициализация АЦП и ДМА CODE//------------------------------------------------------------------------------ void AdcInit(void) { RCC->AHBENR |= RCC_AHBENR_DMA1EN; // DMA1_Channel1->CPAR = (uint32_t) &ADC1->DR; // адрес периферийного устройства DMA1_Channel1->CMAR = (unsigned int) adc_buf; // адрес буфера в памяти DMA1_Channel1->CNDTR = 10; // количество данных для обмена DMA1_Channel1->CCR &=~DMA_CCR1_EN; // разрешаем работу DMA1_Channel1->CCR |= DMA_CCR1_MSIZE_0; // размер памяти 16 bit DMA1_Channel1->CCR |= DMA_CCR1_PSIZE_0; // размер периферии 16 bit DMA1_Channel1->CCR |= DMA_CCR1_MINC; // memory increment mode DMA1_Channel1->CCR |= DMA_CCR1_CIRC; DMA1_Channel1->CCR |= DMA_CCR1_TCIE; // прерывание по окончанию передачи DMA1_Channel1->CCR |= DMA_CCR1_EN; // разрешаем работу NVIC_SetPriority(DMA1_Channel1_IRQn, 10); NVIC_EnableIRQ(DMA1_Channel1_IRQn); RCC->CFGR &= ~RCC_CFGR_ADCPRE; RCC->CFGR |= RCC_CFGR_ADCPRE_DIV8; RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; ADC1->SQR3 = 0; // 1 ADC1->SQR3 |= 1<<5; // 2 Слева номер канала справа сдвиг ADC1->SQR3 |= 2<<10; // 3 ADC1->SQR3 |= 3<<15; // 4 ADC1->SQR3 |= 4<<20; // 5 ADC1->SQR3 |= 5<<25; // 6 ADC1->SQR2 = 6; // 7 ADC1->SQR2 |= 7<<5; // 8 ADC1->SQR2 |= 8<<10; // 9 ADC1->SQR2 |= 9<<15; // 10 ADC1->CR2 = ADC_CR2_EXTSEL_0 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTTRIG; ADC1->SMPR1 = 0; //очистка регистров времени выборки ADC1->SMPR2 = 0; // ADC1->SMPR2 |= (uint32_t)(6<<(0*3)); //канал 0, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(1*3)); //канал 1, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(2*3)); //канал 2, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(3*3)); //канал 3, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(4*3)); //канал 4, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(5*3)); //канал 5, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(6*3)); //канал 6, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(7*3)); //канал 7, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(8*3)); //канал 8, время преобразования 6 мкс ADC1->SMPR2 |= (uint32_t)(6<<(9*3)); //канал 9, время преобразования 6 мкс ADC1->SMPR1 |= (uint32_t)(6<<(0*3)); //канал 10, время преобразования 6 мкс ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_RSTCAL; while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_RSTCAL){} ADC1->CR2 |= ADC_CR2_CAL; while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_CAL) {} ADC1->SQR1 |= 9<<20; // Количество преобразования ADC1->CR1 |= ADC_CR1_SCAN; // Режим сканирования ADC1->CR2 |= ADC_CR2_DMA; // DMA on // ADC1->CR2 |= ADC_CR2_CONT; // ADC1->CR2 |= ADC_CR2_SWSTART; ADC1->CR2 |= ADC_CR2_ADON; } Прерывание от ДМА CODEu32 adc_count = 0; // Счетчик числа усреднений void DMA1_Channel1_IRQHandler(void) { DMA1->IFCR = DMA_IFCR_CGIF1 | DMA_IFCR_CTCIF1; // clear DMA interrupt flags DMA1_Channel1->CCR &=~DMA_CCR1_EN; // Запрещаем работу for (u8 i = 0; i<=9;i++) { adc_buf_t[i]+= adc_buf[i]; // Накапливаем сумму в буфере } adc_count++; if (adc_count >=5000) // Счетчик усреднений { adc_count = 0; adc_data_rd = 1; // Флаг готовности АЦП test_count++; return; } DMA1_Channel1->CCR |= DMA_CCR1_EN; // разрешаем работу ADC1->CR2 |= ADC_CR2_ADON; } //------------------------------------------------------------------------------
  4. Работа для опыта.

    Цитата(singsing @ Nov 8 2016, 17:08) Я студент. Ищу подработку для получения практического опыта. Готов работать бесплатно. Вы правильно выбрали направление, можно всю жизнь тренироваться на "кошках", но так ничему и не научится, а даже простые практические задачи могут сильно расширить кругозор! Единственно, что никогда не работайте бесплатно, плата может быть символической, или в виде железа, но не бесплатно! ЦитатаПрограммирование AVR. AVR тупиковое направление, конечно на них можно делать довольно серьезные устройства, но если собираетесь заниматься МК профессионально лучше выбрать камни поперспективней, например STM8 – STM32. Чем дольше будете сидеть на AVR, тем сложнее будет перейти на что-то новое! Цитатано до железа так и не дойдёт т.к. нет сейчас возможности(финансовой) отправить на производство плату. Купить компоненты (тем более в маленьких сериях цены могут быть высокими) и тд. Эмбеддерство это тесное переплетение аппаратной и программной частей, только очень опытный разработчик может сделать проект без "железа", и то не очень сложный. Благо сейчас полно дешевых отладочных плат и всяких ардуино подобных приблуд, целиком распаянные узлы. Задерживаться на этом конечно не стоит, но если проблема с платами и пайкой на первое время сойдет! ЦитатаХотел пойти путём, спроектировать и всё всё с описанием сливать сюда, чтобы опытные разработчики прокомментировали, будет это жить или нет. Какие-то комментарии по коду или алгоритмам Вам дадут, но не ждите, что кто-то будет на это тратить времени больше чем Вы! Спасение утопающего, дело рук самого утопающего!
  5. Цитата(smk @ Nov 6 2016, 12:30) Дело не только во внешнем виде, но еще и в долгосрочной надежности. Вы монтажник? Нужно иметь не менее восьмидесятого уровня, чтобы по фото невысокого разрешения определить долгосрочную надежность незнакомого оборудования! Кстати один из примеров, интеллектуальный термостат: http://flppotapov.com.ua/reshenie-kompleks...-termostat.html трудится почти два года без перерывов и выходных. В цеху, который представляет собой навес, обшитый профнастилом, зимой -15 летом +40. За все время было две проблемы по электрике: - отказал высокотемпературный ТЭРАвский датчик, перетерся провод. - зимой замерз сенсор на панели оператора, местные не смогли придумать ничего лучше, погрели строительным феном, пленка пошла пузырями. Это притом, что варят в нем щелочь, нагретую свыше 250 градусов, если эта гадость капнет на кожу, до кости пропалит, среда суперагрессивная. ЦитатаНикогда не экономьте на качестве. Либо качественно либо не беритесь вообще. Не смешивайте маркетинг и инженерию! Я бы с удовольствием купил все готовое, красивое, продуманное, но решает Заказчик, моя задача предложить варианты, оптимальные способы решений задачи, приемлемую надежность за приемлемую стоимость! Если нужно по расчету провод сечением 0,12мм, можно поставить МГШВ, местного производства, нормальный, луженый, термостойкий. А можно применить "модный" LAPP KABEL, который будет разноцветный, с маркировкой нанесенной на сам провод, красивый, но в пять раз дороже! На надежность это сильно повлияет? Я не пропагандирую дешевые решения, но навязывать дорогое оборудование, отказываться от работы в случае ограниченного бюджета, ссылаясь на маркетинговый термин, который не имеет количественной оценки, считаю глупо! Цитатаэто по началу Вам кажется, что Вы можете таким способом брать больше заказов. С 2001 года занимаюсь, честно, не вру, правда, не монтажом, я программист МК. Для монтажа есть человек, ему 49 лет, из них лет 30 занимается монтажом и наладкой, отличный специалист особенно как наладчик, умеет работать с документацией, не занимается отсебяченной, просто приглашаю, когда нужно! Цитата(gte @ Nov 6 2016, 23:01) В любом случае, надо строже оформить сайт, не выкладывать фото с открытыми коробами, убрать на нижний уровень страницы излишние подробности работ. Дельный совет, приму к сведению!
  6. Цитата(smk @ Nov 3 2016, 20:06) Если думаете, что нахамил, то посмотрите на немецкую сборку. Хамства не вижу, наоборот хочу поблагодарить за интерес к моей теме! ЦитатаКак-то видал щиты сборки какой-то московской конторы. По качеству с немцами считай наравне. Короче есть куда стремиться. Стремится, всегда есть куда, как говорил Жванецкий: нельзя подпрыгнуть и зависнуть в воздухе, можно или вниз или вверх! Здесь весь вопрос в цене! Если открыть каталоги WAGO, Phoenix Contact или Rittal, обнаружим, что пакетик винтиков М5 стоит 10 евро, в пакетике 10 винтиков. Цветные маркированные кабели, маркировочные пластины, шины - Это все стоит денег, причем если пересчитать, то получается за "шашечки" мы платим больше чем за "такси"! Я обычно предлагаю несколько вариантов, если заказчик готов заплатить в несколько раз больше только за внешний вид, то какие проблемы, но большинство моих клиентов считают свою копейку!
  7. Чтобы это могло значить, непонятно!
  8. Доброго времени суток! Мы небольшой коллектив разработчиков, выполним разработку электроники. От простейшей платы с микроконтроллером до промышленной автоматизации. Возможен комплексный подход. Также оказываем услуги по ремонту промышленной и силовой электроники, можем модернизировать или доработать существующие изделия. Наш основной клиент – это фирмы и частные лица, которые нуждаются в заказной электронике, но не могут себе позволить содержать штат разработчиков. Ведь кроме хорошего специалиста, нужно полноценное рабочее место, инструмент, приборы, материалы, минимальный запас радиодеталей и т.д. Здесь можем помочь мы, за адекватные деньги Вы получаете полный спектр услуг, от идеи до практической реализации. За "еду", конечно, мы трудится, не готовы, но стоимость соответствует классу работ. Для заказчика, который, покупая телевизор, хочет в комплекте мешок радиоламп, возможны варианты с полным комплектом конструкторской документации, а также прошивку и исходный код. Возможно заключение договора о неразглашении и т.д. Мы работаем на территории всей Украине, при необходимости возможны командировки. С полным перечнем услуг можно ознакомиться тут: http://flppotapov.com.ua/razrabotka-elektr...lektroniki.html Несколько примеров: http://flppotapov.com.ua/primery.html О нас: http://flppotapov.com.ua/ Контакты: http://flppotapov.com.ua/kontakty.html Наш сайт находится в стадии разработки, поэтому услуги и примеры будут периодически, обновляется!