Отговори на тема  [ 25 мнения ]  Отиди на страница 1, 2  Следваща
Проблем с програмиране на Ардуино уно 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Мар 04, 2015 4:34 pm
Мнения: 12
Мнение Проблем с програмиране на Ардуино уно
Здравейте, приятели :) Имам проблем с програмирането на ардуино уно.
Разполагам със сензори за напрежение https://encrypted-tbn3.gstatic.com/imag ... dfSslWJLmA
и relay shield. http://www.microbot.it/open2b/var/catal ... 20-800.jpg

Трябва ми програма, която при достигане на определено напрежение от сензора за напрежение да превключва релета.
Примерно при заряд на акумулатор,когато напрежението достигне 12V ,реле едно да се изключи и да се включи реле 2. И когато напрежението падне под 12V реле 2 да изключи ,а реле 1 да се включи.
Ще бъда много благодарен, ако някой ми помогне :)


Сря Мар 04, 2015 4:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Проблем с програмиране на Ардуино уно
Това не е сензор, това са 2 резистора. Колко плащаш за тази програма?

_________________
Warriors of the Night, ASSEMBLER!!!


Сря Мар 04, 2015 5:02 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Ное 29, 2014 10:11 am
Мнения: 774
Мнение Re: Проблем с програмиране на Ардуино уно
И за това ти трябва микроконтролер ? 8O


Сря Мар 04, 2015 7:10 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Мар 04, 2015 4:34 pm
Мнения: 12
Мнение Re: Проблем с програмиране на Ардуино уно
s7ama7 написа:
И за това ти трябва микроконтролер ? 8O


Да. Така искам да го направя. Ето и схемата , която искам да реализирам:Делителя на напрежение (сензора) следи напрежението на батерията и подава сигнал на А0 на ардуиното , когато това напрежение падне заради товара ,които разрежда батерията искам платката Relay shild да превключи релетата си. Едната верига която управлява да е затворена ,а другата отворена.


Прикачени файлове:
shemafsdf.jpg
shemafsdf.jpg [ 132.81 KiB | Прегледано 5882 пъти ]
Сря Мар 04, 2015 7:54 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Ное 29, 2014 10:11 am
Мнения: 774
Мнение Re: Проблем с програмиране на Ардуино уно
Тук нужда от микроконтролер аз не виждам . Това което искаш да направиш може да се направи с няколко елемента и ще струва 5 пъти поне по-евтино и по-малко .
Но да не съм офтопик :)
Трябва да си сметнеш делителя при 12V , след което ползваш тази функция http://arduino.cc/en/Reference/analogRead за да четеш AЦП-то . Всичко е много добре обяснено , само трябва да го прочетеш и ако имаш елементарни познания по програмиране не би трябвало да имаш проблем . Тук имаш и функцията за цифровите входове/изходи http://arduino.cc/en/Reference/digitalWrite . Остава да направиш условието .


Чет Мар 05, 2015 12:19 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Мар 04, 2015 4:34 pm
Мнения: 12
Мнение Re: Проблем с програмиране на Ардуино уно
s7ama7 написа:
Тук нужда от микроконтролер аз не виждам . Това което искаш да направиш може да се направи с няколко елемента и ще струва 5 пъти поне по-евтино и по-малко .
Но да не съм офтопик :)
Трябва да си сметнеш делителя при 12V , след което ползваш тази функция http://arduino.cc/en/Reference/analogRead за да четеш AЦП-то . Всичко е много добре обяснено , само трябва да го прочетеш и ако имаш елементарни познания по програмиране не би трябвало да имаш проблем . Тук имаш и функцията за цифровите входове/изходи http://arduino.cc/en/Reference/digitalWrite . Остава да направиш условието .


Делителя не е ли сметнат ? Това за функциите го бях гледал преди , разбирам почти всеки ред за какво е ,но не мога да ги свържа в една обща ,работеща програма . Точно условието ми е проблема . Съгласен съм , че не е необходим контролер и може да стане по-лесно и по-евтино , но имам ардуното и искам него да използвам . Ако можеш да ми помогнеш с програмата ще ти бъда много благодарен . :roll:


Чет Мар 05, 2015 1:16 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Ное 29, 2014 10:11 am
Мнения: 774
Мнение Re: Проблем с програмиране на Ардуино уно
Какъв акумулатор мислиш да зареждаш ? Това нещо си мисля че трябва да има някакъв хистерезис :roll:
Делителя може да си го изчислиш с помощта на този сайт http://www.electronics2000.co.uk/calc/potential-divider-calculator.php , за да знаеш при 12v какво напрежение ще се получи от извода на делителя . А като знаеш това напрежение , може да изчислиш при каква стойност на регистъра на АЦП ще имаш примерно 3 V .

Код:
int analogPin = 3;
int RelayPin1 = 13;
int RelayPin2 = 12;
int val = 0;

void setup() {
  pinMode(analogPin, INPUT);
  pinMode(RelayPin1, OUTPUT);
  pinMode(RelayPin2, OUTPUT);
  digitalWrite(RelayPin1, LOW);
  digitalWrite(RelayPin2, LOW);
}

void loop() {
  val = analogRead(analogPin);
  if (val >= ?? ) {
    digitalWrite(RelayPin1, LOW);
    digitalWrite(RelayPin2, HIGH);
  }
  else {
    digitalWrite(RelayPin1, HIGH);
    digitalWrite(RelayPin2, LOW);
  }
}


Последна промяна s7ama7 на Чет Мар 05, 2015 4:23 pm, променена общо 1 път



