Как стать автором
Обновить
4
0
Ермаков Алексей @Solgo

Разработчик

Отправить сообщение

Любая линия связи подвержена воздействию помех. Поэтому ошибки точно будут, а их количество будет зависеть от электромагнитной обстановки вокруг.

;*********************************************************************	
;Выхлоп в сдвиговые регистры	
SEND_DATA:
	movlw	SEND_DATA_2
	movwf	FSR
	movlw	SEND_MASK_INI
	movwf	MASK_SEND_REG
	movlw	NUM_SEND_BYTES
	movwf	CNT_SEND_BYTES
	movlw	NUM_SEND_BITS
	movwf	CNT_SEND_BITS
SEND_DATA_CIRCLE:	
	rlf	RX_DATA_NEW,f
	movf	INDF,w
	andwf	MASK_SEND_REG,w
	btfss	STATUS,STATUS_Z_POSITION
	goto	SEND_HIGH
	bcf	LATA,SER
	goto	SEND_SET_CLK
SEND_HIGH:
	bsf	LATA,SER
SEND_SET_CLK:
	bsf	LATA,SCK
	bcf	STATUS,STATUS_C_POSITION
	rrf	MASK_SEND_REG,f
	nop
	nop
	nop
	nop	;Нопы чтобы удлинить фронт так как на входе стоит резистор 4.7К
	nop	;Для защиты драйвера при программировании микроконтроллера.
	nop
	nop
	nop
	bcf	RX_DATA_NEW,RX_BIT
	btfsc	PORTA,RX
	bsf	RX_DATA_NEW,RX_BIT
	bcf	LATA,SCK
	decfsz	CNT_SEND_BITS,f
	goto	SEND_DATA_CIRCLE
;***Сохраняем принятые данные в буфер****
	movlw	RX_DATA_0 - SEND_DATA_0
	addwf	FSR,f
	movf	RX_DATA_NEW,w
	movwf	INDF
	movlw	RX_DATA_0 - SEND_DATA_0
	subwf	FSR,f
;**********************************	
	movlw	NUM_SEND_BITS
	movwf	CNT_SEND_BITS
	movlw	SEND_MASK_INI
	movwf	MASK_SEND_REG
	decf	FSR,f
	decfsz	CNT_SEND_BYTES,f
	goto	SEND_DATA_CIRCLE
	bsf	LATA,RCK
	bcf	LATA,RCK
;Конец функции отправки данных в сдвиговые регистры	
;Передача закончена декодируем принятые данные
;Проверяем на одинаковость
	movf	RX_DATA_0,w
	xorwf	RX_DATA_1,w
	btfss	STATUS,STATUS_Z_POSITION
	goto	CLEAR_WDT
	movf	RX_DATA_0,w
	xorwf	RX_DATA_2,w
	btfss	STATUS,STATUS_Z_POSITION
	goto	CLEAR_WDT
;Проверяем на диапазон 0x80-0x8F
	movlw	NUM_SEND_BITS-1
	movwf	CNT_SEND_BITS
RX_DATA_TEST_RANGE:	
	movlw	RX_CODE_BEGIN
	subwf	RX_DATA_1,w
	btfss	STATUS,STATUS_C_POSITION
	goto	RX_CODE_TEST_RLF
	movf	RX_DATA_1,w
	sublw	RX_CODE_END
	btfss	STATUS,STATUS_C_POSITION
	goto	RX_CODE_TEST_RLF
;Данные в диапазоне 0x80-0x8F декодируем
	movlw	MASK_RX_DATA
	andwf	RX_DATA_1,f
	movf	RX_DATA_1,w
	xorwf	MODE_REG,w
	btfsc	STATUS,STATUS_Z_POSITION
	goto	CLEAR_WDT//Данные уже в регистре режима
	movf	RX_DATA_1,w
	movf	RX_DATA_1,w
	xorwf	MODE_REG,w
	andlw	MASK_MODE_DATA
	btfss	STATUS,STATUS_Z_POSITION
	bsf	SYSTEM_FLAGS,MODE_INI
	movf	RX_DATA_1,w
	movwf	MODE_REG
	goto	CLEAR_WDT//Данные уже в регистре режима
;Данные не в диапазоне 0x80-0x8F сдвигаем влево	
RX_CODE_TEST_RLF:
	movf	CNT_SEND_BITS,w
	btfsc	STATUS,STATUS_Z_POSITION
	goto	CLEAR_WDT//данные приняты с ошибкой
	decf	CNT_SEND_BITS,f
	rlf	RX_DATA_0,f
	rlf	RX_DATA_1,f
	goto	RX_DATA_TEST_RANGE
CLEAR_WDT:	
	clrwdt
	goto	WAIT_TMR2

Это вся реализация на приемной стороне, включая отправку на сдвиговые регистры, и декодирование команды. Как видите она не очень сложная.

Как вы убедитесь что приемник принял сигнал без ошибки? После отправки какого количества команд вы сможете достоверно сказать, ну да, сейчас точно принял. Точно, точно..

В вашем варианте сообщение получается 11 бит. Буфер в SPI PIC16F18346 размером 8 бит. В предложенном вами варианте я буду вынужден постоянно записывать в буфер SPI. В моем варианте записал и забыл (SDI соединен с SDO в SPI SLAVE) и команда сама отправляется с каждой пачкой тактовых импульсов.

Посмотрел стоимость на mouser BC846BLT1G при партии 3000 штук стоит 0.027€, 74LVC1G17SE-7 - 0.043€. Резистор 0402 на 10К при партии 1000шт стоит 0.003€. Точек паек одинаковое количество по 5 в каждом варианте.
Остался вес BC846 + резистор 30мг + 0.65мг = 30.65мг. 74LVC1G17SE-7 - 6мг. Не думаю что разница в 49.3мг сыграет какую-то существенную роль, хотя в варианте с 74LVC1G17SE-7 надо еще дорожку питания прокидывать до микросхем, что "положительно" скажется на увеличении веса. Стоит признать что разница в 0.026€ не такая уж и большая, я думал что будет больше.

Бросилось в глаза управление светодиодами на буферах с открытым стоком 74lvc1g17. Можно было бы использовать на много более дешевый транзистор 2n7002 или bc846 добавив в базовую цепь резистор. Мне кажется над стоимостью готового изделия вы особо не задумывались, раз такой заметный "угол" не срезали.

Набросал модель в MC12, длительность импульсов подобрал для получения на выходе 7В. Там естественно идеальные конденсаторы и источник напряжения, в реальности еще присутствует дизайн печатной платы. Так вот, ток потребления получается 1.5А и да на частоте 1.2Мгц в идеальном мире пиковый ток потребления мало отличается от среднего.

Верхний график ток через индуктивность L1, нижний напряжение на выходе. Колебания естественно от того что нет стабилизации.
Верхний график ток через индуктивность L1, нижний напряжение на выходе. Колебания естественно от того что нет стабилизации.

Вам надо было распределить усиление между двумя каскадами усилителя тока. А то у вас у диференциального усилителя коэффицент усиления 1, а у второго каскада 100. Лучше было бы сделать два по 10. Тогда бы у вас полоса пропускания была бы не 10КГц а 100КГц. Соответсвенно реакция на превышение тока была бы грубо не 100мкс а 10мкс. Бюджет потребления вы считали так, как будто у вас повышающий стабилизатор стабильно потребляет ток, но это не так, потребление тока имеет треугольную форму и пиковый ток будет гораздо больше одного ампера. Кстати по спецификации у USB 2 максимальный разрешенный ток 500мА. Здесь больше подходит топология ПУШ-ПУЛЛ, пиковые токи существенно меньше чем у однотактных преобразователей, если не нужна гальваническая развязка то ПУШ-ПУЛЛ реализуется достаточно просто.

В сети достаточно много информации по изготовлению трансформатора для флайбека, но расположение обмоток также важен и для других топологий. Я занимаясь разработкой автомобильного преобразователя напряжения по топологии пуш-пул на 100Ватт на частоте 100КГц потерял около недели времени не понимая почему у меня ужастно греются ключевые транзисторы и на стоках присутсвуют очень большие выбросы напряжения при переключении. Все вылизал пока не пришел к последней инстанции - расположению обмоток. Так как у первичной обмотки провод был гораздо толще (обмотка состояла из нескольких проводов меньшего диаметра для исключения скин эффекта) то сначала была намотана вторичная обмотка, затем сверху первичная. Сердечник был в форме кольца. У вторичной обмотки было небольшое перекрытие, первичная наоборот получилась более разреженной, но обе обмотки были равномерно распределены по сердечнику. И с точки зрения здравого смысла что тут не так? Но когда я перемотал трансформатор расположив полусекции обмоток строго одну под другой (секция первичной обмотки и вторичной работающие в одном цикле намотанные в одном направлении) перегрев транзисторов прекратился и выбросы на стоках очень сильно уменьшились. Сколько я литературы по силовым преобразователям прочитал, а нигде про это нет даже намека, поэтому так долго тупил и только когда уже все другое попробовал занялся расположением обмоток.

Сразу уточнение, шим для пуш-пула формировался микроконтроллером с необходимыми паузами между перключениями плеч. Управляющий сигнал на затвор формировался отдельной микросхемой драйвера с предельным выходным током 4А. Т.е. никакой автогенерации, и недооткрытия ключей.

У индуктивной нагрузки ток и напряжение сдвинуты по фазе и когда при нулевом токе симистор закрывается вследствие этого напряжение между контактами возрастает очень быстро что может привести к спонтанному открытию симистора в следующем периоде. Плюс сеть у нас неидеальная и там могут быть резкие всплески напряжения и если скорость этих всплесков будет слишком велика это может даже вывести из строя симистор. Если это все обобщить то можно сказать что назначение элементов C5 и R11 уменьшать скорость нарастания напряжения между силовыми контактами симистора так как они вследствие своей топологии к этому параметру чувствительны. Существуют трехквадрантные (3Q) симисторы которые менее чувствительны к этой скорости нарастания напряжения, но эта предельная скорость для них всё-таки есть, она просто существенно больше чем у обычных 4Q симисторов и производитель даже для 3Q симисторов, если почитать application notes, все равно рекомендует ставить эту демпферную цепочку.

Ошибся годом статьи

У меня дочь живёт в Германии 20лет. Попытка унизить оппонента вас увы не красит.

Не буду с вами спорить, хотя у меня дочь живёт в Германии уже 20лет, зима нас рассудит. Судя по тенденции события будут развиваться очень быстро.

Вы в каком то фантастическом мире живете, в котором жители ЕС не сжигают коммунальные счета на манифестациях, в ветринах ресторанах не вывешивают огромные счета за электричество. Всего лишь отложат покупку нового авто. Я конечно предполагал что есть информационные фильтры, но чтобы настолько не видеть и не слышать того что происходит сейчас в Европе это конечно нонсенс.

Запрет от США, это не существенная часть истории показывающая полную зависимость ЕС от США, но она не ключевая. Даже хуже, если руководство стран ЕС само, так сказать добровольно решило угробить свою промышленность. Хотя может они надеются завоевать Россию и от всей души уже прильнуть к теперь уже ихней "газовой сиське". Хотя нет, такого же не может быть, они же цивилизованные люди.

Таким убийственным аргументам сложно что то противопоставить. Хорошо, допустим руководства западноевропейских стран добровольно решило угробить свои предприятия. Но вопрос на засыпку, как это повлияет на жизнь "баранов" которые остался без работы и тепла в преддверии зимы.

На основе выдуманной истории делать такие глубокие выводы о функциях государства в социуме является чистой воды манипуляцией. Я предлагаю реальную историю, а выводы вы сможете сделать сами. Население западной европы считало, что у них все хорошо со свободой, законностью, развитием и благосостоянием до тех пор, пока госдеп США не запретил странам ЕС закупать дешёвые газ и нефть из России. И в Европе начинается хаос и в экономике и в социальной сфере. Что будет зимой трудно представить. Вроде бы овчарок нет, вроде бы,а бараны опять есть.

Спасибо за ответ, но до меня уже «дошло» спустя пять минут, поэтому и удалил комментарий.
Ну да, вывод в режиме активного окна существенно снижает накладные расходы.

Информация

В рейтинге
Не участвует
Откуда
Нижний Новгород, Нижегородская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Разработчик РЭА
Middle
От 200 000 ₽
Circuitry
Development of printed circuit board
Electronics Development
PCB design
Verilog HDL
FPGA
Cortex-M3
Pic Microcontroller
STM32