admin

admin 8 часов назад

+2
Репутация
3
Рейтинг

спасибо, вот это классные измерения, указал в статье

Проверил:

у меня работает отлично, заходит в обработчик прерывания:

Вот на всякий случай копия кода:

 
#include "main.h"
/* Global Variables */
uint8_t Enc_Counter = 0;
/* Function prototypes */
void Enc_Trig_Int(void);
void GPIO_Initialization(void);
int main(void)
{
	//GPIO_Initialization(); // PA4 = TIM14-CH1 !!!
	CMSIS_PWM_Conf();
	/*
	 * PA6 - TIM3_CH1
	 * PA7 - TIM3_CH1
	 */
	/****** GPIO Initialization ******/
	/* GPIOA Clock */
	RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
	/* 10: Alternate function mode */
	GPIOA->MODER &= ~GPIO_MODER_MODER6_0;
	GPIOA->MODER |= GPIO_MODER_MODER6_1;
	/* 00: No pull-up, pull-down */
	GPIOA->PUPDR &= GPIO_PUPDR_PUPDR6_0;
	GPIOA->PUPDR &= GPIO_PUPDR_PUPDR6_1;
	/* 0001: AF1 */
	GPIOA->AFR[0] |= (1UL << GPIO_AFRL_AFSEL6_Pos);
	/* 10: Alternate function mode */
	GPIOA->MODER &= ~GPIO_MODER_MODER7_0;
	GPIOA->MODER |= GPIO_MODER_MODER7_1;
	/* 00: No pull-up, pull-down */
	GPIOA->PUPDR &= GPIO_PUPDR_PUPDR7_0;
	GPIOA->PUPDR &= GPIO_PUPDR_PUPDR7_1;
	/* 0001: AF1 */
	GPIOA->AFR[0] |= (1UL << GPIO_AFRL_AFSEL7_Pos);
	/* Encoder Initialization */
	/* TIM3 Clock */
	RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
	/* 01: CC1 channel is configured as input, IC1 is mapped on TI1
	 * 01: CC2 channel is configured as input, IC2 is mapped on TI2 */
	TIM3->CCMR1 |= (TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0);
	TIM3->CCMR1 &= ~(TIM_CCMR1_CC1S_1 | TIM_CCMR1_CC2S_1);
	/* 00: noninverted/rising edge */
	TIM3->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);
	TIM3->CCER &= ~(TIM_CCER_CC2NP | TIM_CCER_CC2NP);
	/* 001: Encoder mode 1 - Counter counts up/down on TI2FP1 edge depending on TI1FP2 level */
	TIM3->SMCR |= TIM_SMCR_SMS_0;
	TIM3->SMCR &= ~TIM_SMCR_SMS_1;
	TIM3->SMCR &= ~TIM_SMCR_SMS_2;
	/* 1111: fSAMPLING = fDTS / 32, N = 8 */
	TIM3->CCMR1 |= (TIM_CCMR1_IC1F_0 | TIM_CCMR1_IC1F_1 | TIM_CCMR1_IC1F_2 | TIM_CCMR1_IC1F_3);
	TIM3->CCMR1 |= (TIM_CCMR1_IC2F_0 | TIM_CCMR1_IC2F_1 | TIM_CCMR1_IC2F_2 | TIM_CCMR1_IC2F_3);
	/* Auto-Reload Register (MAX counter number) */
	TIM3->ARR = 100;
	Enc_Trig_Int();
	/* 1: Counter enabled */
	TIM3->CR1 |= TIM_CR1_CEN;
while(1){
	  Enc_Counter = TIM3->CNT;
	}
}
void Enc_Trig_Int(void){
	/* Trigger Edge Detector */
	/* 100: TI1 Edge Detector (TI1F_ED) */
	TIM3->SMCR &= ~(TIM_SMCR_TS_0 | TIM_SMCR_TS_1);
	TIM3->SMCR |= TIM_SMCR_TS_2;
	/* 1: Trigger interrupt enabled. */
	TIM3->DIER |= TIM_DIER_TIE;
	NVIC_EnableIRQ(TIM3_IRQn);
}
void GPIO_Initialization(void){
  RCC->AHBENR |= RCC_AHBENR_GPIOAEN; /* GPIOA Clock */
  GPIOA->MODER |= GPIO_MODER_MODER4_0; /* 01: General purpose output mode */
  GPIOA->MODER &= ~GPIO_MODER_MODER4_1;
  GPIOA->OTYPER &= ~GPIO_OTYPER_OT_4; /* 0: Output push-pull */
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR4_0; /* 01: Medium speed */
  GPIOA->OSPEEDR &= ~GPIO_OSPEEDER_OSPEEDR4_1;
  GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR4_0; /* 00: No pull-up, pull-down */
  GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR4_1;
  GPIOA->BSRR |= GPIO_BSRR_BS_4; /* Low Level Out */
}
void TIM3_IRQHandler(void){
	if(TIM3->SR & TIM_SR_TIF){
		TIM14->CCR1 = 25 + TIM3->CNT;
		TIM3->SR &= ~TIM_SR_TIF;
	}
}
 

