Как вам такой тахометр?

Pa5ha

Prikupets, написал процедуру деления 16/16 😃 Быстрая, но не думаю, что оптимальная. Слышал, что 16/16 есть за 100 тактов, и даже за 25 😃 , но это наверно на 16-тибитной платформе

Пока это не оформлено и представляет некоторую комерческую тайну. Но как только, так сразу 😃 Если есть вопросы - пишите в личку/на мыло. Помогу/поделюсь, чем смогу 😉

lvmaxx

На форуме было обсуждение звукового тахометра.
Посоветовали мне тогда обратиться в Украину - написал дважды - молчат насмерть!
Может кто подскажет как решить этот вопрос. Звуковой нужен для автомодельных двигателей, желательно и для 2-х и для 4-х тактных моторов.

Gold
Pa5ha:

Prikupets, написал процедуру деления 16/16 😃 Быстрая, но не думаю, что оптимальная. Слышал, что 16/16 есть за 100 тактов, и даже за 25 😃 , но это наверно на 16-тибитной платформе

Пока это не оформлено и представляет некоторую комерческую тайну. Но как только, так сразу 😃 Если есть вопросы - пишите в личку/на мыло. Помогу/поделюсь, чем смогу 😉

деление 16/8 примерно так

clrf rem
movlw d’16’
movwf cnt
loop rlf val, f
rlf val+1, f
rlf rem, f
movfw div
subwf rem, w
btfsc STATUS, C
movwf rem
decfsz cnt, f
goto loop
rlf val, f
rlf val+1, f

val/div - val частное, rem остаток. 10*16 тактов или 7*16 если без цикла.

тем же способом 16/16, но уже с goto. чего существенно быстрее придумали для 16/16 в общем случае не представляю. Для частных случаев деления на конкретную константу - деление заменяется умножением и иногда ускоряется более чем существенно.

а применительно к счетчикам куда проще (не быстрее, но короче код) считать сразу в bcd с дробной частью. допустим если тебе посчитанное значение в конце каждый раз нужно поделить на 1234 и вывести в десятичном виде, то считать сразу так:

rem16 = rem16+ 0x35; // 0x10000 / 1234
if( carry ) bcdincrement(val)

Pa5ha

Gold, это наверно для пиков. Щаз буду долго и упорно втыкать т.к. что-то совсем не понятен язык.

Можно хотя бы в двух словах алгоритм?

Gold
Pa5ha:

Gold, это наверно для пиков. Щаз буду долго и упорно втыкать т.к. что-то совсем не понятен язык.

Можно хотя бы в двух словах алгоритм?

rem = 0;
for(1..16) {
  shift_left(rem,val_hi,val_lo, carry);
  if( rem >= div ) {
	rem -= div;
	carry = 1;
  }
  else
	carry = 0;
}
shift_left(val_hi,val_lo,carry)

обычное деление в столбик. в процессе делимое замещается на частное, чтоб лишних переменных не плодить

Pa5ha

Ну у меня почти так же 😃

Итак, у нас появилась небольшая большая проблема. При проверке выяснилось, что фототранзисторы из мышек никак не реагируют на дневной свет 😮

Minus
Pa5ha:

Ну у меня почти так же 😃

Итак, у нас появилась небольшая большая проблема. При проверке выяснилось, что фототранзисторы из мышек никак не реагируют на дневной свет 😮

исправный фототранзистор ДОЛЖЕН реагировать на IR его составляющую.

как включали?

Д_Заточник

исправный фототранзистор ДОЛЖЕН реагировать на IR его составляющую.

И реагирует. Второй вариант более душный, но результативный. В уже разобранной мышке есть ИК светодиод (даже два, как и фототранзисторы 😃 ). Вешаем его через токоограничивающий резистор ну хотя бы на выход трансформатора 220/5 В с выпрямительным мостиком без емкостного фильтра и имеем так необходимые для настройки 100 Гц в инфракрасном диапазоне.

Добавлено: Вот приаттачил файлик в PDF с характеристиками фототранзистора от мышки.

Pa5ha

Д. Заточник, все это, конечно, хорошо, но 100 гц есть т.к. свет от лампы ловится просто здорово. А вот с выключенной лампой, если пальцем помахать перед фототранзистором, то кажет 0 все равно.

Minus, ну дак коллектор эмиттер. Не помню, как именно. Именно при дневном свете у меня ничо не пашет.

Д_Заточник

В инструкции к фирменному тахометру написано примерно следующее: “Поместите тахометр позади пропеллера так, чтобы на пропеллер падал свет. В качестве источника освещения может выступать небо.”
Т.е. если просто дома ткнуть тахометром в пропеллер, то он ничего не намеряет. А вот если поднести самолет к окну, а потом померять…

Minus
Pa5ha:

Д. Заточник, все это, конечно, хорошо, но 100 гц есть т.к. свет от лампы ловится просто здорово. А вот с выключенной лампой, если пальцем помахать перед фототранзистором, то кажет 0 все равно.

Minus, ну дак коллектор эмиттер. Не помню, как именно. Именно при дневном свете у меня ничо не пашет.

Я правильно понял что 100 гц с лампы ентим фототранзистором “ловятся здорово” ?

Дабы вспомнили как именно енти “коллектор - эмитер” вот пару более - менее стандартных схем использования ентих фототранзисторов как сенсоров…

Ежли и включили правильно и транзистор рабочий а на пропеллер не реагирует - попробуйте ентот пропеллер подсвечивать IR же светодиодами…

12 days later
1 month later
11 days later
HuNETer

а кто-нибудь повторял схему
modelism.net/taho.php?advid=3420268809&advrnd=4771…

во всех схемах из этого топика используются контроллеры снятые с производства, вот и ищу что-то доступное по элементной базе 😊

Д_Заточник

Читай внимательно всю ветку про эти тахометры, Собака скорее всего порылась в фотодатчике и его обвязке. Для триггера нужны хорошие входные импульсы с крутыми фронтами. Как только получишь - заработает.

pedro
Д_Заточник:

Читай внимательно всю ветку про эти тахометры, Собака скорее всего порылась в фотодатчике и его обвязке…

Не в фотодатчике дело…Косяк где-то в программе.Собирал я тахометр в PROTEUSе-фигню показует,а в железе- вообще ничего на индикаторах не высвечивает!
Народ!!!Помогете разобраться с программой…буду благодарен!!!

GeeBee

У Филипа все проги рабочие. Ищите ошибки в монтаже.

dimik

Собирал ЛИЧНО! Все прекрасно работает. Т.е. программы работоспособные

jan

И у меня почему-то работает. 😜

pedro

Народ,я спрашивал про тахометр на светодиодных индикаторах,а не на LCD! 😊