Кому интересно что получилось — прошу под кат.
Для начала за 250 рублей купил на али вот такой паяльник
Паяльник так себе но для дома пойдет, пришлось правда жало сразу заменить, благо сейчас их на выбор по 100р штука.
Блок питания купил готовый на 60Вт 24 вольта.
Схемы опять не будет, но на печатке подписал все номиналы.
Плата в формате lay
Цель была все собрать на одной плате и как можно компактнее. Стабилизатор питания и полевик установил лежа. Устройство питается от 5 вольт и как оказалось 7805 при этом греется до 70-80 градусов, поставил небольшой радиатор, полевик не греется совсем.
Плату делал ЛУТом, получилось почти идеально:
До протравки:
И после сборки:
Готовый регулятор в сборе выглядит на мой взгляд даже симпатично
Если разъем для программатора не устанавливать, то плата без единой перемычки.
Как видим и деталей минимум, даже резисторов по минимуму, только на общие выводы индикатора.
Индикатор красный с большими цифрами, управление энкодером (валкодером).
Первое включение:
От классического ПИД отказался, сделал некое его подобие, цель — минимальное время нагрева.
Если нажать вал энкодера и подержать 3 секунды можно настроить режим отображения, шаг настройки и корректировку температуры (термопары все разные).
Снял видео на телефон, качество не очень, но принцип работы понятен
Корпус, корпус… и тут родилась отличная мысль
А когда пора убирать в шкаф:
Исходники кода для желающих повторить.
Скачать проект для атмел студии
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
unsigned char display_on, registr, butt1,butt2,butt3, butt3s, zamer,rezhim,mode,param,params, edit, redit, blink, wait2, wait3, wait5, wait6, wait7, rdisp, encoder_r, encoder_l, right, left, prewmode;
unsigned char ind[4],tempvar, tempmem;
float measureint, voltage_ADC,tmp;
unsigned int stop_h, stop_m, pwm_d, measure, pmeasure;
int pwm,tempch;
//unsigned int voltage_ADC;
unsigned char param1[10];
unsigned char param1eeprom[10] EEMEM;
uint16_t tempset,measure; uint16_t tem EEMEM;
unsigned char pwm_m[455] EEMEM;
ISR (TIMER0_OVF_vect)
{
if(display_on==1)
{
PORTB |= (1 << PB6); PORTD |= (1 << PD7); PORTD |= (1 << PD3); PORTC |= (1 << PC2);
PORTB &=~ (1 << PB0); //1
PORTC &=~ (1 << PC1); //2
PORTD &=~ (1 << PD4); //3
PORTD &=~ (1 << PD2); //4
PORTD &=~ (1 << PD5); //5
PORTB &=~ (1 << PB7); //6
PORTD &=~ (1 << PD6); //7
}
if(display_on==37)
{
if(ind[registr]==0 || ind[registr]==6 || ind[registr]==9) {display_on=display_on+20;} //6 сегментов
if(ind[registr]==2 || ind[registr]==3 || ind[registr]==5 || ind[registr]=='P') {display_on=display_on+25;} //5 сегментов
if(ind[registr]==4 || ind[registr]=='g') {display_on=display_on+35;} //4 сегмента
if(ind[registr]==7) {display_on=display_on+40;} // 3 сегмента
if(ind[registr]==1) {display_on=display_on+45;} //2 сегмента
if(ind[registr]=='-') {display_on=display_on+50;} //2 сегмента
if(registr==0) { PORTB &=~ (1 << PB6);}
if(registr==1) { PORTD &=~ (1 << PD3);}
if(registr==2) { PORTC &=~ (1 << PC2);}
if(registr==3) { PORTD &=~ (1 << PD7);}
if (ind[registr]==0) {PORTB |= (1 << PB0);PORTC |= (1 << PC1);PORTD |= (1 << PD4);PORTD |= (1 << PD2);PORTD |= (1 << PD5);PORTB |= (1 << PB7);}//0
if (ind[registr]==1) {PORTD |= (1 << PD2);PORTD |= (1 << PD5);}//1
if (ind[registr]==2) {PORTB |= (1 << PB0);PORTD |= (1 << PD4);PORTD |= (1 << PD2);PORTB |= (1 << PB7); PORTD |= (1 << PD6);}//2
if (ind[registr]==3) {PORTD |= (1 << PD4);PORTD |= (1 << PD2);PORTD |= (1 << PD5);PORTB |= (1 << PB7); PORTD |= (1 << PD6);}//3
if (ind[registr]==4) {PORTC |= (1 << PC1);PORTD |= (1 << PD2);PORTD |= (1 << PD5);PORTD |= (1 << PD6);}//4
if (ind[registr]==5) {PORTC |= (1 << PC1);PORTD |= (1 << PD4);PORTD |= (1 << PD5);PORTB |= (1 << PB7); PORTD |= (1 << PD6);}//5
if (ind[registr]==6) {PORTB |= (1 << PB0);PORTC |= (1 << PC1);PORTD |= (1 << PD4);PORTD |= (1 << PD5);PORTB |= (1 << PB7); PORTD |= (1 << PD6);}//6
if (ind[registr]==7) {PORTD |= (1 << PD4);PORTD |= (1 << PD2);PORTD |= (1 << PD5);}//7
if (ind[registr]==8) {PORTB |= (1 << PB0);PORTC |= (1 << PC1);PORTD |= (1 << PD4);PORTD |= (1 << PD2);PORTD |= (1 << PD5);PORTB |= (1 << PB7); PORTD |= (1 << PD6);}//8
if (ind[registr]==9) {PORTC |= (1 << PC1);PORTD |= (1 << PD4);PORTD |= (1 << PD2);PORTD |= (1 << PD5);PORTB |= (1 << PB7); PORTD |= (1 << PD6);}//9
if (ind[registr]=='P') {PORTB |= (1 << PB0);PORTC |= (1 << PC1);PORTD |= (1 << PD4);PORTD |= (1 << PD2);PORTD |= (1 << PD6);}//P
if (ind[registr]=='g') {PORTC |= (1 << PC1);PORTD |= (1 << PD4);PORTD |= (1 << PD2); PORTD |= (1 << PD6);}//g
if (ind[registr]=='-') {PORTD |= (1 << PD6);}//-
if (ind[registr]=='F') {PORTB |= (1 << PB0);PORTC |= (1 << PC1);PORTD |= (1 << PD4); PORTD |= (1 << PD6);}//F
if (ind[registr]=='n') {PORTB |= (1 << PB0);PORTD |= (1 << PD5); PORTD |= (1 << PD6);}//n
registr++;
if (registr>3){registr=0;}
}
display_on++;
if (display_on>100){display_on=1;blink++; if(blink>250){blink=0;} ADCSR |= (1<<ADSC);}
if(blink==250){wait2++; if(wait2>250){wait2=0;}}
if(wait2==250){wait3++; if(wait3>250){wait3=251;}; butt3s++; if(butt3s>250){butt3s=251;}; wait5++;wait6++;}
if(wait3==3 && mode==1){mode=0;}
if(wait5==20){wait5=0;}
if(wait5==51){wait5=0;}
if(wait5==50){wait6++; if(wait6==250){wait6=0;};if(wait6==param1[3]){rezhim=0;}}
}
void init_pwm (void)
{
TCCR1A|=(1<<COM1A0);
TCCR1A|=(1<<COM1A1);
TCCR1B|=(1<<CS10);
//TCCR1A|=(1<<WGM10);
TCCR1A|=(1<<WGM11);
//TCCR1B|=(1<<WGM12);
TCCR1B|=(1<<WGM13);
//Установка начальных значений счетчиков
OCR1A=27000;
//OCR1B=10000; //Выключен 0 от 200/170 до 250/215
ICR1=27000;
}
ISR (ADC_vect)//прерывание по завершению преобразования АЦП
{
voltage_ADC = voltage_ADC+ADCW;//считываем значение АЦ преобразования
if (zamer==100)
{
measureint=voltage_ADC/zamer;
measure=measureint*param1[2]/100;
if(rezhim==1)
{
if(mode==0)
{
if(param1[0]>0) {ind[0]=measure/100;ind[1]=measure%100/10;ind[2]=measure%10;ind[3]='g';}
if(param1[0]==0)
{
if(tempset<100){ind[0]=-1;} else {ind[0]=tempset/100;}
if(tempset<10) {ind[1]=-1;} else {ind[1]=tempset%100/10;}
ind[2]=tempset%10;ind[3]='g';
}
}
if(mode==1)
{
if(blink<170)
{if(tempset<100){ind[0]=-1;} else {ind[0]=tempset/100;}
if(tempset<10) {ind[1]=-1;} else {ind[1]=tempset%100/10;}
ind[2]=tempset%10;ind[3]='g';
}
if(blink>170){ind[0]=-1;ind[1]=-1;ind[2]=-1;ind[3]=-1;}
}
}
if(tempmem==0)
{
if(wait5==10)//5=10 секунд
{
if(tempch==0 && tempset==measure && eeprom_read_byte(&pwm_m[tempset])!=pwm)
{eeprom_write_byte(&pwm_m[tempset],pwm); tempmem=1; ind[0]='g';ind[1]='g';ind[2]='g';}
if(tempset!=measure)
{
pwm_d=tempset-measure;
pwm=pwm+pwm_d;
}
wait5=0;tempch=0;
}
if(pmeasure<measure && tempset<measure) //температура больше установленно и наблюдается рост
{
pwm_d=measure-tempset; tempch++;
pwm=pwm-pwm_d;
pmeasure=measure;
}
if(pmeasure>measure && tempset>measure) //температура меньше установленно и наблюдается снижение
{
pwm_d=tempset-measure; tempch++;
pwm=pwm+pwm_d*measure/100;
pmeasure=measure;
}
}
if(wait5==10 && tempmem==1)//5=10 секунд
{
if(tempset<measure){pwm=pwm-1;}
if(tempset>measure){pwm=pwm+1;}
if(tempset==measure && eeprom_read_byte(&pwm_m[tempset])>pwm && eeprom_read_byte(&pwm_m[tempset])-pwm>5){eeprom_write_byte(&pwm_m[tempset],pwm);}
if(tempset==measure && eeprom_read_byte(&pwm_m[tempset])>pwm && eeprom_read_byte(&pwm_m[tempset])-pwm>5){eeprom_write_byte(&pwm_m[tempset],pwm);}
wait5=0;
if(tempset==measure && tempmem==1 && (int)(voltage_ADC*param1[2]/100)%zamer<50){tmp=tmp-10;}
if(tempset==measure && tempmem==1 && (int)(voltage_ADC*param1[2]/100)%zamer>50){tmp=tmp+10;}
}
if(pwm>250){pwm=250;} if(pwm<0){pwm=0;}
if(tempset-10>measure && tempmem==1){OCR1A=0;wait5=0;wait6=0;} else {OCR1A=27000+tmp-pwm*108;}
voltage_ADC=0;zamer=0;
}
zamer++;
if (rezhim!=1) {OCR1A=27000;}
if (measure>480) {OCR1A=27000;rezhim=0;OCR1A=27000;}
//ADCSR |= (1<<ADSC);//запускаем очередное преобразование
}
//Основная программа
int main(void)
{
TIMSK |= (1 << TOIE0); // Разрешаем прерывание по переполнению Т2
TCCR0|=(0<<CS02)|(1<<CS00);
init_pwm(); //Инициализация ШИМ каналов
//ads
ADMUX|= (1<<REFS0); //ВНУТРЕННЕЕ ОПОРНОЕ
ADCSRA |= (1<<ADEN) | (1<<ADSC) | (1<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
sei(); // Глобально разрешаем прерывания
PORTB=0b00000000; PORTC=0b00101000; PORTD=0b00000001;//Включаем подтягивающий резистор
DDRB=0b11111111; DDRC=0b11010110; DDRD=0b11111110;
butt1=0;butt2=0;butt3=0;rezhim=0;mode=0;params=0;edit=0;redit=0;blink=0;tempmem=0;tempch=0;
encoder_l=40; encoder_r=0; right=0; left=0;butt3s=0;wait3=0;wait2=0;mode=0;prewmode=0;pwm_d=0;
tempset = eeprom_read_word(&tem); if(tempset>500){tempset=100;}
param1[0] = eeprom_read_byte(¶m1eeprom[0]); if(param1[0]>1){param1[1]=1;}
param1[1] = eeprom_read_byte(¶m1eeprom[1]); if(param1[1]>10){param1[1]=5;}
param1[2] = eeprom_read_byte(¶m1eeprom[2]); if(param1[2]>250){param1[2]=75;}
param1[3] = eeprom_read_byte(¶m1eeprom[3]); if(param1[3]>250){param1[3]=10;}
pwm=eeprom_read_byte(&pwm_m[tempset]); if (pwm<255){tempmem=1;}
while (1) //Вечный цикл
{
if(tempset<100){tempset=100;} if(tempset>450){tempset=450;}
//кнопка энкодера
if ((PINC&(1<<PC5))==0x00){butt1++; if(butt1>200){butt1=201;}} else {butt1=0;}
if(butt1==200 && rezhim==0){butt3s=0; rezhim=1; butt1=201;}
if(butt1==200 && rezhim==1){butt3s=0; rezhim=0; butt1=201;}
if(butt1==200) {butt3s=0;}
if (butt1==201 && butt3s==2 && rezhim!=2){rezhim=2;butt3s=10;}
if (butt1==201 && butt3s==2 && rezhim==2){rezhim=0;butt3s=10;}
//Поворот энкодера
if ((PIND&(1<<PD0))==0x00){butt2++; if(butt2>encoder_l){butt2=encoder_l+1;}} else {butt2=0;}
if ((PINC&(1<<PC3))==0x00){butt3++; if(butt3>encoder_l){butt3=encoder_l+1;}} else {butt3=0;}
if(right==1 || left==1){right=0; left=0;}
if(encoder_r==0)
{
if(butt2==encoder_l+1 && butt3==encoder_l) {encoder_r=encoder_l*5;mode=1;wait3=0;right=1;}
if(butt3==encoder_l+1 && butt2==encoder_l) {encoder_r=encoder_l*5;mode=1;wait3=0;left=1;}
}
if(encoder_r==0){encoder_r=1;} encoder_r--;
if(mode!=prewmode){prewmode=mode; eeprom_write_word(&tem, tempset);}
if(rezhim==0)
{
if(blink<170){ind[0]=-1; ind[1]=-1; ind[2]=-1; ind[3]=-1;}
if(blink>170){ind[0]='-'; ind[1]='-'; ind[2]='-'; ind[3]='-';}
}
if(rezhim==1)
{
if(right==1) {tempset=tempset+param1[1];pwm=eeprom_read_byte(&pwm_m[tempset]); if (pwm<255){tempmem=1;tmp=0;}else{tempmem=0;pwm=1;tmp=0;} }
if(left==1){tempset=tempset-param1[1];pwm=eeprom_read_byte(&pwm_m[tempset]); if (pwm<255){tempmem=1;tmp=0;}else{tempmem=0;pwm=1;tmp=0;} }
}
if(rezhim==2)
{
if(butt1==200){if(edit==0){edit=1;tempvar=-1;} else {edit=0; eeprom_write_byte(¶m1eeprom[params], param1[params]);} }
if(edit==0)
{
ind[0]='P'; ind[1]=params; ind[2]=-1; ind[3]=-1;
if(right==1){params++;}; if(left==1){params--;}
if(params<0){params=0;}; if(params>3){params=3;}
}
if(edit==1)
{
if(blink==1 || tempvar!=param1[params])
{
if(param1[params]<100){ind[0]=-1;} else {ind[0]=param1[params]/100;}
if(param1[params]<10) {ind[1]=-1;} else {ind[1]=param1[params]%100/10;}
ind[2]=param1[params]%10;
}
if(blink>170){ind[0]=-1;ind[1]=-1;ind[2]=-1;ind[3]=-1;}
tempvar=param1[params];
if(right==1){param1[params]++;};if(left==1){param1[params]--;}
if(param1[params]<0){param1[params]=0;} if(param1[params]>250){param1[params]=1;}
if(params==0) {if(param1[params]<0){param1[params]=0;} if(param1[params]>1){param1[params]=1;}}
if(params==1) {if(param1[params]<1){param1[params]=1;} if(param1[params]>50){param1[params]=50;}}
if(params==2) {if(param1[params]<0){param1[params]=0;} if(param1[params]>250){param1[params]=250;}}
if(params==3) {if(param1[params]<0){param1[params]=0;} if(param1[params]>250){param1[params]=250;}}
}
}
} //loop
} //main
<spoiler />
Комментарии (61)
devprodest
03.04.2016 14:26+1из предложений:
- 7805 греется из-за большой разницы напряжений вход выход, стоило бы посмотреть на другие стабилизаторы.
- Индикатор хорошо бы через резисторы включать.
- Я бы разъем питания перевернул на 180 градусов(отразил зеркально) проще была бы разводка
В итоге замечательная получилась вещь. Долгой работы и хороших электронных поделок с новым инструментом.alexhott
03.04.2016 18:34+11 Это понятно но альтернативы проще и дешевле нет, только ШИМ. Но так как не критично оставил этую
2 Обязательно там их целых 4, правда вместо 7.
3 Пытался, но вообще не получилось развести
istui
03.04.2016 14:34Интересная реализация и хорошая идея с корпусом.
Лично мне тоже был нужен компактный паяльник, но особых требований к точной температуре нет.
Я использую ZD-927 - вдруг кому пригодитсяЦена пару лет назад была около 500р.
JerleShannara
04.04.2016 19:09И что кроме мелких SMD, которые не подпаяны к земляным/силовым полигонам им можно паять?
istui
06.04.2016 13:50Любую мелочевку, небольшие провода, PTH элементы вполне хорошо паяются. Для других задач есть другие паяльники.
alexhott
06.04.2016 16:20+1Че угодно можно паять, температуру побольше и нормально пропаивает ногу трансформатора на большом полигоне.
Поменьше — и аккуратно мелкие элементы поаяются
ClearAirTurbulence
03.04.2016 15:03+1Это замечательно, и сделано на высоком уровне. Но мне кажется, что даже для нечастого использования (скажем, >=10 раз в год) уже лучше взять хороший инструмент. Goot PX-501 за $85 (а) не нужно изготавливать и (б) наверняка нагревается быстрее. Хотя ели хочется крафтить, то почему бы и нет.
asdfghjk12
03.04.2016 18:57+1Для нечастого использования лучше взять китайскую станцию подешевле, а если есть $85, то лучше ещё столько же доложить и взять самый дешёвый индукционный типа Квик 202D — он за 5...7 секунд разогревается… И дури в нём достаточно даже для материнок и АТХ БП. С жалами правда нюанс, но в Москве они есть и доступна доставка
holomen
03.04.2016 15:12+2Что-то уж сильно наворочено отображение.
#define segPORT PORTA //порт сегментов
#define segDDR DDRA
#define segA 6
… остальные аналогично
#define segMASK ((1<<segA) | (1<<segB) | (1<<segC) | (1<<segD) | (1<<segE) | (1<<segF) | (1<<segG))
#define digPORT PORTB //порт цифр
#define digDDR DDRB
#define dig0 0
… остальные аналогично
#define digMASK ((1<<dig0) | (1<<dig1) | (1<<dig2) | (1<<dig3) | (1<<dig4) | (1<<dig5))
#define sym0 ((0<<segA)|(0<<segB)|(0<<segC)|(0<<segD)|(0<<segE)|(0<<segF)|(1<<segG)) //0x00
остальные символы аналогично
static const uchar symb[] = {
sym0, sym1, sym2, sym3, sym4, sym5, sym6, sym7, sym8, sym9,
symA, symB, symC, symD, symE, symF,… и остальные символы
}; //первые 16 отводим под цифры и соотв. буквы чтобы прямо записывать
static uchar led_data[7]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
static uchar led_dig[] = {
(1<<dig0), (1<<dig1), (1<<dig2), (1<<dig3), (1<<dig4), (1<<dig5)};
ISR(TIMER0_COMP_vect)
{
static uchar segs_counter = 0;
segs_counter++;
segPORT |= segMASK;
if (segs_counter == 7) segs_counter=0x00;
if (segs_counter < 6)
{
OFF(SYM);
digPORT = led_dig[segs_counter];
}
else if (segs_counter == 6)
{
ON(SYM);
digPORT &= ~(digMASK);
}
segPORT=led_data[segs_counter];
if (buzz==1) TOGGLE(BUZZ);
}
Andy_Big
03.04.2016 15:47Такие жала — уже вчерашний день, на мой взгляд. Если делать, то на жалах T-12, после них на паяльники с 900-ми жалами возвращаться уже нет никакого желания :)
kellakilla
03.04.2016 17:34при компиляции у меня компилятор ругнулся на эту строчку:
if(butt1==200){if(edit==0){edit=1;tempvar=-1;} else {edit=0; eeprom_write_byte(¶m1eeprom[params], param1[params]);} }
Не могли бы Вы код вставить не спойлером, а файлом среды?alexhott
03.04.2016 18:32Пытался выложить в специальном теге для кода, но он не сворачивается, а такая партянка в сообщении мне не нравится.
Выложил ссылку на проект для атмел студии.
schetilin
03.04.2016 18:39if(butt1==200){if(edit==0){edit=1;tempvar=-1;} else {edit=0; eeprom_write_byte(¶m1eeprom[params], param1[params]);} }
жирным — ошибка
что-то лишнее скопировалось.kellakilla
03.04.2016 18:53Я тоже несколько удивился от увиденного. Так скопировалось из тега спойлер, и это не одна такая ошибка, при использовании данного тега внезапно в рендомных местах дописывается подобные хинты.
serafims
03.04.2016 22:22+1Эх, ну как без схемы-то? Или хотя бы ссылки, которыми вдохновлялись.
Наверное, кто-нибудь подсказал бы сразу, что в ней можно улучшить.
А по коду — незначащие нули хорошо бы гасить…
А так очень неплохая реализация!Inkvizitor66
04.04.2016 18:31Присоединяюсь, тоже хотел бы посмотреть на схему, посмотреть, возможно свою такую сделать… заодно потренироваться разводить
Carry
04.04.2016 00:59Интересная реализация. Спасибо!
Хороший пинок для меня. Валяется несколько паяльников с дохлыми высокоомными нагревателями, есть несколько низкоомных термоэлементов.
Давно хотел сделать мобильный вариант паяльника с родным конструктивом, но теперь понял что можно сделать гораздо лучше.
Только я буду с двумя питаниями делать: 220 и 12.
KeyDach1717
04.04.2016 08:58+1Автор молодец! Подобное, конечно, продают и китайцы (легко ищется по словам «Digital Soldering Iron Station Temperature Controller for T12 Heating Core», например), но созданное самостоятельно, да еще и качественно, достойно уважения. Спасибо за идею встраивания паяльной станции в ящик с инструментами.
Alexeyslav
04.04.2016 10:23+1Общая шина в виде дорожки у вас огибает ВСЮ плату целиком, причем дорожка-то силовая. Отличный контур получается для излучения помех. Удивительно, что никаких проблем при этом у схемы не возникает, это как раз тот случай когда схема работает без глюков вопреки всему. Всё-таки сделать одну перемычку и провести общий провод к паяльнику СЛЕВА(на изображении платы) по кратчайшему пути было бы предпочтительней.
Кстати, по этой причине возле данного паяльника в радиусе 50см нельзя держать дискеты и магнитные кассеты иначе МОГУТ размагнитится, а так же расположить подальше от ЭЛТ-монитора.alexhott
04.04.2016 13:46+1Это не силовая дорога, питание нагревателя это номера 2 и 5 на фишке, 1 и 3 это земля и минус термопары, 4 — плюс термопары, через нее питается сам контроллер.
Но и при том. что дорога не силовая глюки были, усилитель термопары видите как от 1 ноги запитан, а сначала был запитан от конденсатора, при этом сильно смещая ноль.Alexeyslav
04.04.2016 17:07Ежели так то ладно. Помехи по термопаре можно и программно убрать, если они вообще будут этим контуром ловится, хотя чего там… конечно будут, речь ведь идёт о милливольтах. Интересно а что будет если мобильный телефон поднести? Операционник то будет нормально работать, поскольку привязан ближе к термопаре, а вот относительно общего провода выход операционника будет прыгать синхронно с наведённым в контуре дорожки напряжением, а там запросто десятки-сотни милливольт от мобилки…
alexhott
04.04.2016 18:28На мобилке частоты большие, а там кондерик на фходе в мегу, чегнибудь сгладит.
Да и программно делается сотня замеров потом усредняется. Я и шим не отключаю на время замера, а от него помехи на термопару побольше.Alexeyslav
05.04.2016 11:26Не стоит пренебрегать СВЧ-излучением. У большинства конденсаторов ESR на этих частотах совсем фиговый и там они уже не работают, зато полупроводники начинают работать как детекторные приёмники… появляется НЧ составляющая для которой конденсаторы уже работают и т.д. и т.п.
Мой ИБП начинает с ума сходить всего от 0.5Вт на 433Мгц на расстоянии в 20см… благо, глючит только схема индикации, а схема управления и инвертора защищена лучше, может быть за счёт удачной разводки а может и за счет расстояния… нетрудно представить что будет если от такой наводки начнут произвольно открываться транзисторы полумоста инвертора…alexhott
05.04.2016 12:02+1Насчет возникновения НЧ составляющей один раз и навсегда запомнил когда сидя за пультом на дискотеке телефон на пульт положил.
Delsian
04.04.2016 13:20Посчитать затраченное время и соизмерить с этим. Прослезиться...
Rumlin
04.04.2016 13:48Как раз утром посмотрел обзоры на mysku по таким конструкторам (поиск по T12). Народ в комментариях хотел бы лучше. У этой конструкции есть преимущество — можно допилить напильником.
alexhott
04.04.2016 13:50У меня раза в два дешевле по деталям вышло чем у китайцев покупать. И циферки у них очень мелкие.
Ну и самое главное удовольствие от процесса.Rumlin
04.04.2016 15:48Для полноты картины действительно не хватает списка с затратами, наподобие как в этом
фрагменте статьиhttp://mysku.ru/blog/china-stores/39310.html
Затраты:
— ручка HAKKO FX-9501 + жало – 12.99$
— контроллер + LCD индикатор + энкодер – 9.7$
— блок питания – 6,55$ (с купоном по акции 11.11)
— кабель – 12.86$ за 5 метров, использую 1,5м – 3.86$
— разъем GX16-5pin (комплект мама + папа) – 1.50$
— датчик положения SW-200D – 1.20$
— корпус – 50грн., на момент покупки приблизительно 2$
Суммируем – 37.80$alexhott
04.04.2016 18:42+2Примерно так
Резисторы — 10 шт — 10 рублей
7805 1шт 15 рублей
80NF70 1 шт 25 рублей (покупал десяток на али)
Два конденсатора — 15 рублей
Индикатор — 70 рублей
Atmega816pu — 120 рублей
разъем — 50 рублей
Паяльник — 250 рублей2
блок питания — 800 рублей
Энкодер — 20 рублей
Кейс — 250 рублей
Итого 1625 рублей
AngusMetall
04.04.2016 16:00+1По моему главное преимущество своих решений лёгкость ремонта и кастомизации. Ну да, это после удовольствия от «рукоделия» конечно.
AVKinc
04.04.2016 16:03+1Чувак, ты реально крут!
Вот пример как нужно делать девайсы.
Красота в лаконичности и простоте. Идеально!
delvin-fil
04.04.2016 18:31Спасибо за статью.
Но схема не помешала бы. Возможно, на мой взгляд, некоторое упрощение, как следствие удешевление и «на поток».alexhott
04.04.2016 18:43Намекните где еще можно упростить, никак не смог от единственной перемычки избавиться.
delvin-fil
04.04.2016 19:07Реверсингом еще не занялся. Схему бы… Восьмая Mega из-за количества ног выбрана?
alexhott
04.04.2016 20:02Выбрана была атимега8 потомучто была в наличии.
delvin-fil
04.04.2016 20:59И все-же, как насчет схемы? Можно в личку.
alexhott
05.04.2016 12:04Да я бы с удовольствием ее и в статью вставил, если б она была
Но как-то такие простые устройства уже приноровился сразу печатку рисовать без схемы.delvin-fil
05.04.2016 12:33Ладно, на выходных "реверсну". Вот только как выложить сюда, понятия не имею.
Rumlin
Корпус шикарен. Может стоило БП от ноутбука применять? Освободилось бы место в кейсе.
alexhott
от ноутбука максимум 19 вольт, не удалось бы максимальный разгон сделать.
tesla254
Можно настроить на 24в заменив пару резисторов.