Страница 6 из 11
Добавлено: Вт июл 07, 2009 21:59:10
larik
на рынке SMD да еше и 1% ... хм где такой не подскажеш? а то я все с материнок колупаю
Добавлено: Вт июл 07, 2009 22:06:36
LINKS_234
это "великий" Минск - столица "великой" Беларуси . вот так на рынок приедешь - и понимаешь что живёшь не в столице , а в большом колхозе.
а что , на матерях бывают 1% ?

я бы сам ковырял , если бы был фен

а паяльником очень неудобно . надо сразу два в две руки

а на транзисторы вообще три . два в руки и один в рот

Добавлено: Вт июл 07, 2009 22:13:45
larik
а зачем фен то ? обычный паяльник и пинцет потоньше и все паяльник на 20-25 ват, поже могу фоткнуть... а нашет смд то проверят тестером 9,98 кОм это даже меньще 1%, причем почти все резюки точные это как не как мать плата всетаки =))))
P/S как там дела с прошивкой

амперность будеш поправлять
Добавлено: Вт июл 07, 2009 23:59:32
LINKS_234
я не знаю как паяльником и пинцетом отпаивать сразу два вывода быстро , посему и хочу фен

прошивку сейчас и гляну - всёравно делать нечего
текс , а кто там кричал что под винду прог нету ? в исходниках всё валяется .
коменты разработчика рулят в некотором смысле :
Added R36 (5K6) for protection against current peaks higher
than 10A (can not happen under normal conditions but is possible
if the power transistor is overheated due to bad cooling and burns.
The resistor will save the live of the microcontroller).

может защиту какую-либо другую ввести ... этот резак помехи только создаёт. и номинал "слегка" завышен

даже если пробьёт питающее напряжение на ногу , то для тока в 20мА необходим резак 1к6 .
думаю тут можно втыкнуть датчик температуры на радиатор и следить за нагревом. при превышении - вырубать транзистор

