Guns.ru Talks
PCP online
ПолныйОФФ. Сделал хрон. ( 1 )

тема закрыта

вход | зарегистрироваться | поиск | картинки | календарь | поиск оружия, магазинов | фотоконкурсы | Аукцион

ПолныйОФФ. Сделал хрон.

Borshevich
P.M.
14-11-2009 18:38 Borshevich
Ну, собственно, уже сделал, кому интересно - мотаем ниже и смотрим.
Посты "морально устаревшие" просто пропускаем.

Drix
P.M.
14-11-2009 18:56 Drix
А может механический сделать?
Там все гораздо проще.. .
Borshevich
P.M.
14-11-2009 19:26 Borshevich
Мне нужен точный и простой/тупой, база 130мм делается. Верхний предел 999 при точности 0.5, нижний 0.100, там уже точность ограничена только точностью замера по отверстиям. Ну не верю я в точность 0.5 на 300 при базе 40мм. Корпус канала дюралевый сделал с просветом ф10.5, шопп неубиваемый.

firefox
P.M.
15-11-2009 17:13 firefox
Что то мне кажется, что точность таких устройств определяется не длиной базы, а точностью срабатывания датчиков. Количество импульсов заполнения можно сделать с вполне высоким разрешением.
hoakinn
P.M.
15-11-2009 19:18 hoakinn
Чем длинее база тем легче нивелировать остальные неточности
XzctR
P.M.
15-11-2009 21:12 XzctR
Иван, живем ведь в одном городе.. . позвони мне и я дам тебе хронограф нормальный-я им все равно толком не пользуюсь, мне не жалко. не подарю

julbu
P.M.
15-11-2009 21:34 julbu
"точный и простой" не получится. Для начала нужно понять, что в основном вносит погрешность в измерении..... . и научится это учитывать.
Borshevich
P.M.
15-11-2009 22:57 Borshevich
позвони мне и я дам тебе хронограф нормальный

Дык я ить и из интересу в том числе.

---
Утро
Ура! Закончил аналоговую и оптическую части, остались семачки

ober
P.M.
18-11-2009 21:07 ober
http://avr.nikolaew.org/ тут есть чо?
Borshevich
P.M.
18-11-2009 21:27 Borshevich
Спасибо, но уже сам разобрался, пишу по старинке на ассемблере, кода всего-то 700 байт бышло. Когда всё напидорю до блеска - выложу и исходники и принципиальную схему, плюс схему не-внутрисхемной прошивалки с кварцевым генератором. Фоток будет совсем немного - потому как эксперименталка суть жуткое дело с навесным монтажом - стыдномля .
Платформа ATTiny2313V, 9.600 MHz.

Borshevich
P.M.
18-11-2009 23:12 Borshevich
Усё, 608 байт, пошел шить-тестить.
ober
P.M.
18-11-2009 23:17 ober
nop'ов натыкай до 2Гигов
Borshevich
P.M.
18-11-2009 23:24 Borshevich
Там всего 2048 под код и 128 озу
hoakinn
P.M.
18-11-2009 23:42 hoakinn
tiny2313 правильная платформа для хрона - наш выбор
У меня на си получилось 568 слов простой и 972 слова с памятью просмотром и rs232
Borshevich
P.M.
18-11-2009 23:45 Borshevich
Окаг, то бишь на ассемблеру почти вдвое компактней выходит, можно будет еще фарша апосля наворотить.

Код упрощенной модели окончательно для варианта с внешним питанием (все глюки исправлены, скорость измеряется правильно).
С внешним, потому что больше 10 часов этот код не потянет от батареек.

code:


/
//HRONIK-1

#pragma partinc 0
.device ATtiny2313
#pragma AVRPART ADMIN PART_NAME ATtiny2313
#pragma AVRPART CORE CORE_VERSION V2
#pragma AVRPART CORE NEW_INSTRUCTIONS lpm rd,z+
#pragma AVRPART MEMORY PROG_FLASH 2048
#pragma AVRPART MEMORY EEPROM 128
#pragma AVRPART MEMORY INT_SRAM SIZE 128
#pragma AVRPART MEMORY INT_SRAM START_ADDR 0x60

/
//Name definitions

.EQU RAMEND =0xDF;

.EQU SREG =0x3F ;I T H S V N Z C
.EQU SPHIGH =0x3E ;----
.EQU SPLOW =0x3D ;SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0
.EQU OCR0B =0x3C ;Timer/Counter0 - Compare Register B
.EQU GIMSK =0x3B ;INT1 INT0 PCIE ----
.EQU EIFR =0x3A ;INTF1 INTF0 PCIF ----
.EQU TIMSK =0x39 ;TOIE1 OCIE1A OCIE1B - ICIE1 OCIE0B TOIE0 OCIE0A == 100-0000
.EQU TIFR =0x38 ;TOV1 OCF1A OCF1B - ICF1 OCF0B TOV0 OCF0A == READ (WE-NOT-USE-IT)
.EQU SPMCSR =0x37 ;---CTPB RFLB PGWRT PGERS SELFPRGEN
.EQU OCR0A =0x36 ;Timer/Counter0 - Compare Register A
.EQU MCUCR =0x35 ;PUD SM1 SE SM0 ISC11 ISC10 ISC01 ISC00
.EQU MCUSR =0x34 ;---WDRF BORF EXTRF PORF
.EQU TCCR0B =0x33 ;FOC0A FOC0B - - WGM02 CS02 CS01 CS00
.EQU TCNT0 =0x32 ;Timer/Counter0 (8-bit)
.EQU OSCCAL =0x31 ;- CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0
.EQU TCCR0A =0x30 ;COM0A1 COM0A0 COM0B1 COM0B0 - - WGM01 WGM00
.EQU TCCR1A =0x2F ;COM1A1 COM1A0 COM1B1 COM1B0 - - WGM11 WGM10 == 0000--00
.EQU TCCR1B =0x2E ;ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10 == 00-00001
.EQU TCNT1H =0x2D ;Timer/Counter1 Counter Register High Byte ==
.EQU TCNT1L =0x2C ;Timer/Counter1 Counter Register Low Byte ==
.EQU OCR1AH =0x2B ;Timer/Counter1 Compare Register A High Byte == WE-NOT-USE-IT
.EQU OCR1AL =0x2A ;Timer/Counter1 Compare Register A Low Byte == WE-NOT-USE-IT
.EQU OCR1BH =0x29 ;Timer/Counter1 Compare Register B High Byte == WE-NOT-USE-IT
.EQU OCR1BL =0x28 ;Timer/Counter1 Compare Register B Low Byte == WE-NOT-USE-IT
.EQU RFU_1 =0x27
.EQU CLKPR =0x26 ;CLKPCE ---CLKPS3 CLKPS2 CLKPS1 CLKPS0
.EQU ICR1H =0x25 ;Timer/Counter1 Input Capture Register High Byte == READ (WE-NOT-USE-IT)
.EQU ICR1L =0x24 ;Timer/Counter1 Input Capture Register Low Byte == READ (WE-NOT-USE-IT)
.EQU GTCCR =0x23 ;---PSR10
.EQU TCCR1C =0x22 ;FOC1A FOC1B ---== 00------ (OBSOLETE???)
.EQU WDTCSR =0x21 ;WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0
.EQU PCMSK =0x20 ;PCINT7 PCINT6 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0
.EQU RFU_2 =0x1F
.EQU EEAR =0x1E ;- EEPROM Address Register [6:0]
.EQU EEDR =0x1D ;EEPROM Data Register
.EQU EECR =0x1C ;- - EEPM1 EEPM0 EERIE EEMPE EEPE EERE
.EQU PORTA =0x1B ;---PORTR2 PORTA1 PORTA0
.EQU DDRA =0x1A ;---DDA2 DDA1 DDA0
.EQU PINA =0x19 ;---PINA2 PINA1 PINA0
.EQU PORTB =0x18 ;PORTB7 PORTB6 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0
.EQU DDRB =0x17 ;DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0
.EQU PINB =0x16 ;PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0
.EQU GPIOR2 =0x15 ;General Purpose I/O Register 2
.EQU GPIOR1 =0x14 ;General Purpose I/O Register 1
.EQU GPIOR0 =0x13 ;General Purpose I/O Register 0
.EQU PORTD =0x12 ;- PORTD6 PORTD5 PORTD4 PORTD3 PORTD2 PORTD1 PORTD0
.EQU DDRD =0x11 ;- DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD0
.EQU PIND =0x10 ;- PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0
.EQU USIDR =0x0F ;USI Data Register
.EQU USISR =0x0E ;USISIF USIOIF USIPF USIDC USICNT3 USICNT2 USICNT1 USICNT0
.EQU USICR =0x0D ;USISIE USIOIE USIWM1 USIWM0 USICS1 USICS0 USICLK USITC
.EQU UDR =0x0C ;UART Data Register
.EQU UCSRA =0x0B ;RXC TXC UDRE FE DOR UPE U2X MPCM
.EQU UCSRB =0x0A ;RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
.EQU UBRRL =0x09 ;UBRRH [7:0]
.EQU ACSR =0x08 ;ACD ACBG ACO ACI ACIE ACIC ACIS1 ACIS0
.EQU RFU_3 =0x07
.EQU RFU_4 =0x06
.EQU RFU_5 =0x05
.EQU RFU_6 =0x04
.EQU UCSRC =0x03 ;- UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
.EQU UBRRH =0x02 ;- UBRRH[11:8]
.EQU DIDR =0x01 ;---AIN1D AIN0D
.EQU RFU_7 =0x00

#define KOEFFVAL100 (121920000) // = kHz * mm * 100 = 9600 * 127 * 100 = 121920000
#define COUNTERMIN (1220) // = ROUNDUP(KOEFFVAL100 / 100001) = (max 999.99 m/s)
#define COUNTERMAX (12192000) // = KOEFFVAL100 / 10 = (min 000.10 m/s), but not more than 0x00FDFFFF

.EQU SPEED100 =0x60;//5 bytes - decimals, fixed point 000.00, values are 0... 9, 0x0A='L', 0x0B='H', 0x0C='F', 0x0D='G', 0x0E='-'
.EQU CNTHIGH =0x65;//1 byte
.EQU INDICATOR =0x66;//16 bytes
.EQU DATAEND =0x76;//Next free place

/
//Code start - interrupt map

.CSEG;
.ORG $0;

rjmp LL_RESET ; Reset Handler
rjmp LL_INT_Sensor0 ; External Interrupt0 Handler
rjmp LL_INT_Sensor1 ; External Interrupt1 Handler
reti; Timer1 Capture Handler
reti; Timer1 CompareA Handler
rjmp LL_INT_ClockOverrun ; Timer1 Overflow Handler
reti; Timer0 Overflow Handler
reti; USART0 RX Complete Handler
reti; USART0,UDR Empty Handler
reti; USART0 TX Complete Handler
reti; Analog Comparator Handler
reti; Pin Change Interrupt
reti; Timer1 Compare B Handler
reti; Timer0 Compare A Handler
reti; Timer0 Compare B Handler
reti; USI Start Handler
reti; USI Overflow Handler
reti; EEPROM Ready Handler
reti; Watchdog Overflow Handler

/
//Interrupt routines
/


LL_RESET: / ON STARTUP

ldi r16,low(RAMEND); //set stack;
out SPLOW,r16;

eor r16,r16; //Configure PortB for output, set all lights in group disabled
out PORTB,r16;
com r16;
out DDRB,r16;

ldi r16,0x70; //Configure bits 6,5,4 of PortD for output, set all light groups disabled
out DDRD,r16;
out PORTD,r16;

in r16,MCUCR;
ldi r17,0x0F; //rising edge mode for both external INT0 & INT1
or r16,r17;
out MCUCR,r16;
ldi r16,0xC0; //Enable INT0 & INT1
out GIMSK,r16;

ldi r16,0x00; //Disable compare output operation for timer1, simple mode on
out TCCR1A,r16;
ldi r16,0x01; //Disable any features, simple mode on, clock source - IOCLK/1
out TCCR1B,r16;
ldi r16,0x80; //Enable timer1 overflow interrupt
out TIMSK,r16;

ldi r16,0x0D;//Startup indicator state "G0-"
sts SPEED100,r16;
eor r16,r16;
sts SPEED100+1,r16;
ldi r16,0x0E;
sts SPEED100+2,r16;

ldi r16,0xFF;//Set high counter byte to a "no 1st sensor passed" value (0xFF);
sts CNTHIGH,r16;

ldi r16,0xE7; / INDICATOR SYMBOL BITMASKS
sts INDICATOR+0x0,r16;
ldi r16,0x21;
sts INDICATOR+0x1,r16;
ldi r16,0xCB;
sts INDICATOR+0x2,r16;
ldi r16,0x6B;
sts INDICATOR+0x3,r16;
ldi r16,0x2D;
sts INDICATOR+0x4,r16;
ldi r16,0x6E;
sts INDICATOR+0x5,r16;
ldi r16,0xEE;
sts INDICATOR+0x6,r16;
ldi r16,0x23;
sts INDICATOR+0x7,r16;
ldi r16,0xEF;
sts INDICATOR+0x8,r16;
ldi r16,0x6F;
sts INDICATOR+0x9,r16;
ldi r16,0xC4;
sts INDICATOR+0xA,r16;
ldi r16,0xAD;
sts INDICATOR+0xB,r16;
ldi r16,0x8E;
sts INDICATOR+0xC,r16;
ldi r16,0xE6;
sts INDICATOR+0xD,r16;
ldi r16,0x08;
sts INDICATOR+0xE,r16;
ldi r16,0x4A;
sts INDICATOR+0xF,r16;

sei;
rjmp LL_MAINCYCLE;

LL_INT_Sensor0: / FIRST SENSOR ACTIAVATED

//CLK=7 //AVG CYCLES TO ENTER INTERRUPT
push r16; //CLK+9
push r17; //CLK+11
in r17,SREG; //CLK+12

eor r16,r16; //CLK+13 //reset high counter byte and hardware counter;
sts CNTHIGH,r16;//CLK+15
out TCNT1H,r16; //CLK+16
out TCNT1L,r16; //CLK+17 // !!! STORING LATCH !!!

out SREG,r17;
pop r17;
pop r16;
reti;

LL_INT_Sensor1: / SECOND SENSOR ACTIVATED

//CLK=7 //AVG CYCLES TO ENTER INTERRUPT
push r16; //CLK+9
push r17; //CLK+11
push r18; //CLK+13
push r19; //CLK+15
in r19,SREG; //CLK+16

in r16,TCNT1L; //CLK+17 // !!! LOADING LATCH !!!
in r17,TCNT1H;

lds r18,CNTHIGH;

cpi r18,0xFF; //first sensor ok?
brne LL_CORRECTION;
ldi r16,0x0E; //otherwise set output state to "-F-" (first sensor failed)
sts SPEED100,r16;
sts SPEED100+2,r16;
ldi r16,0x0C;
sts SPEED100+1,r16;
rjmp LL_SensProcessed;

LL_CORRECTION:
tst r17; //Check if CNTHIGH correction is needed (clock values less than 18 mean timer overflow interrupt routine was missed)
breq LL_CHECKSPEED;
cpi r16,18;
brcc LL_CHECKSPEED;
inc r18; //Adjust value from CNTHIGH

LL_CHECKSPEED:
cpi r18,BYTE3(COUNTERMIN);
brcs LL_TOOFAST;
brne LL_CALCSPEED;
cpi r17,BYTE2(COUNTERMIN);
brcs LL_TOOFAST;
brne LL_CALCSPEED;
cpi r16,BYTE1(COUNTERMIN);
brcc LL_CALCSPEED;
LL_TOOFAST:
ldi r16,0x0E; //set output state to "-H-" (speed was too high)
sts SPEED100,r16;
sts SPEED100+2,r16;
ldi r16,0x0B;
sts SPEED100+1,r16;
rjmp LL_SensProcessed;

LL_CALCSPEED:

push r10;
push r11;
push r12;
push r13;
push r14;

push r20;
push r21;
push r22;
push r23;

push r26;
push r27;

eor r10,r10;
eor r11,r11;
eor r12,r12;
eor r13,r13;
eor r14,r14;

ldi r20,BYTE1(KOEFFVAL100);
ldi r21,BYTE2(KOEFFVAL100);
ldi r22,BYTE3(KOEFFVAL100);
ldi r23,BYTE4(KOEFFVAL100);

ldi r26,0x0A;
eor r27,r27;

LL_STARTDIVISION: //JUST STUPID NON-OPTIMIZED CYCLE SUBSTRACION WITH BCD FIXPOINT 3:2 (000.00) RESULT
sub r20,r16;
sbc r21,r17;
sbc r22,r18;
sbc r23,r27;
brcs LL_STOREINDICATOR;
inc r10;
cp r10,r26;
brlo LL_STARTDIVISION;
eor r10,r10;
inc r11;
cp r11,r26;
brlo LL_STARTDIVISION;
eor r11,r11;
inc r12;
cp r12,r26;
brlo LL_STARTDIVISION;
eor r12,r12;
inc r13;
cp r13,r26;
brlo LL_STARTDIVISION;
eor r13,r13;
inc r14;
rjmp LL_STARTDIVISION;

LL_STOREINDICATOR:

ldi r26,SPEED100;
st X+,r14;
st X+,r13;
st X+,r12;
st X+,r11;
st X+,r10;

pop r27;
pop r26;

pop r23;
pop r22;
pop r21;
pop r20;

pop r14;
pop r13;
pop r12;
pop r11;
pop r10;

LL_SensProcessed:
ldi r16,0xFF; //Enter start waiting mode
sts CNTHIGH,r16;

out SREG,r19;
pop r19;
pop r18;
pop r17;
pop r16;
reti;

LL_INT_ClockOverrun: / ON CLOCK OVERRUN

push r16;
push r17;
in r17,SREG;

lds r16,CNTHIGH;
cpi r16,0xFF; //Still waiting to start?
breq LL_TProcessed;
inc r16; //Incrementing highest counter byte
sts CNTHIGH,r16;
cpi r16,BYTE3(COUNTERMAX); //Was started and max count still not reached?
brlo LL_TProcessed;
ldi r16,0xFF; //Enter start waiting mode and...
sts CNTHIGH,r16;
ldi r16,0x0E; //... and set output state to "-L-" (too low speed)
sts SPEED100,r16;
sts SPEED100+2,r16;
ldi r16,0x0A;
sts SPEED100+1,r16;
LL_TProcessed:;

out SREG,r17;
pop r17;
pop r16;
reti;

/
//General code
/


LL_MAINCYCLE:

eor r3,r3;
inc r3;
inc r3;
lds r20,SPEED100+0;
lds r21,SPEED100+1;
lds r22,SPEED100+2;
tst r20;
brne LL_SHOW;
dec r3;
mov r20,r21;
mov r21,r22;
lds r22,SPEED100+3;
tst r20;
brne LL_SHOW;
dec r3;
mov r20,r21;
mov r21,r22;
lds r22,SPEED100+4;

LL_SHOW:
eor r31,r31;
ldi r30,0x30; //Surge pin mask for first digit indicator
eor r27,r27;

LL_NEXTSHOW:
eor r29,r29;
cp r31,r3;
brne LL_WITHOUTDOT;
ori r29,0x10;
LL_WITHOUTDOT:
ldi r26,INDICATOR;
andi r20,0x0F;
add r26,r20;
ld r20,X;
or r29,r20;
out PORTB,r27;
out PORTD,r30;
out PORTB,r29;

lsr r30;
ori r30,0x40;
andi r30,0x70;

mov r20,r21;
mov r21,r22;

inc r31;
cpi r31,3;
brne LL_NEXTSHOW;

rjmp LL_MAINCYCLE;

/
//FIN

602 / 2048 29.4%

ober
P.M.
18-11-2009 23:55 ober
без каментов.. . айайай
Borshevich
P.M.
19-11-2009 00:03 Borshevich
ну, за буржуинские камменты сорри, лет 16 назад перетягивал свои куски кода для DOS-а под винды, пришлось перекодировать весь русский текст - с тех пор камменчу на аглицком.
hoakinn
P.M.
19-11-2009 00:06 hoakinn
На си конечно код потолще выходит, но когда надо быстро и размер не жмет я оптимизацией кода не маюсь.
зы хотя потом как глянешь в то что написал и думаешь что бредил в тот момент
Borshevich
P.M.
19-11-2009 03:14 Borshevich
О, пошли ловится первые косяки К утру мож добью.. .
mironov
P.M.
19-11-2009 09:38 mironov
А где вывод на компуктер?
Borshevich
P.M.
19-11-2009 10:07 Borshevich
Добил косяки, все работает. В посте с исходником уже сменил код на отлаженный. Вывод на комп пока не делаю - мне он не впился, сделаю только если стану делать версию на продажу.
Ща фоты будут:
500 x 360
На картинке скорость 12.7, минимальная 0.10, максимальная 999. Выше 510 проверить не удалось (дунул легким шариком из трубы)

Borshevich
P.M.
19-11-2009 10:43 Borshevich
Обещал принципиальную схему, думаю она малоинтересна, но все же.
Использовал для оптических пар светодиоды - TSAL5100, фотодиоды - BL-L512PD.


709 x 445
217 x 309

Borshevich
P.M.
19-11-2009 11:56 Borshevich
И схему прошивалки, кварц 4MHz с конденсаторами по 30пФ на массу - присобачить обязательно, потому что иначе, после пограммирования фьюзов на работу с кварцевым генератором, кристалл перестанет шиццо, внешее питание так же облегчает жизнь в 50 раз:

290 x 377

mironov
P.M.
19-11-2009 12:20 mironov
Диод на питании это круто , хоть кто то сразу нарисовал
Вопросы:
1. "индикация датчиков" это что?
2. Сколько держат выходы контроллера, индикатор прямо на выходы вешается?
Borshevich
P.M.
19-11-2009 12:25 Borshevich
Кому глубоко впадлу компилировать - достаточно скачать PonyProg, во фьюзах поставить галки только на CKSEL0 и SUT0. И залить вот этот текст в кодовую страницу (просто копируете то, что ниже, в текстовый файл с расширением .hex, этот файл грузите в понипрог, оттуда жжоте в кристалл):

:020000020000FC
:1000000012C064C06FC018951895DDC0189518957A
:
: FED0DBF002708BB009582
:1000300007BB00E701BB02BB05B71FE0012B05BFF3
:1000400000EC0BBF00E00FBD01E00EBD00E809BFF2
:100050000DE EE0009324
:1000600062000FEF0093650007EE0093660001E267
: BEC009368000BE600936900A7
:100080000DE200936A000EE600936B000EEE009303
:100090006C0003E200936D000FEE00936E000FE61C
:1000A00000936F0004EC009370000DEA0093710060
:1000B0000EE80093720006EE0093730008E00093D0
:1000C00074000AE C00F931F930E
:1000D0001FB70027009365000DBD0CBD1FBF1F910A
:1000E0000F9118950F931F932F933F933FB70CB524
:1000F0001DB5209165002F3F49F40EE0009360008C
: CE00093610054C0112319F0C9
:10011000023108F42395203030F071F4143018F0D7
:1001200059F4043C48F40EE
:100130000BE0009361003EC0AF92BF92CF92DF927E
:10014000EF924F935F936F937F93AF93BF93AA24E4
:10015000BB24CC24DD24EE2440E05AE564E477E0BF
:10016000AAE0BB27401B510B620B7B0B90F0A394C2
:10017000AA16C0F3AA24B394BA16A0F3BB24C3945E
:10018000CA1680F3CC24D394DA1660F3DD24E3940A
:10019000E9CFA0E6ED92DD92CD92BD92AD92BF91F6
:1001A000AF917F916F915F914F91EF90DF90CF90E2
:1001B000BF90AF900FEF009365003FBF3F912F912D
:1001C0001F910F9118950F931F931FB70091650012
:1001D0000F3F81F00395009365000A3B58F00FEF45
:1001E000009365000EE AE057
:1001F000009361001FBF1F910F
: FA
:1002100061F43A94452F562F60916300442329F4EA
:100220003A94452F562F60916400FF27E0E3BB27E7
:10023000DD27F31509F4D061A6E64F70A40F4C91A9
:10024000D42BB8BBE2BBD8BBE695E064E077452F82
:0A025000562FF395F33061F7D1CF7C
:00000001FF

Borshevich
P.M.
19-11-2009 12:38 Borshevich
Диод на питании это круто , хоть кто то сразу нарисовал
Вопросы:
1. "индикация датчиков" это что?
2. Сколько держат выходы контроллера, индикатор прямо на выходы вешается?

Диод на питании - защита от идиота.

1) индикация - просто для контроля - типа засунул карандаш и видишь сечется оно или как.

2) можно на выходы - иcполнение "industrial" в дип-корпусе до 4х вольт не горит, 5 вольт проверялось только кратковременно, другие исполнения тоже редко горят, я завесил по 120 ом.

Вообще за всю историю работы моих коллег с атмелами, они горели-то только на эксперименталке, и то, штуки 2 или 3 всего помню, а прошло их тысячи.

mironov
P.M.
19-11-2009 12:56 mironov
Диод на питании - защита от идиота.

Вот я и говорю - круто. Все знают зачем он там только никто не ставит

Использовал для оптических пар светодиоды - TSAL5100, фотодиоды -BL-L512PD.

А диоды (L-34F3C) / транзисторы (L-32P3C) как в хронолайте подойут (с изменением номиналов резисторов)?

Надо теперь память добавить и с компуктером соеденить, надо соеденить

Borshevich
P.M.
19-11-2009 13:01 Borshevich
А диоды (L-34F3C) / транзисторы (L-32P3C) как в хронолайте подойут (с изменением номиналов резисторов)?

Не пробовал. Лажа была только с отечественными - сильно шумят и рознятся в характеристиках. Думаю любые буржуинские пойдут, надо только подиграть под них уровни на дифференциалке ну и токи.

Надо теперь память добавить и с компуктером соеденить, надо соеденить

128 байт EEPROM там присутствует, если ограничится например скоростями 150... 405, то можно хранить историю на 126 выстрелов, еще два байта оставить как индексы FIFO.

Borshevich
P.M.
19-11-2009 13:06 Borshevich
Ладно, я спать, у кого есть вопросы - пишите пока.
julbu
P.M.
19-11-2009 13:14 julbu
ИК светики заведи на выходы проца, потом пригодится
Да и лучше компаратор поставить типа LM393, а не опер. И ток индикатора чем ограничиваешь? Если как на картинке то не гуд. Сильничаешь над процом, проц будет греться, частота уходить.

ober
P.M.
19-11-2009 14:04 ober
колдунские разговоры пошли
Borshevich
P.M.
19-11-2009 14:18 Borshevich
ИК светики заведи на выходы проца, потом пригодится

На один в таком случае. И под один резистор оба. Пусть жрут вдвоем один ток чем каждый по отдельности.

И ток индикатора чем ограничиваешь?

Читай внимательнее , написал же что завесил по 120 Ом на каждый диод индикатора. Частота у него не уходит с кварцем вплоть до 80'С (если сам кварц холодный).

Да и лучше компаратор поставить типа LM393

Этого опера по частотным характеристикам хватает. Полоса пропускания без обратной связи шире чем с оной. Работает он в этой схеме и так в режиме компаратора. Можно и компаратор.

Borshevich
P.M.
19-11-2009 14:19 Borshevich
колдунские

А потом бабки говорят, шо НЛО видели

julbu
P.M.
19-11-2009 16:16 julbu
Originally posted by Borshevich:
На один в таком случае. И под один резистор оба. Пусть жрут вдвоем один ток чем каждый по отдельности.

Можно и на один, ими "моргать" можно в процессе работы.

Читай внимательнее , написал же что завесил по 120 Ом на каждый диод индикатора. Частота у него не уходит с кварцем вплоть до 80'С (если сам кварц холодный).

Извини, был не внимателен. Но схемку подправил бы, если выкладываешь, ведь кто-то повторять будет. Да и ключей на общих выводах индикаторов не ставишь?

Этого опера по частотным характеристикам хватает. Полоса пропускания без обратной связи шире чем с оной. Работает он в этой схеме и так в режиме компаратора. Можно и компаратор.

Лучше компаратор, я когда делал на опере и компараторе, возрастающий фронт был круче у компаратора. Да и форма сигнала была чище.

mironov
P.M.
19-11-2009 16:32 mironov
Лучше компаратор, я когда делал на опере и компараторе, возрастающий фронт был круче у компаратора. Да и форма сигнала была чище.

А этот операционник/компаратор вообще зачем нужен? Фронт круче делает? Насколько без него хуже будет?
Borshevich
P.M.
19-11-2009 22:32 Borshevich
Да и ключей на общих выводах индикаторов не ставишь?

Я нарисовал сигнальный выход. Как решить нагрузку - вопрос весьма индивидуальный и ключи там поставить правильно не только по стокам но и по включениям. Но я ограничился резисторами - если маститые производители электроники этим не брезгуют, то чем я хуже-то? . Кучу транзисторов же вполне может заменить мощный шинный повторитель.

Лучше компаратор, я когда делал на опере и компараторе, возрастающий фронт был круче у компаратора. Да и форма сигнала была чище.

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


А этот операционник/компаратор вообще зачем нужен? Фронт круче делает? Насколько без него хуже будет?

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

hoakinn
P.M.
19-11-2009 22:32 hoakinn
Без ключей на индикаторах тянет?
В ресете большой кондер - пуск затянутый при определенных раскладах не гут.
Borshevich
P.M.
19-11-2009 22:51 Borshevich
Без ключей на индикаторах тянет?
В ресете большой кондер - пуск затянутый при определенных раскладах не гут.

У меня тянет именно без ключей с резисторами по входам индикаторов, эквивалент сопротивления на сток при полной нагрузке - 15 Ом, достаточно что бы не горел сливной транзистор в проце, на нем падает очень небольшое напряжение, так что по мощности - не страшно. Ну и каждый сливной выход работает ведь только свою треть времени, так что суммарная мощность неизменна. Кратковременный ток удовлетворяет даташиту, да и реактивных элементов в нагрузке нет.

Прошу учесть, что это эксперименталка, поэтому человеческой разводкой индикаци на шинный усилитель я просто не заморачивался, в идеале же он там приветствуется.

По ресету - они так надежней запускаются. В принципе у меня на столе просто валялись 10мк, если бы под рукой валялся 1мк - был бы 1мк. Да и дребезг при установлении питания меньше влияет так.

XzctR
P.M.
22-11-2009 13:48 XzctR
Иван, дак такой хрон и застрелить хрен получится, так ?
Borshevich
P.M.
22-11-2009 15:48 Borshevich
Застрелиь не выйдет (если не преследовать эту цель сознательно), но со временем линзы диодов могут засраться свинцом. Х.з., время покажет.

Guns.ru Talks
PCP online
ПолныйОФФ. Сделал хрон. ( 1 )