Как сделать счетчик импульсов на AVR
-
Тимур
Как сделать счетчик импульсов на AVR
Типа прикрутить фотодиод и фотоприемник??
Спасибо за ответ
Спасибо за ответ
-
Тимур
Счетчик
Вообщем для того что бы посчитать число проходящих
через него предметов.
Параметры сам не знаю.
через него предметов.
Параметры сам не знаю.
- Spider
- Опытный кот
- Сообщения: 732
- Зарегистрирован: Чт дек 29, 2005 07:29:25
- Откуда: Омск
- Контактная информация:
Я думаю, что для тупого подсчета "взмахов хвоста" достаточно повесить конструкцию из фотоприемника, транзистора и резисторов на таймер-счетчик с внешним прерыванием.
А если еще охото знать время прибывания хвоста
в зоне датчика (а заранее знаю скорость можно определить его толщину), то можно перецепить ту же конструкцию на прерывание настроенное на срабатывание по смене состояния и мерить время между срабатываниями.
А если еще охото знать время прибывания хвоста
в зоне датчика (а заранее знаю скорость можно определить его толщину), то можно перецепить ту же конструкцию на прерывание настроенное на срабатывание по смене состояния и мерить время между срабатываниями.
Re: Как сделать счетчик импульсов на AVR
Помогите разработать схему
- Вложения
-
- автомат.JPG
- (85.78 КБ) 1780 скачиваний
Re: Как сделать счетчик импульсов на AVR
Энкодер и Bascom-AVR. Счетчик импульсов
http://avrproject.ru/publ/ehnkoder_i_ba ... v/1-1-0-14

код в Bascom-AVR:
http://avrproject.ru/publ/ehnkoder_i_ba ... v/1-1-0-14
код в Bascom-AVR:
Код: Выделить всё
$regfile = Attiny2313.dat
$crystal = 8000000
Dim W As Word
Dim N1 As Byte
Dim N2 As Byte
Dim N3 As Byte
Dim N4 As Byte
Dim N5 As Byte
Dim N6 As Byte
Dim M1 As Long
Dim M2 As Long
Dim M3 As Long
Dim M4 As Long
Dim M5 As Long
Dim M6 As Long
Ddrd = &B11011011 ' аноды
Ddrb = &B11111111 ' сегменты
Config Int0 = Falling ' прерывание INT0 по нисходящему фронту (c + на -)
On Int0 Encod
Enable Interrupts
Enable Int0
Do ' в главном цикле отображаем количество импульсов
Portd = &B11111110
Select Case N1
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B11111101
Select Case N2
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B11110111
Select Case N3
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B11101111
Select Case N4
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Portd = &B10111111
Select Case N5
Case 0 : Portb = &B11000000
Case 1 : Portb = &B11111001
Case 2 : Portb = &B10100100
Case 3 : Portb = &B10110000
Case 4 : Portb = &B10011001
Case 5 : Portb = &B10010010
Case 6 : Portb = &B10000010
Case 7 : Portb = &B11111000
Case 8 : Portb = &B10000000
Case 9 : Portb = &B10010000
End Select
Waitms 5
Loop
End
Encod: ' тут узнаем в каком направлении вращают ручку энкодера
If Pind.5 = 1 Then ' если на ноге единица (импульс не пришел) тогда
Incr W ' инкременируем переменную (увеличиваем на 1)
Else ' в обратном случае
Decr W ' декрементируем переменную (уменьшаем на 1)
End If
Waitms 5 ' ждем пока утихнет дребезг контактов
Gifr = 64 ' сбрасываем регистр хранения прерывания INT0
' а тут готовим переменную к выводу на дисплей
M1 = W
M2 = M1
M3 = M1
M4 = M1
M5 = M1
M1 = M1 / 10000 ' обработка первого разряда
N1 = Abs(M1)
M2 = M2 Mod 10000 ' обработка второго разряда
M2 = M2 / 1000
N2 = Abs(M2)
M3 = M3 Mod 1000 ' обработка третьего разряда
M3 = M3 / 100
N3 = Abs(M3)
M4 = M4 Mod 100 ' обработка четвертого разряда
M4 = M4 / 10
N4 = Abs(m4)
M5 = M5 Mod 10 ' обработка пятого разряда
N5 = Abs(m5)
Return
- Вложения
-
- s19234711.jpg
- shem_m
- (20.28 КБ) 11803 скачивания
-
- 19234711.png
- shem
- (87.23 КБ) 1050 скачиваний
-
- counter.rar
- arhiv
- (1.55 КБ) 525 скачиваний
из ХЗ делаю ТЗ
Re: Как сделать счетчик импульсов на AVR
Есть ли смысль собирать?у нас в новосибирске с LCD стоит не больше 450 рублей (простой), при стоймости тиньки2313 126 рублей?
- nictrace
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вс янв 11, 2009 09:29:08
- Откуда: Ярославль
- Контактная информация:
Re: Как сделать счетчик импульсов на AVR
о! моя тема!
будем наблюдать!
Мои верные друзья - АМD и AVR
LM317 - атцтой, LM2576ADJ - форева!
LM317 - атцтой, LM2576ADJ - форева!
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Как сделать счетчик импульсов на AVR
vervoolf писал(а):у нас в новосибирске с LCD стоит не больше 450 рублей (простой), при стоймости тиньки2313 126 рублей?
Это где вы берете такие тиньки 2313?
Давно было, но покупал в новосибирском представительстве Аргуссофта (на советской) по 37р\шт. Еще можно вточку опоры заглянуть (была на Коммунистической) а не шастать по Микронике, Радиоле и пр. Современные цены не знаю.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Как сделать счетчик импульсов на AVR
vervoolf писал(а): у нас в новосибирске с LCD стоит не больше 450 рублей (простой), при стоймости тиньки2313 126 рублей?
Богатенькие Буратины ! Я в нашем захолустном Минске за 1$ покупал. За 3$ - AT90USB162. Вот те и кризис с инфляцией.
Re: Как сделать счетчик импульсов на AVR
А не подскажет ли ALL схему счетчика с таймером.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
Re: Как сделать счетчик импульсов на AVR
любой частотомер с изменяемой длительностью "окна" счета
Re: Как сделать счетчик импульсов на AVR
eXL писал(а):А не подскажет ли ALL схему счетчика с таймером.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
Ну так сам же весь алгоритм расписал, и все понятно : 2 счетчика, на один подаются считаемые импульсы, на другой - таймерные кварцованные, стартуются и останавливаются одновременно. А если на АВР, так это все вместо железки реализуется внутри МК программно. Программа - пара страничек ассемблера. Делов-то.
Re: Как сделать счетчик импульсов на AVR
BOB51
Где есть частотомеры с регулируемым плавно временем счета ?\
Ссылку плиз.
Где есть частотомеры с регулируемым плавно временем счета ?\
Ссылку плиз.
Последний раз редактировалось eXL Сб июн 30, 2012 16:46:25, всего редактировалось 2 раза.
Re: Как сделать счетчик импульсов на AVR
Jack_A писал(а):eXL писал(а):А не подскажет ли ALL схему счетчика с таймером.
Т.е. выставляем время счета 5...10...45сек...1...5...10 минут(т.е. регулируемое время) и считаем число импульсов пришедших за это время.
Ну так сам же весь алгоритм расписал, и все понятно : 2 счетчика, на один подаются считаемые импульсы, на другой - таймерные кварцованные, стартуются и останавливаются одновременно. А если на АВР, так это все вместо железки реализуется внутри МК программно. Программа - пара страничек ассемблера. Делов-то.
Дуб я в программировании
Re: Как сделать счетчик импульсов на AVR
тогдыть ничем не поможем - обЪявляй тему как "сделайте мне того и этого под заказ" 
Re: Как сделать счетчик импульсов на AVR
Открою страшную тайну ( только для участников ветки "Цифровая техника"
) - частотомеры можно делать и без МК ! Более того, именно так их и делали со времен Петра I вплоть до Ильича II . Легкими движениями руки за полдня частотомер паяется на рассыпухе типа 1533, 155 и т.п. Точность порядка 10^-5 -- легко, а если больше, надо мудрить с термостатированием опорного генератора или питаться от цезиевого стандарта частоты ( у кого есть
)
- Jman
- Мучитель микросхем
- Сообщения: 414
- Зарегистрирован: Ср янв 26, 2011 13:43:30
- Откуда: С того берега моря
- Контактная информация:
Re: Как сделать счетчик импульсов на AVR
Можно ли сделать счетчик на 5 каналов, на Тиньке 2313?
[color=#4080FF]- Бежит этот подлец-электрон, а вокруг его масса (аж 10 в 23й) штук ионов кремния и 10 в 15й ионов примеси и он, подлец, взаимодействует![/color]