Добавлено: Ср июл 08, 2009 00:33:46
LINKS_234
касательно шунта . в исходнике торчит следующее :
Код: Выделить всё
// convert voltage values to adc values, disp=10 is 1.0V
static int disp_u_to_adc(int disp){
return((int)(disp * 102.3) / (ADC_REF * U_DIVIDER));
}
// calculate the needed adc offset for voltage drop on the
// current measurement shunt (the shunt has about 0.5 Ohm =1/2 Ohm)
static int disp_i_to_u_adc_offset(int disp){
return(disp_u_to_adc(disp/20));
}
// convert adc values to voltage values, disp=10 is 1.0V
// disp_i_val is needed to calculate the offset for the voltage drop over
// the current measurement shunt
static int adc_u_to_disp(int adcunits,int disp_i_val){
int adcdrop;
adcdrop=disp_i_to_u_adc_offset(disp_i_val);
if (adcunits < adcdrop){
return(0);
}
adcunits=adcunits-adcdrop;
return((int)(((adcunits /102.3)* ADC_REF * U_DIVIDER)+0.6));
насколько я вижу поправки с учётом падения на шунте введены. сейчас пока туго соображаю в чужом коде , но , возможно , завтра покопаюсь по-лучше. особенно в формулах.
Добавлено: Ср июл 08, 2009 00:48:58
larik
LINKS_234 писал(а):
думаю тут можно втыкнуть датчик температуры на радиатор и следить за нагревом. при превышении - вырубать транзистор

мне кажется лучше еше при этом следить и за вентилятором (эт конеш может и не у всех) типо ШИМ контроллера, потомучто перегреватся будет он часто.
второй день гоняю и замечаю что как то тормознуто работает, мож конеш не привычно по сравнению от наших советских лабораторников Б5-45, там светодиодные стоят, жалко у мя они 50 V 0.5A поэтому и пришлось этот своять
Добавлено: Ср июл 08, 2009 01:04:13
LINKS_234
у него задержки приличные стоят на опрос клавиатуры. в основном цикле. там же и вывод с установкой значения на ЦАП. думаю надо эти куски перекинуть на прерывание по таймеру.
Код: Выделить всё
if (check_buttons()==0){
// no buttons pressed
delay_ms(100);
bpress=0;
check_i2c_interface();
check_buttons();
delay_ms(150);
дальше идёт проверка на зажатие клавиши.
по-моему код не очень удачный . особенно с задержками и в основном цикле.
тут есть решения - если не нужен I2C от компа , то его код полностью выкинуть. Нажатие кнопок проверять с максимальной частотой , с дребезгом бороться в железе , на длинное нажатие заводить таймер , по прерыванию которого запускать быстрый перебор, если кнопка всё ещё нажата. в этом случае частота обновления и установка значений будут максимально приближены к АЦП преобразованиям.
по току пока ничего не могу сказать - надо вживую проверять и корректировать , т.к. поправка вроде введена.
Добавлено: Ср июл 08, 2009 02:56:25
larik
ну мне пока что связь с компом не нужна, да и не разобрался я чето где и как прогу то брать, а вот скорость обработки хотелось бы повысить
по току- а пожет чето с резюком пошаманить, у мя стоит цепочка из двух 0.25 и как там написанно 1% погрешности, при том что R36 равен 0
Добавлено: Ср июл 08, 2009 13:50:12
LINKS_234
собственно всё правильно . R36 защитный . измерительный - 0.5 Ом .
прогу тут - digitaldcpower-0.4.9\other_OS\win\i2ctalk.exe
работает с коммандной строкой.
i2c_rs232_pintest.exe - для проверки com-порта . устанавливает на двух ногах порта по-очереди единицы или нули на 5 сек.
Добавлено: Ср июл 08, 2009 15:04:07
larik
ну командная строка эт не то... вот еслиб с каким нибудь интерфейсом да еше и с графиками

Добавлено: Ср июл 08, 2009 18:19:29
LINKS_234
а вот графики уже нахрена ?

тем более что лабораторник только принимает команды.
Добавлено: Ср июл 08, 2009 18:24:31
tipman
LINKS_234 писал(а):а вот графики уже нахрена ?

тем более что лабораторник только принимает команды.
команды принимает, в соответствии со спецификацией i2c, ведущий то один, а вот на команды данные выдаёт, и в описалове на прогу по i2c
# set Imax to 0.20A:
i2ctalk i=20
#
get current I value:
i2ctalk i
всё есть...
Добавлено: Ср июл 08, 2009 18:27:51
LINKS_234
значит я хреново смотрел исходники

Добавлено: Ср июл 08, 2009 18:40:19
tipman
судя по приведённому коду корректировки падения на шунте действительно должно учитываться, но в результате видим иное, значит где то косяк.
знаний хватает и в коде поковыряться и графики с i2c порисовать в GUI но нет вообще времени сейчас, хотя очень хочется, но за темой я слежу, если что, помочь а уж тем более покритиковать

....
Добавлено: Ср июл 08, 2009 20:28:02
LINKS_234
у автора не очень уж удачно сделан опрос клавиатуры , при котором МК опрашивает клавиатуру и гонит данные на ЖКИ по одним линиям. не совсем то , чего хотелось . задержки там стоят скорей всего на ожидание перед проверкой на длинное нажатие.
Добавлено: Ср июл 08, 2009 21:28:58
LINKS_234
вопрос к собравшим :
показания вольтметра без нагрузки правильные ? если тупо подобрать по прибору R7 и R8 .
просто меня смущает очень такие строки :
Код: Выделить всё
static int disp_u_to_adc(int disp){
return((int)(disp * 102.3) / (ADC_REF * U_DIVIDER))
и
Код: Выделить всё
// the divider R7/R8 [(R8+R7)/R8], you can calibrate here the voltmeter:
#define U_DIVIDER 11.35
во-первых 102.3 - насколько я помню должно быть 102.4
во-вторых U_DIVIDER какой-то странный . и непонятно какую формулу брать . по логике вещей это делитель напряжения. считать его надо так - R7/R8 для обычной версии . при этом получится 10 . если считать по формуле в скобках , то получится 11 , но никак не 11.35 . для варианта 30В получится 12.2 и 13.2 .
Добавлено: Ср июл 08, 2009 21:50:52
tipman
у меня с делителем всё ок
R7=10к, R8=988, исходник перекомпилил в своё время, когда мастерил на 11.13, с мультиметром совпадает, ну на небольших токах ессно
резисторы ставил, какие под руку попались, лишь бы разброс был поменьше
Добавлено: Ср июл 08, 2009 22:04:10
LINKS_234
почему 11.13 ? ведь делитель 10:1 , т.е. первоначальный сигнал делится на 10 .
но это ещё фигня . дальше лучше :
Код: Выделить всё
// convert adc values to current values, disp=10 needed to be printed
// by the printing function as 0.10 A
static int disp_i_to_adc(int disp){
return((int) (((disp * 10.23)* I_RESISTOR) / ADC_REF));
}
// convert adc values to current values, disp=10 needed to be printed
// by the printing function as 0.10 A
static int adc_i_to_disp(int adcunits){
return((int) (((adcunits* ADC_REF)/(10.23 * I_RESISTOR))+0.6));
}
тут я вообще не понимаю этих формул и вообще зачем каждая из них.
Добавлено: Ср июл 08, 2009 22:08:03
tipman
R7=10к, R8=988 лично у меня
(R8+R7)/R8 = (10+0.988)/0.988 = 11.12, в моём случае
а вот 11.13 уже методом подгонки довёл
Добавлено: Ср июл 08, 2009 22:23:21
LINKS_234
всё , понял с точки зрения логики , но не почему оно так
к примеру резаки по 1кОм два будут делить на 2 , посему (1+1)/1
... всё . теперь понял что к чему

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