У мотоцикла котрий попав до нас в майстерню цікава історія але в данний момент часу я зосереджуся тільки на аспекті відновлення неодмінно важливої функції поворотів.
відновлювати оригінал ми спробували але він занадто вигорів і шансів на успіх було мало. Навіжені поляки встановивши в повороти 60 ватні галогенові лампи розжарювання. зажарили контроллер на відмінно.
За новий або куплений десь там на ебаях довелось би відати багато вічнозелених папірців тай довга і занудна ця справа скажу чесно вам.
Вирішено було зробити свій кастом поворотничок бля бумера(BMW K100).
Думаю вчасно увімкненний сигнал повороту врятував більше життів на дорозі аніж ремені безпеки, і ціла купа електронних нянечок.
Принцип дії їх наступний
на рулі є 3 кнопки одна вмикає лівий поворот(L) друга правий(R) і є ще одна кнопка яка вимикає повороти(S) при натисканні на будьяку з них сигнал із контролера “садиться на землю” коли кнопку відпустити контакт пропадає. Тобто маємо справу із звичанісьнкими підмикачами.
швиденько прикинувши ось таку схемку
я її реалізував на текстоліті і запакував і пластикову коробочку не більшу за дві сірникових.
далі вже біля мотоцикла написав програму.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
const int left_turn = 12; const int right_turn = 10; byte r = 1; byte l = 1; byte a = 0; byte r_state; byte l_state; byte a_state; int counter_l = 0; int counter_r = 0; int counter_s = 0; int deb_count = 15; byte deb_r = HIGH; byte deb_l = HIGH; byte deb_s = HIGH; byte rs = HIGH; byte ls = HIGH; byte ss = HIGH; unsigned long time1 = 0; unsigned long prevMillis = 0; unsigned long currMillis = 0; const long interval = 350; void setup() { // Serial.begin(9600); pinMode(10, OUTPUT); pinMode(12, OUTPUT); pinMode(9, INPUT); pinMode(7, INPUT); pinMode(5, INPUT); } void loop() { int counter; deb_r = digitalRead(7); deb_l = digitalRead(9); deb_s = digitalRead(5); if (!deb_r){counter_r++;}else{counter_r = 0;}; if (!deb_l){counter_l++;}else{counter_l = 0;}; if (!deb_s){counter_s++;}else{counter_s = 0;}; if (!deb_r && counter_r > 10) {rs = LOW;}; if (!deb_l && counter_l > 10) {ls = LOW;}; if (!deb_s && counter_s > 10) {ss = LOW;}; if (deb_r){rs = HIGH;}; if (deb_l){ls = HIGH;}; if (deb_s){ss = HIGH;}; if (counter == 0 && !rs && !ls){a_state = 1;}; if (!rs && ls && !a_state) {r_state = 1; l_state = 0;}; if (!ls && rs && !a_state) {l_state = 1; r_state = 0;}; if (!ss){ a_state = 0; r_state = 0; digitalWrite(right_turn, LOW); l_state = 0; digitalWrite(left_turn, LOW); counter=0;}; currMillis = millis(); if (currMillis - prevMillis >= interval){ prevMillis = currMillis; if (r_state) {digitalWrite(right_turn, r); if (r == 0){counter++;}; r^=1;} else {digitalWrite(right_turn, LOW); r=1;}; if (l_state) {digitalWrite(left_turn, l); if (l == 0){counter++;}; l^=1;} else {digitalWrite(left_turn, LOW); l=1;}; if (a_state) {digitalWrite(left_turn, a); digitalWrite(right_turn, a); a^=1;}; } } |
і як результат відмінна робота контроллера на відео.
Якщо вам необхідно склепати свій кастом поворотничок або у вас є запитання просимо долучитись до коментарів.