No, maybe it's possible, but there is no firmware, no programmer and on the some modules the marking on the chip is erased.

Try to buy module from another seller)

зато красиво)

защиты от КЗ нет, срабатывает ограничение по току просто

если долго держать сгорает силовой транзистор от перегрева

Архивы программ и советы электронщикам в ТГ-канале.

Как-то так:

Точно должно быть в файлах MathCad, открыть сейчас не могу, но вот вам исходники, там и график этот присутствует: photocell_equations.zip

Может ноль случайно сместился в программе, можно настройки сбросить или вручную сдвинуть.

А что за датчик, у него на выходе нормальное напряжение, здесь же как-то это сработало.

они все как раз и не защищены от прямого копирования

Если сделать плату, то оно все будет маленьким, ну а проверить можно и на модулях, но без программирования не обойтись,

Что можно придумать? Датчики движения, по моему максимум 10м.

Вот прям по метрам определить не получиться.

Можно воспользоваться косвенным методом, но это может подойти, правда здесь не обойтись без дополнительного микроконтроллера. Суть вот какая:

на приемник вы должны передавать любое сообщение с контрольной сумой по алгоритму, известному приемнику. Приняв сообщение приемник проверяет его целостность по известному алгоритму (например, CRC-8). А уровень сигнала вы оцениваете по тому сколько раз за промежуток времени было принято неискаженных сообщений относительно всех сообщений.

Вот пример из видео, где видно, что часть данных теряется:

Что-то подобное используется в радиоаппаратуре (значение SNR — Signal-to-Noise Ratio), в общем нужно как-то оценивать уровень сигнала:

ахах прикольная штука)

хотел сделать что-то подобное, только с герконом замыкающим, то есть чтобы устройство потребляло только после срабатывания (на дверь хотел повесить)

единственный минус с датчиком движения это большое потребление энергии

Этот жрет многовато, но падение напряжение маленькое может быть, так что для одной банки Li-ion/Li-Po подойдет.

Для несколько последовательно подключенных уже не прокатит из-за входного напряжения до 5В, тогда возьмете самый простой AMS1117.

Я использую режим С-4.Кнопка передатчика автоматически при нажатии включает питание — или этого можно добиться путем нужной распайки контактов кнопки?

Можно поставить на передатчик просто две кнопки: одна для управления питанием а вторая для передачи.

По логике, при отключении питания на передатчике, контакт на приемнике остается замкнутым. Чтобы разомкнуть контакт — нужно выключить приемник.

Да, или подать питание на передатчик с нежатой (не замкнутой) кнопкой управления каналом.

То есть пропаиваю перемычку между одним контактом передачи сигнала и паралелю с питанием? Кнопка стоит на разрыв цепи GND ?

Кнопка стоит на замыкание на минус, как на схеме, для любого из каналов:

Обязательно ли стабилизировать напряжение?

Да, без него выйдет из строя, у вашего аккумулятора напряжение при 100% заряде 4.2В.

Планирую на приемник ставить аку LI-PO 3,7в 100 Mah.

Проработает около 100mAh/22mA = 4.5 часов

Что оптимально ставить на передатчик?

Можно литиевый элемент поставить: CR2032 или что-то побольше, тогда без стабилизатора, в таком случае можно подавать питание только при нажатии, а в простое питание будет полностью отключено.

Вот это еще посмотрите по этому модулю, если не видели: https://cxemka.com/122-distancionnoe-upravlenie-na-module-jdy-40-proverka-dalnosti.html

Здравствуйте. Там же на схеме все есть. Скорее всего это диод, также мог вылететь и стабилизатор, прозвоните между GND и 3V3:

Видел тот тестер, когда искал аналоги, китайская самоделка.

Если использовать две банки 18650, то сразу отпадает проблема выбора транзистора, питания драйвера и получение 300В из 7.4В.

Хочу сделать преобразователь с автоподстройкой частоты, для разных диапазонов, как здесь:

https://www.ti.com/lit/an/snva765/snva765.pdf?ts=1...

Вот, что удалось выжать при 20 кГц, дальше поднимать не могу (там защитный диод уже ограничивает и транзистор может вылететь, у него же Vds=200V):

А для каких целей, если не секрет, нужно проверять лампы? Их ремонт же, как правило, нецелесообразен.

Так, а что ничего? Кидайте фотки хотя бы.

При подключении к телефону должно появляться всплывающее окно.

← Предыдущая Следующая → 1 2 3 4 Последняя
Показаны 1-20 из 106