Olá pessoal!!! Sou iniciante na arte de programar, embora tenha longa experiência em eletrônica (hardware). Pretendo usar o Arduino para uma função, mas ainda não sei implementá-la. É o seguinte: Tenho que construir um dispositivo que leia um sinal de 4-20 mA e o envie a um controlador  (CLP) em modo transparente até receber um pulso em uma entrada digital. Quando isso ocorrer o sinal de entrada deve permanecer memorizado (latch) na saída até receber novo pulso quando então volta a ser transparente. Alguém poderia me ajudar? Quando necessitarem de algum apoio na área de hardware estarei a disposição. Abraço a todos.

Exibições: 1458

Responder esta

Respostas a este tópico

Olá,

Não ficou bem claro pra mim mas vamos lá:

1 - O arduino vai receber o sinal de 4-20mA de um transdutor/sensor ou deve gerar o sinal 4-20mA?

2 - O arduino deve enviar a leitura pro CLP em "modo transparente", isto não ficou "claro"... Quiz dizer de forma contínua?

3 - Como o CLP irá receber o sinal? Por uma entrada analógica (4-20mA, 0-5V, 0-10V, comunicação serial...)?

4 - O pulso em uma entrada digital, vem de onde (sensor, clp, arduino), pra onde (clp, arduino,sensor)?

5 - Esse pulso ocorrerá em que condições e será comandado por quem?

Abraço.

Olá, obrigado pela atenção. Vamos lá:

1- O sinal de 4-20mA será convertido para 0-5Vcc sinal esse que será aplicado ao Arduino. O conversor já existe.

2- Sim, de forma contínua, envia ao clp o que recebe.

3- Providenciarei a conversão do sinal em PWM para 4-20 mA para ser aplicado ao clp.

4- O pulso será fornecido pelo clp, na forma de 24 Vcc, mas tratarei de adequá-lo ao Arduino (5Vcc).

5- O pulso ocorrera conforme estratégia de controle já configurada no clp, a qual não conheço. Vale lembrar que na verdade não será fornecido na forma de pulso, e sim sinal estático, ou seja, aplica sinal para memorizar e o mantem. No momento de voltar ao modo contínuo retira o sinal e o reaplica, e assim em adiante.

Abraço

Então é simples,

O sketch deve ler a entrada que recebe o pulso do clp, se for "0" faz a leitura do sinal 0-5V do sensor e ajusta o valor do PWM que irá mandar pro clp...

Se o pulso do clp for "1" para de fazer a leitura da entrada analógica e o PWM fica com o último valor...

Abraço.

Sim, é por aí. Vou fazer depois te informo sobre o resultado. Vou demorar um pouco porque ainda estou no "Hello World" mas acaba saindo.

Weider Duarte (meu xará Duarte) , obrigado pela força. Vamos ver no que dá.

 

Abraço aos dois...

Olá Sebastião,

Fiz um sketch básico pra te ajudar, os pinos devem ser ligados conforme abaixo:

- O sinal do sensor já convertido para 0-5V entra no pino A0 do arduino;

- O sinal PWM de saída está no pino 9;

- O Latch está no pino 8 sendo que 0V libera as leituras, 5V congela a saída PWM no valor da última leitura.

Sketch:

const int analogInPin = A0; // Pino da Entrada Analogica que recebe o sinal do sensor 4-20mA já convertido em 0-5V
const int analogOutPin = 9; // Pino de saída PWM que será ligado ao conversor de 4-20mA
const int digitalInPin = 8; // Pino de entrada digital que recebe o sinal de LATCH do CLP

int sensorValue = 0; // valor da entrada analógica
int outputValue = 0; // valor do PWM
int LatchState = 0; // valor do pino do LATCH

void setup() {
pinMode(digitalInPin, INPUT); // seta o pino como entrada
pinMode(analogOutPin, OUTPUT); // seta o pino como saída
}

void loop() {
LatchState = digitalRead(digitalInPin); // lê o estado do pino de entrada LATCH, 0 = contínuo 1 = valor congelado
if (LatchState == LOW) { // se o pino = 0 faz a leitura da entrada
sensorValue = analogRead(analogInPin); // ler o valor da entrada analógica
outputValue = map(sensorValue, 0, 1023, 0, 255); // mapeia o valor da entrada (0-1023) para a faixa do PWM (0-255)
}
analogWrite(analogOutPin, outputValue); // escreve o valor do PWM na saída
delay(100); // aguarda 100 ms para reiniciar
}

Olá Wiechert

Não tenho palavras para te agradecer. Agora ficou muito fácil seguir em frente. Vou simular no Arduino e depois montarei completo. Depois te informo os resultados. Por enquanto muito Obrigado 

Ok,

Quando conseguir progredir posta os resultados.

Agora pensando bem, me responda:

O CLP que manda o pulso de latch é o mesmo que está recebendo a leitura analógica do sensor?

Em caso positivo, não seria mais simples, fácil, barato e confiável modificar apenas a programação do CLP?

De forma que ocorrendo a situação onde se deseja congelar a leitura do sensor, a mesma fica armazenada em uma memória do CLP, e durante o evento o programa deixa de atualizar está memória com os valores que vem da entrada enquanto a condição permanecer. Assim mesmo que o valor vindo do sensor mude, o programa deixa de perceber a mudança.

E quando a condição de congelamento deixar de existir o programa volta a atualizar a memória com as leituras provenientes da entrada. 

Tudo isso apenas modificando a aplicação do CLP, sem precisar aumentar o hardware.

É lógico que pra isso você deve dominar a programação do CLP do seu processo/planta.

Abraço.

Olá Wiechert,

Sim, dispensaria o dispositivo, mas eu não estou envolvido com a estratégia de controle, por isso não conheço a origem e destino dos sinais, por isso tenho que fazer o que o chefe mandou (rs).

Estou fazendo os testes e quando concluir posto sim.

 

Abraço

Wiechert,

   Cara eu faria assim: 

a) Receberia o sinal por uma porta analogica  ( analogRead(porta analogica) )

b) como ele pede para gravar o sinal, manteria ele em um uma variavel, mas se fosse critico, gravaria ele em uma eeprom (vide gravação de eeprom entre os exemplos do proprio arduino)

c) após os procedimentos de espera, ou ações a serem programados conforme a necessidade dispararia o sinal por uma porta PWM  ( analogWrite(porta PWM) )  que sai um sinal digital conforme solicitado, só que em forma de pulsos.

  Bem, espero ter ajudado,  é que assim como o wiechert eu tambem não tô entendendo muito 100% o proposto.

Olá Weiner,

Sim, poderia gravar na EEPROM, mas tome o cuidado de não gravar a cada ciclo do loop, pois logo iria atingir o limite de gravação da EEPROM (+ ou - 100000 vezes)

Se precisar pode consultar o tutorial sobre gravação de EEPROM aqui do LDG...

tutorial EEPROM

Abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço