Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

PIC16F886 & DS1631 & Динамична индикация ?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=6693
Страница 1 от 1

Автор:  BONGO [ Нед Мар 29, 2009 10:55 am ]
Заглавие:  PIC16F886 & DS1631 & Динамична индикация ?

Здравейте! Дали е възможна тази комбинация - процесора е PIC16F886, имам 3 разредна седемсегментна динамична индикация и температурен I2C сензор DS1631.
Идеята е да се изобразява температурата на седемсегментия дисплей, само ме притеснява дали е възможно, защото цикъла на четене на DS1631 при най голямата точност е 750мс, не знам дали ще успявам да опреснявам дисплея. Сорса за управлвнието на LED съм го написал, въпроса е през колко време да го опреснявам, за да не се получава много видимо мигане.

Благодаря!

Автор:  sv_shady [ Нед Мар 29, 2009 11:42 am ]
Заглавие: 

Ами принципно се смята че човешкото око различава максимум 24 кадъра в секунда, но когато аз съм пробвал повече от 15 пъти опреснение в секунда не се усеща съществено. За това от 15 нагоре би трябвало да ти върши работа :) А и нищо не пречи да експериментираш. Плюс това никой не е казал че трябва да опресняваш дисплея само когато прочетеш новата температура. Ти си го опреснявай примерно 15пъти в секунда, пък когато получиш нова стойност си я изобразявай. Но това ще стане разбира се само, ако ползваш хардуерно I2C .

Автор:  Syrius-B [ Нед Мар 29, 2009 11:55 am ]
Заглавие:  Re: PIC16F886 & DS1631 & Динамична индикация ?

BONGO написа:
Здравейте! Дали е възможна тази комбинация - процесора е PIC16F886, имам 3 разредна седемсегментна динамична индикация и температурен I2C сензор DS1631.
Идеята е да се изобразява температурата на седемсегментия дисплей, само ме притеснява дали е възможно, защото цикъла на четене на DS1631 при най голямата точност е 750мс, не знам дали ще успявам да опреснявам дисплея. Сорса за управлвнието на LED съм го написал, въпроса е през колко време да го опреснявам, за да не се получава много видимо мигане.

Благодаря!

Направи си в програмата буфер, в който измерването да вкарва сметнатата температура, направо в сегментен код.
Самата визуализация я вкарай в едно таймерно прекъсване, приблизително 200 -250 пъти в секунда, и на всяко прекъсване въртиш поредния знак от дисплея. Двете функции (меренето и дисплея) ще си работят независимо една от друга.

Автор:  Cino [ Нед Мар 29, 2009 12:34 pm ]
Заглавие: 

750 ms e convertion time.

т.е. стартирш конвертиране със съответната команда,
и след 750ms си прочиташ температурата,

Няма смисъл контролера да чака 750ms.
Примерно 1път в секунда комуникираш с датчика.
Първо прочиташ готовата температура,
след това стартираш ново конвертиране.

Автор:  optron [ Пон Мар 30, 2009 3:13 pm ]
Заглавие: 

Нещо подобно правих и аз, само че ставаше въпрос за ШИМ и четене на АЦП. Аз го направих така - Въртя си цикъла за импулсите и през паузата между два импулса проверявам флага за готовност на АЦП. Ако е готов, прочитам стойността и я зареждам в променлива, където после ще я използвам, след което бутам АЦП отново да измерва. Това ми отнема 2-3 цикъла и не се забелязва, ако изобщо повлияе на импулса ми - процесорът работи на 4 МХц. Тази променлива по принцип се ползва преди всяко начало на цикъла на импулса, непосредствено след проверката и четенето на АЦП.
Нещо такова ще стане и при теб, ако използваш хардуерен интерфейс за комуникация със сензора. Доколкото разбирам, той е с И2С, а ПИК-овете имат такъв интерфейс. Така, след всяка смяна на фазата на индикацията проверяваш дали интерфейсът има нещо за теб и ако има, четеш.
Сега говоря малко наизуст, възможно е да изпускам значими неща относно И2С интерфейса на ПИК-овете...

Автор:  ToHu [ Пон Мар 30, 2009 9:01 pm ]
Заглавие: 

Ами не виждам проблем, още повече ако I2C ти е хардуерно, както по горе казаха няма нужда да зацикляш в едно състояние и да не правиш нищо. Ако е като при one wireдатчиците им мисля че се полираше някакъв регистър за ADC complete, т.е това полиране може да го правиш през някакъв интервал. Освен това аз си мисля че времето зависеше и от това колко битов резултат искаш.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/