LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: andlig em 03 de Setembro de 2012, 19:36

Título: programa de arduino
Enviado por: andlig em 03 de Setembro de 2012, 19:36
bom tarde , venho por este meio perguntar se este codigo de programacao?
porque estou com algum problemas em relacao a temperatura medida pelo lm35DZ
muito obrigado, tenho aqui outro atmega mas tenho medo de trocar-lo e de os estragar lo  tb
#include <LiquidCrystal.h>

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

  int R1=470.00; //resistencia de 470 do divisor de tensao do painel solar
  int R2=100.00; //resistencia de 100 do divisor de tensao do painel solar
  int R3=10000.00; //resistencia de 1000 do divisor de tensao do lm338k
  int R4=100.00; //resistencia de 100 do divisor de tensao do lm338k
 
 
void setup()
  {
  pinMode(5,OUTPUT); //pin de saida para a activacao da bobina do rele
  pinMode(4,OUTPUT); // pin de saida de identificacao de excesso de temperatura no lm338k   
  lcd.begin(16,2);
  Serial.begin(9600);   
  }

  void loop()
  {
  int sensorValue1 = analogRead(A0);
  int sensorValue2 = analogRead(A3);
  int sensorValue3 = analogRead(A5);
  Serial.print((sensorValue1*5.00/1023.00*(R1+R2)/R2));
  Serial.print(" ");
  Serial.print((sensorValue2*5.00/1023.00*(R3+R4)/R4));
  Serial.print(" ");
  Serial.print((sensorValue3*5.00/1023.00)*100);
  Serial.print(" ");
  Serial.println(sensorValue3);
   
  lcd.setCursor(0,0);
  lcd.print((sensorValue1*5.00/1023.00*(R1+R2)/R2));
  lcd.setCursor(6,0);
  lcd.print("VPS");
  lcd.setCursor(0,1);
  lcd.print(sensorValue2*5.00/1023.00*((R3+R4)/R4));
  lcd.setCursor(6,1);
  lcd.print("VLM");
  lcd.setCursor(9,0);
  lcd.print((sensorValue3*5.00/1023.00)*100);
  lcd.setCursor(15,0);
  lcd.print("C");

  //activacao do rele coforme a tensao de entrada do painel solar
  if (sensorValue1*5.00/1023.00*(R1+R2)/R2>15) // mais tarde é para defenir com uma tensao de cerca de 15V para  o painel solar
  {
  digitalWrite(5,HIGH);
  }
  else
  {
  digitalWrite(5,LOW);
  }
  // controlo de excesso de temperatura no dissipador do lm335k
  if(sensorValue3*5.00/1023.00*100>27) // mais tarde e para defenir com uma temperatura de cerca de 60ºC
  {
  digitalWrite(4,HIGH);
  }
  else
  {
  digitalWrite(4,LOW);
  }
  delay(1000);
 
  }
 
 
  muito obrigado
Título: Re: programa de arduino
Enviado por: LuísR.A. em 03 de Setembro de 2012, 21:01
qual é o problema exatamente? não consegues ler a temperatura com o sensor? ou não cosnegues o ler no lcd?

Título: Re: programa de arduino
Enviado por: andlig em 03 de Setembro de 2012, 21:04
o problema é quando eu subo a tensao na entrada analogica A3 e quando chega a ai por volta 210v lendo no lcd a temperatura comeca a dar erros de leitura, sera do atmega ou de programacao, o programa esta bom?

muito obrigado
Título: Re: programa de arduino
Enviado por: LuísR.A. em 03 de Setembro de 2012, 21:10
  int sensorValue1 = analogRead(A0);
  int sensorValue2 = analogRead(A3);
  int sensorValue3 = analogRead(A5);
  Serial.print((sensorValue1*5.00/1023.00*(R1+R2)/R2));
  Serial.print(" ");
  Serial.print((sensorValue2*5.00/1023.00*(R3+R4)/R4));
  Serial.print(" ");
  Serial.print((sensorValue3*5.00/1023.00)*100);
  Serial.print(" ");
  Serial.println(sensorValue3);
   
  lcd.setCursor(0,0);
  lcd.print((sensorValue1*5.00/1023.00*(R1+R2)/R2));
  lcd.setCursor(6,0);
  lcd.print("VPS");
  lcd.setCursor(0,1);
  lcd.print(sensorValue2*5.00/1023.00*((R3+R4)/R4));  ------------------> aki parece ter um parêntese a mais antes do R3
  lcd.setCursor(6,1);
  lcd.print("VLM");
  lcd.setCursor(9,0);
  lcd.print((sensorValue3*5.00/1023.00)*100);
  lcd.setCursor(15,0);
  lcd.print("C");


ps: se viste akilo do INPUT antes de eu o apagar acho que podes esquecer. no meu codigo tambem não o tenho e funciona


estas a dar 210V no pin A3?
o sensor 1 é para saber a voltagem que o painel produz?
e o sensor 2?
o erro de leitura é em que valor?
Título: Re: programa de arduino
Enviado por: andlig em 03 de Setembro de 2012, 22:14


estas a dar 210V no pin A3?
o sensor 1 é para saber a voltagem que o painel produz?
e o sensor 2?
o erro de leitura é em que valor?

em relacao as tuas perguntas nao estou a por 210v, este valor é por causa da R2 e da R3 que é umm divisor de tensao, so estou a por 5v que acho que é a entrada maxima dele,

o sensor 1 é a leitura da  tensao de entrada do painel solar~
o sensor 2 e a leitura da  tensao de saida da fonte de alimentacao

o erro de leitura so se da so sensor A5 que esta a ser influenciado pelo sensor 2, sera que o atmega esta estragado?

muito obrigado
Título: Re: programa de arduino
Enviado por: LuísR.A. em 04 de Setembro de 2012, 12:37
não sei bem mas é possivel que estejas a dar mais de 40mA ao A3? se estiveres isso vai estragar esse pin e pode influenciar o processador.

tenta ler o sensor A5 com o serial monitor a ver se não é lcd mas o programa parece não ter erros pelo menos nesse sensor
Título: Re: programa de arduino
Enviado por: Njay em 04 de Setembro de 2012, 14:06
Sem ver o esquema eléctrico daquilo que tens, tudo o que se pode fazer é adivinhar...
Título: Re: programa de arduino
Enviado por: andlig em 04 de Setembro de 2012, 18:29
Sem ver o esquema eléctrico daquilo que tens, tudo o que se pode fazer é adivinhar...

em relacao ao esquema sei como fazer mas é simples a saida do lm35 esta ligado ao A5;
e no A0 e no A3 e somente uns simples potenciometros mais nada sera que uma foto da para ver alguma coisa?


muito obrigado
Título: Re: programa de arduino
Enviado por: andlig em 08 de Setembro de 2012, 12:31
aki fica em anexo o esquema que me pediu, espero que esta bom ?

muito obrigado