Официальный сайт компании Arduino по адресу arduino.cc
Круг почета панель приборов
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 16/09/2014 - 18:20
Думаю для большинства автолюбителей будет интересно воплотить в жизнь тест приборки.
понятно, что не для тестов, а хочется видеть живность при включение зажигания.
теперь отойдем от слов и посмотрим о чем речь, вот первый ролик на ютубе который попался
http://www.youtube.com/watch?v=OjIs3UvWhnc
Сообствено мой опыт в ардуино мал и вот что у меня получилось:
/////// Присваиваем входы/выходы ///////////////////////////////////////////////////////////// const int OutTaxometr = 4; // тахометр сигнал const int OutSpeedometr = 5; // спидометр сигнал /////// Переменные /////////////////////////////////////////////////////////////////////////// unsigned long s1 = 222000; unsigned long s2 = 2000; unsigned long t1 = 68000; unsigned long t2 = 500; int sp = 0; int ta = 0; int flagSpe = 0; int flagTax = 0; int activSpe = 0; int activTax = 0; /////// Таймера ////////////////////////////////////////////////////////////////////////////// unsigned long Tspd = 0; // unsigned long TspePer = 0; // unsigned long Ttax = 0; // unsigned long TtaxPer = 0; // ////////////////////////////////////////////////////////////////////////////////////////////// void setup() {pinMode(OutTaxometr, OUTPUT); pinMode(OutSpeedometr, OUTPUT);} void loop(){ ////// Тахометр ////////////////////////////////////////////////////////////////////////////// if (TtaxPer < micros() && ta < 66){ ta = ta + 1; TtaxPer = micros() + 40000;} if (ta == 1){t1=75000;} if (ta == 2){t1=75000;} if (ta == 3){t1=47000;} if (ta == 4){t1=36000;} if (ta == 5){t1=28400;} if (ta == 6){t1=23600;} if (ta == 7){t1=19800;} if (ta == 8){t1=17060;} if (ta == 9){t1=14900;} if (ta == 10){t1=13200;} if (ta == 11){t1=11900;} if (ta == 12){t1=10700;} if (ta == 13){t1=9850;} if (ta == 14){t1=9050;} if (ta == 15){t1=8250;} if (ta == 16){t1=7680;} if (ta == 17){t1=7150;} if (ta == 18){t1=6750;} if (ta == 19){t1=6375;} if (ta == 20){t1=6000;} if (ta == 21){t1=5680;} if (ta == 22){t1=5400;} if (ta == 23){t1=5160;} if (ta == 24){t1=4930;} if (ta == 25){t1=4720;} if (ta == 26){t1=4440;} if (ta == 27){t1=4290;} if (ta == 28){t1=4145;} if (ta == 29){t1=3978;} if (ta == 30){t1=3830;} if (ta == 31){t1=3700;} if (ta == 32){t1=3565;} if (ta == 33){t1=3440;} if (ta == 34){t1=3440;} if (ta == 35){t1=3565;} if (ta == 36){t1=3700;} if (ta == 37){t1=3830;} if (ta == 38){t1=3978;} if (ta == 39){t1=4145;} if (ta == 40){t1=4290;} if (ta == 41){t1=4440;} if (ta == 42){t1=4720;} if (ta == 43){t1=4930;} if (ta == 44){t1=5160;} if (ta == 45){t1=5400;} if (ta == 46){t1=5680;} if (ta == 47){t1=6000;} if (ta == 48){t1=6375;} if (ta == 49){t1=6750;} if (ta == 50){t1=7150;} if (ta == 51){t1=7680;} if (ta == 52){t1=8250;} if (ta == 53){t1=9050;} if (ta == 54){t1=9850;} if (ta == 55){t1=10700;} if (ta == 56){t1=11900;} if (ta == 57){t1=13200;} if (ta == 58){t1=14900;} if (ta == 59){t1=17060;} if (ta == 60){t1=19800;} if (ta == 61){t1=23600;} if (ta == 62){t1=28400;} if (ta == 63){t1=36000;} if (ta == 64){t1=47000;} if (ta == 65){t1=75000;} if (ta == 66){t1=150000;} if (ta == 66){activTax=1;analogWrite(OutTaxometr, 0);} if (activTax == 0){ if (Ttax <= micros() && flagTax == 0){ analogWrite(OutTaxometr, 255); flagTax = 1; Ttax = micros() + t1;} if (Ttax <= micros() && flagTax == 1){ analogWrite(OutTaxometr, 0); flagTax = 0; Ttax = micros() + t2;}} ////// Спидометр ///////////////////////////////////////////////////////////////////////////// if (TspePer < micros() && sp < 70){ sp = sp + 1; TspePer = micros() + 35000;} if (sp == 1){s1=200000;} if (sp == 2){s1=100000;} if (sp == 3){s1=70000;} if (sp == 4){s1=45550;} if (sp == 5){s1=34500;} if (sp == 6){s1=27200;} if (sp == 7){s1=22400;} if (sp == 8){s1=18900;} if (sp == 9){s1=16200;} if (sp == 10){s1=14200;} if (sp == 11){s1=12650;} if (sp == 12){s1=11300;} if (sp == 13){s1=10190;} if (sp == 14){s1=9250;} if (sp == 15){s1=8420;} if (sp == 16){s1=7720;} if (sp == 17){s1=7120;} if (sp == 18){s1=6580;} if (sp == 19){s1=6120;} if (sp == 20){s1=5660;} if (sp == 21){s1=5270;} if (sp == 22){s1=4940;} if (sp == 23){s1=4620;} if (sp == 24){s1=4480;} if (sp == 25){s1=4340;} if (sp == 26){s1=4215;} if (sp == 27){s1=4100;} if (sp == 38){s1=4100;} if (sp == 39){s1=4215;} if (sp == 40){s1=4340;} if (sp == 41){s1=4620;} if (sp == 42){s1=4940;} if (sp == 43){s1=5270;} if (sp == 44){s1=5660;} if (sp == 45){s1=6120;} if (sp == 46){s1=6580;} if (sp == 47){s1=7120;} if (sp == 48){s1=7720;} if (sp == 49){s1=8420;} if (sp == 50){s1=9250;} if (sp == 51){s1=10190;} if (sp == 52){s1=11300;} if (sp == 53){s1=12650;} if (sp == 54){s1=14200;} if (sp == 55){s1=16200;} if (sp == 56){s1=18900;} if (sp == 57){s1=22400;} if (sp == 58){s1=27200;} if (sp == 59){s1=34500;} if (sp == 60){s1=45550;} if (sp == 61){s1=70000;} if (sp == 62){s1=100000;} if (sp == 63){s1=200000;} if (sp == 64){s1=200000;} if (sp == 65){s1=200000;} if (sp == 66){s1=200000;} if (sp == 67){s1=200000;} if (sp == 68){s1=200000;} if (sp == 69){s1=200000;} if (sp == 70){s1=200000;} if (sp == 70){activSpe=1;analogWrite(OutSpeedometr, 0);} if (activSpe == 0){ if (Tspd <= micros() && flagSpe == 0){ analogWrite(OutSpeedometr, 255); flagSpe = 1; Tspd = micros() + s1;} if (Tspd <= micros() && flagSpe == 1){ analogWrite(OutSpeedometr, 0); flagSpe = 0; Tspd = micros() + s2;}} ////////////////////////////////////////////////////////////////////////////////////////////// }
Получилась жуткая пародия на то что должно быть.. стрелки не синхроны, и сам ход не правный, как бы я не менял значения.
вообщем мне кажется я пошел не правильным путем.. Помогите стать на путь истиный)
PS датчики я подключил через резистор TIP 122 что было под рукой.
не вникая глубоко как я понимаю логика
два индикатора
две таблички соответствий
два ШИМ-а
а не все ноги для получения ШИМ-ов оптимальные (не важно что все ноги можно как-нибудь да ШИМ-ить)
если мне не изменяет память оптимально что у нас там
схему бы увидеть
что вообще за плата
для начало может ногу ArduinoUnoR3 4 перекинуть на 6 или на 3
Извеняюсь много не сказал)
Ардуино мини плата, транзисторы TIP 122, и панель приборов с аккорда 92года.
как спидометр так ни тахометр считывают импульсы, вернее тахометр получает два импулься за один оборот коленвала,
а спидометр получает 4 импульса за один оборот колеса (не 6ть! импульсов как на вазе)
вот схема как я подключил
с твоей стороны нога 4 для ШИМ-а не такая как рядом пара 5 и 6 я бы накачивать ключи начал равномерней прежде чем таблицы поправок строить наример перепаяв ножку
воткни осцилограф сам увидишь
со стороны опелевцев сам говоришь импульсы разные нужны
по твоему коду не вникал
http://arduino.cc/en/Main/ArduinoBoardMini
ШИМ не поможет, она с постоянной частотой работает
вам нужно построить управляемый генератор импульсов, для тахометра - от 2 Гц до 13200 Гц - и за 1...2 секунды линейно выдать эти частоты на выход
для спидометра - не считал.... не знаю радиус колёс на вашей машинке и лень
ШИМ не поможет, она с постоянной частотой работает
вам нужно построить управляемый генератор импульсов, для тахометра - от 2 Гц до 13200 Гц - и за 1...2 секунды линейно выдать эти частоты на выход
для спидометра - не считал.... не знаю радиус колёс на вашей машинке и лень
я может че-то не доганяю а где ты 13 тысяч насчитал
мотор обороты макс 800х.х. 2500кресерская 4500 сметрельная датчик один с венца маховика болше 5000 не должен вроде
тросик на коробке там вообще меньше
разве от 16 миллионов кварца 10 тысяч не отсчитать и не успеть выдать
я чего-то не понимаю?
"два импульса за один оборот коленвала" я может отстал от жизни? Как? имееится в виду сто на коленвалу 2 зуб распилен или спилен?
ну хорошо прикинем субару импреза врх моя крпутила 7000*2=14000
и что 16 000 000 мегагерцовый контроллер не успеет делить до 16 000 герц? он же в 1000 раз быстрей
ШИМ не поможет, она с постоянной частотой работает
вам нужно построить управляемый генератор импульсов, для тахометра - от 2 Гц до 13200 Гц - и за 1...2 секунды линейно выдать эти частоты на выход
для спидометра - не считал.... не знаю радиус колёс на вашей машинке и лень
Для меня постройка генератора импульсов равна тому же что отправить ракету в космос)
я еще туго соображаю как это сделать, сейчас сижу в гугле и пока не чего не нашел на эту тему.
да есть хорошие статьи как сделать генератор этот но везде используют програматор для чипов, а у меня только ардуино и желание есть)
идею я понял, пока завис на поиске готового решения (генератора)
я может че-то не доганяю а где ты 13 тысяч насчитал
мотор обороты макс 800х.х. 2500кресерская 4500 сметрельная датчик один с венца маховика болше 5000 не должен вроде
тросик на коробке там вообще меньше
разве от 16 миллионов кварца 10 тысяч не отсчитать и не успеть выдать
я чего-то не понимаю?
"два импульса за один оборот коленвала" я может отстал от жизни? Как? имееится в виду сто на коленвалу 2 зуба выломаны?
.
пока не отвлекайся
любой самый скромный микропроцессор работает на 4 000 000 частоте и покроет потребности любого более оборотистого самолета на 1 000 000 импульсов
а мы тут трясти собрались максимум даже легко повтонряемых звкуовых частот 16 000 герц
проехали
я вижу что ты ШиротноИмпульсноМодулирешь ногой которая из-за универсальности обвешана так что ШИМ-ить ей трудно
пока не отвлекайся
любой самый скромный микропроцессор работает на 4 000 000 частоте и покроет потребности любого более оборотистого самолета на 1 000 000 импульсов
Да я тебя понял, что ардуинка запросто справится с этой задачей, но проблема в генераторе, я не могу найти статьи для чайника где описуется как его создать.
А потом как я понимаю при помощи него можно будет запросто управлять датчиками спид.тахом.
1 осцилограф есть?
2 акордовкая панелm что это за хрень такая как чайнику обьясни?
3 датчик обортов мотора - это на венце маховика спилы и магнитный датчик на оборот выдает импулсь 1 ?
4 датчик скорости - это в коробке спилы и магнитный датчик выдает на оборот колеса импульс 4 ?
осцилографа нету,
панель приборов, или щиток панели приборов хз как правильно но вот фото ее
http://razborka.com.ua/files/spareshop/photo/ms-182461.jpg
расслабся су-27 зажрался со своей электроникой и пихает ее всюду
arduino это уже 20 независымых генераторов до звуковых частот легко непринужденно
ты воей программой решаешь куда и как
код может быть каким угодно лишь бы ты сам его понимал и мог отладить
тут используется классический С обрезанный для микроконтроллеов
а так все как всегда
include подключение библиотек
int инициализация выделение памяти
void setup(){ инициализация переферии одноразовая
}
майн он и в африке майн
void loop(){
}
подрограммки
void moyamnogorazovayaxren(){
}
ну постоянно пока loop-ишь переприсваиваешь табличку
потом вынесешь в int-ы повыше один раз какой-нибудь int massivdlyataxometra[]={234,245,3345,5345,6534,656,55,676,6768,6576}
может в присваивании и есть где косяк логический
у тебя аппаратно не все ровно
генераторы импульсов строятся на счётчиках МК St_0 , St_1 , St_2 - St считает от 0 до 2457 и обнуляется, переводя некий пин в инверсное состояние - и опять считает от 0 до 2457 и обнуляет........... ВОТ ЭТА 2457 и будет определять частоту, 5768 - другая частота, 65400 - третья, чем больше число, тем меньше частота
короче - вам в сторону счётчиков МК надо плыть
расчёты для Арт100 - 1 оборот = 2 импульса , за минуту - 900 rpm = 1800 импульсов , 10000 rpm = 20000 импульсов
а 13200 я взял из кода ТС - там в ифах прописано максимально 6600
а типеричЯ - отстань ! у тибя блохи !
пока не отвлекайся
любой самый скромный микропроцессор работает на 4 000 000 частоте и покроет потребности любого более оборотистого самолета на 1 000 000 импульсов
Да я тебя понял, что ардуинка запросто справится с этой задачей, но проблема в генераторе, я не могу найти статьи для чайника где описуется как его создать.
А потом как я понимаю при помощи него можно будет запросто управлять датчиками спид.тахом.
два счётчика - один на тахометр, второй на спидометр
можно сделать и не через железо, а программно - через милли()
можно сделать и не через железо, а программно - через милли()
милли не получится, пробывал. Получается если 1 миллис то спидометр показывает все 250 км то есть заходит за пределы, а если поставить 2 миллис то стрелка показывает около 180 км час. то есть промежуток большой очень.
По этому я использовал микрос в программе, но если еще момент можно увидеть по таблице, что чем больше скорость на спидометре тем меньше промежуток.
а типеричЯ - отстань ! у тибя блохи !
хорошо что предупредил. С блохами всех на улицу выгоняй.
Меня смущает название. Круг почета. Почему не квадрат уважухи?
А че это за такие древние приборы что на аналоге работают? Как же канбус и все такое?
попробуй так
.....тока никак не хочет голова думать - тахометр покажет 3000 или 1500 ? :(
зачем микрос() ?
для тахометра - 900 rpm = 15 rps = 30 импульсов в секунду = 30 Гц = 33 mS
для тахометра - 3000 rpm = 50 rps = 100 импульсов в секунду = 100 Гц = 10 mS
для тахометра - 6000 rpm = 100 rps = 200 импульсов в секунду = 200 Гц = 5 mS
для тахометра - 10000 rpm = 167 rps = 333 импульсов в секунду = 333 Гц = 3 mS
для спидометра ещё не считал :(
> Круг почета. Почему не квадрат уважухи?
"Секунда проверки Та и Спи" - "Красота" - или предпродажная проверка панели приборов :)
> Круг почета. Почему не квадрат уважухи?
"Секунда проверки Та и Спи" - "Красота" - или предпродажная проверка панели приборов :)
- Штурман, приборы!
— 14.
— Что 14?
— А что, приборы?
Штурман ! Ветер ?
шт открывает форточку, щёки пузырём, волосы назад.....
Встречный, командир !
попробовал генератор чуток побольше звукового собрать https://yadi.sk/i/lPi1HM4UbX6iQ функциклирует
не вникал особенно
почему так
я насколько понял Су-25
без прямого указания таймерам на таких частотах стиль лучше выбрать как он и я привел
порты напрямую пучками 8 бит на резисторную сборку r-2r (covox)
таймеры индивидуально штуками
рулить
у меня проверка заняла 60 минут
сейчас ссылку поищу откуда я это взял
смотрю в коде ссылка рабочая
Арт100 - читай вверху "...Сообствено мой опыт в ардуино мал..." - ТС от твоего кода выкинет ардуину нафуй :(
упс уже кодом набили ветку нехачу
да, надо переходить на микрос() - спидометр требует другие задержки
если колесо 55 см диаметром и 4 импульса за оборот, то
1 км/ч - 6220 mkS
100 км/ч - 622 mkS
200 км/ч - 31 mkS
300 км/ч - 21 mkS
> Получается если 1 миллис то спидометр показывает все 250 км то есть заходит за пределы, а если поставить 2 миллис то стрелка показывает около 180 км час. то есть промежуток большой очень.
что-то здесь у вас не так - если период импульсов 1 mS = 250 км/ч , если период импульсов 2 mS , то скорость будет меньше !!!!
Так как я из Донецка прощу прощения за пропадания... было дело.
Я наверное за год поумнел) но остался на том же месте.
прерывания по микросу не выходит, нет плавности, как я ранее говорил, что если спидометр прерывать на 1микрос то
он показывает 250 км/ч следующие это 2 микрос и стрелка падает сразу на 180 км/ч
то есть 190,195,200 я не могу поставить стрелку! за то до 60 км/ч в любое место ставлю. 34км 44км 29км