Страница 18 из 173
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 13:54:02
slav0n
и еще по поводу схемы.
у меня все резисторы в RC фильтрах 150 Ом.
С11, С12 вообще выкинул, с ними вроде хуже
а если их нет, то и R4, R5 как-бы ни к селу ни к городу.
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 19:08:47
sergey777.68
я тут немного исходник поковырял, собрал прошивку что изменилось.

Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 20:41:31
slav0n
попробуй, проверь
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 21:12:35
Neekeetos
slav0n писал(а):проверь
Надпись на заставке поменяна и нифига не меряет. Вполне по пионерски

, в планах наверно вообще все надписи переделать?
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 21:53:20
slav0n
Neekeetos писал(а):и нифига не меряет
странно... а у меня меряет...
может я не ту прошивку выложил
ты кондеры пробовал удалять?
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 22:12:48
Alex62
Ну а после кондеров надо попробовать резисторы поудалять. Ну и дальше по схеме...... Неимоверный простор для творчества.

Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 22:18:10
slav0n
Neekeetos писал(а):в планах наверно вообще все надписи переделать?
хм... с таким подходом нафига же тогда вообще было сорцы выкладывать?
вот правленый мной кусок.
и я думаю его еще можно оптимизировать в лучшую сторону
Код: Выделить всё
GPIOA->BSRR = GPIO_Pin_15; // BACKLIGHT ON
lcd_init();
lcd_clear();
lcd_gotoxy(0,0);lcd_putstr(" RLC ver 6.03 ");
lcd_gotoxy(0,2);lcd_putstr(" Neekeetos ");
lcd_gotoxy(0,3);lcd_putstr(" @yahoo.com ");
lcd_gotoxy(0,4);lcd_putstr(" big thanks to ");
lcd_gotoxy(0,5);lcd_putstr(" TESLight, Link ");
lcd_gotoxy(0,7);lcd_putstr(" play by slav0n");
// while( buttons() != 0 );// wait BUTTON release
/*
if( (cstatus & 0xFFFFFF00) != 0x80000000 )
{
cstatus = 0x80000000;findex = 0;
}
*/
if(findex <0 || findex >= FCNT ) findex = 0;
freq = flist[findex];
fillSine(freq);
measure(&Z,16);
lcd_clear();
lcd_gotoxy(0,1);lcd_putstr("________________");
lcd_gotoxy(0,6);lcd_putstr("----------------");
R.Re = SHUNT;
R.Im = 0;
while (1)
{
//----------------------------------------------------------------------------
btn = buttons();
if( btn & PWR_BTN ) bl_status = !bl_status; //pwr/backligt
if( btn & SP_BTN ) rsrp = ! rsrp; //ser/par
if( btn & REL_BTN ) rel = !rel;
if( btn & SP_BTNL )
{
findex++;
if(findex>= FCNT ) findex = 0;
freq = flist[findex];
fillSine(freq);
rsrp = ! rsrp;
}
if( btn & REL_BTNL )
{
calibrate();
rel =0;
cstatus |= (1<<findex);
}
if( btn & PWR_BTNL )
{
lcd_clear();
lcd_gotoxy(3*6,4);print(" Bye Bye..");
measure(&Z,10);
powerOff();
}
if(bl_status)GPIOA->BSRR = GPIO_Pin_15; // BACKLIGHT ON
else GPIOA->BRR = GPIO_Pin_15; // BACKLIGHT OFF
//----------------------------------------------------------------------------
lcd_gotoxy(0,0);lcd_putstr(" ");
sputdec(s,freq);
lcd_gotoxy(0,0);lcd_putstr(s);lcd_putstr("k ");
lcd_gotoxy(13*6,0);
if(rsrp)lcd_putstr("PAR");
else lcd_putstr("SER");
lcd_gotoxy(9*6,0);
if(rel) lcd_putstr(">.<");
else lcd_putstr(" ");
lcd_gotoxy(6*5,0);
if(cstatus & (1<<findex)) lcd_putstr("CAL");
else lcd_putstr("---");
//---------------------------------------------------------------------------
measure(&Z,1);
// zx = zom * (zsm-zxm)/(zxm-zom)
if( (cstatus & (1<<findex)))
{
cplx tmp1,tmp2;
tmp1.Re = Zs[findex].Re - Z.Re;
tmp1.Im = Zs[findex].Im - Z.Im;
tmp2.Re = Zo[findex].Re;
tmp2.Im = Zo[findex].Im;
cplxMul(&tmp2,&tmp1);
tmp1.Re = Z.Re - Zo[findex].Re;
tmp1.Im = Z.Im - Zo[findex].Im;
cplxDiv(&tmp2,&tmp1);
Z.Re = tmp2.Re;
Z.Im = tmp2.Im;
}
Z.Re = filter(0,Z.Re);
Z.Im = filter(1,Z.Im);
if(rel) {
Z.Re -= base.Re;
Z.Im -= base.Im;
}else{
base.Re= Z.Re ;
base.Im = Z.Im;
}
float ls = Z.Im/6.283185307/(freq*1000.0);
float cs = -1/6.283185307/(freq*1000.0)/Z.Im;
float d = Z.Re/Z.Im;
float d2 = d*d;
float q = 1/d;
if(rsrp) //PAR
{
ls = ls*(1+d2);
cs = cs/(1+d2);
Z.Re = Z.Re*(1.0+d2)/d2;
}
round++;
if(round>2)
{
round = 0;
printFloat(12,2,Z.Re,"Ohm");
// lcd_gotoxy(0,2);lcd_putstr(" ");
lcd_gotoxy(0,3);lcd_putstr("R>");
if(Z.Im > 0)
{
printFloat(12,4,ls,"H ");
// lcd_gotoxy(0,4);lcd_putstr(" ");
lcd_gotoxy(0,5);lcd_putstr("L>");
}else{
printFloat(12,4,cs,"F ");
// lcd_gotoxy(0,4);lcd_putstr(" ");
lcd_gotoxy(0,5);lcd_putstr("C>");
}
int qq = 10000*( 1.0+absolute(d)); if(qq >19999) qq = 19999;
sputdec(s,qq);
lcd_gotoxy(0,7);lcd_putstr("D .");lcd_putstr(&s[1]);lcd_putstr(" ");
qq = absolute(q); if(qq >9999) qq = 9999;
sputdec(s,qq);
lcd_gotoxy(8*6,7);lcd_putstr("Q ");lcd_putstr(s);lcd_putstr(" ");
// lcd_gotoxy(0,1);lcd_putstr("________________");
// lcd_gotoxy(0,6);lcd_putstr("----------------");
}
}
}
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 22:28:02
Neekeetos
slav0n писал(а):ты кондеры пробовал удалять?
Они там с определенной целью стоят, например верхние частоты перестают нормально работать без них.
slav0n писал(а):хм... с таким подходом нафига же тогда вообще было сорцы выкладывать?
А какой подход? Я полагаю если человек вместо ответа на вопрос зачем менял начинает мычать невнятно и выкладывать исходники типа для сравнения, то это не дело и по большому счету не стоило ничего менять если результаты не поддаются описанию. Исходники выложены для тех , кто хочет что то улучшить или добавить, например использовать свой дисплей, сделать более удобный интерфейс ну и все в том же духе.
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 22:48:26
slav0n
Neekeetos писал(а):например верхние частоты перестают нормально работать без них.
возможно, но кто ими пользуется?
Neekeetos писал(а):вместо ответа на вопрос зачем менял начинает мычать невнятно и выкладывать исходники типа для сравнения
именно для сравнения, чтобы без невнятного словоблудия
Neekeetos писал(а):Исходники выложены для тех , кто хочет что то улучшить или добавить, например использовать свой дисплей, сделать более удобный интерфейс ну и все в том же духе.
наивно
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 22:59:30
Neekeetos
slav0n писал(а):именно для сравнения, чтобы без невнятного словоблудия
Я сходу вижу только то что там питание теперь не включается нормально поскольку строка нужная закоменчена, остальные "изменения" как то даже и не интересно глядеть. Зачем говнокодить и потом еще и выкладывать исходник на форум?
slav0n писал(а):наивно
А для чего они еще могут понадобиться? заменить надпись на экране на свое имя? Забор для этого есть.
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 23:23:38
slav0n
Neekeetos писал(а):питание теперь не включается нормально поскольку строка нужная закоменчена,
странно... вот сижу уже полдня включаю - всё нормально включается... что не так?
Neekeetos писал(а):остальные "изменения" как то даже и не интересно глядеть.
ну звиняй, если не угодил.
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 23:24:56
ozzy
о, теперь я понимаю почему большинство отказывается давать исходники,
возможно, но кто ими пользуется?
весь мир пользуется, а тут пуп земли нашелся
и я думаю его еще можно оптимизировать в лучшую сторону
ждем с нетерпением новых перлов
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Пт мар 07, 2014 23:35:00
slav0n
ozzy писал(а):о, теперь я понимаю почему
я тоже тебя понял
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Сб мар 08, 2014 10:57:18
slav0n
и ещё я бы рекомендовал исключить лишнюю обработку в главном цикле
примерно таким способом
Код: Выделить всё
static int oldbtn =-1;
while (1)
{
btn = buttons();
if(btn == oldbtn)goto M1;
else oldbtn = btn;
if( btn & PWR_BTN ) bl_status = !bl_status; //pwr/backligt
if( btn & SP_BTN ) rsrp = ! rsrp; //ser/par
if( btn & REL_BTN ) rel = !rel;
if( btn & SP_BTNL )
{
*
*
*
M1:
measure(&Z,1);
// zx = zom * (zsm-zxm)/(zxm-zom)
if( (cstatus & (1<<findex)))
{
*
*
*
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Сб мар 08, 2014 11:02:02
Scelikr
А исходники 6.03t можно глянуть?
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Сб мар 08, 2014 11:19:50
slav0n
Neekeetos писал(а):по большому счету не стоило ничего менять если результаты не поддаются описанию.
поддаются.
В результате изменений резко улучшается стабильность показаний.
Вероятно потому что меньше дёргается шина дисплея.
тут ещё обнаружилось что реальные частоты измерения не соответствуют программным
у меня почему-то меряется вот так
1.12
10.1
28.2
55.3
110
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Сб мар 08, 2014 13:39:15
Neekeetos
Scelikr писал(а):А исходники 6.03t можно глянуть?
Нету их, тестовую прошивку я постоянно меняю, сейчас она вообще без экрана с выводом в компорт сырых данных. Если есть какой то особый интерес именно в этом, напиши в личку. Именно в т версии я переделал прерывание цап и поменял тайминги с тем чтобы он меньше влиял на измерения.
slav0n писал(а):тут ещё обнаружилось что реальные частоты измерения не соответствуют программным
На моей прошивке то? Или вновь приобретенный косяк?
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Сб мар 08, 2014 14:03:03
slav0n
Neekeetos писал(а):На моей прошивке то? Или вновь приобретенный косяк?
на твоих всё нормально.
Может в выложенных сорцах с тактированием ЦАПа что-то не так?
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Сб мар 08, 2014 14:51:23
Neekeetos
slav0n писал(а):Может в выложенных сорцах с тактированием ЦАПа что-то не так?
Обрадовать не могу, исходники именно те из которых собрана 603. Может проц неверно тактироваться если ты не смог использовать стартап файл из моего архива, либо из за компилятора обработчики прерываний не успевают, там запас небольшой по времени, процентов 30.
Re: Измеритель всего, что попадется под руку (RLC-метр)
Добавлено: Сб мар 08, 2014 16:47:55
slav0n
Neekeetos писал(а):либо из за компилятора обработчики прерываний не успевают
но ведь у меня реальная частота выше а не ниже...
Ладно, поиграю с регистрами таймера.
после игр, с такой записью частоты попадают