Не работает программа ТАХОМЕТР - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » Не работает программа ТАХОМЕТР
Не работает программа ТАХОМЕТР
k2mozganet Дата: Пн, 03.01.2011, 23:26  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

ВОТ ЗА ПАРУ МИНУТ СОШКРЯПАЛ ПРОГУ ТАХОМЕТР, НА 2 тактный двигатель.... но что явно не так, не отображаются обороты......
может что0то не так.... не судите строго я только учусь.... только одна ошибочка тут измерение проходит за 1 секунду, а в проекте за 100 миллисекунд..... не работает не так не так.....

Прикрепления: Taxo.zip(19Kb)

Сообщение отредактировал k2mozganet - Пн, 03.01.2011, 23:28
ЯНДЕКС Дата: 03.01.2011
Matrix252005 Дата: Вт, 04.01.2011, 11:23  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток. k2mozganet, у Вас есть некоторые не точности в схеме:
1) VSS - это земля (GND), а VDD - соответственно - питание. А у Вас индикатор подключен наоборот!!!
2) LCDOUT $FE, $80 - я не знаю, что это значит. LCDOUT $FE, 1 - очистить и вывести информацию на экран.
3) if imp = 6 then LCDOUT $FE, $80, 400 : goto main исправьте на: if imp = 6 then LCDOUT $FE, 1, "400" : goto main (и так везде!!!)

И у Вас должно все заработать...


THE TRUTH IS OUT THERE.

С уважением, Николай.
k2mozganet Дата: Вт, 04.01.2011, 14:41  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Большое спасибо уважаемый Matrix252005. Сейчас попробую:)
MiXaS Дата: Вт, 04.01.2011, 14:48  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Здравствуйте, k2mozganet! А зачем Вы так усложняете столь простую программу? я предлагаю просто по формуле считать импульсы и переводить их в обороты/мин. Я так понимаю двигатель делает 1 импульс на 1 оборот, так?

Прикрепления: 6536674.rar(25Kb)

Сообщение отредактировал MiXaS - Вт, 04.01.2011, 14:54
Matrix252005 Дата: Вт, 04.01.2011, 15:17  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

k2mozganet, MiXaS прав. Так будет получше!!!! k2mozganet, попробуйте собрать на макетке и посмотрите МАХ значение для "W", если оно не превышает 255, то можете вместо "w var Word" написать "W Var Byte". Еще что я Вам посоветую, так это, пропишите порт для счета импульсов - "Imp Var PortB.3". В случае чего, Вам легче будет потом разобраться или изменить порт на другой... И если Вы планируете этим девайсом считать только об/дв, то может лучше использовать например: PIC12F629??? А значение выводить на LED индикатор...

THE TRUTH IS OUT THERE.

С уважением, Николай.
MiXaS Дата: Вт, 04.01.2011, 15:57  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Полностью согласен с Matrix252005. Так как задача простая слишком, а оборудование хорошее, дорогое и совсем ненагружненное.
k2mozganet Дата: Вт, 04.01.2011, 16:13  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Сегодня получил LCD ки WH0802A. Буду пробовать...... помимо этого еще хочу температурe мерять и выводить на LCD.
Matrix252005 Дата: Вт, 04.01.2011, 16:23  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

k2mozganet, учтите, что экран WH0802A - это 2 строчный 8 символьный!!!!!! Будьте внимательны!!! И про правильность питания не забудьте!!!

THE TRUTH IS OUT THERE.

С уважением, Николай.
k2mozganet Дата: Вт, 04.01.2011, 22:58  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Ребята я уже больше не могу..... В шпротеусе все работает. а в железе нет......

А вот эта падла работает на том же железе......

Только вот эту часть я е вижу на дисплее......

А все остальное работает даже кнопочки:((((((
Я уже не знаю что делать.... может я где-то затупил........:(((((
MiXaS Дата: Ср, 05.01.2011, 02:20  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 613
Репутация: 26   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Уважаемый k2mozganet. Код до ужаса прост. Подобный код Я сам применял. На порт вешал датчик отражения, подавал 1 через резистор 10к, а когда датчик срабатывал 0.Если я не ошибаюсь, то команде count все-равно какой переход считать. Таким образом Я из подручных средств сделал приметивный оптический тахометр.
Да,и еще, хоть убейте не могу понять что такое $80, может Вы пользуетесь конвертером символов???
Косяк может заключаться в том, что Вы прописываете TRISB = %00000000 весь порт на выход, а на в3 подаете сигнал? Но как описано в мануале команда count автоматически делает вывод входом. Но всеже попробуйте поменять на TRISB = %00001000

А подскажите пожалуйста уважаемый k2mozganet, какие импульсы, какой амплитуды подаете. А лучше схему.

Чуть не забыл! А как не работает? Дисплей показывает нули или Вообще ничего не показывает??

Сообщение отредактировал MiXaS - Ср, 05.01.2011, 02:23
Matrix252005 Дата: Ср, 05.01.2011, 10:42  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 672
Репутация: 20   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток. k2mozganet, если не работает в железе, то и нужно смотреть, "железо"!!!! Может Вы где то ошиблись. Проверьте еще раз. Посмотрите, что у Вас на входе МК и т.д.!!!!!

THE TRUTH IS OUT THERE.

С уважением, Николай.
k2mozganet Дата: Ср, 05.01.2011, 18:54  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.11.2010

Статус: Offline

Короче было дело в кварце..... и в DEFINE LCD_DATAUS 50. Поставил DEFINE LCD_DATAUS 200 и все отлично зараюотало....:)))) Пол ночи просидел:)
xppirat Дата: Вс, 20.03.2011, 14:19  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.03.2011

Статус: Offline

Здравствуйте. Помогите, пожалуйста, начинающему. Хочу сделать тахометр, но с индикацией на 3х разрядном 7ми сегментном светодиодном индикаторе. Опираясь на приведенный выше код, подправил начало программы под свои нужды. А вот дальше пока не доходит, как из переменной w1 вывести число на индикатор, да еще и в динамической индикации.
PBP да и программирование изучаю только второй день, так что, сильно не бейте если что, не так.


Сообщение отредактировал xppirat - Вс, 20.03.2011, 14:21
mikhail09p Дата: Вс, 20.03.2011, 20:33  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 495
Репутация: 10   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Вот подпрограмма вывода на индикатор, подправляй под себя.
Code
DisplayTime:    ;--------------------------------- отображение ----------------------------
          
             DigitDisp = TemperC Dig 2               ; первая слева цыфра
             'PORTA.0 = 0: PORTA.1 = 1: PORTA.2 = 1   ; включить первую цыфру, а остальные выключить  
             PORTA.0 = 1: PORTA.1 = 0: PORTA.2 = 0   ' для индикаторов собщим анодом FYT-3631BD
             GoSub LOOK                    ; сходить на преобразование в семисегментный код
             DelayMS 4                    ; ждать 4 Мс для отображения
             PORTB = %11111111                       ; выключить все сегменты OA=1 FYT-3631BD, OK=0

             DigitDisp = TemperC Dig 1               ; средняя цыфра  
             'PORTA.0 = 1: PORTA.1 = 0: PORTA.2 = 1   ; включить вторую цыфру, а остальные выключить
             PORTA.0 = 0: PORTA.1 = 1: PORTA.2 = 0   ' для индикаторов собщим анодом FYT-3631BD
             GoSub LOOK                    ; сходить на преобразование в семисегментный код
             PORTB = PORTB + t                       ; точка
             DelayMS 4                    ; ждать 4 Мс для отображения
             PORTB = %11111111                       ; выключить все сегменты OA=1 FYT-3631BD, OK=0
              
             DigitDisp = TemperC Dig 0               ; цыфра после точки
             'PORTA.0 = 1: PORTA.1 = 1: PORTA.2 = 0   ; включить пследнюю цыфру, а остальные выключить
             PORTA.0 = 0: PORTA.1 = 0: PORTA.2 = 1   ' для индикаторов собщим анодом FYT-3631BD
             GoSub LOOK                    ; сходить на преобразование в семисегментный код
             DelayMS 4                    ; ждать 4 Мс для отображения
             PORTB = %11111111                       ; выключить все сегменты OA=1 FYT-3631BD, OK=0
Return
               
LOOK:
         ; таблица для индикаторов с общим катодом  
         'PORTB = LookUpL DigitDisp,[63,6,91,79,102,109,125,7,127,111]
         ; таблица для индикаторов с общим анодом
         PORTB = LookUpL DigitDisp,[192,249,164,176,153,146,130,248,128,144]
Return

t равно 128 для отображения точки и "0" для тушения...
xppirat Дата: Пн, 21.03.2011, 14:27  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 23
Репутация: 0   ±
Замечания:   ±
На сайте с 20.03.2011

Статус: Offline

mikhail09p, Большое спасибо.
Пару часов разбирался в коде, но потом пришло озарение. Подправил код под себя, но дальше сразу возник другой вопрос.
При интервале измерения 500 миллисекунд происходит заметное мерцание индикатора, а при более коротком времени измерения при низких частотах вырастает погрешность измерения. Что скажете по этому поводу, как избавится от мерцания.

Прикрепления: Taxo.rar(15Kb)
Форум Picbasic.ru » Программирование МК » PicBasicPro » Не работает программа ТАХОМЕТР
Страница 1 из 212»
Поиск: