Электроника средств транспорта Ремонт и разработка дополнительного автооборудования. Бортовые компьютеры и многое другое. |
26.05.2016, 00:26
|
|
Прописка
Регистрация: 25.03.2013
Адрес: Глубокое замкадье
Сообщений: 216
Сказал спасибо: 3
Сказали Спасибо 71 раз(а) в 55 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Сообщение от -vitalik-
|
?
|
Схема с ошибкой - TIP41/TIP42 взорвутся. Нужно базы крест-накрест.
|
|
|
|
26.05.2016, 10:09
|
|
Вид на жительство
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,407
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Сообщение от vladisslav1
|
Схема с ошибкой - TIP41/TIP42 взорвутся. Нужно базы крест-накрест.
|
Недоглядел. Спасибо
|
|
|
|
28.05.2016, 22:32
|
|
Прописка
Регистрация: 23.02.2005
Сообщений: 166
Сказал спасибо: 203
Сказали Спасибо 46 раз(а) в 27 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Я сейчас в деревне с планшета, инет плохой, загрузить не могу.
Нашел на изи в комментариях (выкладывал ещё где-то подробное описание, но не нашел), схема там немного неполная, но сам ШИМ и описание педали с фото есть: http://we.easyelectronics.ru/my/ALEN/comment/
Там в комментариях я ALEN
|
|
|
Сказали "Спасибо" Unknown
|
|
|
08.09.2016, 15:23
|
|
Вид на жительство
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,407
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Проделана некоторая работа. Все сделано по прилагаемым схемам. Программа передатчика:
Код:
|
// Transmitter
// PIC16F628
// Speed, analog PORTA.F0
// Battery, analog PORTA.F1
// Comparator reserved PORTA.F2
// Comparator reserved PORTA.F3
#define Power PORTA.F4
// Reset PORTA.F5
#define BattLow PORTA.F6
#define TX PORTA.F7
#define Left PORTB.F0
#define Right PORTB.F1
#define Front PORTB.F2
#define Rear PORTB.F3
#define Brake PORTB.F4
#define CommandPort PORTB
char i, BattLevel;
char Addr,Speed,Comm,Summ;
char OldPort, OldSpeed;
char PowerTimer;
bit Sent;
char ResentTimer;
void preset (void)
{
STATUS = 0b00000000;
OPTION_REG = 0b00000000;
INTCON=0b11000000; //Int on periphery
PIE1=0b00000001; //Int on TMR1
T1CON = 0b00010001; //TMR1 each 2*65536=131072 mkS
CMCON = 0b00000010; //A0, A1 - inputs C1, C2
VRCON = 0b10100000; // 0...3.125 V
TRISA=0b00101111;
TRISB=0b11111111;
}
void send_data(unsigned char txaddr,unsigned char txspeed,unsigned char txcomm,unsigned char txsumm)
{
unsigned char tbit, txdat;
// make 250uS start bit first
TX = 1;
Delay_uS(1600);
TX = 0;
Delay_uS(400);
txdat = txaddr;
// now loop and send 8 bits
for(tbit=0; tbit‹8; tbit++)
{
TX = 1;
Delay_uS(400);
if(txdat.F7) {Delay_uS(400);} // increase period if is a 1 bit!
TX = 0;
Delay_uS(400);
txdat ‹‹= 1; // roll data byte left to get next bit
}
txdat = txspeed;
// now loop and send 8 bits
for(tbit=0; tbit‹8; tbit++)
{
TX = 1;
Delay_uS(400);
if(txdat.F7) {Delay_uS(400);} // increase period if is a 1 bit!
TX = 0;
Delay_uS(400);
txdat ‹‹= 1; // roll data byte left to get next bit
}
txdat = txcomm;
// now loop and send 8 bits
for(tbit=0; tbit‹8; tbit++)
{
TX = 1;
Delay_uS(400);
if(txdat.F7) {Delay_uS(400);} // increase period if is a 1 bit!
TX = 0;
Delay_uS(400);
txdat ‹‹= 1; // roll data byte left to get next bit
}
txdat = txsumm;
// now loop and send 8 bits
for(tbit=0; tbit‹8; tbit++)
{
TX = 1;
Delay_uS(400);
if(txdat.F7) {Delay_uS(400);} // increase period if is a 1 bit!
TX = 0;
Delay_uS(400);
txdat ‹‹= 1; // roll data byte left to get next bit
}
}
void Transmit()
{
Summ = Addr + Speed + Comm;
send_data(Addr,Speed,Comm,Summ);
}
void main()
{
preset();
TX = 0;
OldPort = 0;
Sent = 0;
ResentTimer = 0;
Addr = 32;
delay_ms(500);
while(1)
{
//Check baterry
i = 0;
while (!(CMCON.F7))
{
VRCON = 0b10100000 + i;
i++;
delay_us(500);
}
VRCON = 0b10100000;
BattLow = ~(i › 7); //1.8V (i=6: U=1.25)
//Measure speed
i = 0;
while (!(CMCON.F6))
{
VRCON = 0b10100000 + i;
i++;
delay_us(500);
}
VRCON = 0b10100000;
Speed = i-1;
if (Speed › 15) Speed = 15;
//Speed changed
if ((Speed != OldSpeed)&&(CommandPort != 255))
{
ResentTimer = 0;
OldSpeed = Speed;
Sent = 1;
}
// Command changed
if (CommandPort != OldPort)
{
ResentTimer = 0;
OldPort = CommandPort;
Comm = CommandPort;
Sent = 1;
}
// Execute sending
if (Sent)
{
Transmit();
Sent = 0;
}
}
}
void interrupt(void)
{
if(PIR1.TMR1IF) //Each 0.13 s
{
if (CommandPort == 255) PowerTimer++; else {PowerTimer = 0; Power = 0;}
if (PowerTimer›200) Power = 1; //26 sec
if (CommandPort != 255) ResentTimer++;
if (ResentTimer ›= 4) {ResentTimer = 0; Sent = 1;} //each 0.52 s
PIR1.TMR1IF = 0;
}
} |
И приемника?
Код:
|
// Receiver
// PIC16f876
// Analog current PORTA.F0
// Analog voltage PORTA.F1
#define Pedal PORTA.F2
// Analog local speed PORTA.F3
//#define PORTA.F4
//#define PORTA.F5
#define RX PORTB.F0
//#define PORTB.F1
//#define PORTB.F2
//#define PORTB.F3
#define LeftTurn PORTB.F4
#define RightTurn PORTB.F5
#define RewRelay PORTB.F6
#define FwdRelay PORTB.F7
#define data_in PORTC.F0
// PWM turn wheel PORTC.F1
// PWM main motor PORTC.F2
#define data_out PORTC.F3
#define latch PORTC.F4
#define clk PORTC.F5
#define dis_read PORTC.F6
//#define Charge PORTC.F7
// remote
unsigned char tiks; //tiks of TMR0
char addr, speed, comm, summ, summ_; //received data
bit reading; //sign of reading process
unsigned char b_cnt; //received bits count
bit rem_fwd, rem_rew, rem_left, rem_right, rem_break;
unsigned char rem_speed;
char RecieveTimer;
bit RemoteUsed;
// ADC
unsigned char ADCindex;
unsigned char locspeed, current, voltage;
// baterry
bit BaterryLow, BaterryEmpty, BaterryLow_, BaterryEmpty_;
unsigned char BaterryEmptyTimer, BaterryLowTimer;
// Main motor
bit RunCommand, Stop, reverse_, RemoteReverse, BackReverse, Break, OverLoad, OverLoad_;
unsigned char CurrSpeed, TaskSpeed, TaskSpeed_, OverLoadTimer;
// Adjust
unsigned char LowBatSpeed, OverCurrent, TurnWheelSpeed;
unsigned char TeachTimer,TeachParameter;
bit Teaching;
//Indication
bit ind_inc, ind_dec, blink;
unsigned char indicates;
//Inputs
unsigned char discr;
char j;
bit Bt1, Bt2, Bt3, Bt4, Local, Reverse, Enable, Charge;
bit Bt2_, Bt3_;
void Out_send(){ // Send data to shift registers
char i,s1;
s1 = indicates;
/*
for (i=0;i‹8;i++)
{
out_data = s3.F7;
out_clk = 1;
out_clk = 0;
s3 = s3 ‹‹ 1;
}
for (i=0;i‹8;i++)
{
out_data = s2.F7;
out_clk = 1;
out_clk = 0;
s2 = s2 ‹‹ 1;
}
*/
for (i=0;i‹8;i++)
{
data_out = s1.F7;
clk = 1;
clk = 0;
s1 = s1 ‹‹ 1;
}
latch = 1;
latch = 0;
}
void preset (void)
{
STATUS = 0b00000000;
OPTION_REG = 0b01000010; //divider to TMR0, 1 tick = 8 uS, overflow on 2048 uS
INTCON = 0b11110000; //interrupt on periphery, TMR0 and INT
PIE1 = 0b01000011; //interrupt on ADC, TMR2 and TMR1
CMCON = 0b00000111; //disable comparator
ADCON0 = 0b01000001; //Fosc/8, enable ADC
ADCON1 = 0b00000100; // Result in ADRESH, An0 An1 An3
T1CON = 0b00100001; //TMR1 each 4*65536=262144 mkS
CCP1CON = 0b00001100; //main motor
CCP2CON = 0b00001100; //turn wheel motor
PR2 = 255;
T2CON = 0b00011110; //TMR2 On, prescale 16, overflow each 4096 mkS, interrupt 4*4096 = 16384 mkS
TRISA = 0b00001111; //direction set
TRISB = 0b00000001; //direction set
TRISC = 0b00000001; //direction set
}
void main()
{
preset();
PORTA = 0;
PORTB = 0;
PORTC = 0;
ADCON0 = 0b01001101; //run ADC on An1
BaterryLow = 0;
BaterryEmpty = 0;
BaterryLow_ = 0;
BaterryEmpty_ = 0;
Teaching = 0;
TeachTimer = 0;
CurrSpeed = 0;
TaskSpeed = 0;
CCPR2L = 0;
OverCurrent = EEPROM_Read(0x00);
TurnWheelSpeed = EEPROM_Read(0x01);
LowBatSpeed = EEPROM_Read(0x2);
CCPR2L = TurnWheelSpeed;
while(1)
{
//test block
//if (Bt1 || Bt2 || Bt3 || Bt4) RecieveTimer = 0;
//rem_break = Bt1;
//rem_right = Bt2;
//rem_fwd = Bt3;
//rem_rew = Bt4;
//rem_speed = 200;
// Discret. read
dis_read = 1;
discr = 0;
for (j=0;j‹8;j++)
{
if (data_in) discr = (discr ‹‹1)+1; else discr = (discr ‹‹1);
clk = 1;
clk = 0;
}
dis_read = 0;
Local = discr.F0;
Reverse = discr.F1;
Enable = discr.F2;
Charge = discr.F3;
Bt1 = discr.F4;
Bt2 = discr.F5;
Bt3 = discr.F6;
Bt4 = discr.F7;
//Indication
//indicates.F1 Stop / Teaching(blink)
//indicates.F2 Batt.low, Overload, Teach pressed(blink) / Set limited speed
//indicates.F3 Increase speed, Overloaded(blink) / Set overcurrent
//indicates.F4 Decrease speed, Overloaded(blink) / Turnwheel speed adjust
if (Teaching)
{
indicates.F1 = blink;
indicates.F2 = (TeachParameter == 2);
indicates.F3 = (TeachParameter == 0);
indicates.F4 = (TeachParameter == 1);
if ( (Bt2) && (!(Bt2_)) ) {TeachParameter++; Bt2_ = 1;}
if (!(Bt2)) Bt2_ = 0;
if (TeachParameter › 2) teachParameter = 0;
if ( (Bt3) && (!(Bt3_)) )
{
if (TeachParameter == 0) OverCurrent = current;//Over current
if (TeachParameter == 1) //Turn wheel speed
{
if (TurnWheelSpeed›=63)TurnWheelSpeed = TurnWheelSpeed - 32;
else TurnWheelSpeed = 0xFF;
CCPR2L = TurnWheelSpeed;
}
if (TeachParameter == 2) LowBatSpeed = CurrSpeed;//Limited speed
(Bt3_) = 1;
}
if (!(Bt3)) Bt3_ = 0;
if (Bt4)
{
EEPROM_Write(0x00, OverCurrent);
EEPROM_Write(0x01, TurnWheelSpeed);
EEPROM_Write(0x02, LowBatSpeed);
Teaching = 0;
}
}
else
{
indicates.F1 = Stop;
indicates.F2 = BaterryLow_ || BaterryLow || OverLoad_ || (Bt1 && blink);
indicates.F3 = (ind_inc && (!(OverLoad))) || ((!(blink)) && OverLoad);
indicates.F4 = (ind_dec && (!(OverLoad))) || ((blink) && OverLoad);
}
//Baterry
BaterryEmpty_ = (voltage ‹ 138); // U ‹ 2.7V (5.4 / 2)
BaterryLow_ = (voltage ‹ 154); // U ‹ 3V (6 / 2) 25%
//Speed
RunCommand = (
(!(BaterryEmpty)) &&
(!(RemoteReverse)) &&
(!(Break)) &&
(!(OverLoad)) &&
(!(Charge)) &&
((Pedal && Local && Enable) || rem_fwd || rem_rew)
);
if (RemoteUsed) TaskSpeed_ = rem_speed; else TaskSpeed_ = locspeed;
if ( (Baterrylow)&&(TaskSpeed_ › LowBatSpeed) ) TaskSpeed_ = LowBatSpeed;
if (BaterryEmpty || OverLoad || Break) TaskSpeed_ = 0;
TaskSpeed = TaskSpeed_;
Stop = (CurrSpeed == 0);
//Direction
if ( ((!(Enable))&&(!(RemoteUsed))&&(Stop))||(Break) ) {RewRelay = 0; FwdRelay = 0;}
if (rem_break) Break = 1;
if (Stop)
{
if ( (!(rem_fwd))&&(!(rem_rew))&&(!(Pedal)) ) Break = 0;
if (RemoteUsed) {if (rem_rew) reverse_ = 1; else reverse_ = 0;}
else reverse_ = Reverse;
};
if ( (!(BaterryEmpty)) && ((Enable)||(RemoteUsed)) && (!(Break)) )
{
if (Reverse_) {RewRelay = 1; FwdRelay = 0;}
else {RewRelay = 0; FwdRelay = 1;}
}
if ( (!(Stop)) && ((Reverse_ && rem_fwd)||(!(Reverse_) && rem_rew)) ) RemoteReverse = 1; //reverse was called
if (Stop && RemoteReverse && (rem_fwd || rem_rew)) {RemoteReverse = 0; BackReverse = 1;} //remote button still hold
if (Stop && RemoteReverse) {RemoteReverse = 0;} //remote button released
if ( (!(rem_fwd))&&(!(rem_rew))&&(BackReverse) ) {RemoteReverse = 1; BackReverse = 0;} //back from reverse
//Turn wheel
LeftTurn = rem_left;
RightTurn = rem_right;
//Remote
RemoteUsed = rem_fwd || rem_rew;
//Protect
OverLoad_ = ( (current › OverCurrent) && (!(Teaching)) );
if ( (!(rem_fwd))&&(!(rem_rew))&&(!(Pedal))&&(Stop) ) OverLoad = 0;
//display
// Out_send();
data_out = indicates.F1;
PORTB.F3 = indicates.F2;
PORTB.F2 = indicates.F3;
PORTB.F1 = indicates.F4;
}
}
//-------------------------------------------------------------------------------
void interrupt(void)
{
if (PIR1.TMR2IF) //TMR2, speed change steps
{
//Speed
if (RunCommand)
{if (CurrSpeed‹TaskSpeed) {CurrSpeed ++; ind_inc = 1; ind_dec = 0;} else ind_inc = 0;}
{if (CurrSpeed›TaskSpeed) {CurrSpeed --; ind_dec = 1; ind_inc = 0;} else ind_dec = 0;}
if (!(RunCommand))
{if (CurrSpeed›0) {CurrSpeed --; ind_dec = 1; ind_inc = 0;} else ind_dec = 0;}
if (OverLoad || Break) CurrSpeed = 0;
if (Charge) CCPR1L = 0; else CCPR1L = CurrSpeed;
PIR1.TMR2IF = 0;
}
if (PIR1.ADIF) //ADC done, read and select ADC
{
if (ADCindex == 0)
{
current = ADRESH;
ADCON0 = 0b01001001; //on An1
}
if (ADCindex == 1)
{
voltage = ADRESH;
ADCON0 = 0b01011001; //on An3
}
if (ADCindex == 2)
{
locspeed = ADRESH;
ADCON0 = 0b01000001; //on An0
}
ADCindex++;
if (ADCindex›2) ADCindex=0;
delay_us(20);
ADCON0.GO = 1; //run ADC
PIR1.ADIF = 0;
}
if (PIR1.TMR1IF) //TMR1, timers, each 0.26 S
{
//Lost signal
RecieveTimer ++;
if (RecieveTimer ›= 5) //each 1.3 s
{
RecieveTimer = 0;
rem_left = 0;
rem_right = 0;
rem_fwd = 0;
rem_rew = 0;
rem_break = 0;
reading = 0;
}
//Baterry timers
if (BaterryEmpty_) BaterryEmptyTimer++; else BaterryEmptyTimer = 0;
if (BaterryEmptyTimer ›= 5) BaterryEmpty = 1; // 1.3 S
if (BaterryLow_) BaterryLowTimer++; else BaterryLowTimer = 0;
if (BaterryLowTimer ›= 50) BaterryLow = 1; // 13 S
//Teach
if (Bt1) TeachTimer++; else TeachTimer = 0;
if ( (Bt1)&& (TeachTimer › 12) ) Teaching = 1; // 3 sec
//Protect
if (OverLoad_) OverLoadTimer++; else OverLoadTimer = 0;
if (OverLoadTimer › 8) OverLoad = 1; // 2 sec
//
blink = ~(blink);
PIR1.TMR1IF = 0;
}
if (INTCON.T0IF) //TMR0 overflow, lost radio signal
{
b_cnt = 0;
reading = 0;
INTCON.T0IF = 0;
}
if (INTCON.INTF) //INT0, signal from radio unit
{
TMR0 = 0;
while(RX) {if (INTCON.T0IF) break;}
tiks = TMR0;
TMR0 = 0;
//START sign, 200 tick's
if (tiks ›= 175 && tiks ‹ 225)
{
b_cnt = 0;
reading = 1;
addr = speed = comm = summ = 0;
}
//1, 100 tick's
if (tiks ›= 75 && tiks ‹ 125)
{
b_cnt = b_cnt + 1; //increate bit counter
if (b_cnt ‹ 9) addr = (addr ‹‹ 1) + 1; //address
if (b_cnt ›= 9 && b_cnt ‹ 17) speed = (speed ‹‹ 1) + 1; //address_
if (b_cnt ›= 16 && b_cnt ‹ 25) comm = (comm ‹‹ 1) + 1; //command
if (b_cnt ›= 24) summ = (summ ‹‹ 1) + 1; //command_
}
//0, 50 tick's
if (tiks ›= 25 && tiks ‹ 75)
{
b_cnt = b_cnt + 1; //increate bit counter
if (b_cnt ‹ 9) addr = (addr ‹‹ 1); //address
if (b_cnt ›= 9 && b_cnt ‹ 17) speed = (speed ‹‹ 1); //address_
if (b_cnt ›= 16 && b_cnt ‹ 25) comm = (comm ‹‹ 1); //command
if (b_cnt ›= 24) summ = (summ ‹‹ 1); //command_
}
if (b_cnt == 32) //32 bits received
{
reading = 0;
summ_ = addr+speed+comm;
if ( (addr == 32)&&(summ_ == summ) )
{
RecieveTimer = 0;
rem_left = (~(comm.F0)) && (comm.F1);
rem_right = (~(comm.F1)) && (comm.F0);
rem_fwd = (~(comm.F2)) && (comm.F3);
rem_rew = (~(comm.F3)) && (comm.F2);
rem_break = (~(comm.F4)) || ((~(comm.F2)) && (~(comm.F3)));
rem_speed = speed;
rem_speed = rem_speed ‹‹ 4;
}
else
{
}
b_cnt = 0;
}
INTCON.INTF = 0;
}
} |
В протеусе все работало, в реальности - выявились некоторые проблемы:
1. Передатчик не всегда корректно определяет положение потенциометра и напряжение батарей. Может, неправильная задержка времени?
2. Логический "0" на А4 в передатчике поддерживает питание включенным около 30сек после отпускания кнопки. но работает не стабильно, при установке "1", транзистор закрывается, напряжение проседает, и контроллер опять открывает транзистор. Может стоит добавить НПН транзистор и поменять включающий сигнал на "1" ?
3. В приемнике: микросхема 74HC595 не заработала. пробовал 2 разных штуки. Пока она установлена, меандр на выводе С5 не превышает 2 вольт. Сам вывод Shift м.с. на общий не звонится. Пробовал делать задержки в разумных значениях, не помогло. Светодиоды временно перекинул на свободные выводы МК (в программе - учтено). С микросхемой - буду разбираться на макетке, хотя интересно, она же должна тянуть намного больше 4 МГц.
4. И еще - очень не стабильная работа радиоуправления. Модули - дешевые, на 433 МГц. До этого не раз использовал их с аналогичным алгоритмом, работали на более 50 метров, никогда проблем не было.
Попробую после приема старт сигнала выключать прерывания периферии и включать обратно после приема команды или пропажи радиосигнала. Или стоит вынести приемник дальше от платы?
Буду благодарен за конструктивную критику
|
|
|
|
29.09.2016, 14:30
|
|
Прописка
Регистрация: 04.03.2005
Адрес: Альметьевск
Сообщений: 141
Сказал спасибо: 571
Сказали Спасибо 58 раз(а) в 30 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Сообщение от -vitalik-
|
2. Логический "0" на А4 в передатчике поддерживает питание включенным около 30сек после отпускания кнопки. но работает не стабильно, при установке "1", транзистор закрывается, напряжение проседает, и контроллер опять открывает транзистор. Может стоит добавить НПН транзистор и поменять включающий сигнал на "1" ?
|
Повторное включение может происходить через подтягивающие резисторы кнопок при выключении питания контролера (при снижении питания контролера ниже 3.3В - контролер еще работает, а открывающее напряжение на базе VT12 уже появляется). Поэтому выход А4 необходимо отключить от кнопок управления, а включать отдельной кнопкой.
Сообщение от -vitalik-
|
4. И еще - очень не стабильная работа радиоуправления.
|
Возможны помехи от ШИМа, движков и т. д.
У меня хорошо работает шифратор-дешифратор по протоколу из журнала РАДИО_№8 за 2008г. стр.44. Правда увеличил число аналоговых каналов до четырех, а дискретных до восьми.
Последний раз редактировалось ovpetr; 29.09.2016 в 14:55.
|
|
|
|
29.09.2016, 16:46
|
|
Вид на жительство
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,407
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Сообщение от ovpetr
|
...
У меня хорошо работает шифратор-дешифратор по протоколу из журнала РАДИО_№8 за 2008г. стр.44. ..
|
Точно ли №8 за 2008 ? нету там такой статьи
UPD: нашел, это в журнале за 2006 год. Но там не описаны временные интервалы посылок
Последний раз редактировалось -vitalik-; 30.09.2016 в 11:30.
|
|
|
|
01.10.2016, 00:43
|
|
Прописка
Регистрация: 04.03.2005
Адрес: Альметьевск
Сообщений: 141
Сказал спасибо: 571
Сказали Спасибо 58 раз(а) в 30 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Сообщение от -vitalik-
|
Точно ли №8 за 2008 ? нету там такой статьи
UPD: нашел, это в журнале за 2006 год. Но там не описаны временные интервалы посылок
|
Извините. Ошибся с годом. конечно №8 за 2006г. А временные интервалы пришлось вычислять из программы на ASMe которая находится на FTP сервере журнала. Если интересно, могу поискать то что у меня получилось. Должно где то остаться и комментировано, должно быть, по подробней.
|
|
|
|
03.10.2016, 10:28
|
|
Вид на жительство
Регистрация: 29.03.2009
Адрес: Бровары, Украина
Сообщений: 326
Сказал спасибо: 1,407
Сказали Спасибо 82 раз(а) в 46 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
Сообщение от ovpetr
|
...Если интересно, могу поискать то что у меня получилось. Должно где то остаться и комментировано, должно быть, по подробней.
|
Буду очень благодарен
|
|
|
|
03.10.2016, 19:30
|
|
Прописка
Регистрация: 04.03.2005
Адрес: Альметьевск
Сообщений: 141
Сказал спасибо: 571
Сказали Спасибо 58 раз(а) в 30 сообщении(ях)
|
Re: Детский электромобиль и доводка его до ума
По ссылке два АСМ файла - шифратор и дешифратор команд радиоуправления. На выходе дешифратора 4 аналоговых канала с РРМ управлением и 4 дискретных канала. Программы взяты из опубликованной в журнале Радио№8_2006 статьи С. Духовникова "Шифратор и дешифратор пропорционального управления" немного доработанных под свои нужды.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:31.
|
|