Boa tarde senhores, por favor poderiam me ajudar com uma trabalho de curso. Trata-se de um rastreador solar. Uso placa 12V e também uma fonte 12V para alimentar um driver L298N que controla um motor DC 12V. São dois problemas: 

  Suponha que a placa está gerando 1,0V beleza no programa que faz o gráfico (PLX-DAQ)

também está mostrando o 1V, até ai tudo certo porém quando uso o 5V ou negativo do arduino pra alimentar dois fim de curso ou LDR, esse 1V vira os cinco volts do arduino então no gráfico mostra os 5V do arduino, é como se ele sobrepôs-se a tensão da placa, devo usar diodo??

OBS: Para leitura da placa estou usando divisor de tensão. 

2º Como faço na programação para o motor só continuar a girar em alguma sentido se o fim de curso não estiver precisado? conectei o fim de curso NF em 5V pull-up a porta analógico do arduino configurada para entrada digital, porém não estou conseguindo relacionar com a programação. 

Programação: 

//--------------------------------------RASTREADOR SOLAR-----------------------------------------------

int IN3 = 6; //Definicoes pinos Arduino ligados a entrada da Ponte H
int IN4 = 7; //Definicoes pinos Arduino ligados a entrada da Ponte H
int ldrPin1 = A0; //LDR no pino analígico A0
int ldrValor1 = 0;//Valor lido do LDR
int ldrPin2 = A1;//LDR no pino analígico A1
int ldrValor2 = 0;//Valor lido do LDR
int buttonPin1 = A3;// Porta para leitura dos fim de curso A3
int buttonState1;// variavel para fazer a checagem Fim de curso A3
int buttonPin2 = A4;// Porta para leitura dos fim de curso A4
int buttonState2;// variavel para fazer a checagem fim de curso A4

void setup(){
Serial.begin(9600); //Inicia a comunicação serial
pinMode(buttonPin1, INPUT);
pinMode(buttonPin1, INPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}


void loop(){

{
buttonState1 = digitalRead(buttonPin1); // Verifica se o estado do FDC A3 foi alterado
buttonState2 = digitalRead(buttonPin2); // Verifica se o estado do FDC A4 foi alterado

ldrValor1 = analogRead(ldrPin1); //O valor lido será entre 0 e 1023
ldrValor2 = analogRead(ldrPin2); //O valor lido será entre 0 e 1023
}


if (buttonState1 == LOW)// Se o Fim de curso A3 for 5V (Não pressinado)
{
if (ldrValor1>= 800)
digitalWrite(IN3, HIGH); //Gira o Motor B no sentido horario
digitalWrite(IN4, LOW);
}

else

{
digitalWrite(IN3, HIGH); //Para o motor B sentido horário
digitalWrite(IN4, HIGH);
}

if (buttonState2 == LOW)// Se o Fim de curso A3 for 5V (Não pressinado)
{
if (ldrValor2>= 800)
digitalWrite(IN3, LOW); //Gira o Motor B no sentido anti-horario
digitalWrite(IN4, HIGH);
}

else

{
digitalWrite(IN3, HIGH); //Para o motor B
digitalWrite(IN4, HIGH);
}
Serial.print("Valor do LDR1 = ");
Serial.println(ldrValor1); // Mostra leitura LDR 1
delay(100);

Serial.print("Valor do LDR2 = ");
Serial.println(ldrValor2); // Mostra leitura LDR 2
delay(100);

Serial.print("Valor do FDC A3 = ");
Serial.println(buttonState1); // Mostra leitura FDC A3
delay(100);

Serial.print("Valor do FDC A4 = ");
Serial.println(buttonState2); // Mostra leitura FDC1
delay(100);
}

Exibições: 629

Responder esta

Respostas a este tópico

Não consegui entender esse "5V negativo".. Vc tem um esquema ? Onde tem ou onde vai tensão negativa ?

Eduardo boa noite, este é o circuito: 

 Eduardo, desculpe a interpretação, Quando digo negativo é o próprio GND do arduino. Vou te enviar o esquema

O Grande Garagista Rui Viana tem um código que utiliza a geolocalização do painel como controle do angulo do painel, assim não precisa de LDR, já faz um tempo que estudo esse código, mas não aprendi certinho, mas acho esse código genial.

Teria que vc pedir um socorro pra ele se não entender hehe

Segue anexo e posta o código final aqui do projeto pfv rsrs.

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço