Форум на Kuban.ru (http://forums.kuban.ru/)
-   Радиолюбитель (http://forums.kuban.ru/f1060/)
-   -   Разработать контроллер - источник импульсов (http://forums.kuban.ru/f1060/razrabotat-_kontroller_-_istochnik_impul-sov-6141414.html)

_algent 30.09.2014 19:46

Разработать контроллер - источник импульсов
 
Хороший знакомый, и кстати, хороший заказчик, попросил найти толкового исполнителя.
контроллер должен выдавать две импульсные последовательности, сдвиг между ними всегда в пол-периода, в остальном они идентичны.
Также, должно быть 4 кнопки: 2 кнопки увеличивают/уменьшают период импульсов. От 0.2мс, до 0.006мс. Другие 2 кнопки, увеличивают/уменьшают длительность импульсов, От 0.006мс, до 0.1мс. Длительность меньше чем пол-периода. И наверно понадобятся кнопки для более крупных шагов, ну это обсудите по ходу. Это всё:))). Пишите предложения тут, я дам заказчику ссылку на тему.

8pin 30.09.2014 21:34

типа того, что ли -
[url=http://obrazki.elektroda.pl/9190634700_1412101997.gif][img]http://obrazki.elektroda.pl/9190634700_1412101997_thumb.jpg[/img][/url]

_algent 30.09.2014 23:49

1-8pin > Думаю это примерно то, что нужно, не знаю нужны ли индикаторы. Удачно вам обоим договориться!:)

8pin 01.10.2014 06:53

я всего лишь полюбопытствовал, делать времени нет.

8pin 01.10.2014 10:45

вообще по описанию выходной сигнал должен быть похож на то что генерируется копеечным шим-контроллером наподобие TL494.

_algent 02.10.2014 02:59

Народ, не забывайте чистить папку с личными сообщениями, при переполнении, сообщения не доходят.
[quote=8pin;36675454]наподобие TL494[/quote]
не помню даташит, но если там есть RC цепи по обоим параметрам, то красиво:). Заказчик что-то пропал:), может уже не надо, может позже появится.

8pin 02.10.2014 09:54

да пофиг на заказчика, при всём уважении ) сколько там такая разработка может стоить - 500 рублей? больше мороки.

частоту там можно регулировать изменяя R в RC а скважность напряжением на компараторе. точность только не очень. в принципе схема на мк не намного сложнее -
[url=http://obrazki.elektroda.pl/7968419900_1412232764.gif][img]http://obrazki.elektroda.pl/7968419900_1412232764_thumb.jpg[/img][/url][url=http://obrazki.elektroda.pl/4846105700_1412232798.gif][img]http://obrazki.elektroda.pl/4846105700_1412232798_thumb.jpg[/img][/url]
[code]
/*****************************************************
CVAVR V2.05

Chip type : ATmega8A
AVR Core Clock frequency: 2 MHz
*****************************************************/

#include <mega8.h>

#define A PORTC.2
#define B PORTC.3
#define C PORTC.4
#define D PORTC.5
#define E PORTD.0
#define F PORTD.1
#define G PORTD.2
#define DP PORTD.3

#define A0 PORTD.4
#define A1 PORTD.5
#define A2 PORTD.6

#define B0 PORTD.7
#define B1 PORTB.0
#define B2 PORTB.3

#define key_F_up PINB.5
#define key_F_dn PINB.4
#define key_D_up PINC.1
#define key_D_dn PINC.0

char d_buffer[6]={1,1,1,2,2,2**;

enum btn_states
{b_prs, b_rls, b_hold** F_up, F_dn, D_up, D_dn;

unsigned int tmr[5];

unsigned char fr, dr;
eeprom unsigned char efr, edr;

void gpio_init ()
**
DDRB = 0b11001111;
PORTB = 0b00110000;

DDRD = 0b11111111;
PORTD = 0b00000000;

DDRC = 0b11111100;
PORTC = 0b00000011;
**

void T0_init ()
**
TCCR0=0x05; //1,953kHz
TIMSK=1<<TOIE0;
**

void T1_init ()
**
unsigned int x;

TCCR1A = 1<<COM1A1|1<<COM1B1|1<<COM1B0;
TCCR1B = 1<<CS10|1<<WGM13; // no presc, icr1-top

ICR1 = 200;
x=ICR1/2;
OCR1A = ICR1-x;
OCR1B = x;

**

void convert_data_a (unsigned int x)
**
char k;
for (k=0;k<3;k++)
**
d_buffer[k]=x%10;
x/=10;
**

**
void convert_data_b (unsigned int y)
**
char k;

for (k=3;k<6;k++)
**
d_buffer[k]=y%10;
y/=10;
**
**

void display_data ()
**
static char d_cnt=0;

(d_cnt)?(d_cnt--):(d_cnt = 5);
A0=A1=A2=B0=B1=B2=0; DP=1;

switch (d_buffer[d_cnt])
**

case 0: A=0; B=0; C=0; D=0; E=0; F=0; G=1; break;
case 1: A=1; B=0; C=0; D=1; E=1; F=1; G=1; break;
case 2: A=0; B=0; C=1; D=0; E=0; F=1; G=0; break;
case 3: A=0; B=0; C=0; D=0; E=1; F=1; G=0; break;
case 4: A=1; B=0; C=0; D=1; E=1; F=0; G=0; break;
case 5: A=0; B=1; C=0; D=0; E=1; F=0; G=0; break;
case 6: A=0; B=1; C=0; D=0; E=0; F=0; G=0; break;
case 7: A=0; B=0; C=0; D=1; E=1; F=1; G=1; break;
case 8: A=0; B=0; C=0; D=0; E=0; F=0; G=0; break;
case 9: A=0; B=0; C=0; D=0; E=1; F=0; G=0; break;
case 10: A=1; B=1; C=1; D=1; E=1; F=1; G=1; break;
case 11: A=1; B=1; C=1; D=0; E=1; F=1; G=1; break; //_
default: A=1; B=1; C=1; D=1; E=1; F=1; G=0; break; //-
**

switch (d_cnt)
**
case 0: A0=1; break;
case 1: A1=1; break;
case 2: A2=1; break;
case 3: B0=1; break;
case 4: B1=1; break;
case 5: B2=1; break;

default: break;
**
**

void scan_keys ()
**
#define lp 50
#define lh 15

static unsigned char count[8];

if (key_F_dn)** F_dn = b_rls;**
if (key_F_up)** F_up = b_rls;**
if (key_D_dn)** D_dn = b_rls;**
if (key_D_up)** D_up = b_rls;**

if (!key_F_dn) {count[0]++; **
else {count[0]=count[4] = 0;**
if (!key_F_up) {count[1]++; **
else {count[1]=count[5] = 0;**
if (!key_D_dn) {count[2]++; **
else {count[2]=count[6] = 0;**
if (!key_D_up) {count[3]++; **
else {count[3]=count[7] = 0;**


if ((count[0] > lp)&&(F_dn != b_hold)) {F_dn = b_prs; count[0] = 0; count[4]++;**
if ((count[1] > lp)&&(F_up != b_hold)) {F_up = b_prs; count[1] = 0; count[5]++;**
if ((count[2] > lp)&&(D_dn != b_hold)) {D_dn = b_prs; count[2] = 0; count[6]++;**
if ((count[3] > lp)&&(D_up != b_hold)) {D_up = b_prs; count[3] = 0; count[7]++;**

if ((count[4] > lh)&&(F_dn == b_prs)) {F_dn = b_hold; count[4] = 0;**
if ((count[5] > lh)&&(F_up == b_prs)) {F_up = b_hold; count[5] = 0;**
if ((count[6] > lh)&&(D_dn == b_prs)) {D_dn = b_hold; count[6] = 0;**
if ((count[7] > lh)&&(D_up == b_prs)) {D_up = b_hold; count[7] = 0;**
**

interrupt [TIM0_OVF] void t0_ovf_isr()
**
char i;

for(i=5;i;i--)
**
if(tmr[i-1])tmr[i-1]--;
**

**

void afr();

void main(void)
**
gpio_init();
T0_init();
T1_init();



if((efr==0xff)){efr = 200; edr=efr/2;**
fr=efr;
dr=edr;

#asm("sei")
while (1)
**

scan_keys();
display_data();
convert_data_a(dr);
convert_data_b(fr);
afr();





**
**

void afr()
**
static bit trg0=0, trg1=0, trg2=0, trg3=0;
static bit trg4=0;

if(F_up==b_rls){trg0--;**
if(F_dn==b_rls){trg1--;**
if(D_up==b_rls){trg2--;**
if(D_dn==b_rls){trg3--;**

if((F_up==b_prs)&&(!trg0)){trg0++; if(fr<200)fr++;**
if((F_dn==b_prs)&&(!trg1)){trg1++; if(fr>6)fr--;**
if((D_up==b_prs)&&(!trg2)){trg2++; if(dr<100)dr++;**
if((D_dn==b_prs)&&(!trg3)){trg3++; if(dr>3)dr--;**

if((F_up==b_hold)&&(!tmr[0])){tmr[0]=2; if(fr<200-10)fr+=10; else fr=200;**
if((F_dn==b_hold)&&(!tmr[1])){tmr[1]=2; if(fr>6+10)fr-=10; else fr=6;**
if((D_up==b_hold)&&(!tmr[2])){tmr[2]=2; if(dr<100-10)dr+=10; else dr=100;**
if((D_dn==b_hold)&&(!tmr[3])){tmr[3]=2; if(dr>3+10)dr-=10; else dr=3;**

ICR1 = fr;
if(dr<fr/2){OCR1A = dr; OCR1B = ICR1-dr;**
else {dr= ICR1/2; OCR1A=OCR1B = dr;**

if(((efr!=fr)||(edr!=dr))&&(!trg4)){trg4=1; tmr[4]=50;**
if((trg4)&&(!tmr[4])) {trg4=0; efr=fr; edr=dr;**


**
[/code]

fanatnascar 02.10.2014 22:52

Сколько тысяч девайсов надо?

Ёроол Гуй 03.10.2014 07:07

7-Фанат NASCAR > не тысяч, а миллионов. Мелко мыслишь.

8pin 03.10.2014 08:15

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

FOT2 05.10.2014 12:30

Автор, вы нас пришли спросить сколько бы мы запросили денег за такую разработку? Далее вы говорите своему заказчику, что вот народ говорит, что это стоит столько то, а я с вас беру на 10% меньше и продаёте свою разработку [url]http://bortsoff.narod.ru/Gen.htm[/url] не за 1000 рублей, а за 10000 к примеру. Ну это по русски. Пропиарились оч хорошо.

bolleg 05.10.2014 17:59

В общем я заказчик. Понадобился такой контроллер для исследований... На логике сложно в регулировании и оценке.. поэтому спросил можно ли сваять такое за недорого. Можно без индикации. А Вас тут понесло...по русски

Директор Правды 05.10.2014 19:20

11-bolleg > Исследования - это интересно! Можно подробности?

bolleg 05.10.2014 20:31

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

fanatnascar 06.10.2014 00:09

13-bolleg >если исследования, быстренько освойте ардуино, и мини прикупите за полтыщи. Пригодицо в других нетипичных задачах.
Сложного ничего.

fanatnascar 06.10.2014 00:11

Ну и бребоард с проводками разными заодно

_algent 06.10.2014 02:37

FOT2, ну вот:(.
А я искренне думал, что как действующий разработчик, я абсолютный чемпион по скрытности и незаметности:). Уж если и обмолвлюсь, то дважды косвенно, так что поймёт лишь тот, кто итак уже знает. А оно вот значит как... Эх:((.

8pin 06.10.2014 09:09

лучше купить лазерный принтер за две тыщщи, чем ардуину с проводками.
[url=http://obrazki.elektroda.pl/7932844800_1412575691.jpg][img]http://obrazki.elektroda.pl/7932844800_1412575691_thumb.jpg[/img][/url]

Директор Правды 06.10.2014 13:36

17-8pin > Фу, как грубо )))

8pin 06.10.2014 15:04

[quote]как грубо[/quote]
каждому, как известно, своё.
кстати - архив с прошивкой, кодом и проектом proteus [url=http://file.uacode.com/G/3892]pgen.rar[/url]
- возможно кому нибудь пригодится.

fanatnascar 07.10.2014 00:28

19-8pin >лучше устроиться работать высокооплачиваемым футболистом)
Принтер плесенью покрылся. Не в нашей стране..

8pin 07.10.2014 06:01

футбол это скучно.

micro51 20.10.2014 05:21

Если еще актуально, можем обсудить

bolleg 22.10.2014 21:51

пиши мне на почту, созвонимся... актуально пока.
[email]bolleg@bk.ru[/email]


Текущее время: 02:01. Часовой пояс GMT +3.