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

Фотография

бaкoмeтр


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

#1481
dimoniy_32

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

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

 

блин а где ж такой контроллер найти?

http://www.microchip…archradio=sklad

http://www.online-el…good_id=ht31066

Например здесь. Выбирал из тех что поновее и подешевле.

 

я готов потестить если получится заказать контроллер но по чесноку не сталкивался с такими контроллерами



#1482
sergei0135

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

  • Пользователи
  • 39 сообщений
  • ГородСоветск Кировская обл

вообщем еще на плате бакометра  косяк был 13 нога на массу закорочена, убрал, но уже поздно на микрухе пока туда сюда ставил 7 лапу отломил, так что новую возму тогда и дальше пинать будем, хотя жаль winpic800 программой но только версия 3,55G записалась и  ошибку не выдало, и при проверке окей сказало, ..........



#1483
Sergey_L

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

  • Проверенные
  • 382 сообщений
  • ГородМосква

 sergei0135

Последнее предупреждение, потом буду оставлять только первый пост, а последующие просто удалять без правки.



#1484
Gipsy

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

  • Разработчик MICROCHIP
  • 626 сообщений
  • ГородСтаниславів

 

 

блин а где ж такой контроллер найти?

http://www.microchip…archradio=sklad

http://www.online-el…good_id=ht31066

Например здесь. Выбирал из тех что поновее и подешевле.

 

я готов потестить если получится заказать контроллер но по чесноку не сталкивался с такими контроллерами

 

Я что с ними сталкиваться - обычный ПИК, 20-ногий, по типу 16F690, только дешевле :)

К примеру 676-й у микрочипа стоит $0.98, а 1507 - $0.68

 

Для тех кто только решил собирать прибор - рекомендую вторую версию. Не будет  плясок с количеством точек и вариантами прошивок.



#1485
sergei0135

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

  • Пользователи
  • 39 сообщений
  • ГородСоветск Кировская обл

Итак, новая версия бакометра написана и испытана на столе.

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

Из главных отличий - нет надобности перекомпилировать прошивку под каждый тип бака. Прошивка будет одна. Как расставлять точки калибровки и сколько их будет - решать пользователю (минимум 2, максимум 64 точки).  Соответственно и  размер  бака - выбирайте сами. Также есть возможность показывать напряжение аккумулятора. 

Кто готов собрать и проверить у себя - могу отправить прошивку  на почту.

микруху выписал можно прошивку?, пока делаю плату. адрес sergei-013@yandex.ru. плюс минус кнопки это объем бака?



#1486
Gipsy

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

  • Разработчик MICROCHIP
  • 626 сообщений
  • ГородСтаниславів

 

Итак, новая версия бакометра написана и испытана на столе.

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

Из главных отличий - нет надобности перекомпилировать прошивку под каждый тип бака. Прошивка будет одна. Как расставлять точки калибровки и сколько их будет - решать пользователю (минимум 2, максимум 64 точки).  Соответственно и  размер  бака - выбирайте сами. Также есть возможность показывать напряжение аккумулятора. 

Кто готов собрать и проверить у себя - могу отправить прошивку  на почту.

микруху выписал можно прошивку?, пока делаю плату. адрес sergei-013@yandex.ru. плюс минус кнопки это объем бака?

 

Добрый вечер.

Прошивка и описание работы здесь: https://bezkz.su/foru…984-bakometr-2/



#1487
sergei0135

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

  • Пользователи
  • 39 сообщений
  • ГородСоветск Кировская обл

690 стоит у нас 163 рубля, ее навалом а вот 1507 нет



#1488
niron.ps

    Новичок

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

Ребята подскажите пожалуйста по поводу индикатора…

Можно заменить динамический индикатор с общим анодом на статический????



#1489
Gipsy

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

  • Разработчик MICROCHIP
  • 626 сообщений
  • ГородСтаниславів
 

 

Уважаемый Gipsy!

Пишу сюда, как к отцу-основателю проекта №1.

Наконец-то на 100%  разобрался с вашей программой (буду переделывать под себя используя  как учебник). Восхищен стройным алгоритмом.

Но как же без вопросов? =)

 

1. wpua  := 1  это подтяжка входа RA0 к питанию для кнопки когда она сидела на 13 ноге. Самая первая схема. Но, к удивлению, это сохранилось и в тех прошивках где на этой ноге уже аналоговый вход. Схемы с внешним опорным напряжением. Микросхему спасает только внутренний аудит =). Наверное, это лучше убрать?

 

2. В хелпе на микропаскаль  про функцию ADC_Read написано 

Note : This function doesn't work with the external voltage reference source, only with the internal voltage reference. 

Т.е. типа не работает с внешним Vref, только с внутренним опорным. Это как? Ведь используется же!

 

3. Периоды. Ваше if (i.0) - это шедевр! самая последняя взятая мною "крепость". Как я понял, измерения происходят 1 раз за 256 циклов программы, переключения 2-х разрядов индикатора через раз, Мигание, когда оно включено - 127 циклов горит, 128 нет. Т.е., получается, 1 миг=1измерение. Время цикла в режиме измерения в вашей программе определяется delay_ms(1) в конце программы. Т. е. измерения происходят один раз за 256 мс (+6мс на АЦП) или 4 раза в секунду. Но как тогда это мигает с такой частотой? Это же должна быть просто рябь! Было так? А вот в прошивке на 3 цифры - 10 мс, т.е мигание вроде должно быть величавым раз в 2,5 секунды.

 

