Отговори на тема  [ 14 мнения ] 
PIC 12F675 работи, но е 10-bit ... а сега накъде ... 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Сеп 30, 2004 6:17 am
Мнения: 2
Мнение PIC 12F675 работи, но е 10-bit ... а сега накъде ...
Написах си програма на Visual C++.NET за получаване на данни от устройство с PIC 12F675 по RS232 и представянето им графично. Всичко работи чудесно. Но ... въпросният PIC е 10 битов и точността на получените данни не ме задоволява. Налага се да премина най-малкото на 12 битов PIC и то по възможност всичко да е така елегантно както при 10 битовия (т.е. да няма отделни АЦП-та, осцилатори и т.н.)

Като възможен вариант виждам PIC 16C773. Някой има ли опит с този PIC? Възможно ли е да използвам асемблерската програма, която използвам за 12F675 и с леки модификации да я пригодя за 16C773? Отгоре на всичко 16С773 не е flash, а е ОТР, т.е. програмира се еднократно. Значи ли това, че ми предстои да похабя не един и не два чипа докато достигна до вярното решение -- при 12F675 си пишеш и си триеш на воля и колкото и да грешиш едва ли можеш да го направиш неизползваем поради достигане на предела му на презапис.

Нека попитам и следното. Възможно ли е вместо да подавам на 10-битовия 12F675 5V захранващо напрежение, да му подам 2.5V и по този начин като че ли да стане 11 битов. Така вместо 5V да деля на 1024 ще деля 2.5V на 1024 и разделителната му способност ще се увеличи от около 5mV на около 2.5mV?


Чет Сеп 30, 2004 6:47 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Ако намалиш референтното напрежение два пъти ще си повишиш два пъти точността, но ще си намалиш два пъти входния обхват. Ако можеш да го толерираш това, по добре си увеличи два пъти коефициента на усилване на входния усилвател (ако имаш такъв, т.е ако ти е достъпен). Но 10 бита преобразуване все ще са си 10 бита.

Не знаех че 12 битови пикове са излезли на пазара. Сигурен ли си че е 12 битов? Това че е OTP е неприятно, но не е болка за умиране (освен че е остаряла технология и след 3,4 години току виж изчезнал).
1. Можеш да прежалиш 20-30 лева и да вземеш такъв с джам, дето се трие (JW серия).
2. Ако пишеш на асемблер има едно елегантно решение. За пика инструкция 00 (NOP) е празна и тоя я прескача. Значи пишеш си програмата с ORG 0 и първа инструкция GOTO 20 (примерно). Това ти гарантира че между първата инструкция и началото на програмата ще имаш само FFFF. Като не ти хареса, компилираш следваща версия но с ORG 0 и първа инструкция NOP и след това GOTO X където Х е след края на предишната ти програма. Първата инструкция ще се програмира като 00 (щото прехода от 1 към 0 в ОТП винаги е възможен), а втората се програмира коректно щото там е било FFFF.
И така до където ти стигне паметта. Ако ползваш прекъсване, ще можеш да го правиш максимм 4 пъти. Трябва ти програматор дето да може да програмира и в неизчистен ОТП, аз досега не съм срещал такъв дето да не може.

А ако искаш съвет, не се ебавай с физика. Ако не гониш цена до 1,2 долара, тури си едно външно АДЦ (MCP32ХХ) едно референс(друг е въпроса от къде ще го намериш) и по сериен порт си върши работата. Ако ти трябва по-висока резолюция това е единствения вариант. Ама след 12 бита (а и там) вече аналоговата част и изпълнението на платката са по важни от висчко друго.


Чет Сеп 30, 2004 10:15 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение Сиромашко решение.
Имал съм такъв проблем точно с PIC. Както знаеш, измерването с ADC не е идеално, т.е. получаваш и малко шумове в резултата, който в твоя случай може да достигне до 1 ADC единица. В някои случаи това може да е полезно. Аз съм правил по 4 измервания и като резултат връщам сумата от четирите резултата. Полученият резултат е 12 битов, но естествено с чикия. Въпреки всичко, когато проверих резултата с калибратор, оказа се, че връщаният резултат е учудващо близък до истината.
Моят съвет е да опиташ и ти този метод. :twisted:


Чет Сеп 30, 2004 1:04 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ако скоростта не ти е фатална, можеш да използваш oversampling & averaging. Идеята е, че вместо едно измерване правиш повече, после делиш с колкото си направил измервания, т.е. взимаш средно аритметично. Тази техника има и още една екстра - подавя шума.
Качил съм документа, където всичко е обяснено подробно.


Чет Сеп 30, 2004 1:36 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение Re: Сиромашко решение.
bateAz написа:
Имал съм такъв проблем точно с PIC. Както знаеш, измерването с ADC не е идеално, т.е. получаваш и малко шумове в резултата, който в твоя случай може да достигне до 1 ADC единица. В някои случаи това може да е полезно. Аз съм правил по 4 измервания и като резултат връщам сумата от четирите резултата. Полученият резултат е 12 битов, но естествено с чикия. Въпреки всичко, когато проверих резултата с калибратор, оказа се, че връщаният резултат е учудващо близък до истината.
Моят съвет е да опиташ и ти този метод. :twisted:


Хехе, изпревари ме. :) Ама 4 измервания май не са много. Хората по 256 правят. (виж документа) :)


Чет Сеп 30, 2004 1:40 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Съб Сеп 25, 2004 4:33 pm
Мнения: 273
Местоположение: София
Мнение 
Зависи за какъв сигнал говорим и за какъв такт на дискретизация.
Той се опитва да възстанови сигнал на екрана на компютъра. Ако сумира 256 измервания и след това ги раздели на 256 ще интегрира сигнала. В резулат на монитора ще излезе нещо друго.
Тук е необходимо да се постави активен филтър на входа на АЦП със сразваща честота, два пъти по-голяма от честотата на Найквист.

_________________
Adios
Mozfet


Чет Сеп 30, 2004 3:53 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Много научно го раздаваш. :) Всичко е въпрос на прости сметки. Данните ги предава най-вероятно със скорост 115200 kbps = 14400 KB/sec. Ако иска точност над 1 байт, скоростта е 7200 семпъла/сек. При мен, на 16 МГц мега16 АЦП-то прави към 275000 семпъла/сек. Това ще рече, че спокойно мога да правя 58 измервания вместо 1.


Чет Сеп 30, 2004 6:14 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 25, 2004 7:54 pm
Мнения: 28
Местоположение: Сан Диего
Мнение Малко теория
Реконструктор: можеш да използваш oversampling & averaging

А ако добави и спектрално отместване на шума ще получи типичен сигма-делта модулатор (АЦП). Всичко зависи от скоростта, с която може да взема отчетите - колкото повече отчети може да грабне и по-як контролер (или DSP) има за обработка, толкова по-добри резултати ще получи. За сравнение, сигма-делта АЦП-тата вдигат разрешаващата способност от 1 бит до 20 бита и нагоре...

А що се отнася до простото осредняване на отчетите - естествено се увеличават битовете, тъй като мощността на шума се намалява линейно с броя на осреднените отчети (ако е бял Гаусов шум в дадения честотен обхват, което най-често е така).


Чет Сеп 30, 2004 6:29 pm
Профил
Мнение 
Ñïîðåä äðóãàðèòå Êîòåëíîêîâ, Êëîä è Øåíîí, çà äà ñå ïðåäñòàâè åäèí íåïðåêúñíàò ñèãíàë â öèôðîâ âèä, ÷ðåç êðàåí áðîé äèñêðåòè è ñëåä òîâà âúçñòàíîâè îòíîâî â íåïðåêúñíàò, å íåîáõîäèìî ÷åñòîòàòà íà äñèêðåòèçàöèÿ äà áúäå äâà ïúòè ïî-âèñîêà îò íàé-âèñîêàòà ÷åñòîòà íà ïðåîáðàçóâàíèÿ ñèãíàë. Òàêà, ÷å ÷îâåêà òðàáâà äà ñè ïðåöåíè êîÿ å íàé-âèñîêàòà î÷àêâàíà ÷åñòîòà (àêî òðÿáâà ùå ìåðè ñ îñöèëîñêîï). Òóê ñàìî ñ ïðîãðàìèðàíå íÿìà äà ñå ìèíå. Òðÿáâà àíàëîãîâà òåõíèêà è òåîðèÿ íà ñèãíàëèòå.


Чет Сеп 30, 2004 8:18 pm
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Съб Сеп 25, 2004 4:33 pm
Мнения: 273
Местоположение: София
Мнение 
Според другарите Котелноков, Клод и Шенон, за да се представи един непрекъснат сигнал в цифров вид, чрез краен брой дискрети и след това възстанови отново в непрекъснат, е необходимо честотата на дсикретизация да бъде два пъти по-висока от най-високата честота на преобразувания сигнал. Така, че човека трабва да си прецени коя е най-високата очаквана честота (ако трябва ще мери с осцилоскоп). Тук само с програмиране няма да се мине. Трябва аналогова техника и теория на сигналите.

Забравих да се логна и ме изкара като гост :wink:

_________________
Adios
Mozfet


Чет Сеп 30, 2004 8:20 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Съб Сеп 25, 2004 7:54 pm
Мнения: 28
Местоположение: Сан Диего
Мнение 
Според американците, Теоремата за Дискретизация е на Найкуист (Nyquist), ама нейсе... А и въпроса тук май не е относно честотата на вземане на отчетите, а по-скоро как може да се постигне по-голяма разделителна способност (точност). Освен аналогова техника, по-скоро си мисля, че тук е нужна малко повече теория по статистически анализ на случайни сигнали и процеси, сигма-делта модулатори и подобни нещица... Основната идея е, че това, което възпрепятства по-добрата резолюция е нивото на шума (или съответно отношението Сигнал/Шум), а за намаляване на шума си има методи...


Чет Сеп 30, 2004 9:22 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Сеп 30, 2004 6:17 am
Мнения: 2
Мнение 
Много благодаря за обстойните и полезни съвети. Разбирам, че поставянето на външно АЦП е радикалното решение, но на първо време мисля да приложа върху 10-битовия PIC идеята с усилвателя, както и oversampling and averaging. Характерът на измерванията, които искам да правя в конкретния случай е такъв, че въпросните идеи като че ли най-удобно биха свършили работа. Нужно ми е да меря потенциали в интервал от порядъка между -100 и +100mV. Нещо, което забравих да спомена е, че въпросните потенциали трябва да се измерват в практическо отсъствие на ток във външната верига, така че входният импеданс трябва да бъде висок (поне от порядъка на 10 МOhm, какъвто е при обичайните цифрови мултиметри.) Някой сблъсквал ли се е с подобен проблем?


Пет Окт 01, 2004 7:53 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран
Аватар

Регистриран на: Съб Сеп 25, 2004 4:33 pm
Мнения: 273
Местоположение: София
Мнение 
Така или иначе входния импеданс на АЦП канала е от порядъка на мегаоми. Имаш ограничение само максималното съпротивление на източника да е 10к.

_________________
Adios
Mozfet


Пет Окт 01, 2004 12:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение Re: PIC 12F675 работи, но е 10-bit ... а сега накъде ...
zYtroN написа:
Написах си програма на Visual C++.NET за получаване на данни от устройство с PIC 12F675 по RS232 и представянето им графично. Всичко работи чудесно.


Сигурно звучи малко нагло ама мога ли да получа малко инфо за тая програма?


Чет Окт 07, 2004 1:30 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 14 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни