AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
06.08.2016, 11:06
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,897
Сказал спасибо: 2,543
Сказали Спасибо 11,819 раз(а) в 5,925 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от miwutka
|
7кгц хватит с головой..... На тахометре импульсы выше 1 кгц не будут ити полюбому
|
Чем больше числа, тем выше точность.
Представим, в пределе, такую ситуацию. У Вас на максимальных оборотах таймер насчитал один импульс. А сколько там было на самом деле? Один? Или почти два? Погрешность 50%. Или 100% ?
Вот и чешите репу - как и рыбку съесть, и на ... не сесть.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
06.08.2016, 11:32
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Спидометр атмега 8
Всем привет.
miwutka, как и обещал подкидываю проект в AVR Studio. Частоты заложил твои. Количества импульсов на оборот я не знаю, поставил от фонаря =4. Если надо можешь поменять в константах.
При частоте 8000000 гц. и делителе 64 при 4 имп/об.
считает от 28 оборотов до 65тыс с лишним.
Функция возвращает количество оборотов. Тебе осталось преобразовать в строку и вывести на индикатор.
Может это "медвежья услуга" Но я думаю, сам ты не попробуешь то, что я предлагаю.
Правда я нашпиговал подробными комментариями.
Последний раз редактировалось МВА; 06.08.2016 в 11:41.
|
|
|
|
06.08.2016, 11:48
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
МВА, Огромное спасибо. Сейчас буду изучать!!!
Прошил, проверил. Всё работает. 1 кГц на входе дал. 2 имп на оборот поставил. 3000 об/мин. Чуть жара спадет - пойду проверю. А то в машине(2103) кондишн сломался еще в 1978 году )))
Последний раз редактировалось miwutka; 06.08.2016 в 12:12.
|
|
|
|
06.08.2016, 12:22
|
|
Гражданин KAZUS.RU
Регистрация: 15.08.2010
Адрес: Днепр
Сообщений: 842
Сказал спасибо: 74
Сказали Спасибо 199 раз(а) в 174 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от miwutka
|
МВА, Огромное спасибо. Сейчас буду изучать!!!
Прошил, проверил. Всё работает. 1 кГц на входе дал. 2 имп на оборот поставил. 3000 об/мин. Чуть жара спадет - пойду проверю. А то в машине(2103) кондишн сломался еще в 1978 году )))
|
Только что нашел небольшой недостаток в программе.
В функции Math() лучше изменить приведение данных чтобы не отбросилась дробная часть еще при умножении.
было написано так:
PHP код:
|
TempV = (float)(tim_between * n);
|
лучше написать так:
PHP код:
|
TempV = (tim_between * (float)n);
|
TempV и tim_between и так float. Так что лучше приводить не результат а саму переменную n.
Цитата:
|
1 кГц на входе дал. 2 имп на оборот поставил. 3000 об/мин.
|
3000 об/мин * 2 = 6000имп/мин.
6000/60=100 имп/сек.
Это частота 100 гц. При 1 кГц должно показать 30 000 об/мин.
Последний раз редактировалось МВА; 06.08.2016 в 13:42.
|
|
|
|
06.08.2016, 14:20
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
МВА, ну да, я ж умножаю на 0.001 полученные обороты чтобы вывести на светодиоды. 30-ый светодиод это 3000 оборотов. Да, получается 30 000 об. Останется только проинтегрировать чтобы не очень быстро менялись показания и всё. Вечером проверю.
|
|
|
|
06.08.2016, 22:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
Работает как и у меня..... Незнаю что и дулать теперь..... Вот два видео в архиве. Без фильтрации - вывожу V на индикацию. Во втором интегрирую V и потом вывожу. Что может быть подскажите..... ЖК не подключен. Чувствую что нужно будет припаять......
|
|
|
|
06.08.2016, 23:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,042
Сказали Спасибо 10,613 раз(а) в 3,604 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от miwutka
|
Во втором интегрирую V и потом вывожу
|
Во втором получилась классная цветомузыкальная установка. Такое впечатление, что светодиоды управляются не датчиком скорости, а музыкой.
А я еще надеялся, что описал алгоритм тахометра достаточно понятно... Там ведь проще некуда.
|
|
|
|
06.08.2016, 23:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
Alex9797, я проверил 4 алгоритма и все они приводят к одному и тому же....
вот последний проект...
Не знаю что еще может быть не так.... Осталось с осциллографом поехать в гараж и увидеть что прям вот так скачет частота..... то есть импульсы... бред какой то получается....
почему то всё что пишу в основном цикле - не выполняется.....
|
|
|
|
06.08.2016, 23:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,042
Сказали Спасибо 10,613 раз(а) в 3,604 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от miwutka
|
я проверил 4 алгоритма и все они приводят к одному и тому же
|
А можно их перечислить, все четыре? И с описанием каждого. Пусть описания будут хоть краткими, но чтобы при этом понятно было, что там в них происходит.
|
|
|
|
06.08.2016, 23:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: Спидометр атмега 8
Сообщение от Alex9797
|
По поводу разной точности при разных оборотах. Я подобную проблему решаю так. Задаюсь неким минимальным числом, которое гарантированно обеспечивает заданную точность вычислений. Это число должно быть примерно на треть, или на половину меньше максимального значения. Например, для максимального двухбайтового 65535 выберем число 40000. Это количество тиков, заполняющих счетчик таймера. Одновременно надо вести подсчет количества импульсов датчика скорости.
1. Обнуляем таймер и счетчик импульсов.
2. Ожидаем фронт первого импульса датчика скорости.
3. Дождались - запустить таймер на подсчет тиков времени.
4. Ожидаем фронт следующего импульса.
5. Дождались - прибавляем единицу к счетчику импульсов, и считываем счетчик таймера. Сравниваем считанное значение с нашим числом 40000. Если считанное меньше - возврат на п.п.4.
6. Если уже набралось 40000 и более - ожидаем фронт очередного импульса.
7. Дождались - быстренько останавливаем счет таймера, прибавляем единицу к счетчику импульсов, и делим количество тиков таймера на количество импульсов.
Таким способом мы всегда получим точность вычислений в заданных пределах, и минимальную погрешность, так как мы всегда имеем дело с целым количеством импульсов датчика.
Конечно, при ожидании очередного фронта импульса можно его и не дождаться, если двигатель вообще остановился. Поэтому надо контролировать переполнение таймера.
|
Чего то мне кажется что если я ваш алгоритм впишу в посследний мой, то будет тоже самое.... Но наверно прийдется и так попробовать. Ну не может же так сильно меняться индикация.....??
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:42.
|
|