Чет Мар 05, 2015 3:40 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Мар 04, 2015 4:34 pm
Мнения: 12
Мнение Re: Проблем с програмиране на Ардуино уно
Мисля да е този : http://autocom.bg/%D0%BF%D1%80%D0%BE%D0 ... ycle-60-ah


void loop() {
val = analogRead(analogPin);
if (val >= ?? ) {

Защо са тези въпросителни ?
Как микроконтролера ще разбира какво е напрежението ? Не трябва ли някъде да е указно ,че трябва да брой от 0-1023 в зависимост от напрежението -0-5V нa A0? Извинявам се ако въпросите ми са глупави , сега навлизам в материята. :D Благодаря за бързия отговор.


Чет Мар 05, 2015 4:04 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Ное 29, 2014 10:11 am
Мнения: 774
Мнение Re: Проблем с програмиране на Ардуино уно
Оставил съм ги въпросителни защото трябва да се изчисли , дори съм писал по-горе как става !


Чет Мар 05, 2015 4:16 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Апр 22, 2010 11:56 am
Мнения: 27
Мнение Re: Проблем с програмиране на Ардуино уно
Без да имам претенции, че разбирам от програмиране малко помощ и от мен.
На мястото на ?? може да се пише напрежението, което е необходимо да се следи.
А стойностите на R1 и R2 ги заместваш с тези на "сензора"
5.0 е стойноста на референтното напрежение, в случая захранващото.

Код:
int analogPin = 3;
int RelayPin1 = 13;
int RelayPin2 = 12;
float val = 0;
float R1 = 100000.0; 
float R2 = 10000.0;


void setup() {
  pinMode(analogPin, INPUT);
  pinMode(RelayPin1, OUTPUT);
  pinMode(RelayPin2, OUTPUT);
  digitalWrite(RelayPin1, LOW);
  digitalWrite(RelayPin2, LOW);
}

void loop() {
  val = analogRead(analogPin)*5.0/1024.0;
  val = val/(R2/(R1+R2));
  if (val >= ?? ) {
    digitalWrite(RelayPin1, LOW);
    digitalWrite(RelayPin2, HIGH);
  }
  else {
    digitalWrite(RelayPin1, HIGH);
    digitalWrite(RelayPin2, LOW);
  }
}


Пет Мар 06, 2015 12:34 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Проблем с програмиране на Ардуино уно
Как от далеч си личат програмистите за PC.

Код:
int analogPin = 3;
int RelayPin1 = 13;
int RelayPin2 = 12;
int iVal;


void setup() {
  pinMode(analogPin, INPUT);
  pinMode(RelayPin1, OUTPUT);
  pinMode(RelayPin2, OUTPUT);
  digitalWrite(RelayPin1, LOW);
  digitalWrite(RelayPin2, LOW);
}

void loop() {
  iVal = analogRead(analogPin);
  if (iVal >= ?? ) {
    digitalWrite(RelayPin1, LOW);
    digitalWrite(RelayPin2, HIGH);
  }
  else {
    digitalWrite(RelayPin1, HIGH);
    digitalWrite(RelayPin2, LOW);
  }
}


M_I_T_A_K_A а така няма ли да прави същата работа, като остане 1к повече свободен флаш?

_________________
Warriors of the Night, ASSEMBLER!!!


Пет Мар 06, 2015 1:46 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Чет Апр 22, 2010 11:56 am
Мнения: 27
Мнение Re: Проблем с програмиране на Ардуино уно
Критиката ти, за мен е градивна вземам си бележка :)
А примера го дадох, защото реших, че е по лесно резултата да е във волтове.


Съб Мар 07, 2015 12:24 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Мар 04, 2015 4:34 pm
Мнения: 12
Мнение Re: Проблем с програмиране на Ардуино уно
Благодаря ви за отговорите. В сряда ще го пробвам дали работи и на практика :)


Пон Мар 09, 2015 4:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Проблем с програмиране на Ардуино уно
Няма да работи, защото както s7ama7 каза - това устройство няма хистерезис и ще ти прецака релетата.

_________________
Warriors of the Night, ASSEMBLER!!!


Пон Мар 09, 2015 6:27 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Мар 04, 2015 4:34 pm
Мнения: 12
Мнение Re: Проблем с програмиране на Ардуино уно
В крайна сметка , докато правих опити схемата тръгна (подавах различно напрежение на делителя и релетета си превключваха в границите ,както трябва) Изникна проблем , когато направих цялата постановка .Вместо фотоволтаичен панел сложих зарядно за акумулатор , само че като закача зарядното за акумулатора напрежението се променя на около 16 волта ,а когато го изключа и вкюча товар пада на 10 и всичко се проваля. Тези граници които съм задал предварително : от 11волта да превключва едното реле , а от 12 волта другото , стават безсмислени.

Това е програмата, която ползвах:
int analogPin = 3;
int RelayPin1 = 5;
int RelayPin2 = 6;
float val = 0;
float R1 = 7500.0;
float R2 = 30000.0;


void setup() {
pinMode(analogPin, INPUT);
pinMode(RelayPin1, OUTPUT);
pinMode(RelayPin2, OUTPUT);
digitalWrite(RelayPin1, LOW);
digitalWrite(RelayPin2, LOW);
}

void loop() {
val = analogRead(analogPin)*5.0/1024.0;
val = val/(R2/(R1+R2));
if (val >= 3 ) {
digitalWrite(RelayPin1, LOW);
delay(1000);
digitalWrite(RelayPin2, HIGH);
delay(1000);

}
else {
digitalWrite(RelayPin1, HIGH);
digitalWrite(RelayPin2, LOW);
}
}


Пет Мар 13, 2015 5:14 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 25 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни