Модель для сборки Ёлка SMD

Набор для самостоятельной сборки маленькой новогодней елочки со светодиодной подсветкой.

Новогодняя ёлочка

Набор позволяет освоить навыки SMD монтажа. Ключевым элементом набора является микроконтроллер Тайваньской фирмы PADAUK — PFS154-S16. Микроконтроллер содержит несколько прошитых программ, которые можно выбирать нажатием кнопки. На елочке расположено 13 светодиодов — белые, красные, синие и зеленые. Располагать можно на свой вкус и желание. На рисунке ниже представлена схема для правильной ориентации компонентов на плате.

Схема расположения компонентов

С обратной стороны платы располагается отсек для батареи CR123 ( Батарея идет в комплекте).

В комплект входит :

Плата «Ёлка» с максимальными размерами 100х100мм

Отсек для батареи, Батарея CR123, включатель, кнопка, микроконтроллер PFS154-S16

Светодиоды SMD для поверхностного монтажа: белые, красные, синие, зеленные . По 5 штук каждого цвета. Комплект превышает необходимое количество для устранения ошибок монтажа и индивидуального выбора комбинаций.

Резисторы типоразмера 0805 — 15 шт.

Конденсатор типоразмера 0805 — 1 шт.

После монтажа, вставляем батарейку, включаем и ….

Видео работы готовой игрушки

Сборка и пайка Ёлки

Большая часть используемых деталей относится к так называемым компонентам поверхностного монтажа или SMD (Surface-Mount-Device). Главное их отличие от обычных (DIP) — это возможность монтажа радиодеталей без сквозных отверстий в плате. При сборке таких плат обычно начинают с микросхем и/или самых мелких корпусов. Сердце этой игрушки — микроконтроллер с 16 выводами. С него и стоит начать. Располагать его надо ориентируясь на ключ — это первый вывод корпуса. На печатной плате контактная площадка первого вывода для этой микросхемы помечена кружком.

Следующий элемент — это резисторы. У нас они все одного номинала. Располагать их можно в любом направлении. На плате их 13 штук. Есть еще один керамический конденсатор, так же как и резисторы не критичный к полярности.

Самый сложный элемент для монтажа — светодиоды. Они очень не любят перегрева. Кроме того, нужно строго следить за полярностью при установке. На чертеже указано расположение катода. На самом светодиоде катод обозначается маленьким срезанным уголком.

Когда вся «мелочь» установлена, можно переходить к крупным деталям.

Припаиваем включатель и кнопку. Здесь можно не соблюдать полярность.

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

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

Для особо пытливых ниже дается схема устройства

#include	"extern.h"

byte  button_indeks=0;    // s4et4ik nagatia knopki

void	FPPA0 (void)
{
	.ADJUST_IC	SYSCLK=IHRC/4		//	SYSCLK=IHRC/4
	void    Prog_1 (void);
	void    Prog_2 (void);
	void    Prog_3 (void);
	void    Prog_4 (void);
	void    Prog_5 (void);


	$ INTEN T16;
	$ T16M IHRC,/64, BIT8;//IHRC  SYSCLK
	INTRQ = 0; 
	ENGINT;



	$  PA.7    In, Pull;  #define Knop  PA.7

	$  PB.0    Out, Low;  	#define L11  PB.0
	$  PB.1    Out, Low;	#define L21  PB.1
	$  PA.0    Out, Low;	#define L24  PA.0
	$  PB.3    Out, Low;	#define L31  PB.3
	$  PB.2    Out, Low;	#define L32  PB.2
	$  PA.4    Out, Low;	#define L33  PA.4
	$  PA.3    Out, Low;	#define L34  PA.3
	$  PB.5    Out, Low;	#define L41  PB.5
	$  PB.4    Out, Low;	#define L42  PB.4
	$  PA.5    Out, Low;	#define L43  PA.5
	$  PA.6    Out, Low;	#define L44  PA.6
	$  PB.6    Out, Low;	#define L51  PB.6
	$  PB.7    Out, Low;	#define L54  PB.7



	while (1)
	{
		if (button_indeks == 0 )   { Prog_1();} 
		if (button_indeks == 1 )   { Prog_2();}
		if (button_indeks == 2 )   { Prog_3();}
		if (button_indeks == 3 )   { Prog_4();}
		if (button_indeks == 4 )   { Prog_5();}
	}
}	
	

void Prog_1 (void)
{
	if (button_indeks == 0 ){$  L11  toggle;.DELAY 500000; $  L11  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L21  toggle;.DELAY 500000; $  L21  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L24  toggle;.DELAY 500000; $  L24  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L31  toggle;.DELAY 500000; $  L31  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L32  toggle;.DELAY 500000; $  L32  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L33  toggle;.DELAY 500000; $  L33  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L34  toggle;.DELAY 500000; $  L34  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L41  toggle;.DELAY 500000; $  L41  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L42  toggle;.DELAY 500000; $  L42  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L43  toggle;.DELAY 500000; $  L43  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L44  toggle;.DELAY 500000; $  L44  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L51  toggle;.DELAY 500000; $  L51  toggle;.DELAY 500000;}
	if (button_indeks == 0 ){$  L54  toggle;.DELAY 500000; $  L54  toggle;.DELAY 500000;}
}
	
void	Prog_2 (void)
{
	if ( button_indeks == 1) {$  L11  toggle;$ L21  toggle;$ L31 toggle;$ L41  toggle;$ L51  toggle; .DELAY 700000;}
	if ( button_indeks == 1) {$  L11  toggle;$ L21  toggle;$ L31 toggle;$ L41  toggle;$ L51  toggle; .DELAY 700000;}

	if ( button_indeks == 1) {$  L11  toggle;$ L21  toggle;$ L32  toggle;$ L42  toggle;$ L51  toggle;.DELAY 700000;}
	if ( button_indeks == 1) {$  L11  toggle;$ L21  toggle;$ L32  toggle;$ L42  toggle;$ L51  toggle;.DELAY 700000;}

	if ( button_indeks == 1) {$  L11  toggle;$ L24  toggle;$ L33  toggle;$ L43  toggle;$ L54  toggle;.DELAY 700000;}
	if ( button_indeks == 1) {$  L11  toggle;$ L24  toggle;$ L33  toggle;$ L43  toggle;$ L54  toggle;.DELAY 700000;}
	
	if ( button_indeks == 1) {$  L11  toggle;$ L24  toggle;$ L34  toggle;$ L44  toggle;$ L54  toggle;.DELAY 700000;}
	if ( button_indeks == 1) {$  L11  toggle;$ L24  toggle;$ L34  toggle;$ L44  toggle;$ L54  toggle;.DELAY 700000;}	

}
void	Prog_3 (void)
{
if (button_indeks == 2 ){$  L11  toggle;.DELAY 700000;}
if (button_indeks == 2 ){$  L11  toggle;.DELAY 700000;}
if (button_indeks == 2 ){$  L21  toggle;$ L24  toggle; .DELAY 700000;}
if (button_indeks == 2 ){$  L21  toggle;$ L24  toggle; .DELAY 700000;}
	
if (button_indeks == 2 ){$  L31  toggle;$ L32  toggle;$  L33  toggle;$  L34  toggle;.DELAY 700000;}
if (button_indeks == 2 ){$  L31  toggle;$ L32  toggle;$  L33  toggle;$  L34  toggle;.DELAY 700000;}

if (button_indeks == 2 ){$  L41  toggle;$ L42  toggle;$  L43  toggle;$  L44  toggle;.DELAY 700000;}
if (button_indeks == 2 ){$  L41  toggle;$ L42  toggle;$  L43  toggle;$  L44  toggle;.DELAY 700000;}
	
if (button_indeks == 2 ){$  L51  toggle;$  L54  toggle;.DELAY 700000;}
if (button_indeks == 2 ){$  L51  toggle;$  L54  toggle;.DELAY 700000;}	
}


void	Prog_4 (void)
{
if (button_indeks == 3 ){$  L11  toggle;$  L21  toggle;$  L31  toggle;$  L41  toggle;$  L51  toggle;.DELAY 500000;}
if (button_indeks == 3 ){$  L11  toggle;$  L21  toggle;$  L31  toggle;$  L41  toggle;$  L51  toggle;.DELAY 500000;}

if (button_indeks == 3 ){$  L32  toggle;$  L33  toggle;$  L42  toggle;$  L43  toggle;.DELAY 500000;}
if (button_indeks == 3 ){$  L32  toggle;$  L33  toggle;$  L42  toggle;$  L43  toggle;.DELAY 500000;}

}

void	Prog_5 (void)
{
if (button_indeks == 4 ){$  L11 High; 	$  L24 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L11 Low; 	$  L34 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L24 Low;    $  L44 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L34 Low;	$  L54 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L44 Low;	$  L51 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L54 Low;	$  L41 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L51 Low;	$  L31 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L41 Low;	$  L21 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L31 Low;	$  L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L21 Low;	$  L42 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L33 Low;	$  L32 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L42 Low;	$  L43 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L32 Low;	$  L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L21 Low;	$  L43 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L31 Low;	$  L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L21 Low;	$  L42 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L33 Low;	$  L32 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L42 Low;	$  L43 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L32 Low;	$  L33 High;.DELAY 300000;}
if (button_indeks == 4 ){$  L21 Low;	$  L43 High;.DELAY 300000;}
}

void	Interrupt (void)
	
{
	pushaf;

	if (Intrq.T16)
	{	//	T16 Trig
			//.DELAY 1000;
			if (Knop == 0 ) {.DELAY 100000;
                                                button_indeks++;
                                                if (button_indeks>4) button_indeks=0   ;
													$  PB.0    Out, Low;
													$  PB.1    Out, Low;
													$  PA.0    Out, Low;	
													$  PB.3    Out, Low;	
													$  PB.2    Out, Low;
													$  PA.4    Out, Low;	
													$  PA.3    Out, Low;	
													$  PB.5    Out, Low;	
													$  PB.4    Out, Low;
													$  PA.5    Out, Low;	
													$  PA.6    Out, Low;
													$  PB.6    Out, Low;
													$  PB.7    Out, Low;
      						 }    
	
	
			Intrq.T16	=0;
		//...
	}

	popaf;
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *