Греется ардуино
- Войдите на сайт для отправки комментариев
Здравствуйте.
В ардуино я новичок и делаю первый проект. Суть проста - по аналогии с похожими проектами делаю подсветку для лестницы. К ардуино нано v. 3.0 подключены два датчики hc-sr04 с которых я беру расстояние и относительно расстояния говорю ардуино какие включать светодиодные ленты. Когда у меня подключен один датчик, то все хорошо, но когда я подключаю два датчика то начинает тупить и греться микроконтроллер на ардуино. Подозреваю что может быть из за гавнокода который я написал. Может кто то поможет. (ещё такая информация что светодиодная лента у меня 12 в и я использую транзисторы для переключения из ардуино на включение ленты). Собственно сам код (не ругайте пишу впервые)
const int Trig_H = 2; const int Echo_H = 3; const int Trig_D = 4; const int Echo_D = 5; const int ledPin1 = A0; const int ledPin2 = A1; const int ledPin3 = A2; const int ledPin4 = A3; const int ledPin5 = A4; const int ledPin6 = A5; void setup() { pinMode(Trig_H, OUTPUT); pinMode(Echo_H, INPUT); pinMode(Trig_D, OUTPUT); pinMode(Echo_D, INPUT); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); pinMode(ledPin4, OUTPUT); pinMode(ledPin5, OUTPUT); pinMode(ledPin6, OUTPUT); Serial.begin(9600); } unsigned int time_us_H=0; unsigned int distance_sm_H=0; unsigned int time_us_D=0; unsigned int distance_sm_D=0; void loop() { digitalWrite(Trig_H, HIGH); delayMicroseconds(10); digitalWrite(Trig_H, LOW); digitalWrite(Trig_D, HIGH); delayMicroseconds(10); digitalWrite(Trig_D, LOW); time_us_H=pulseIn(Echo_H, HIGH); distance_sm_H=time_us_H/58; time_us_D=pulseIn(Echo_D, HIGH); distance_sm_D=time_us_D/58; Serial.println(distance_sm_H); // Выводим на порт //Serial.println(distance_sm_D); // Выводим на порт if (distance_sm_H<70) { digitalWrite(ledPin1, HIGH); digitalWrite(ledPin2, HIGH); delay (5000); digitalWrite(ledPin3, HIGH); digitalWrite(ledPin4, HIGH); delay (5000); digitalWrite(ledPin5, HIGH); digitalWrite(ledPin6, HIGH); delay (5000); } else { digitalWrite(ledPin1, 0); digitalWrite(ledPin2, 0); digitalWrite(ledPin3, 0); digitalWrite(ledPin4, 0); digitalWrite(ledPin5, 0); digitalWrite(ledPin6, 0); } if (distance_sm_D<70) { digitalWrite(ledPin6, HIGH); digitalWrite(ledPin5, HIGH); delay (5000); digitalWrite(ledPin4, HIGH); digitalWrite(ledPin3, HIGH); delay (5000); digitalWrite(ledPin2, HIGH); digitalWrite(ledPin1, HIGH); delay (5000); } else { digitalWrite(ledPin6, LOW); digitalWrite(ledPin5, LOW); digitalWrite(ledPin4, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin2, LOW); digitalWrite(ledPin1, LOW); } delay(100); }
ето тестовый вариан на 6 лент. в идеале должно быть 14.
Большое спасибо за помощь.
Приложи фото как все подключено.
Ок. Вот фото.
Tomasina, и ведь не придерешься! :)
skryteer, под фото подразумевалась схема, чтобы было понятно куда какие провода. их удобно делать в fritzing`е, но можно и просто на бумажке
com, спасибо за подсказку. нарисовал. старался.
com, спасибо за подсказку. нарисовал. старался.
да оно бывает полезно не для кого-то, а в первую очередь для себя нарисовать, упорядочить, да и когда рисуешь косяки всплывают о которых не помышлял.
так к нашим баранам..... значит, греется, а если оторвать питание от одного из сенсоров - перестает?
Когда заливаю проект где только один датчик и одна лента светодиодов, то все хорошо - датчик работает как часы и с интервалом в задание время выводит расстояние которое замеряет. Но когда в тот же проект я дописал еще один датчик и 5 лент светодиодов для теста полутше, то ардуино начинает ту пить (вывод на монитор компорта данных из датчика осуществляется в раз 20 дольше) и микропроцесор очень сильно греется :(
Питание из одного из датчиков попробую убрать через несколько часов когда прийду домой, но проверял датчики - по отдельно оба работают.
Добавь вывод показаний датчиков в Serial.
Мне кажется, на фото один из датчиков подключен неправильно.
com, нет. ничего не меняется.
Tomasina, перепроверил подключение, все отлично. Вывод из датчика есть в коде. Отлично работает когда один датчик подключен.
из наблюдения - закоментировал один датчик - все работает, но возникла проблема, ардуино берет 5 В из L7805CV (есть два конденсатора 0,33 мФ и 0,1 мФ как на схеме) и когда система питается от блока питания на 12 В на одном датчике, то стартует нормально, но свет после изменения расстояния на датчике не гаснет (подозреваю что в ето время он и зависает, чип немножко греется) напряжение падает из 5,0 - 5,1 к 4,3 которое идет на ардуино и датчики соответственно. Но когда я подключаю ардуино к компьютеру и в тоже время вся схема подключена параллельно на 12 В, то уменьшения напряжения нету и все работает. Выходит мне не хватает тока на датчике?
А то я уже чет сильно запутался....
у меня некоторые сомнения, что КТ315 нормально потянет светодиодную ленту, поэтому подозреваю, что один или несколько транзисторов вышли из строя, закоротив питание или землю на пин дуино - поэтому и греется.
проверяй без транзисторов - просто светодиоды с токоограничительными резисторами подключи.
Клапауций, они нормально работают ето проверено, да и они просто переключают в нужное время коло и не греются, проверял.
1. токоограничивающие резисторы на выходные пины не помешали бы
2. какая мощность у ленты? у 315г максимальный ток 0,1А, и имхо это не совсем подходящий транзистор для управления такой нагрузкой