4. Самое для меня удивительное. 

adcon0 := 4 при внутреннем опорном или adcon0 := %01000000 в схемах с внешним. Для схемы с 3-мя цифрами adcon0 вообще равен 0.

По даташиту самый старший бит adcon0 = ADFM определяет расположение 10-разрядного измеренного кода АЦП в двух байтах. 

В одном случае все прижимается вправо -  в младшем байте 8 бит, в старшем байте 2 оставшихся старших бита на младших разрядах. 

В другом случае все прижимается влево - в старшем байте 8 старших бит и в младшем байте оставшиеся 2 младших бита на старших местах.

В вашей программе после принятия кода ацп вы делаете

V:=ADC_Read(0); 

        V:=V shr 2;  - сдвиг кода на 2 разряда вправо. 
Т.е. из 10 разрядов делаете 8, чтобы потом работать только с одним байтом. Это логично для случая "правого" расположения байтов. Но прикол в том, что если верить даташиту, у нас задается "левое" расположение! ADFM = 0!
Просмотрел все известные исходники. Везде в проекте именно так. Но тогда получается, что мы работаем только с 4 младшими разрядами АЦП (2 было и 2 задвинули из старшего байта)?
 
Может где в моих рассуждениях ошибка - я только учусь!

 

 

 

 

Смотрю вы основательно подошли к вопросу :). Хорошо когда у кого-то есть много времени :)

По сути:

 

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

 

2. ADC_Read на самом читает значение регистров  ADRESH:ADRESL и возвращает их как свой результат. В хелпе написано что не будет работать - очевидно авторы имели ввиду что стандартная ADC_Init инициализирует модуль только с использованием питания в качестве опорного и для других вариантов необходимо самому озаботиться конфигурированием. Но впрочем что они имели ввиду и почему оно вопреки заявлениям работает - надо у авторов компилятора спрашивать :)

 

3. Начали правильно, но потом суть потеряли. 1 мс светится первый разряд, потом 1 мс - второй и так постоянно. Таким образом получается 500 Гц на индикаторе частота. Более чем достаточно. 

 

4. На самом деле для adcon0 := 4  adcon0 := %01000000 и adcon0=0 7=й бит всегда = 0. Будьте внимательны!!! 

Хотя и это не важно, вызов позже ADC_Init  переделывает всё по-своему, и вырвнивание всегда вправо :).



#1490
svep

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

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

 

 

 

3. Начали правильно, но потом суть потеряли. 1 мс светится первый разряд, потом 1 мс - второй и так постоянно. Таким образом получается 500 Гц на индикаторе частота. Более чем достаточно. 

 

4. На самом деле для adcon0 := 4  adcon0 := %01000000 и adcon0=0 7=й бит всегда = 0. Будьте внимательны!!! 

Хотя и это не важно, вызов позже ADC_Init  переделывает всё по-своему, и вырвнивание всегда вправо :).

 

3. 500 Гц - это частота динамической индикации, это все понятно. К ней вопросов нет.

Волнует другой вопрос - частота МИГАНИЯ (которая включается при малом уровне и при калибровке), согласно расчетам, получилась слишком большой -  4 раза в секунду - практически это уже не мигание а должно сливаться в мелкое дрожжание.

 

4. "На самом деле для adcon0 := 4  adcon0 := %01000000 и adcon0=0 7=й бит всегда = 0. Будьте внимательны!!! " - Так об этом я как раз и говорил! - что ни в одном из вариантов прошивок 7 бит НЕ взведен в "1"!  А при 7 бите=0 выравнивание битов идет влево, а не вправо.

 

"Хотя и это не важно, вызов позже ADC_Init  переделывает всё по-своему, и вырвнивание всегда вправо :)."

А вот про самодеятельность ADC_Init очень интересное ноу-хау! А зачем тогда мы с этими битами в программе заморачиваемся?

Или тоже внутренний аудит работает для исправления наших ошибок, как в случае с wpua?



#1491
svep

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

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

Вот нашел!

ADC_Init:
;__Lib_ADC_A_B.mpas,17 ::         
;__Lib_ADC_A_B.mpas,18 ::         
0x0014    0x30FF         MOVLW      _ADC_Get_Sample
0x0015    0x1283          BCF        STATUS, 5
0x0016    0x00A5      MOVWF      _ADC_Get_Sample_Ptr
0x0017    0x30FF      MOVLW      hi_addr(_ADC_Get_Sample)
0x0018    0x00A6      MOVWF      _ADC_Get_Sample_Ptr+1
0x0019    0x30FF      MOVLW      FARG_ADC_Get_Sample_channel
0x001A    0x00A7      MOVWF      _ADC_Get_Sample_Ptr+2
0x001B    0x30FF      MOVLW      hi_addr(FARG_ADC_Get_Sample_channel)
;__Lib_ADC_A_B.mpas,20 ::         
0x001C    0x30C3      MOVLW      195
0x001D    0x059F          ANDWF      ADCON0, 1
;__Lib_ADC_A_B.mpas,24 ::         
0x001E    0x3040          MOVLW      64
0x001F    0x059F          ANDWF      ADCON0, 1
;__Lib_ADC_A_B.mpas,25 ::         
0x0020    0x30F0          MOVLW      240
0x0021    0x1683          BSF        STATUS, 5
0x0022    0x049F          IORWF      ADCON1, 1
;__Lib_ADC_A_B.mpas,26 ::         
0x0023    0x1283          BCF        STATUS, 5
0x0024    0x179F          BSF        ADCON0, 7    <--здесь взводится 7 бит выравнивания вправо
;__Lib_ADC_A_B.mpas,29 ::         
0x0025    0x141F          BSF        ADCON0, 0
;__Lib_ADC_A_B.mpas,30 ::         
L_end_ADC_Init:

0x0209    0x0008          RETURN
; end of _ADC_Init

 

Действительно, если вход в подпрограмму только один то бит выравнивания вправо взводится принудительно. Смущает то, что впереди. Сначала в ADCON0 оставляют биты 7,6,1,0 (число 195), затем тут же оставляют нетронутым только бит 6 (число 64) как раз это Vref, все остальное умножают на 0. и тоько после этого взводят бит 7. .....

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

Вывод - разработчики микропаскаля решили - нефиг вам с левым выравниванием баловаться!



#1492
Gipsy

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

  • Разработчик MICROCHIP
  • 626 сообщений
  • ГородСтаниславів

 

Волнует другой вопрос - частота МИГАНИЯ (которая включается при малом уровне и при калибровке), согласно расчетам, получилась слишком большой -  4 раза в секунду - практически это уже не мигание а должно сливаться в мелкое дрожжание.

 

 

Так вы соберите прибор и посмотрите - сливается в дрожание или мигает.  

А то всё  фантазируете....  :smoke:



#1493
relaxon

    Новичок

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

Подскажите пожалуйста как убрать лишний ноль на двухсегментном бакометре?



#1494
svep

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

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

Подскажите пожалуйста как убрать лишний ноль на двухсегментном бакометре?

Менять программу и по-новой заливать прошивку. 1 вариант. Или собрать на обычной "логике" схему распознования нуля и гашение сегмента. 2 вариант. Выбирайте.



#1495
relaxon

    Новичок

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

 

Подскажите пожалуйста как убрать лишний ноль на двухсегментном бакометре?

Менять программу и по-новой заливать прошивку. 1 вариант. Или собрать на обычной "логике" схему распознования нуля и гашение сегмента. 2 вариант. Выбирайте.

 

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



#1496
xrust

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

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

Подскажите пожалуйста как убрать лишний ноль на двухсегментном бакометре?

вот так 

 

    if i.0 then begin
       C2 := 0;
              if (L10 = 0)    
              then
               begin
                  portc:=%01111111;    // 0afgbedc //
                  porta.4:=1;
               end
              else
      Led(L10);
      C1 := 1;
    end
    else
    begin
      C1 := 0;
      Led(L1);
      C2 := 1;
    end;


#1497
chipaka

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

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

Здравствуйте!

Кто нибудь подскажет на PIC16F84A можно собрать этот девайс



#1498
SergT81

    Новичок

  • Пользователи
  • 3 сообщений
  • ГородСлавянск

Здравствуйте!

Кто нибудь подскажет на PIC16F84A можно собрать этот девайс

прям сходу нельзя. каждая нога пика имеет свои функции, которые прописаны в прошивке. так что не факт что 676 совпадает с 84. Надо сравнивать даташиты, но т.к. ответ скорей нет 99% то делать это просто лень. Так же важно наличие АЦП. Кто опытней пусть ответит правильней. А если по простому то программа пишется под определенный контроллер и тупо заменить его на другой нельзя.



#1499
SergT81

    Новичок

  • Пользователи
  • 3 сообщений
  • ГородСлавянск

Похоже тема умерла. Не все будут собирать бакометр 2. Хоть этот вариант и перспективней, но у меня например завалялось пару 676, не выбрасывать же… Итак, все же небольшой отчет. Собрал третий вариант от асус модернизированный. Во первых на плате бакометр4.лэй ошибка. Не правильно разведен делитель с датчика. Кто делает проверяйте. Далее.. Прошивка не рабочая. Индикатор хтознашо выдает.

Переделал под вторую схему с делителем. Прошил первой прошивкой от АндрейЮА, все заработало да немного с глюками. Проанализировал схему и понял что делители сделаны по разному. По логике R4 и R9 надо поменять местами. Поменял, заработало. Сижу играюсь пока на столе. Работает все четко при изменении напряжения от 5 до 14 показания не меняются. Все четко.



#1500
Sergey_L

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

  • Проверенные
  • 382 сообщений
  • ГородМосква

SergT81

Все описанное и упущенное вами уже озвучивалось.

Просто мало кто хоть по диагонали пробегает тему и пользуется поиском.