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

Мерене на обороти
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5675
Страница 1 от 2

Автор:  i_dachev [ Пон Апр 07, 2008 10:33 am ]
Заглавие:  Мерене на обороти

Имам следната задача да замеря обороти за една минута.
Първоначално го направих като ползвам таймер на PIC18 процесор.
Меря за някакъв период да кажем 500ms и смятам колко е за една минута.
Това работи но за по високи обороти ако оборотите са под 200 започва да не е точно.

Чудя се как да реализирам този оборотомер да може да хваща и 10 оборота.
Измислих да меря дължината на импулса като в първия момент ми дойде следното
хрумване:

1. Нулирам таймера и му сетвам максимална стойност.
2. Разрешавам прекъсване и чакам да се активира препълване
тоест да хване следващия импулс.
3. При активиране на прекъсването си запомням текущо колко ми е времето
с точност 100us.
4. Нулирам пак таймера и му сетвам максимална стойност.
5. Разрешавам прекъсване и чакам да се активира препълване.
6. При активиране на прекъсването меря колко е текущото време вадя от
първоначалното и така получавам с точност 100us колко е дълъг сигнала
и изчислявам колко оборота са за минута и показвам на екрана.

Чудя се дали има по добър метод от този който описах.
Може да се ползва и PORTB interupt on change но мисля че пак
ще е същия принцип.

Някой ако го е правил това моля да сподели как най добре и лесно става с PIC18/16 процесори.

Автор:  setoy [ Пон Апр 07, 2008 11:11 am ]
Заглавие: 

Заинтересувай се от CCP (capture-compare) перифериите, те са точно за това

Автор:  i_dachev [ Пон Апр 07, 2008 4:18 pm ]
Заглавие: 

Разгледах го но то само улеснява че детектва rising/falling edge.
Иначе процеса пак е същия взимаш си текущото състояние на
таймер брояча.

Понеже меря на RA4 честота и брояч за да ползвам CCP-то дали
е добра идея да свържа директно RA4 към CCP1 вход на процесора?

Някой връзвал ли ги е така паралелно тия два входа?

Автор:  tgi [ Пон Апр 07, 2008 8:19 pm ]
Заглавие: 

Очевидното решение е да мериш период и да смяташ
от него честота, когато става дума за ниски честоти, какъто е случаят.
Последните 20+ години вече губя бройката на този си отговор на този
въпрос - е, сега архивиран във форума белким хване по-добре :) .

Автор:  syscop [ Пон Апр 07, 2008 9:48 pm ]
Заглавие: 

Погледни една блокова схема на честотомер. Каво ли ще се получи ако управляваш gate с входния сигнал, а на входа подадеш някакъв сигнал с точно определена честота ? Остава да сметнеш дали при максимални обороти грешката, която се получава не става много голяма.

Автор:  setoy [ Вто Апр 08, 2008 10:24 am ]
Заглавие: 

tgi написа:
Очевидното решение е да мериш период и да смяташ
от него честота, когато става дума за ниски честоти, какъто е случаят.
Последните 20+ години вече губя бройката на този си отговор на този
въпрос - е, сега архивиран във форума белким хване по-добре :) .


Не се надявай, вече го има архивиран само в този форум поне на 3-4 места :) И пак не хваща :) Съжалявам :cry:

Автор:  i_dachev [ Вто Апр 08, 2008 10:25 am ]
Заглавие: 

Така изясни ми се :) и точно какво да ползвам от CCP модула на процесора.

И тук идва един проблем за да мога да хвана малки обороти трябва да пусна таймера
на много ниска честота. Иначе много бързо се препълва и трябва да слагам допълнителен
брояч за препълването.

Ситуацията е следната ако сложа такъв брояч то нямам гаранция, че при генериране на
прекъсване от CCP модула когато е копирал стойността на таймера то моя брояч на
препълване ще бъде валиден тоест ще съответства точно на това което CCP-то е взело.

Мога да сложа и по нисък кварц и да ползвам външен такт само за таймера за CCP,
но ми се ще да мина без него.

На високи обороти нямам никакъв проблем, но на ниски нещо както измислих това с
препълването не бачка много добре. Предполагам че е от грешка в сметките и делението.
Правя го като ползвам unsigned long и натрупвам в него и смятам оборотите като деля
и при това деление нещо се намазва.

Автор:  i_dachev [ Вто Апр 08, 2008 10:46 am ]
Заглавие: 

Сега си видях грешката като съм добавял препълването не съм го кастнал към
unsigned long и то си го е смятало като int и не е слагало правилно препълването.

Всичко си работи :) так че съм много доволен.

Дано да послужи този разговор на други които правят първи стъпки в CCP capture.

Автор:  bongo-bongo [ Сря Апр 09, 2008 1:05 am ]
Заглавие: 

Ся се сетих, че обороти се мерят и онлайн: http://www.i_dachev.homo.com :)

Автор:  kasparov [ Сря Апр 09, 2008 10:02 am ]
Заглавие: 

bongo-bongo написа:
Ся се сетих, че обороти се мерят и онлайн: http://www.i_dachev.homo.com :)


Не виждам раздел в този форум, където да има място за такива включвания, а ако форума е сериозен, те е ясно
какво би следвало за автора. Най лесно е да се из****ш на метеното.

Автор:  i_dachev [ Сря Апр 09, 2008 2:58 pm ]
Заглавие: 

Помогнах му един път на бонго бонго да си намери нещо в нета и големи благодарности ми писа.
Но явно е сметнал че моите въпроси заслужават такива отговори, знам ли той си се излага сам.

Това че питам за неща който до сега не съм се занимавал, не означава че съм писал просто ей така
да си начешам крастата. Потърсих най обстойно във форума и не видях отделна тема как се мерят обороти
от най елементарните неща за това и реших да пиша.

Автор:  wolfshark [ Сря Апр 09, 2008 4:15 pm ]
Заглавие: 

Той имаше в предвид брояча долу дето брои завърнтанията. :D

Автор:  setoy [ Сря Апр 09, 2008 4:20 pm ]
Заглавие: 

http://www.mcu-bg.com/mcu_site/viewtopi ... 0%E8%EE%E4

Тук темата е разнищена доста подробно. (за честота/период)

Бонго, точно от тебе такава простотия не очаквах 8O Направо си за баннн, мен ако питат

Автор:  Koleto [ Сря Апр 09, 2008 5:39 pm ]
Заглавие: 

Бонго,

Язък ти за подписа дето си си го сложил...

Автор:  fan [ Сря Апр 09, 2008 6:21 pm ]
Заглавие: 

А стига бе, "Сухари" такива! А ми човека явно искаше да разведри темата. Я малко по-весело, да не би да е показал до сега лоши намерения, я му вижте постовете! :D

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