Перейти к содержимому

Фотография

бaкoмeтр


Сообщений в теме: 1974

#961
master777

    Пользователь

  • Пользователи
  • 11 сообщений

вот схема с аналоговым<p><b>Добавлено</b> (14.06.2011, 20:39)
---------------------------------------------
<img src="https://bezkz.su/…/2/2154849.gif" border="0" alt=""/><p><b>Добавлено</b> (14.06.2011, 20:40)
---------------------------------------------
и связать эти два устройства очень просто

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

Прикрепленные файлы

  • Прикрепленный файл  1224064421_1.gif   9.81К


#962
sarana_65

    Пользователь

  • Пользователи
  • 22 сообщений
Всех с наступающим Новым Годом!

#963
Sergey_L

    Продвинутый пользователь

  • Проверенные
  • 382 сообщений
  • ГородМосква
ВСЕХ
С Новым Годом!


#964
amd007

    Новичок

  • Пользователи
  • 8 сообщений
ПРИВЕТ ВСЕМ ПОДСКАЖИТЕ КАК КАЛИБРОВАТЬ

#965
yura-ua

    Продвинутый пользователь

  • Пользователи
  • 57 сообщений
  • ГородЗакарпатье
Калибровка устройства:Нажимаем кнопку на устройстве-на индикаторе засветяться мигающие нули,это означает что у нас пустой бак.Если действительно пустой нажимаем кнопку еще раз.если нет опустошаем полностью и нажимаем кнопку.

На индикаторе засветится 02(2 литра)-заливаем 2 литра и нажимаем кнопку.

После засветится 04-заливаем еще 2 литра (в баке уже 4 литра)и нажимаем кнопку .

Таким образом при калибровке все значения на индикаторах в мигаищем режиме,а нажимая кнопку мы соглашаемся что в баке действительно находится n-литров при мигающем его значении.После калибровки на дисплее отобразится 40-что означает 40литров бензина в баке(ведь так оно и есть)и мигания прекратятся.Устройство перешло в режим измерения.Кнопку больше не трогаем,чтоб не сбить настроек.При падении уровня топлива ниже 6 литров индикаторы начинают мигать,это говорит о том что пора на заправку.В комплекте идут прошивки с разным шагом калибровки,все рабочие и достаточно точные.

Точно устройство показывает в состоянии покоя,когда бензин в баке не плещется и поплавок не качает.
Копипаст с первой страницы,в форуме есть ответы практически на все вопросы по теме,читайте

#966
master777

    Пользователь

  • Пользователи
  • 11 сообщений

legend2
Привет!
Чтобы убрать подмаргивание и погасить незначащий ноль (L100) для 3-х замени это:

delay10();
    cc := i mod 3;
    if cc = 2 then begin
      C1 := 0;
      C2 := 0;
      {if sign then begin
        portc := $3B;
        porta.4 := 1;
      end else }
        Led(L100);
      C3 := 1;
    end else if cc = 1 then begin
      C1 := 0;
      C3 := 0;
      Led(L10);
      C2 := 1;
    end else
    begin
      C2 := 0;
      C3 := 0;
      Led(L1);
      C1 := 1;
    end;
  end;
end.
на это:

delay10();
    cc := i mod 4;
    if cc = 0 then
    begin
      C1 := 0;
      C2 := 0;
        if (L100 = 0) then
        begin
          portc:= $3F;
          porta.4:=1;
        end
        else
        Led(L100);
      C3 := 1;
    end
    else
    if cc = 1 then
    begin
      C1 := 0;
      C3 := 0;
      Led(L10);
      C2 := 1;
    end
    else
    if cc = 2 then
    begin
      C2 := 0;
      C3 := 0;
      Led(L1);
      C1 := 1;
    end
    else
    if cc = 3 then
    begin
      C2 := 0;
      C3 := 0;
      C1 := 0;
    end;
  end;
end.


Добрый вечер. Вот собрал бакометр с тремя разрядами и при вклюении питания загорается где то на секунду во всех трёх разрядах одновременно сегмент (А). хотелось бы убрать это.

#967
igor_ivanovich

    Пользователь

  • Проверенные
  • 12 сообщений

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

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

Прикрепленные файлы

  • Прикрепленный файл  давка.lay   39.34К


#968
master777

    Пользователь

  • Пользователи
  • 11 сообщений
program bakometr;

const
stNormal : byte = 1;
stCalibr : byte = 2;
AdrHi : byte = 1;
litr : array [0..AdrHi] of byte = (0,150);

var
C1 : sbit at porta.2;
C2 : sbit at porta.5;
C3 : sbit at porta.1;

SW : sbit at porta.3;
i, j, cc: byte;
V : word; absolute 0x40;
Vhi : byte; absolute 0x41;
VLo : byte; absolute 0x40;
V100 : word;

L100, L10, L1 : byte;
dat : array [0..AdrHi] of byte;
mode : byte;
calibrN : byte;
sign : byte;

procedure Razr(V : integer);
begin
sign := V < 0;
sign := 0;
L100 := V div 100;
V100 := V mod 100;
L10:= V100 div 10;
L1 := V100 mod 10;
end;

procedure Led(i: short);
begin
if I=0 then begin
portc:=$00;
porta.4:=1;
end;
if I=1 then begin
portc:=$2D;
porta.4:=1;
end;
if I=2 then begin
portc:=$22;
porta.4:=0;
end;
if I=3 then begin
portc:=$28;
porta.4:=0;
end;
if I=4 then begin
portc:=$0D;
porta.4:=0;
end;
if I=5 then begin
portc:=$18;
porta.4:=0;
end;
if I=6 then begin
portc:=$10;
porta.4:=0;
end;
if I=7 then begin
portc:=$09;
porta.4:=1;
end;
if I=8 then begin
portc:=$00;
porta.4:=0;
end;
if I=9 then begin
portc:=$08;
porta.4:=0;
end;
end;

procedure delay10;
begin
delay_ms(10);
end;

procedure ReadData;
begin
for i := 0 to AdrHi do dat[i]:=EEPROM_Read(i);
end;

begin
porta := %00000000;
trisa := %11001001;
portc := %11111111;
trisc := %00000000;
wpua := %00000001;
cmcon := %00000111;
ansel := %00000001;
adcon0:= %00000000;
adcon1:= %00110000;

mode:=stNormal;
ReadData;
ADC_Init;
i := 0;
while true do
begin
inc(I);
if mode = stNormal then
begin
if (i.7) and (V<6) then
begin
C1:=0;
C2:=0;
C3:=0;
end;
if i=0 then
begin
V:=ADC_Read(0);
V:=V shr 2;
if V>=dat[AdrHi]
then V:=litr[adrHi]
else
begin
if V<=dat[0]
then V:=litr[0]
else
begin
for j:=0 to AdrHi-1 do
if (V>=dat[j]) and (V<dat[j+1]) then cc:=j;
if cc=AdrHi
then V:=Litr[AdrHi]
else
begin
V:= (V-dat[cc]);
j:=(Litr[cc+1]-Litr[cc]);
V:= V * j;
j:=(dat[cc+1]-dat[cc]);
V:= V / j;
V:= V + litr[cc];
end;
end;
end;

Razr(V);
(*
sign := V < 0;
L100 := V div 100;
V100 := V mod 100;
L10:= V100 div 10;
L1 := V100 mod 10;
*)
//L10 := V div 10;
//L1 := V mod 10;

if (SW = 0) then
begin
delay_ms(3000);
begin
C1 := 1;
C2 := 1;
C3 := 1;
portc := $3B;
porta.4 := 1;

calibrN := 0;
mode := stCalibr;
delay10;
repeat until SW = 1;
end;
delay10;
end;
end;
end;

if mode = stCalibr then
begin
Razr(litr[calibrN]);
(*
//sign := litr[calibrN] < 0;
L100 := litr[calibrN] div 100;
V100 := litr[calibrN] mod 100;
L10 := V100 div 10;
L1 := V100 mod 10;
*)
if i > 127 then
begin
C1 := 0;
C2 := 0;
C3 := 0;
end;
if SW = 0 then
begin
delay10;
repeat until SW = 1;
delay10;
V:=adc_read(0);
V:=V shr 2;
EEPROM_Write(calibrN,VLo);
inc(calibrN);
if calibrN>AdrHi then
begin
mode:= stNormal;
CalibrN:=0;
delay10;
delay10;
delay10;
delay10;
ReadData;
end;
end;
end;

delay_ms(3);
cc := i mod 4;
if cc = 0 then
begin
C1 := 0;
C2 := 0;
if (L100 = 0) then
begin
portc:= $3F;
porta.4:=1;
end
else
Led(L100);
C3 := 1;
end
else
if cc = 1 then
begin
C1 := 0;
C3 := 0;
Led(L10);
C2 := 1;
end
else
if cc = 2 then
begin
C2 := 0;
C3 := 0;
Led(L1);
C1 := 1;
end
else
if cc = 3 then
begin
C2 := 0;
C3 := 0;
C1 := 0;
end;
end;
end.

Прикрепленные файлы

  • Прикрепленный файл  a90f804799fa.jpg   90.86К


#969
dofs

    Новичок

  • Пользователи
  • 1 сообщений
не сочтите за наглость, список всех запчастей(резюки, конденсаторы) для 2-й схемы(модернизированная) никто не делал? Если да то скинте, пожалуйста…

#970
master777

    Пользователь

  • Пользователи
  • 11 сообщений
вот собрал бакометр, последний на 3-х разрядах работает не плохо.

Прикрепленные файлы

  • Прикрепленный файл  DSCN0967.jpg   1.06МБ


#971
master777

    Пользователь

  • Пользователи
  • 11 сообщений
3-х

Прикрепленные файлы

  • Прикрепленный файл  Безымянный.jpg   779.33К


#972
xrust

    Продвинутый пользователь

  • Пользователи
  • 49 сообщений
  • ГородДубно. Ровенская обл.

не сочтите за наглость, список всех запчастей(резюки, конденсаторы) для 2-й схемы(модернизированная) никто не делал? Если да то скинте, пожалуйста…



А разве схема с номиналами не является списком деталей?
Порой я просто поражаюсь некоторым просьбам. :super_tE:
Распечатайте картинку и на рынок за деталями только сразу с маркером чтобы с продавцом выводы деталей по подписывать, а то забудете потом

#973
ser_vic

    Новичок

  • Пользователи
  • 5 сообщений
  • ГородТашкент
Наконецто собрал бакометр, и поставил на авто только крышку не закрывал, начал заливать бензин по два литра в бак. Так как в баке было всего 26 литров и отколибровал я его под 26 литров. а после 26 просто нажимал кнопку, в результате получилось что датчик показывает 26, у ничего завтра проеду и посмотрю как будет работать. у меня авто нива датчик стандартный старого образца. РЕБЯТА СПАСИБО ЗА РАЗРАБОТКУ. У меня еще стоит вольтметр и друзьям собрал 3 штуки, теперь жду измеритель давления.

#974
sanyasanevich

    Продвинутый пользователь

  • Пользователи
  • 36 сообщений
  • ГородКРЫМ
и я себе в ваз 2108 собрал бакометр. авторам проекта велике спасибо!!! давно мечтал о такой штуке.

Прикрепленные файлы

  • Прикрепленный файл  001.jpg   94.13К
  • Прикрепленный файл  002.jpg   98.82К
  • Прикрепленный файл  003.jpg   137.89К


#975
chaynik

    Продвинутый пользователь

  • Пользователи
  • 171 сообщений
Не прошло и пол года как решился я вчера поставить таки девайс на свой автомобиль. Сделал товарищу на таврию у него успешно работает. У меня же выявилась проблема, после тарировке меньше 15 литров не показывает, начинают мигать нули. сам пока не разбирался. Что навскидку может быть? Автомобиль ваз 2109

#976
Малярек

    Пользователь

  • Пользователи
  • 15 сообщений





Почему у тебя столько кондеров и сопротивлений, не сходится со схемой! У меня фигня какая то, показывает неправильно…бывает закскоки от 40 до 35 потом ровно, потом бах 20 и ровно опять и до 7 литров а потом опять 00! Датчик без обрыва на шахе

#977
miron

    Продвинутый пользователь

  • Заказчики
  • 276 сообщений
  • Городднепропетровск
заскоки эти датчик виноват, или при калибровке очень торопился, при калибровке не торопись кнопочку жать сосчитай до десяти чтобы то что ты влил успокоилось, ну и как уже говорили достоверные данные снимаются на стоянке.

#978
ASUS

    Продвинутый пользователь

  • Проверенные
  • 441 сообщений
  • ГородКозелец

Почему у тебя столько кондеров и сопротивлений, не сходится со схемой! У меня фигня какая то, показывает неправильно…бывает закскоки от 40 до 35 потом ровно, потом бах 20 и ровно опять и до 7 литров а потом опять 00! Датчик без обрыва на шахе

эти номиналы не столь важны, важен датчик! и программа и метод калибровки

#979
Малярек

    Пользователь

  • Пользователи
  • 15 сообщений
Собрал я при стандартной схеме с делителем 1.5 кОм, вроде все работает. Показывает точно. Но в протеусе моделировал, что при 1.5 кОм есть проскок на 2 литра, а при 220 Ом все точно. Вот скажите на что влияет делитель напряжения и не спалю ли МК (так как на датчике 12 вольт ведь при полном баке)....Я читал тут всю переписку…запутался аж, до 3 ночи вчера листал, поэтому скажите про делитель пожалуйста.
А калибровка 0,5,13,16,19,22,25,30,35,40. Все нормально. Пока тестирую вручную (поплавок смещаю). Заливать не заливал.

#980
master777

    Пользователь

  • Пользователи
  • 11 сообщений
program bakometr;

const
stNormal : byte = 1;
stCalibr : byte = 2;
AdrHi : byte = 15;
litr : array [0..AdrHi] of byte = (0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150);

var
C1 : sbit at porta.5;
C2 : sbit at porta.1;
C3 : sbit at porta.2;

SW : sbit at porta.3;
i, j, cc: byte;
V : word; absolute 0x40;
Vhi : byte; absolute 0x41;
VLo : byte; absolute 0x40;
V100 : word;

L100, L10, L1 : byte;
dat : array [0..AdrHi] of byte;
mode : byte;
calibrN : byte;
sign : byte;

procedure Razr(V : integer);
begin
sign := V < 0;
sign := 0;
L100 := V div 100;
V100 := V mod 100;
L10:= V100 div 10;
L1 := V100 mod 10;
{L1:=(L1 div 5)*5}
end;

procedure Led(i: short);
begin
if I=0 then begin
portc:=$02;
porta.4:=0;
end;
if I=1 then begin
portc:=$1F;
porta.4:=0;
end;
if I=2 then begin
portc:=$08;
porta.4:=1;
end;
if I=3 then begin
portc:=$18;
porta.4:=0;
end;
if I=4 then begin
portc:=$15;
porta.4:=0;
end;
if I=5 then begin
portc:=$30;
porta.4:=0;
end;
if I=6 then begin
portc:=$20;
porta.4:=0;
end;
if I=7 then begin
portc:=$16;
porta.4:=0;
end;
if I=8 then begin
portc:=$00;
porta.4:=0;
end;
if I=9 then begin
portc:=$10;
porta.4:=0;
end;
end;

procedure delay10;
begin
delay_ms(10);
end;

procedure ReadData;
begin
for i := 0 to AdrHi do dat[i]:=EEPROM_Read(i);
end;

begin
porta := %00000000;
trisa := %11001001;
portc := %00000000;
trisc := %00000000;
wpua := %00000001;
cmcon := %00000111;
ansel := %00000001;
adcon0:= %00000000;
adcon1:= %00110000;

mode:=stNormal;
ReadData;
ADC_Init;
i := 0;
while true do
begin
inc(I);
if mode = stNormal then
begin
if (i.7) and (V<10) then
begin
C1:=0;
C2:=0;
C3:=0;
end;
if i=0 then
begin
V:=ADC_Read(0);
V:=V shr 2;
if V>=dat[AdrHi]
then V:=litr[adrHi]
else
begin
if V<=dat[0]
then V:=litr[0]
else
begin
for j:=0 to AdrHi-1 do
if (V>=dat[j]) and (V<dat[j+1]) then cc:=j;
if cc=AdrHi
then V:=Litr[AdrHi]
else
begin
V:= (V-dat[cc]);
j:=(Litr[cc+1]-Litr[cc]);
V:= V * j;
j:=(dat[cc+1]-dat[cc]);
V:= V / j;
V:= V + litr[cc];
end;
end;
end;

Razr(V);
(*
sign := V < 0;
L100 := V div 100;
V100 := V mod 100;
L10:= V100 div 10;
L1 := V100 mod 10;
*)
//L10 := V div 10;
//L1 := V mod 10;

if (SW = 0) then
begin
delay_ms(3000);
begin
C1 := 1;
C2 := 1;
C3 := 1;
portc := $3B;
porta.4 := 1;

calibrN := 0;
mode := stCalibr;
delay10;
repeat until SW = 1;
end;
delay10;
end;
end;
end;

if mode = stCalibr then
begin
Razr(litr[calibrN]);
(*
//sign := litr[calibrN] < 0;
L100 := litr[calibrN] div 100;
V100 := litr[calibrN] mod 100;
L10 := V100 div 10;
L1 := V100 mod 10;
*)
if i > 127 then
begin
C1 := 0;
C2 := 0;
C3 := 0;
end;
if SW = 0 then
begin
delay10;
repeat until SW = 1;
delay10;
V:=adc_read(0);
V:=V shr 2;
EEPROM_Write(calibrN,VLo);
inc(calibrN);
if calibrN>AdrHi then
begin
mode:= stNormal;
CalibrN:=0;
delay10;
delay10;
delay10;
delay10;
ReadData;
end;
end;
end;

delay_ms(3);
cc := i mod 4;
if cc = 0 then
begin
C1 := 0;
C2 := 0;
if (L100 = 0) then
begin
portc:= $3F;
porta.4:=1;
end
else
Led(L100);
C3 := 1;
end
else
if cc = 1 then
begin
C1 := 0;
C3 := 0;
Led(L10);
C2 := 1;
end
else
if cc = 2 then
begin
C2 := 0;
C3 := 0;
Led(L1);
C1 := 1;
end
else
if cc = 3 then
begin
C2 := 0;
C3 := 0;
C1 := 0;
end;
end;
end.