collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Labview Arduino Controlo de Temperatura  (Lida 17750 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Labview Arduino Controlo de Temperatura
« em: 21 de Janeiro de 2012, 12:15 »
Boas pessoal. Ja acabei o meu projecto de labview e como forma de contributo para o forum vou disponibilizar aqui. Pode ser que de jeito a algum noob como eu eheheh :D
Muito obrigado pela ajuda que me dao no forum...







Cumprimentos

Edit: É verdade, esqueci-me de dizer que o registador da temperatura de alarme nao esta em pleno funcionamento, pois nao consegui gerar um pulso para activar. Ta a funcionar com um interruptor...
« Última modificação: 21 de Janeiro de 2012, 12:18 por c3dr1c »
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Labview Arduino Controlo de Temperatura
« Responder #1 em: 22 de Janeiro de 2012, 15:43 »
Pessoal uma pergunta... O arduino tem um conversor AD de 10bit. Porque so consigo receber 8bits no labview? Tambem tiver a experimentar usar PWM para controlar a reistencia mas so congigo enviar 8 bits (0 a 255).

Será algum conflito ou é devido as caracteristicas do arduino?
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Labview Arduino Controlo de Temperatura
« Responder #2 em: 22 de Janeiro de 2012, 22:05 »
Provavelmente estás a enviar os dados que o adc retorna num byte e não em dois bytes, porque o adc.read retorna um valor entre 0 e 1023 ou seja 10 bits, o atmega suporta pwm até 10 bits, mas usando o IDE do Arduino e todas as suas simplicidades só podes usar os timers em modo de 8 bits, e só o timer 1 que é de 16 bits é que pode fazer pwm a 10 bits.
Avr fanboy

Offline Ninja

  • Mini Robot
  • *
  • Mensagens: 17
Re: Labview Arduino Controlo de Temperatura
« Responder #3 em: 23 de Janeiro de 2012, 10:39 »
Se tiveres a UART configurada com 8N1 só envia um byte
MIEET @ UA 07/08

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Labview Arduino Controlo de Temperatura
« Responder #4 em: 23 de Janeiro de 2012, 13:26 »
Bem como nao tou muito bem dentro do que voces falam, pelo que percebi do post do senso nao posso utilizar 10bits ou para poder tenho de usar o timer 1. Onde vejo essas infos e altero? se der....

Ninja do que se trata 8N1? Da para alterar isso?

O que pude verificar foi isto no gestor de dispositivos e la so da para seleccionar no maximo 8 bits.


Quanto ao programa ja fiz avanços. Implementei PWM para controlar a velocidade de uma fan caso a temeperatura ambiente, passe a temperatura de alarme. E um registo em txt dos valores do grafico, temperatura em função do tempo... Para mais tarde analisar e implementar uma função de controlo da resistencia de aquecimento atraves de pwm.

Abraços pessoal...
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline Ninja

  • Mini Robot
  • *
  • Mensagens: 17
Re: Labview Arduino Controlo de Temperatura
« Responder #5 em: 23 de Janeiro de 2012, 13:39 »
8 - Bits de dados
N - Paridade nenhum
1 -  1 bit de paragem

Só recebes 1 byte porque a tua ligação está configurada com 8n1, as tuas tramas UART só conseguem transmitir no máximo 1 byte(8bits) de cada vez, logo o labview só vai receber os 8 bits menos significativos da tua variável de 10bits.
Se queres processar 10bits no labview tens de mandar estes 10bits divididos em 2 tramas, uma com os 8bits e a outra com os restantes 2, e adicionar algoritmo de processamento no labview para juntar os bits todos.
Alguém que me corrija se estiver enganado.
MIEET @ UA 07/08

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Labview Arduino Controlo de Temperatura
« Responder #6 em: 23 de Janeiro de 2012, 14:08 »
Mostra o código do lado do Arduinio, porque um print do Arduino envia o valor lido pelo adc com 16 bits e assim recebes tudo, tambem depende é do que tens no labview que pode só estar a ler os primeiros 8 bits a e mandar os outros 2 para o lixo.
Porque é que precisas de pwm de 10 bits?
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Labview Arduino Controlo de Temperatura
« Responder #7 em: 24 de Janeiro de 2012, 19:07 »
Boas obrigado pelas respostas.
Como eu queria controlar a resistencia de aquecimento por PWM, conseguia ser mais preciso. Bem como em termos de recepção de temperatura, consegui mais sensibilidade. E quanto mais precisão melhor, visto que se trata de um projecto de instrumentação...

Quando dizes mostra o codigo do lado do arduino, é o codigo programado no microcontrolador?

Eu quando corro o meu programa, realmente aparece-me um aviso do labview a dizer que está tudo bem, mas que consigo receber mais bits do que os que recebo actualmente.

Realmente estou a utilizar 8N1, ja percebi... Entao mas preciso de configurar duas tramas?

Cumprimentos
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Labview Arduino Controlo de Temperatura
« Responder #8 em: 24 de Janeiro de 2012, 19:22 »
Controlo de uma resistência de aquecimento?
A inércia térmica disso é tão grande que até um simples controlo on-off é suficiente na maioria dos casos, pwm de 8 bits é mais que suficiente para fazer o controlo de uma resistência.
Como te disse, não precisas nada de duas tramas, se fizeres isto:
Serial.print(adc.read(0));
Ele envia os dados em ascii com valor entre 0 e 1023.
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Labview Arduino Controlo de Temperatura
« Responder #9 em: 24 de Janeiro de 2012, 19:39 »
Controlo de uma resistência de aquecimento?
A inércia térmica disso é tão grande que até um simples controlo on-off é suficiente na maioria dos casos, pwm de 8 bits é mais que suficiente para fazer o controlo de uma resistência.
Como te disse, não precisas nada de duas tramas, se fizeres isto:
Serial.print(adc.read(0));
Ele envia os dados em ascii com valor entre 0 e 1023.

Mas uma das importancias deste projecto é a redução de custos, logo o pwm apresenta uma optima solução ou estarei enganado?

Ok vou averiguar isso... thanks
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Labview Arduino Controlo de Temperatura
« Responder #10 em: 24 de Janeiro de 2012, 20:38 »
E em que é que o pwm te reduz os custos?
Essa tal resistência, é alimentada por AC ou DC?

EDIT:
A primeira pergunta não é para ser levada a mal, é mais para ser levada como se fosse um professor a perguntar, e tens de dar uma resposta coerente e plausivel.
« Última modificação: 24 de Janeiro de 2012, 20:44 por senso »
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Labview Arduino Controlo de Temperatura
« Responder #11 em: 25 de Janeiro de 2012, 11:15 »
Se calhar nao reduz assim tanto os custos. Tipo comparando um sistema pwm com um usando um termostato com histerese, o pwm vai fornecer a potencia necessaria para aquecer ate uma determinada temperatura. Usando o termostato, ele aquece um pouco mais que a temperatura desejada e talvez por isso gaste mais electricidade, mas pensando bem dps quando arrefece um pouco mais que a temperatura desejada, talvez compense ai o gasto extra.... Mas isso ja depende do isolamento.

Se calhar o meu prof nao quis ividenciar que podemos poupar energia electrica usando pwm, mas sim um modo de controlo inteligente e que vai de encontro ao pretendido, directamente e sem percas de tempo.

O que tens a dizer sobre pwm e aquecimento???

A resistencia é alimentada por AC, iria usar um optoacoplador e um triac/tiristor...

Abraços
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Labview Arduino Controlo de Temperatura
« Responder #12 em: 25 de Janeiro de 2012, 14:28 »
Isso dos gastos nada como agarrar na tralha toda e fazer uns testes, medir a voltagem e a corrente, integrar isso ao longo do tempo e ver se poupa ou gastas mais energia.
Um termostato com histerese é um controlo on-off, ou seja forneces um pouco mais de energia que o precisas para atingir o set-point, depois desligas e não consomes nada, passas abaixo do set-point+histere e voltas a ligar a todo o vapor, e assim sucessivamente, o que o pwm(que não é pwm, mas já lá vamos) te permite fazer conjuntamente com um bocadinho de PI/PD/PID é atingir o set-point, sem overshot ou undershot do mesmo, e manter depois no set-point ao controlar a quantidade de energia que é fornecida á resistência.
Esse controlo em AC não se chama pwm mas sim controlo de fase, convem que tenhas um método para detectar a passagem por 0 da onda AC que é para puderes ligar o Triac e depois consoante a energia que queres fornecer á resistência desligas o triac, integrando os dois valores ao longo do tempo é provavel que tenhas ganhos minimos com controlo de fase se o sistema estiver bem afinado e calibrado, porque o over e undershot do termostato não vão fazer com que haja um consumo de energia assim tão massivo quanto isso.
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Labview Arduino Controlo de Temperatura
« Responder #13 em: 25 de Janeiro de 2012, 18:12 »
Hum estou a entender-te. Bem mas o objectivo é mesmo esse, utilizar um controlador PID (ou atraves de labview ou atraves de codigo arduino) e fornecer a potencia necessaria à resistencia.

Agora fiquei com umas duvidas, mas ainda bem, pois nem sequer eram duvidas :P

Eu pensava que ao utilizar um triac iria funcionar como um transistor normal mas para corrente alternada... Mas ya agora que penso isso, andar a ligar e desligar o triac muitas vezes seguidas (como fiz com um transistor para uma fan, usando pwm) nao funciona. Trata-se de uma onda sinusoidal que varia no tempo...

Estou à nora de como fazer isso, mas bora la pesquisar :D Falas que é importante saber quando a onda passa por 0, para poder ter um ponto de referencia, certo? Para poder ligar o triac nessa altura e depois sabendo o tempo que está ligado é so integrar a onda e tenho a energia fornecida... será?

Isto cada vez torna-se mais interessante  ;D

Muito obrigado e cumps...
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Labview Arduino Controlo de Temperatura
« Responder #14 em: 25 de Janeiro de 2012, 18:33 »
Tens de saber quando a onda passa por zero, pois o TRIAC só liga quando a voltagem AC é 0v, se o tentares ligar noutra altura ele não liga, ou usas um transformador, divisores resistivos e um opto-isolador, com mais uma resistencia ou duas para a partir dos 250vAC teres uma onda quadrada que é 1 ou 0 (depende do circuito e não importa para a programação) quando a onda sinusoidal passa por zero, ligas isso a uma das interrupções do Arduino e nessa interrupção ligas o triac, ou então usas um MOC3031 que é o opto-isolador que faz o drive do TRIAC que mas que já tem um circuito que só liga o TRIAC a quando da passagem por zero, simplifica-te o circuito, mas deixas de saber quando passas-te por zero e pode ser mais dificil fazer o controlo de fase dessa maneira, com essa MOC podes aplicar-lhe pwm que o TRIAC vai disparar quando deve, mas o controlo de fase sem saber quando passou por zero é impossivel de se fazer, dai ser mais vantajoso usar um pequeno circuito e usar interrupções no Arduino.
Avr fanboy