Após muita procura por sites e ajuda do pessoal aqui do Laboratório ( principalmente do Adriano, Rui, Wiechert, Sidney e Italo ) vou postar como foi feita a comunicação do sensor DS18B20 com o scadabr utilizando o protocolo modbus. Ler todo post antes dos testes.
- Primeiro montamos o circuito. Componentes: sensor DS18B20, e um resistor de 4.7Kohm.
No meu caso os fio do DS18B20 são: Azul (data), Vermelho (Vcc) e Preto (GND). Estas cores podem variar.
Na sequencia, baixamos a biblioteca OneWire (segue o link: http://www.pjrc.com/teensy/td_libs_OneWire.html), descompactamos e incluímos na pasta library do programa arduino.
Para facilitar baixamos o codigo Arduino_ModBus.ino que se encontra nesta pagina http://labdegaragem.com/forum/topics/arduino-scadabr-modbus. Neste consta a integração do protocolo onewire com o codigo modbus implementado pelo Wiechert.
Compilamos o codigo (lembrando que usei o IDE 0.23 do arduino ) e pronto.
Presumindo que já temos o ScadaBR instalado no pc, acessamos o ScadaBR e vamos em datasource. Escolhemos o protocolo ModbusSerial e incluimos. Conferir principalmente a porta e a velocidade (baud rate) se está compativel com o arduino. No meu caso mudei a velocidade no arduino para 9600. Salvamos ( no meu caso dei o nome de teste ds18b20) e partimos para a procura de nós. Se estiver tudo certo, logo o nó será encontrado. Vamos agora, colocar o data point. Na mesma pagina do datasource, no final, clicamos em incluir datapoint e deixamos como mostra a figura. O nome pode mudar a gosto e no meu caso deixei como sensor 1.
Vamos ver se deu tudo certo? Vamos em watch list e clicamos em teste ds18b20 e ao lado deverá aparecer a temperatura, como na imagem.
- Tem um detalhe onde me bati bastante para descobri e deposi de analisar o post que passei a cima (http://labdegaragem.com/forum/topics/arduino-scadabr-modbus) é que entendi. No código compilado no arduino tem um equivoco, que é explicado pelo Sidney. Na imagem, mostra qual a variável está sendo enviada para o Scadabr ( regs[0] = analogRead(DS18S20_Pin ); Oque acontece, é que foi escrito toda uma conversão de temperatura e estamos enviando para o Scada sem essa conversão. Pelo menos isso foi oque eu entendi.Então mudei para que o valor seja pego de getTemp().
Outra coisa que também deve ser arrumada no código antes de compilar é tornar todas as linha que tenha Serial.Print como comentário. Não apagar, pois segundo o Adriano da M.... Vejam na imagem acima na ultima linha. Ha pessoal, esse codigo só rodei no IDE versão 0.23. Não testei em outros.
Me bati bastante para fazer e se não fosse a ajuda desses feras aí do laboratório, não teria conseguido. Talvez tenha mais coisas para refinar e aqui está o post para a colaboração de todos.
Mais uma vez obrigado aos gênios do laboratório que tem a consciência de que, ajudando nós, pobres iniciantes no assunto, também acabam estudando e se aperfeiçoando. Uma forma de não esquecer aquilo que aprenderam.
Segue alguns sites com bastante informação e os softwares.
http://labdegaragem.com/forum/topics/arduino-scadabr-modbus
http://labdegaragem.com/forum/topics/scadabr?id=6223006%3ATopic%3A1...
Tags:
Show juliano,
fico feliz de ajudar mais um feliz usuario scadabr, nosso objetivo e de torna o scadabr uma solução aberta, robusta e acessivel a todos empresas ou usuarios, agora e pegarmos as informações e refinarmos os codigos e o merito é todo seu pela sua raça em resolver a questao.
grande abraço.
Juliano se possivel post o codigo exatamente que colocou no seu arduino no paste bin e deixe como referencia
Segue o codigo usado no tutorial
Parabéns Juliano, Sidney, Adriano, e todo pessoal do grupo Scadabr, bem como o pessoal que lhes ofereceu ajuda sempre aqui como o Wiechert, e desculpem se não menciono a outros por desconhecimento.
Estão demonstrando que quando as pessoas se propõem com determinação a fazer as coisas funcionarem bem, o fazem, persistência, paciência, trabalho em grupo, e compartilhando vosso conhecimento, o que torna vosso trabalho muito mais digno de admiração.
Boa sorte a todo grupo, é bom ver isso, faz bem a todos.
Abraços.
Carlos faltou mencionar o Rui...que foi essencial $=)
O Rui é da família, rsrsrsrs.
Abs.
Eu sempre que puder gosto de ajudar.
Aos que precisam de ajuda se forem bem objetivos e seguirem uma sequencia lógica sempre encontraram alguem para ajudar.
Até
Bom dia, Agora estou tentando incluir mais um sensor no code mas não estou conseguindo fazer a leitura no scadabr. Inclui alem do DS18B20 um NTC. Coloquei no datapoint, cada um com offset diferente, mas só consigo fazer a leitura do ds18b20. Segue parte do codigo que coloquei no arduino: http://pastebin.com/0r8Rds1t. Alguém tem alguma sugestão?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por